---
title: "Sample Entry in Perspective"
id: "sample-entry-in-perspective"
project: "MES User Manual"
url: "https://docs.sepasoft.com/articles/user-manual/sample-entry-in-perspective"
updated: 2026-07-31T14:55:37Z
---

# Sample Entry in Perspective

**Sepasoft MES Module Suite**

##  SPC Sample Entry Component

The SPC Sample Entry component is designed for managing and reviewing sample measurement data. The entry fields are dynamically created based on attributes defined in the **Sample Definition**.

This component functions by utilizing a **Sample UUID** to dynamically generate input fields based on predefined attribute configurations in a Sample Definition.

**In Ignition Designer:**

![](/resources/Storage/user-manual/sample-entry-in-perspective/sample-entry-in-perspective-2026-04-01-6.png)

Samples can be integrated into the component through automated scheduling, manual scripting, or selection from a filtered list. The interface includes a customizable toolbar for tasks such as validating measurements against control limits, saving notes, and discarding unsaved changes.

Additionally, developers can adjust various component properties to control the layout, data validation rules, and visibility of specific UI elements.

See below:

* [How to Use the Sample Entry Component](/articles/user-manual/sample-entry-in-perspective/a/h3__1848448286)
* [Accessing the Perspective SPC Sample Entry Component](/articles/user-manual/sample-entry-in-perspective/a/h3_789542718)
* [Scheduled Entry and Passing Data to the Sample Entry Component](/articles/user-manual/sample-entry-in-perspective/a/h3__1337939250)
* [Manual Entry](/articles/user-manual/sample-entry-in-perspective/a/h3__1156708796)
* [Integrating the Location Sample List with Sample Entry](/articles/user-manual/sample-entry-in-perspective/a/h3__1977504444)
* [SPC Sample Entry UI Description](/articles/user-manual/sample-entry-in-perspective/a/h4__307046439)
* [Component Properties](/articles/user-manual/sample-entry-in-perspective/a/h4_1163376142)

###  How to Use the Sample Entry Component

![](/resources/Storage/user-manual/sample-entry-in-perspective/VisualizeSPCWorkflowCallOuts.png)

| ![](/resources/Storage/user-manual/sample-entry-in-perspective/Screenshot%202026-04-01%20133510.png) | **Initialization and Retrieval** | <ul _ngcontent-ng-c2840053362=""><li _ngcontent-ng-c3919609983="" data-start-index="990"><b _ngcontent-ng-c3919609983="" data-start-index="990">Scheduled (Automated) Creation:</b><span _ngcontent-ng-c3919609983="" data-start-index="1009"> The SPC module can automatically generate samples at specific <a href="/articles/user-manual/sample-intervals" target="_blank" onclick="return n(&#39;!user-manual/sample-intervals&#39;,this);">sample intervals</a>, which are configured in the <a href="/articles/user-manual/sample-definition-manager" target="_blank" onclick="return n(&#39;!user-manual/sample-definition-manager&#39;,this);">Sample Definition Manager</a></span><span _ngcontent-ng-c3919609983="" data-start-index="1136">.<br><br></span></li><li _ngcontent-ng-c3919609983="" data-start-index="1137"><b _ngcontent-ng-c3919609983="" data-start-index="1137">Manual Creation:</b><span _ngcontent-ng-c3919609983="" data-start-index="1153"> You can generate a sample ad hoc using a script function, and then pass the newly created </span><code _ngcontent-ng-c3919609983="" data-start-index="1244">Sample UUID</code><span _ngcontent-ng-c3919609983="" data-start-index="1255"> directly into the component&#39;s property. <a href="/articles/user-manual/system-mes-spc-sample-getnewbydefname-defname-locationpath" target="_blank" onclick="return n(&#39;!user-manual/system-mes-spc-sample-getnewbydefname-defname-locationpath&#39;,this);">system.mes.spc.sample.getNewByDefName(defName, locationPath)</a></span></li></ul> |
| --- | --- | --- |
| ![](/resources/Storage/user-manual/sample-entry-in-perspective/Screenshot%202026-04-01%20133522.png) | **Passing Data to the Component** | <ul _ngcontent-ng-c2840053362=""><li _ngcontent-ng-c3919609983="" data-start-index="551"><b _ngcontent-ng-c3919609983="" data-start-index="551"><a href="/articles/user-manual/location-sample-list-perspective" target="_blank" onclick="return n(&#39;!user-manual/location-sample-list-perspective&#39;,this);">Location Sample List Component</a>:</b><span _ngcontent-ng-c3919609983="" data-start-index="582"> You can configure an on-click event on this component to capture the selected sample&#39;s UUID and push it directly to the Sample Entry component</span><span _ngcontent-ng-c3919609983="" data-start-index="725">.<br><br></span></li><li _ngcontent-ng-c3919609983="" data-start-index="726"><b _ngcontent-ng-c3919609983="" data-start-index="726">Scripting: <a href="/articles/user-manual/system-mes-spc-sample-getsamplelist" target="_blank" onclick="return n(&#39;!user-manual/system-mes-spc-sample-getsamplelist&#39;,this);">system.mes.spc.sample.getsamplelist</a></b><span _ngcontent-ng-c3919609983="" data-start-index="736">&#160;You can use a script to pull a filtered list of samples, parse through the results, and send the relevant </span><code _ngcontent-ng-c3919609983="" data-start-index="843">Sample UUID</code><span _ngcontent-ng-c3919609983="" data-start-index="854"> to the component</span></li></ul> |
| ![](/resources/Storage/user-manual/sample-entry-in-perspective/Screenshot%202026-04-01%20133537.png) | **Interface and Validation** | **Interface:** the entry fields in the **SPC Sample Entry** component are dynamically created based on the attributes defined in the Sample Definition. When you pass a specific `Sample UUID` to the component's property, the system automatically populates the UI with the corresponding input fields for all attributes relevant to that sample.<br><br><br><br>**Validation:** Sample measurements in the SPC Sample Entry component are validated against three specific criteria:<br><ul _ngcontent-ng-c2840053362=""><li _ngcontent-ng-c3919609983="" data-start-index="100"><b _ngcontent-ng-c3919609983="" data-start-index="100">Data Types:</b><span _ngcontent-ng-c3919609983="" data-start-index="111"> The system ensures the entered measurement matches the expected data format</span><span _ngcontent-ng-c3919609983="" data-start-index="187">. This check is always enforced</span><span _ngcontent-ng-c3919609983="" data-start-index="218">.<br><br></span></li><li _ngcontent-ng-c3919609983="" data-start-index="219"><b _ngcontent-ng-c3919609983="" data-start-index="219">Attribute Min/Max values:</b><span _ngcontent-ng-c3919609983="" data-start-index="244"> The system verifies that the entered measurement falls within the fundamental minimum and maximum constraints for that attribute</span><span _ngcontent-ng-c3919609983="" data-start-index="373">. This check is absolute and is always validated</span><span _ngcontent-ng-c3919609983="" data-start-index="421">.<br><br></span></li><li _ngcontent-ng-c3919609983="" data-start-index="422"><b _ngcontent-ng-c3919609983="" data-start-index="422">Control Limits:</b><span _ngcontent-ng-c3919609983="" data-start-index="437"> The system checks the values against predefined control limits</span><span _ngcontent-ng-c3919609983=""><button _ngcontent-ng-c3919609983="" dialoglabel="Citation Details" triggerdescription="Click to open citation details" jslog="219344;track:generic_click,impression,hover" aria-describedby="cdk-describedby-message-ng-1-19" cdk-describedby-host="ng-1" data-disabled="false" style="height: 1.375rem; width: 1.375rem;" type="submit" name="" value=""></button></span><span _ngcontent-ng-c3919609983="" data-start-index="500">. Unlike the other two criteria, this validation is conditional and depends on the </span><b _ngcontent-ng-c3919609983="" data-start-index="583">allowOutsideProperties</b><span _ngcontent-ng-c3919609983="" data-start-index="605"> (or </span><b _ngcontent-ng-c3919609983="" data-start-index="610">allowOutsideLimits</b><span _ngcontent-ng-c3919609983="" data-start-index="628">) component property</span><span _ngcontent-ng-c3919609983="" data-start-index="648">. If this property is set to False, the system enforces the control limits and will return an error if they are violated</span><span _ngcontent-ng-c3919609983=""><button _ngcontent-ng-c3919609983="" dialoglabel="Citation Details" triggerdescription="Click to open citation details" jslog="219344;track:generic_click,impression,hover" aria-describedby="cdk-describedby-message-ng-1-19" cdk-describedby-host="ng-1" data-disabled="false" style="height: 1.375rem; width: 1.375rem;" type="submit" name="" value=""></button></span><span _ngcontent-ng-c3919609983="" data-start-index="768">. If set to True, the system allows you to save the sample even if the values fall outside the Control Limits</span></li></ul> |

### Accessing the Perspective SPC Sample Entry Component

The **SPC Sample Entry** component is installed with the **SPC module.** Access the component from the **Perspective Component palette** in **Designer**.

| ![Success](/resources/Storage/user-manual/Success.png) | The SPC module must be installed to access these components. |
| --- | --- |

![](/resources/Storage/user-manual/sample-entry-in-perspective/SampleEntry-componentpalette.png)

### Scheduled Entry and Passing Data to the Sample Entry Component

**![](/resources/Storage/user-manual/sample-entry-in-perspective/sample-entry-in-perspective-2026-04-01-2.png)**

### Manual Entry

**![](/resources/Storage/user-manual/sample-entry-in-perspective/sample-entry-in-perspective-2026-04-01-3.png)**

**Interface of the Sample Entry Component**

**![](/resources/Storage/user-manual/sample-entry-in-perspective/sample-entry-in-perspective-2026-04-01-4.png)**

### Integrating the Location Sample List with Sample Entry

You can use the **SPC Location Sample List** component to retrieve a list of generated samples based on specific filter criteria. By configuring an **on-click event** on this list, you can capture the unique `Sample UUID` of a selected sample. That UUID is then **pushed directly to the SPC Sample Entry component**, which automatically populates its UI with the selected sample's data so you can add measurements, modify details, or approve it.

![](/resources/Storage/user-manual/sample-entry-in-perspective/sample-entry-in-perspective-2026-04-01-5.png)

#### 

#### ![](/resources/Storage/user-manual/sample-entry-in-perspective/SampleEntry-v2.png)

### SPC Sample Entry UI Description

| Component UI | Description |
| --- | --- |
| ![](/resources/Storage/user-manual/sample-entry-in-perspective/sample-entry-in-perspective-2025-01-23-1.png) |
| **Toolbar** (based on component properties) | **![](/resources/Storage/user-manual/sample-entry-in-perspective/sample-entry-in-perspective-2025-01-23-2.png) Edit Note/Cause:** Opens a dialog box where you can add or edit a note. The note can be any text string, and usually explains a cause if a sample is outside of production standards.<br><ul><li>Saving a note does not save the sample. </li><li>Any changes to the note can be reset with <b>Discard Changes</b> (see Discard Changes information below) until the Save Sample button is pressed.</li></ul><br>![](/resources/Storage/user-manual/sample-entry-in-perspective/sample-entry-in-perspective-2025-01-23-3.png) **Approve/Unapprove Sample:** Select a sample in the list and click Approve or Unapprove.<br><br><br><br>![](/resources/Storage/user-manual/sample-entry-in-perspective/sample-entry-in-perspective-2025-01-23-4.png) **Validate Measurements**:<br><br><br><br>**![](/resources/Storage/user-manual/sample-entry-in-perspective/sample-entry-in-perspective-2025-01-23.png)**<br><br><br>![](/resources/Storage/user-manual/sample-entry-in-perspective/sample-entry-in-perspective-2025-01-23-5.png) **Discard Changes**: Resets the sample values and meta data, such as notes, to their values when the sample was last saved<br><br><br>![](/resources/Storage/user-manual/sample-entry-in-perspective/sample-entry-in-perspective-2025-01-23-6.png) **Save Samples**: Saves any changes made to measurement values, Note/Cause, or Product Code/Reference No. Any errors display if any exist. Will only check for errors against Control Limits if the "allowOutsideProperties" is false. Otherwise, it will save even with values outside Control Limits (not to be confused with Attribute Min/Max values, which are always checked).<br><br>Errors or success message will be shown in a dialog box. |
| **Definition** field | Read-only field for the Sample Definition name tied to the sample(s). |
| **Location** field | Read-only field for the Location where the sample is taken. |
| **Created** field | Read-only field for the Date/Time when the sample was created |
| **Taken** field | Read-only timestamp of when the sample was taken. |
| **Product Code** field | Editable field |
| **Reference #** field | Editable field |

### Component Properties

![](/resources/Storage/user-manual/sample-entry-in-perspective/sample-entry-in-perspective-2025-01-07.png)

| Property | Description |
| --- | --- |
| **showTitle** | Boolean - When set to True, displays the Title header.<br><br>Default is True. |
| **showSaveSample** | Boolean -When set to True, the **Save** icon displays in the component. See Toolbar descriptions above. |
| **showDiscardUnsavedChanges** | Boolean -When set to True, the **DiscardChanges** icon displays in the component. See Toolbar descriptions above. |
| **showValidateValues** | Boolean - When set to True, the **Validate** icon displays in the component. See Toolbar descriptions above |
| **showApproveSample** | Boolean - When set to True, the **Approve** icon displays in the component. See Toolbar descriptions above |
| **showUnapproveSample** | Boolean -When set to True, the **UnApprove** icon displays in the component. See Toolbar descriptions above |
| **showEditNote** | Boolean - When set to True, the **Note/Cause** icon displays in the component. See Toolbar descriptions above |
| **vertical** | Boolean - When set to False, the Attribute names display on the left, with measurements moving out to the right.<br><br>When set to True, the Attribute names display along the top, with measurements moving down.<br><br>Default is set to False. |
| **upDownTraversal** | Boolean - When set to False, the tab order through measurements moves left to right (then wrap around top to bottom), regardless of vertical setting.<br><br>When set to True, that tab order through measurements moves top to bottom (then wrap around left to right), regardless of vertical setting. |
| **showDataType** | Boolean - Displays the data type of the attribute. |
| **showUnits** | Boolean - Shows the unit values for each attribute. |
| **readOnly** | Boolean - Prevents the editing of sample values. |
| **sampleUUID** | String - UUID of the sample to edit. |
| **sampleTakenDateTime** | Date/Time -Date and time when the sample was taken. |
| **sampleTakenBy** | String - Name of the user taking the sample. |
| **productCode** | String - Product number/code of the sample. The system does not use this product code for functionality. You can use it in analysis to filter for samples. |
| **refNo** | String - Reference number of the sample. Product number/code of the sample. The system does not use this product code for functionality. You can use it in analysis to filter for samples. |
| **selectedAttribute** | String - The selected attribute in the entry form. |
| **selectedMeasNo** | String - The selected attribute measurement number. |
| **measurementName** | String - The text to display for the selected measurement name in the upper left. |
| **title** | String - Title of the component. Use this property to change the title in the browser. |
| **allowOutsideLimits** | Boolean -<br><br>When set to True, measurements can be added that are outside the limits.<br><br>When set to False, the system will flag Control Limit errors. |
| **measurementLabels** | String - a comma-delimited list of titles to use for measurements. Defaults to 1, 2, 3... |
| **user** | The user property can be used in saving sample measurements in lieu of a user session. Add any string into the input field to populate the `user` property. |

**Sepasoft MES Module Suite**