Перейти к содержанию

Паспорт качества газа (ГОСТ 5542): различия между версиями

Материал из Химсофт Вики
 
(не показаны 84 промежуточные версии этого же участника)
Строка 1: Строка 1:
==Общий вид==
[[Файл:ng_2_5542.png|center|border]]
==Параметры==
==Параметры==
В форме используются 7 фильтров параметров:
В форме используются 7 фильтров параметров:
Строка 5: Строка 9:
!№!!Параметр!!Тип поля!!Данные!!Сортировка
!№!!Параметр!!Тип поля!!Данные!!Сортировка
|-
|-
|align="center"|1||<code>Выберите лабораторию:</code>||align="center"|выбор значения||лаборатории, имеющие записи в журналах||align="center"|по алфавиту
|align="center"|1||<code>Выберите лабораторию:</code>||align="center"|выбор значения||лаборатории, имеющие записи в журналах с показателями, у которых в наименовании нормы присутствует ГОСТ 5542||align="center"|по алфавиту
|-
|-
|align="center"|2||<code>Введите номер паспорта:</code>||align="center"|ввод текста||1 (значение по умолчанию)||align="center"|-
|align="center"|2||<code>Введите номер паспорта:</code>||align="center"|ввод текста||1 (значение по умолчанию)||align="center"|-
Строка 21: Строка 25:
|}
|}


<div style="background-color: #fff3cd; border-left: 5px solid #ffc107; padding: 15px; margin: 10px 0;">
==Атрибуты==
'''Внимание!'''
В наборе данных <code>OrganisationDataSet</code> в таблице <code>ATTRIBUTE_NAME</code> используются атрибуты со следующими значениями <code>NAME</code>:
<div style="column-count: 2;">
*Адрес
*Телефоны
*E-mail
</div>


Также для фильтров п.6 и п.7 используются составные поля в DataSet, образующиеся с помощью функции [[Scripts#FormatFio()|<code>FormatFio()</code>]]:
В наборе данных <code>MainDataSet</code> в таблице <code>ATTRIBUTE_NAME</code> используются атрибуты со следующими значениями <code>NAME</code>:
<gallery mode="packed" heights="100px">
<div style="column-count: 2;">
Файл:concat_filter_fields.png
*НД на отбор проб
</gallery>
*Дата и время отбора пробы
*Дата поставки пробы
*Полное наименование
*Код ОКПД 2
*Дата начала анализа
*Дата окончания анализа
</div>
</div>


==Атрибуты==
В наборе данных <code>ResultDataSet</code> в таблице <code>ATTRIBUTE_NAME</code> используются атрибуты со следующими значениями <code>NAME</code>:
В наборе данных <code>MainDataSet</code> в таблице <code>ATTRIBUTE_NAME</code> используются атрибуты со следующими значениями <code>NAME</code>:
<div style="column-count: 2;">
*Группа в паспорт качества
*Номер в паспорт качества
*НД на отбор проб
*Дата поставки пробы
*Дата и время отбора пробы
</div>
 
В наборе данных <code>NoteDataSet</code> в таблице <code>ATTRIBUTE_NAME</code> используются атрибуты со следующими значениями <code>NAME</code>:
<div style="column-count: 2;">
<div style="column-count: 2;">
*Дата поставки пробы
*Дата поставки пробы
Строка 38: Строка 60:
*Номер в паспорт качества
*Номер в паспорт качества
*Норма при стандартных условиях
*Норма при стандартных условиях
</div>
</div>


Строка 58: Строка 79:
!Поля
!Поля
!Интерфейс <code style="background-color: #d4edda;>...</code> >> <code style="background-color: #d4edda;>...</code>
!Интерфейс <code style="background-color: #d4edda;>...</code> >> <code style="background-color: #d4edda;>...</code>
и данные <code style="background-color: #fff3e0;>...</code> >> <code style="background-color: #fff3e0;>...</code>
и данные <code style="background-color: #fff3e0;>...</code> >> <code style="background-color: #fff3e0;>...</code> >> <code style="background-color: #fff3e0;>...</code>
!Код и комментарии
!Код и комментарии
|-
|-
|Наименование организации
|Наименование организации
|
|<code style="background-color: #d4edda;>Подразделения предприятия</code> >> <code style="background-color: #d4edda;>+</code> >> Выбрать предприятие >> <code style="background-color: #d4edda;>Редактировать</code> >> <code style="background-color: #d4edda;>Карточка подразделения</code> >> <code style="background-color: #d4edda;>Краткое наименование</code>
<code style="background-color: #fff3e0;>Fields!head_org.Value</code> >> <code style="background-color: #fff3e0;>head_org / OrganisationDataSet</code> >> <code style="background-color: #fff3e0;>SHORT_NAME / COMPANY_LEVEL</code>
|<syntaxhighlight lang="vb">=Fields!head_org.Value</syntaxhighlight>
|<syntaxhighlight lang="vb">=Fields!head_org.Value</syntaxhighlight>
|-
|-
|Адрес, телефоны, e-mail
|Адрес, телефоны, e-mail
|
|<code style="background-color: #d4edda;>Подразделения предприятия</code> >> <code style="background-color: #d4edda;>+</code> >> Выбрать предприятие >> <code style="background-color: #d4edda;>Редактировать</code> >> <code style="background-color: #d4edda;>Карточка подразделения</code> >> <code style="background-color: #d4edda;>Адрес</code>, <code style="background-color: #d4edda;>Телефоны</code>, <code style="background-color: #d4edda;>E-mail</code>
<code style="background-color: #fff3e0;>Fields!head_org_address.Value, Fields!head_org_tel.Value, Fields!head_org_mail.Value</code> >> <code style="background-color: #fff3e0;>head_org_address, head_org_tel, head_org_mail / OrganisationDataSet</code> >> <code style="background-color: #fff3e0;>VALUE / LONGTEXT_STORAGE</code>, <code style="background-color: #fff3e0;>STRING_VALUE / COMPANY_LEVEL_ATTRIBUTE</code>
|<syntaxhighlight lang="vb">=Fields!head_org_address.Value & vbLF & "тел, e-mail: " & ConcatFields("; ", Fields!head_org_tel.Value, Fields!head_org_mail.Value)</syntaxhighlight>
|<syntaxhighlight lang="vb">=Fields!head_org_address.Value & vbLF & "тел, e-mail: " & ConcatFields("; ", Fields!head_org_tel.Value, Fields!head_org_mail.Value)</syntaxhighlight>
используются:
*перенос строки (<code>vbLF</code>);
*для соединения полей функция [[Scripts#ConcatFields()|<code>ConcatFields()</code>]];
|-
|-
|Наименование лаборатории
|Наименование лаборатории
|
|<code style="background-color: #d4edda;>Подразделения предприятия</code> >> <code style="background-color: #d4edda;>+</code> >> Выбрать подразделение >> <code style="background-color: #d4edda;>Редактировать</code> >> <code style="background-color: #d4edda;>Карточка подразделения</code> >> <code style="background-color: #d4edda;>Краткое наименование</code>
<code style="background-color: #fff3e0;>Fields!lab_name.Value</code> >> <code style="background-color: #fff3e0;>lab_name / OrganisationDataSet</code> >> <code style="background-color: #fff3e0;>SHORT_NAME / COMPANY_LEVEL</code>
|<syntaxhighlight lang="vb">=Fields!lab_name.Value</syntaxhighlight>
|<syntaxhighlight lang="vb">=Fields!lab_name.Value</syntaxhighlight>
|-
|-
|Адрес лаборатории
|Адрес лаборатории
|
|<code style="background-color: #d4edda;>Подразделения предприятия</code> >> <code style="background-color: #d4edda;>+</code> >> Выбрать подразделение >> <code style="background-color: #d4edda;>Редактировать</code> >> <code style="background-color: #d4edda;>Карточка подразделения</code> >> <code style="background-color: #d4edda;>Адрес</code>
<code style="background-color: #fff3e0;>Fields!lab_address.Value</code> >> <code style="background-color: #fff3e0;>lab_address / OrganisationDataSet</code> >> <code style="background-color: #fff3e0;>VALUE / LONGTEXT_STORAGE</code>
|<syntaxhighlight lang="vb">=Fields!lab_address.Value</syntaxhighlight>
|<syntaxhighlight lang="vb">=Fields!lab_address.Value</syntaxhighlight>
|-
|-
Строка 87: Строка 115:
!Код и комментарии
!Код и комментарии
|-
|-
|
|Должность
|
|<code style="background-color: #d4edda;>Персонал</code> >> Выбрать запись >> <code style="background-color: #d4edda;>Карточка сотрудника</code> >> <code style="background-color: #d4edda;>Должность</code>
<code style="background-color: #fff3e0;>Fields!position.Value</code> >> <code style="background-color: #fff3e0;>position / FilterDataSetFio</code> >> <code style="background-color: #fff3e0;>SURNAME; NAME; PATRONYMIC / EMPLOYEE</code>
|<syntaxhighlight lang="vb">=First(Fields!position.Value)</syntaxhighlight>
|<syntaxhighlight lang="vb">=First(Fields!position.Value)</syntaxhighlight>
|-
|-
|
|Лаборатория
|
|<code style="background-color: #d4edda;>Подразделения предприятия</code> >> <code style="background-color: #d4edda;>+</code> >> Выбрать подразделение >> <code style="background-color: #d4edda;>Редактировать</code> >> <code style="background-color: #d4edda;>Карточка подразделения</code> >> <code style="background-color: #d4edda;>Краткое наименование</code>
<code style="background-color: #fff3e0;>Fields!lab_name.Value</code> >> <code style="background-color: #fff3e0;>lab_name / FilterDataSetFio</code> >> <code style="background-color: #fff3e0;>SHORT_NAME / COMPANY_LEVEL</code>
|<syntaxhighlight lang="vb">=First(Fields!lab_name.Value)</syntaxhighlight>
|<syntaxhighlight lang="vb">=First(Fields!lab_name.Value)</syntaxhighlight>
|-
|-
|
|И.О. Фамилия
|
|<code style="background-color: #d4edda;>Персонал</code> >> Выбрать запись >> <code style="background-color: #d4edda;>Карточка сотрудника</code> >> <code style="background-color: #d4edda;>Фамилия</code>; <code style="background-color: #d4edda;>Имя</code>; <code style="background-color: #d4edda;>Отчество</code>
<code style="background-color: #fff3e0;>Fields!surname.Value, Fields!name.Value, Fields!patronimyc.Value</code> >> <code style="background-color: #fff3e0;>surname, name, patronimyc / FilterDataSetFio</code> >> <code style="background-color: #fff3e0;>SURNAME; NAME; PATRONYMIC / EMPLOYEE</code>
|<syntaxhighlight lang="vb">=FormatFio(Fields!surname.Value, Fields!name.Value, Fields!patronimyc.Value, 2)</syntaxhighlight>
|<syntaxhighlight lang="vb">=FormatFio(Fields!surname.Value, Fields!name.Value, Fields!patronimyc.Value, 2)</syntaxhighlight>
*используется функция [[Scripts#FormatFio()|<code>FormatFio()</code>]]
|-
|-
|}
|}
Строка 109: Строка 141:
!Код и комментарии
!Код и комментарии
|-
|-
|
|Номер паспорта качества
|
|<code>Parameters!ReportParameterNum.Value</code>
|<syntaxhighlight lang="vb">="Паспорт качества № " & Parameters!ReportParameterNum.Value</syntaxhighlight>
|<syntaxhighlight lang="vb">="Паспорт качества № " & Parameters!ReportParameterNum.Value</syntaxhighlight>
|-
|-
|
|Наименование объекта анализа и наименование стандарта
|
|<code style="background-color: #d4edda;>Объекты анализа</code> >> Выбрать объект >> <code style="background-color: #d4edda;>Редактировать</code> >> <code style="background-color: #d4edda;>Карточка объекта анализа</code> >> <code style="background-color: #d4edda;>Полное наименование</code>
<code style="background-color: #d4edda;>Объекты анализа</code> >> Выбрать объект >> <code style="background-color: #d4edda;>Редактировать</code> >> <code style="background-color: #d4edda;>Карточка объекта анализа</code> >> Выбрать показатель >> <code style="background-color: #d4edda;>Карточка показателя</code> >> <code style="background-color: #d4edda;>Нормы</code> >> <code style="background-color: #d4edda;>Наименование</code> 
 
<code style="background-color: #fff3e0;>Fields!ao_full_name.Value, Fields!quant_norm.Value</code> >> <code style="background-color: #fff3e0;>ao_full_name, quant_norm / MainDataSet</code> >> <code style="background-color: #fff3e0;>STRING_VALUE / ANALYSIS_OBJECT_ATTRIBUTE</code>, <code style="background-color: #fff3e0;>NAME / QUANTITATIVE_NORM</code>
|<syntaxhighlight lang="vb">=Fields!ao_full_name.Value & " по " & Fields!quant_norm.Value</syntaxhighlight>
|<syntaxhighlight lang="vb">=Fields!ao_full_name.Value & " по " & Fields!quant_norm.Value</syntaxhighlight>
|-
|-
|Код ОКПД2
|Код ОКПД2
|
|<code style="background-color: #d4edda;>Объекты анализа</code> >> Выбрать объект >> <code style="background-color: #d4edda;>Редактировать</code> >> <code style="background-color: #d4edda;>Карточка объекта анализа</code> >> <code style="background-color: #d4edda;>Код ОКПД 2</code>
|<syntaxhighlight lang="vb">-</syntaxhighlight>
 
<code style="background-color: #fff3e0;>Fields!code_okpd2.Value</code> >> <code style="background-color: #fff3e0;>code_okpd2 / MainDataSet</code> >> <code style="background-color: #fff3e0;>STRING_VALUE / ANALYSIS_OBJECT_ATTRIBUTE</code>
|<syntaxhighlight lang="vb">="Код ОКПД 2 " & Fields!code_okpd2.Value</syntaxhighlight>
|-
|-
|Паспорт качества распространяется на объемы газа, поданного через газораспределительные станции:
|Паспорт качества распространяется на объемы газа, поданного через газораспределительные станции:
|
|<code>Parameters!ReportParameterStation.Value</code>
|<syntaxhighlight lang="vb">=IIF(Parameters!ReportParameterStation.Value = "-", "", Parameters!ReportParameterStation.Value)</syntaxhighlight>
|<syntaxhighlight lang="vb">=IIF(Parameters!ReportParameterStation.Value = "-", "", Parameters!ReportParameterStation.Value)</syntaxhighlight>
|-
|-
|Дата (период) отбора проб
|Дата (период) отбора проб
|
|<code style="background-color: #d4edda;>Лабораторные журналы</code> >> <code style="background-color: #d4edda;>Журнал регистрации проб и испытаний</code> >> Выбрать пробу >> <code style="background-color: #d4edda;>Редактировать</code> >> <code style="background-color: #d4edda;>Карточка пробы</code> >> <code style="background-color: #d4edda;>Информация</code> >> <code style="background-color: #d4edda;>Дата и время отбора пробы</code>
|<syntaxhighlight lang="vb">=Format(Min(Fields!sampling_date.Value), "dd.MM.yyyy") & " - " & Format(Max(Fields!sampling_date.Value), "dd.MM.yyyy")</syntaxhighlight>
<code style="background-color: #fff3e0;>Fields!sampling_date.Value</code> >> <code style="background-color: #fff3e0;>sampling_date / MainDataSet</code> >> <code style="background-color: #fff3e0;>DATE_VALUE / JOURNAL_RECORD_ATTRIBUTE</code>
|<syntaxhighlight lang="vb">=RangeDate(Min(Fields!sampling_date.Value), Max(Fields!sampling_date.Value))</syntaxhighlight>
<syntaxhighlight lang="vb">
Public Function RangeDate(minDate As Object, maxDate As Object) As String
Dim hasMin As Boolean = Not minDate Is Nothing
Dim hasMax As Boolean = Not maxDate Is Nothing
 
If Not hasMin And Not hasMax Then Return "-"
If hasMin And Not hasMax Then
Return minDate.Date
ElseIf Not hasMin And hasMax Then
Return maxDate.Date
ElseIf hasMin And hasMax Then
If minDate.Date = maxDate.Date Then
Return minDate.Date
Else
Return minDate.Date & " - " & maxDate.Date
End If
End If
End Function
</syntaxhighlight>
|-
|-
|НД на метод отбора
|НД на метод отбора
|
|<code style="background-color: #d4edda;>Объекты анализа</code> >> Выбрать объект >> <code style="background-color: #d4edda;>Редактировать</code> >> <code style="background-color: #d4edda;>Карточка объекта анализа</code> >> <code style="background-color: #d4edda;>НД на отбор проб</code>
<code style="background-color: #fff3e0;>Fields!sampling_norm_doc.Value</code> >> <code style="background-color: #fff3e0;>sampling_norm_doc / MainDataSet</code> >> <code style="background-color: #fff3e0;>STRING_VALUE / JOURNAL_RECORD_ATTRIBUTE</code>
|<syntaxhighlight lang="vb">=First(Fields!sampling_norm_doc.Value)</syntaxhighlight>
|<syntaxhighlight lang="vb">=First(Fields!sampling_norm_doc.Value)</syntaxhighlight>
|-
|-
|Место отбора проб
|Место отбора проб
|
|<code style="background-color: #d4edda;>Лабораторные журналы</code> >> <code style="background-color: #d4edda;>Журнал регистрации проб и испытаний</code> >> Выбрать пробу >> <code style="background-color: #d4edda;>Редактировать</code> >> <code style="background-color: #d4edda;>Карточка пробы</code> >> <code style="background-color: #d4edda;>Источник</code> >> <code style="background-color: #d4edda;>Выбранный источник</code>
<code style="background-color: #fff3e0;>Fields!place_name.Value</code> >> <code style="background-color: #fff3e0;>place_name / MainDataSet</code> >> <code style="background-color: #fff3e0;>SHORT_NAME / SAMPLE_SOURCE</code>
|<syntaxhighlight lang="vb">=First(Fields!place_name.Value)</syntaxhighlight>
|<syntaxhighlight lang="vb">=First(Fields!place_name.Value)</syntaxhighlight>
|-
|-
|Дата (период) испытаний  
|Дата (период) испытаний  
|
|<code style="background-color: #d4edda;>Лабораторные журналы</code> >> <code style="background-color: #d4edda;>Журнал регистрации проб и испытаний</code> >> Выбрать пробу >> <code style="background-color: #d4edda;>Редактировать</code> >> <code style="background-color: #d4edda;>Карточка пробы</code> >> <code style="background-color: #d4edda;>Информация</code> >> <code style="background-color: #d4edda;>Дата поставки пробы</code>
|<syntaxhighlight lang="vb">=Format(Min(Fields!delivery_date.Value), "dd.MM.yyyy") & " - " & Format(Max(Fields!delivery_date.Value), "dd.MM.yyyy")</syntaxhighlight>
<code style="background-color: #fff3e0;>Fields!delivery_date.Value</code> >> <code style="background-color: #fff3e0;>delivery_date / MainDataSet</code> >> <code style="background-color: #fff3e0;>DATE_VALUE / JOURNAL_RECORD_ATTRIBUTE</code>
|<syntaxhighlight lang="vb">=RangeDate(Fields!min_date_analysis.Value, Fields!max_date_analysis.Value)</syntaxhighlight>
|-
|-
|}
|}
Строка 152: Строка 213:
|-
|-
|№
|№
|
|<code style="background-color: #fff3e0;>Fields!group_index.Value</code> >> <code style="background-color: #fff3e0;>group_index / ResultDataSet</code> >> <code style="background-color: #fff3e0;>SQL</code>
|<syntaxhighlight lang="vb">=Fields!group_index.Value & "."</syntaxhighlight>
|<syntaxhighlight lang="vb">=Fields!group_index.Value & "."</syntaxhighlight>
|-
|-
|Наименование показателя
|Наименование показателя
|
|<code style="background-color: #d4edda;>Объекты анализа</code> >> Выбрать объект >> <code style="background-color: #d4edda;>Редактировать</code> >> <code style="background-color: #d4edda;>Карточка объекта анализа</code> >> Выбрать показатель >> <code style="background-color: #d4edda;>Карточка показателя</code> >> <code style="background-color: #d4edda;>Группа в паспорт качества, Наименование</code>
<code style="background-color: #d4edda;>Методики анализа</code> >> Выбрать методику >> <code style="background-color: #d4edda;>Редактировать</code> >> <code style="background-color: #d4edda;>Карточка методики анализа</code> >> <code style="background-color: #d4edda;>Наименование по методике, Единица измерения</code>
 
<code style="background-color: #fff3e0;>Fields!group_number.Value, Fields!met_ind_name.Value, Fields!ind_name.Value, Fields!unit.Value</code> >> <code style="background-color: #fff3e0;>group_number, met_ind_name, ind_name, unit / ResultDataSet</code> >> <code style="background-color: #fff3e0;>INTEGER_VALUE / INDICATOR_ATTRIBUTE</code>, <code style="background-color: #fff3e0;>INDICATOR_METHODOLOGY_NAME / METHODOLOGY_INDICATOR</code>, <code style="background-color: #fff3e0;>NAME / INDICATOR</code>, <code style="background-color: #fff3e0;>HTML_NAME / UNIT</code>
|<syntaxhighlight lang="vb">=GetIndName(Fields!group_number.Value, Fields!met_ind_name.Value, Fields!ind_name.Value, Fields!unit.Value)</syntaxhighlight>
|<syntaxhighlight lang="vb">=GetIndName(Fields!group_number.Value, Fields!met_ind_name.Value, Fields!ind_name.Value, Fields!unit.Value)</syntaxhighlight>
<syntaxhighlight lang="vb">
Public Function GetIndName(group As Integer, methIndName As Object, indName As Object, unit As Object) As String
Dim resultName As String = ""
If methIndName IsNot Nothing AndAlso Not IsDBNull(methIndName) AndAlso Not String.IsNullOrWhiteSpace(methIndName.ToString()) Then
resultName = methIndName.ToString().Trim()
ElseIf indName IsNot Nothing AndAlso Not IsDBNull(indName) Then
resultName = indName.ToString().Trim()
End If
If unit IsNot Nothing AndAlso Not IsDBNull(unit) AndAlso Not String.IsNullOrWhiteSpace(unit.ToString()) Then
If group <> 1 Then
Dim unitStr As String = RemoveTagsWithSupIndex(unit)
resultName &= ", " & unitStr
End If
End If
If resultName = "Метан" Then
resultName = "Молярная доля компонентов (компонентный состав), %" & vbLf & resultName
End If
Return resultName
End Function
</syntaxhighlight>
<syntaxhighlight lang="vb">
Public Function RemoveTagsWithSupIndex(ByVal input As String) As String
Dim tags() As String = {"<span>", "</span>", "<sub>", "</sub>", "<sup>", "</sup>"}
Dim txt As String = input
   
For Each tag As String In tags
txt = Replace(txt, tag, "", , , CompareMethod.Text)
Next
   
Return Replace(txt, "3", "³", , , CompareMethod.Text)
End Function
</syntaxhighlight>
|-
|-
|Метод испытания
|Метод испытания
|
|<code style="background-color: #d4edda;>Методики анализа</code> >> Выбрать методику >> <code style="background-color: #d4edda;>Редактировать</code> >> <code style="background-color: #d4edda;>Карточка методики анализа</code> >> <code style="background-color: #d4edda;>Нормативный документ</code>
<code style="background-color: #fff3e0;>Fields!norm_document.Value</code>  >> <code style="background-color: #fff3e0;>norm_document / ResultDataSet</code> >> <code style="background-color: #fff3e0;>NORMATIVE_DOCUMENT / METHODOLOGY</code>
|<syntaxhighlight lang="vb">=GetOrDash(Fields!norm_document.Value)</syntaxhighlight>
|<syntaxhighlight lang="vb">=GetOrDash(Fields!norm_document.Value)</syntaxhighlight>
*используется функция [[Scripts#GetOrDash()|<code>GetOrDash()</code>]]
|-
|-
|Норма (строка 1)
|Норма минимальная и максимальная (строка 1)
|
|rowspan = "3"| <code style="background-color: #d4edda;>Объекты анализа</code> >> Выбрать объект >> <code style="background-color: #d4edda;>Редактировать</code> >> <code style="background-color: #d4edda;>Карточка объекта анализа</code> >> Выбрать показатель >> <code style="background-color: #d4edda;>Карточка показателя</code> >> <code style="background-color: #d4edda;>Номер в паспорт качества, Группа в паспорт качества</code>
|<syntaxhighlight lang="vb"></syntaxhighlight>
<code style="background-color: #d4edda;>Объекты анализа</code> >> Выбрать объект >> <code style="background-color: #d4edda;>Редактировать</code> >> <code style="background-color: #d4edda;>Карточка объекта анализа</code> >> Выбрать показатель >> <code style="background-color: #d4edda;>Карточка показателя</code> >> <code style="background-color: #d4edda;>Нормы</code> >> <code style="background-color: #d4edda;>Нижний предел, Округление</code>
 
<code style="background-color: #fff3e0;>Fields!serial_number.Value, Fields!group_number.Value, Fields!min.Value, Fields!comment.Value, Fields!limit_scale.Value</code> >> <code style="background-color: #fff3e0;>serial_number, group_number, min, comment, limit_scale / ResultDataSet</code> >> <code style="background-color: #fff3e0;>INTEGER_VALUE / INDICATOR_ATTRIBUTE</code>, <code style="background-color: #fff3e0;>LOWER_LIMIT, COMMENT, LIMIT_SCALE / QUANTITATIVE_NORM</code>
|<syntaxhighlight lang="vb">=IIF(Fields!serial_number.Value = 1, GetNorms(Fields!group_number.Value, Fields!min.Value, Fields!comment.Value, Fields!limit_scale.Value), "")</syntaxhighlight>
<syntaxhighlight lang="vb">
Public Function GetNorms(groupNumber As Integer, norm As String, comment As String, scale As Object) As String
 
If groupNumber = 1 Or groupNumber = 8 Or groupNumber = 9 Or groupNumber = 10 Then Return comment
If norm = "0" Or norm Like "*0*(0)*" Then Return "-"
If groupNumber = 6 Or groupNumber = 7 Then Return norm.Replace(".", ",")
If scale IsNot Nothing Then Return RoundMethod(Double.Parse(norm.Replace(".", ",")), Integer.Parse(scale), 1)
Return norm.Replace(".", ",")
End Function
</syntaxhighlight>
*используется функция <code>RoundMethod</code>, вариация функции [[Глобальные_функции#Rounding.RoundBase()|<code>Rounding.RoundBase()</code>]]
|-
|-
|Норма (строка 2)
|Норма минимальная и максимальная (строка 2)
|
|<syntaxhighlight lang="vb">=GetNorms(Fields!group_number.Value, Fields!min.Value, Fields!comment.Value, Fields!limit_scale.Value)</syntaxhighlight>
|<syntaxhighlight lang="vb"></syntaxhighlight>
|-
|-
|Норма (строка 3)
|Норма минимальная (строка 3)
|
|<syntaxhighlight lang="vb">=GetNorms(Fields!group_number.Value, Fields!min.Value, Fields!comment.Value, Fields!limit_scale.Value)</syntaxhighlight>
|<syntaxhighlight lang="vb"></syntaxhighlight>
|-
|Норма максимальная (строка 3)
|Вместо <code style="background-color: #d4edda;>Нижний предел</code> используется <code style="background-color: #d4edda;>Объекты анализа</code> >> Выбрать объект >> <code style="background-color: #d4edda;>Редактировать</code> >> <code style="background-color: #d4edda;>Карточка объекта анализа</code> >> Выбрать показатель >> <code style="background-color: #d4edda;>Карточка показателя</code> >> <code style="background-color: #d4edda;>Нормы</code> >> <code style="background-color: #d4edda;>Верхний предел</code><br>
Вместо <code style="background-color: #fff3e0;>min</code> используется  <code style="background-color: #fff3e0;>Fields!max.Value</code> >> <code style="background-color: #fff3e0;>max / ResultDataSet</code> >> <code style="background-color: #fff3e0;>UPPER_LIMIT / QUANTITATIVE_NORM</code>
|<syntaxhighlight lang="vb">=GetNorms(Fields!group_number.Value, Fields!max.Value, Fields!comment.Value, Fields!limit_scale.Value)</syntaxhighlight>
|-
|-
|Результаты испытаний
|Результаты испытаний
|
|<code style="background-color: #d4edda;>Объекты анализа</code> >> Выбрать объект >> <code style="background-color: #d4edda;>Редактировать</code> >> <code style="background-color: #d4edda;>Карточка объекта анализа</code> >> Выбрать показатель >> <code style="background-color: #d4edda;>Карточка показателя</code> >> <code style="background-color: #d4edda;>Группа в паспорт качества</code>
|<syntaxhighlight lang="vb">=GetResult(Fields!group_number.Value, Fields!ind_name.Value, Fields!num_result.Value, Fields!str_result.Value, Fields!min.Value, Fields!max.Value, Fields!round_num.Value, Fields!round_type.Value)</syntaxhighlight>
 
<code style="background-color: #d4edda;>Лабораторные журналы</code> >> <code style="background-color: #d4edda;>Журнал регистрации проб и результатов</code> >> Выбрать пробу >> <code style="background-color: #d4edda;>Результаты</code> >> <code style="background-color: #d4edda;>Ввод результатов</code> >> <code style="background-color: #d4edda;>Результат</code>
 
<code style="background-color: #d4edda;>Методики анализа</code> >> Выбрать методику >> <code style="background-color: #d4edda;>Редактировать</code> >> <code style="background-color: #d4edda;>Карточка методики анализа</code> >> <code style="background-color: #d4edda;>Показатели качества</code> >> Выбрать показатель >> <code style="background-color: #d4edda;>Диапазоны</code>
 
<code style="background-color: #d4edda;>Методики анализа</code> >> Выбрать методику >> <code style="background-color: #d4edda;>Редактировать</code> >> <code style="background-color: #d4edda;>Карточка методики анализа</code> >> <code style="background-color: #d4edda;>Округление</code> >> <code style="background-color: #d4edda;>Округление</code> >> Выбрать показатель >> <code style="background-color: #d4edda;>Представление результата анализа</code>
<code style="background-color: #fff3e0;>Fields!group_number.Value,  Fields!num_result.Value, Fields!str_result.Value, Fields!met_min.Value, Fields!met_max.Value, Fields!round_num.Value, Fields!round_type.Value</code> >> <code style="background-color: #fff3e0;>group_number, num_result, str_result, met_min, met_max, round_num, round_type / ResultDataSet</code> >> <code style="background-color: #fff3e0;>INTEGER_VALUE / INDICATOR_ATTRIBUTE</code>, <code style="background-color: #fff3e0;>NAME / INDICATOR</code>, <code style="background-color: #fff3e0;>AVG_R / JOURNAL_RESULT</code>, <code style="background-color: #fff3e0;>FROM, TO / METH_METR_RNG_BNDS</code>, <code style="background-color: #fff3e0;>NUMBER, TYPE / STANDARD_ROUND_RESULT</code>
 
|<syntaxhighlight lang="vb">=GetResult(Fields!group_number.Value, Fields!num_result.Value, Fields!str_result.Value, Fields!met_min.Value, Fields!met_max.Value, Fields!round_num.Value, Fields!round_type.Value)</syntaxhighlight>
<syntaxhighlight lang="vb">
Public Function GetResult(group As Integer, numRes As Double, strRes As String,
min As Object, max As Object, digits As Object, mode As Object) As String
Select Case group
Case 6, 7
Dim arr() As String = strRes.Split(" "c)
Dim firstNum As Double = Double.Parse(arr(0).Replace(".", ","))
Dim secondNum As Double = Double.Parse(arr(1).Replace(".", ",").Replace("(", "").Replace(")", ""))
Dim compareRangeNorm = GetMetRange(numRes, min, max, digits, mode)
If compareRangeNorm Like "*менее*" Or compareRangeNorm Like "*более*" Then
Return compareRangeNorm
Else
Return RoundMethod(firstNum, 2, 1) & " (" & RoundMethod(secondNum, 0, 1) & ")"
End If
Case 11
Return "отсутствуют"
 
Case Else
Return GetMetRange(numRes, min, max, digits, mode)
End Select
End Function
</syntaxhighlight>
<syntaxhighlight lang="vb">
Public Function GetMetRange(numRes As Double, min As Object, max As Object, digits As Object, mode As Object) As String
Dim numMin As Double
If min Is Nothing OrElse IsDBNull(min) OrElse String.IsNullOrWhiteSpace(min.ToString()) Then
numMin = Double.MinValue
Else
numMin = Val(min.ToString().Replace(",", "."))
End If
Dim numMax As Double
If max Is Nothing OrElse IsDBNull(max) OrElse String.IsNullOrWhiteSpace(max.ToString()) Then
numMax = Double.MaxValue
Else
numMax = Val(max.ToString().Replace(",", "."))
End If
If numRes < numMin Then
Return "менее " & min.ToString()
ElseIf numRes > numMax Then
Return "более " & max.ToString()
Else
Return RoundMethod(numRes, digits, mode) 
End If   
End Function
</syntaxhighlight>
*используется функция <code>RoundMethod</code>, вариация функции [[Глобальные_функции#Rounding.RoundBase()|<code>Rounding.RoundBase()</code>]]
|-
|-
|}
|}
Строка 189: Строка 377:
!Код и комментарии
!Код и комментарии
|-
|-
|
|1. Значения и нормы показателей ... установлены при стандартном давлении 101,325 кПа и стандартной температуре 20,0 °С. Стандартная температура сгорания 25,0 °С.
|
|<code style="background-color: #d4edda;>Объекты анализа</code> >> Выбрать объект >> <code style="background-color: #d4edda;>Редактировать</code> >> <code style="background-color: #d4edda;>Карточка объекта анализа</code> >> Выбрать показатель >> <code style="background-color: #d4edda;>Карточка показателя</code> >> <code style="background-color: #d4edda;>Норма при стандартных условиях</code>
|<syntaxhighlight lang="vb"></syntaxhighlight>
 
<code style="background-color: #fff3e0;>Fields!standart_norm.Value</code> >> <code style="background-color: #fff3e0;>standart_norm / NoteDataSet</code> >> <code style="background-color: #fff3e0;>BOOLEAN_VALUE / INDICATOR_ATTRIBUTE</code>
 
<code style="background-color: #fff3e0;>Fields!group_index.Value</code> >> <code style="background-color: #fff3e0;>group_index / NoteDataSet</code> >> <code style="background-color: #fff3e0;>SQL</code>
|<syntaxhighlight lang="vb">="1. Значения и нормы показателей " & CollapseNumbers(LookupSet(True, Fields!standart_norm.Value, Fields!group_index.Value, "NoteDataSet")) & " установлены при стандартном давлении 101,325 кПа и стандартной температуре 20,0 °С. Стандартная температура сгорания 25,0 °С."</syntaxhighlight>
*используется функция [[Scripts#CollapseNumbers()|<code>CollapseNumbers()</code>]]
|-
|-
|
|2. Нормы и значения показателей ... установлены при давлении в точке отбора пробы.
|
|<code style="background-color: #d4edda;>Методики анализа</code> >> Выбрать методику >> <code style="background-color: #d4edda;>Редактировать</code> >> <code style="background-color: #d4edda;>Карточка методики анализа</code> >> <code style="background-color: #d4edda;>Наименование по методике</code>
|<syntaxhighlight lang="vb"></syntaxhighlight>
 
<code style="background-color: #d4edda;>Объекты анализа</code> >> Выбрать объект >> <code style="background-color: #d4edda;>Редактировать</code> >> <code style="background-color: #d4edda;>Карточка объекта анализа</code> >> Выбрать показатель >> <code style="background-color: #d4edda;>Карточка показателя</code> >> <code style="background-color: #d4edda;>Наименование</code>
 
<code style="background-color: #fff3e0;>Fields!group_index.Value</code> >> <code style="background-color: #fff3e0;>group_index / NoteDataSet</code> >> <code style="background-color: #fff3e0;>SQL</code>
 
<code style="background-color: #fff3e0;>Fields!met_ind_name.Value, Fields!ind_name.Value</code> >> <code style="background-color: #fff3e0;>met_ind_name, ind_name / NoteDataSet</code> >> <code style="background-color: #fff3e0;>INTEGER_VALUE / INDICATOR_ATTRIBUTE</code>, <code style="background-color: #fff3e0;>INDICATOR_METHODOLOGY_NAME / METHODOLOGY_INDICATOR</code>
|<syntaxhighlight lang="vb">="2. Нормы и значения показателей " &  CollapseNumbers(LookupSet(1, 1, GetNumForNote23(Fields!group_index.Value, Fields!met_ind_name.Value, Fields!ind_name.Value), "NoteDataSet")) &  " установлены при давлении в точке отбора пробы."</syntaxhighlight>
*используется функция [[Scripts#CollapseNumbers()|<code>CollapseNumbers()</code>]]
<syntaxhighlight lang="vb">
Public Function GetNumForNote23(group As Object, methIndName As Object, indName As Object) As Object
Dim text As String = ""
If methIndName IsNot Nothing AndAlso Not IsDBNull(methIndName) Then
text = methIndName.ToString()
ElseIf indName IsNot Nothing AndAlso Not IsDBNull(indName) Then
text = indName.ToString()
End If
 
If LCase(text) Like "*емпер*точк*ос*" Then
Return group
End If
Return Nothing
End Function
</syntaxhighlight>
|-
|-
|
|3. Температура газа в точке отбора пробы при определении показателей ...
|
|<code style="background-color: #d4edda;>Методики анализа</code> >> Выбрать методику >> <code style="background-color: #d4edda;>Редактировать</code> >> <code style="background-color: #d4edda;>Карточка методики анализа</code> >> <code style="background-color: #d4edda;>Наименование по методике</code>
|<syntaxhighlight lang="vb"></syntaxhighlight>
 
<code style="background-color: #d4edda;>Объекты анализа</code> >> Выбрать объект >> <code style="background-color: #d4edda;>Редактировать</code> >> <code style="background-color: #d4edda;>Карточка объекта анализа</code> >> Выбрать показатель >> <code style="background-color: #d4edda;>Карточка показателя</code> >> <code style="background-color: #d4edda;>Наименование</code>
 
<code style="background-color: #d4edda;>Лабораторные журналы</code> >> <code style="background-color: #d4edda;>Журнал регистрации проб и результатов</code> >> Выбрать пробу >> <code style="background-color: #d4edda;>Результаты</code> >> <code style="background-color: #d4edda;>Ввод результатов</code> >> <code style="background-color: #d4edda;>+</code> >> <code style="background-color: #d4edda;>Температура газа</code>
 
<code style="background-color: #fff3e0;>Fields!group_index.Value</code> >> <code style="background-color: #fff3e0;>group_index / NoteDataSet</code> >> <code style="background-color: #fff3e0;>SQL</code>
 
<code style="background-color: #fff3e0;>Fields!met_ind_name.Value, Fields!ind_name.Value, Fields!temperature.Value</code> >> <code style="background-color: #fff3e0;>met_ind_name, ind_name, temperature / NoteDataSet</code> >> <code style="background-color: #fff3e0;>INTEGER_VALUE / INDICATOR_ATTRIBUTE</code>, <code style="background-color: #fff3e0;>INDICATOR_METHODOLOGY_NAME / METHODOLOGY_INDICATOR</code>, <code style="background-color: #fff3e0;>VALUE / JRPARALLELVARS</code>
 
|<syntaxhighlight lang="vb">="3. Температура газа в точке отбора пробы при определении показателей " &  CollapseNumbers(LookupSet(1, 1, GetNumForNote23(Fields!group_index.Value, Fields!met_ind_name.Value, Fields!ind_name.Value), "NoteDataSet"))</syntaxhighlight>
*используется функция [[Scripts#CollapseNumbers()|<code>CollapseNumbers()</code>]]
<syntaxhighlight lang="vb">=Format(Max(Fields!temperature.Value), "0.##")</syntaxhighlight>
|-
|-
|
|4. Значения показателей ... определены потоковыми средствами измерений (среднеарифметическое значение за период поставки).
|
|<code style="background-color: #d4edda;>Лабораторные журналы</code> >> <code style="background-color: #d4edda;>Журнал регистрации проб и результатов</code> >> Выбрать пробу >> <code style="background-color: #d4edda;>Результаты</code> >> <code style="background-color: #d4edda;>Ввод результатов</code> >> <code style="background-color: #d4edda;>Определен</code>
|<syntaxhighlight lang="vb"></syntaxhighlight>
 
<code style="background-color: #fff3e0;>Fields!group_index.Value</code> >> <code style="background-color: #fff3e0;>group_index / NoteDataSet</code> >> <code style="background-color: #fff3e0;>SQL</code>
 
<code style="background-color: #fff3e0;>Fields!definition.Value</code> >> <code style="background-color: #fff3e0;>definition / NoteDataSet</code> >> <code style="background-color: #fff3e0;>STRING_VALUE / JOURNAL_RESULT_ATTRIBUTE</code>
|<syntaxhighlight lang="vb">=CollapseNumbers(LookupSet(1, 1, GetNumForNote4(Fields!group_index.Value, Fields!definition.Value), "NoteDataSet"))</syntaxhighlight>
*используется функция [[Scripts#CollapseNumbers()|<code>CollapseNumbers()</code>]]
<syntaxhighlight lang="vb">
Public Function GetNumForNote4(group As Object, definition As Object) As Object
If definition Is Nothing Then Return Nothing
If LCase(definition.ToString()) Like "*ото*си*" Then Return group
Return Nothing
End Function
</syntaxhighlight>
|-
|-
|
|5. Значения показателей ... определены ...
|
|<code style="background-color: #d4edda;>Лабораторные журналы</code> >> <code style="background-color: #d4edda;>Журнал регистрации проб и результатов</code> >> Выбрать пробу >> <code style="background-color: #d4edda;>Результаты</code> >> <code style="background-color: #d4edda;>Ввод результатов</code> >> <code style="background-color: #d4edda;>Определен</code>
|<syntaxhighlight lang="vb"></syntaxhighlight>
 
|-
<code style="background-color: #fff3e0;>Fields!group_index.Value</code> >> <code style="background-color: #fff3e0;>group_index / NoteDataSet</code> >> <code style="background-color: #fff3e0;>SQL</code>
|
 
|
<code style="background-color: #fff3e0;>Fields!definition.Value</code> >> <code style="background-color: #fff3e0;>definition / NoteDataSet</code> >> <code style="background-color: #fff3e0;>STRING_VALUE / JOURNAL_RESULT_ATTRIBUTE</code>
|<syntaxhighlight lang="vb"></syntaxhighlight>
 
|-
<code>=Parameters!ReportParameterLaboratory.Label</code>
|
|<syntaxhighlight lang="vb">=CollapseNumbers(LookupSet(1, 1, GetNumForNote5(Fields!group_index.Value, Fields!definition.Value, Fields!first_45.Value), "NoteDataSet"))</syntaxhighlight>
|
*используется функция [[Scripts#CollapseNumbers()|<code>CollapseNumbers()</code>]]
|<syntaxhighlight lang="vb"></syntaxhighlight>
<syntaxhighlight lang="vb">
|-
Public Function GetNumForNote5(group As Object, definition As Object, first_45 As Boolean) As Object
|
If first_45 AndAlso group = 1 Then Return Nothing
|
|<syntaxhighlight lang="vb"></syntaxhighlight>
If definition Is Nothing OrElse Not (LCase(definition.ToString()) Like "*ото*си*") Then Return group
|-
 
|
Return Nothing
|
End Function
|<syntaxhighlight lang="vb"></syntaxhighlight>
</syntaxhighlight>
|-
<syntaxhighlight lang="vb">=Parameters!ReportParameterLaboratory.Label</syntaxhighlight>
|
|
|<syntaxhighlight lang="vb"></syntaxhighlight>
|-
|
|
|<syntaxhighlight lang="vb"></syntaxhighlight>
|-
|
|
|<syntaxhighlight lang="vb"></syntaxhighlight>
|-
|
|
|<syntaxhighlight lang="vb"></syntaxhighlight>
|-
|-
|}
|}
Строка 251: Строка 477:
!Код и комментарии
!Код и комментарии
|-
|-
|
|Должность
|
|<code style="background-color: #d4edda;>Персонал</code> >> Выбрать запись >> <code style="background-color: #d4edda;>Карточка сотрудника</code> >> <code style="background-color: #d4edda;>Должность</code>
|<syntaxhighlight lang="vb"></syntaxhighlight>
<code style="background-color: #fff3e0;>Fields!position.Value</code> >> <code style="background-color: #fff3e0;>position / FilterDataSetFio</code> >> <code style="background-color: #fff3e0;>SURNAME; NAME; PATRONYMIC / EMPLOYEE</code>
|-
|<syntaxhighlight lang="vb">=Fields!position.Value</syntaxhighlight>
|
|
|<syntaxhighlight lang="vb"></syntaxhighlight>
|-
|-
|
|И.О. Фамилия
|
|<code style="background-color: #d4edda;>Персонал</code> >> Выбрать запись >> <code style="background-color: #d4edda;>Карточка сотрудника</code> >> <code style="background-color: #d4edda;>Фамилия</code>; <code style="background-color: #d4edda;>Имя</code>; <code style="background-color: #d4edda;>Отчество</code>
|<syntaxhighlight lang="vb"></syntaxhighlight>
<code style="background-color: #fff3e0;>Fields!surname.Value, Fields!name.Value, Fields!patronimyc.Value</code> >> <code style="background-color: #fff3e0;>surname, name, patronimyc / FilterDataSetFio</code> >> <code style="background-color: #fff3e0;>SURNAME; NAME; PATRONYMIC / EMPLOYEE</code>
|<syntaxhighlight lang="vb">=FormatFio(Fields!surname.Value, Fields!name.Value, Fields!patronymic.Value, 2)</syntaxhighlight>
*используется функция [[Scripts#FormatFio()|<code>FormatFio()</code>]]
|-
|-
|}
|}

Текущая версия от 07:06, 5 мая 2026

Общий вид

Параметры

В форме используются 7 фильтров параметров:

Параметр Тип поля Данные Сортировка
1 Выберите лабораторию: выбор значения лаборатории, имеющие записи в журналах с показателями, у которых в наименовании нормы присутствует ГОСТ 5542 по алфавиту
2 Введите номер паспорта: ввод текста 1 (значение по умолчанию) -
3 Введите начало периода поставки: поле-календарь 01.01.2020 0:00 (значение по умолчанию) -
4 Введите завершение периода поставки: поле-календарь текущие дата и время (значение по умолчанию) -
5 Введите газораспределительные станции: ввод текста газораспределительные станции ("-" значение по умолчанию) -
6 Выберите сотрудника, утверждающего паспорт: выбор значения сотрудники лаборатории (п.1) по алфавиту
7 Выберите сотрудников, ответственных за оформление паспорта: выбор одного или нескольких значений сотрудники лаборатории (п.1) по алфавиту

Атрибуты

В наборе данных OrganisationDataSet в таблице ATTRIBUTE_NAME используются атрибуты со следующими значениями NAME:

  • Адрес
  • Телефоны
  • E-mail

В наборе данных MainDataSet в таблице ATTRIBUTE_NAME используются атрибуты со следующими значениями NAME:

  • НД на отбор проб
  • Дата и время отбора пробы
  • Дата поставки пробы
  • Полное наименование
  • Код ОКПД 2
  • Дата начала анализа
  • Дата окончания анализа

В наборе данных ResultDataSet в таблице ATTRIBUTE_NAME используются атрибуты со следующими значениями NAME:

  • Группа в паспорт качества
  • Номер в паспорт качества
  • НД на отбор проб
  • Дата поставки пробы
  • Дата и время отбора пробы

В наборе данных NoteDataSet в таблице ATTRIBUTE_NAME используются атрибуты со следующими значениями NAME:

  • Дата поставки пробы
  • Определен
  • Группа в паспорт качества
  • Номер в паспорт качества
  • Норма при стандартных условиях

Внимание!

Описание атрибутов приведено в соответствии с базой данных ASTRA-PG13 на основе созданных пользователем полей.

В других базах этих полей может не быть либо их наименование может отличаться!!!

Отсутствующие в базе атрибуты не будут выводиться в документе. Для корректной работы документа актуализируйте атрибуты в соответствии с приведенным списком.

Поля, данные, выражения, элементы интерфейса и код

Информация об организации

Поля Интерфейс ... >> ...

и данные ... >> ... >> ...

Код и комментарии
Наименование организации Подразделения предприятия >> + >> Выбрать предприятие >> Редактировать >> Карточка подразделения >> Краткое наименование

Fields!head_org.Value >> head_org / OrganisationDataSet >> SHORT_NAME / COMPANY_LEVEL

=Fields!head_org.Value
Адрес, телефоны, e-mail Подразделения предприятия >> + >> Выбрать предприятие >> Редактировать >> Карточка подразделения >> Адрес, Телефоны, E-mail

Fields!head_org_address.Value, Fields!head_org_tel.Value, Fields!head_org_mail.Value >> head_org_address, head_org_tel, head_org_mail / OrganisationDataSet >> VALUE / LONGTEXT_STORAGE, STRING_VALUE / COMPANY_LEVEL_ATTRIBUTE

=Fields!head_org_address.Value & vbLF & "тел, e-mail: " & ConcatFields("; ", Fields!head_org_tel.Value, Fields!head_org_mail.Value)

используются:

  • перенос строки (vbLF);
  • для соединения полей функция ConcatFields();
Наименование лаборатории Подразделения предприятия >> + >> Выбрать подразделение >> Редактировать >> Карточка подразделения >> Краткое наименование

Fields!lab_name.Value >> lab_name / OrganisationDataSet >> SHORT_NAME / COMPANY_LEVEL

=Fields!lab_name.Value
Адрес лаборатории Подразделения предприятия >> + >> Выбрать подразделение >> Редактировать >> Карточка подразделения >> Адрес

Fields!lab_address.Value >> lab_address / OrganisationDataSet >> VALUE / LONGTEXT_STORAGE

=Fields!lab_address.Value

Блок утверждения

Поля Интерфейс ... >> ...

и данные ... >> ...

Код и комментарии
Должность Персонал >> Выбрать запись >> Карточка сотрудника >> Должность

Fields!position.Value >> position / FilterDataSetFio >> SURNAME; NAME; PATRONYMIC / EMPLOYEE

=First(Fields!position.Value)
Лаборатория Подразделения предприятия >> + >> Выбрать подразделение >> Редактировать >> Карточка подразделения >> Краткое наименование

Fields!lab_name.Value >> lab_name / FilterDataSetFio >> SHORT_NAME / COMPANY_LEVEL

=First(Fields!lab_name.Value)
И.О. Фамилия Персонал >> Выбрать запись >> Карточка сотрудника >> Фамилия; Имя; Отчество

Fields!surname.Value, Fields!name.Value, Fields!patronimyc.Value >> surname, name, patronimyc / FilterDataSetFio >> SURNAME; NAME; PATRONYMIC / EMPLOYEE

=FormatFio(Fields!surname.Value, Fields!name.Value, Fields!patronimyc.Value, 2)

Общие данные паспорта

Поля Интерфейс ... >> ...

и данные ... >> ...

Код и комментарии
Номер паспорта качества Parameters!ReportParameterNum.Value
="Паспорт качества № " & Parameters!ReportParameterNum.Value
Наименование объекта анализа и наименование стандарта Объекты анализа >> Выбрать объект >> Редактировать >> Карточка объекта анализа >> Полное наименование

Объекты анализа >> Выбрать объект >> Редактировать >> Карточка объекта анализа >> Выбрать показатель >> Карточка показателя >> Нормы >> Наименование

Fields!ao_full_name.Value, Fields!quant_norm.Value >> ao_full_name, quant_norm / MainDataSet >> STRING_VALUE / ANALYSIS_OBJECT_ATTRIBUTE, NAME / QUANTITATIVE_NORM

=Fields!ao_full_name.Value & " по " & Fields!quant_norm.Value
Код ОКПД2 Объекты анализа >> Выбрать объект >> Редактировать >> Карточка объекта анализа >> Код ОКПД 2

Fields!code_okpd2.Value >> code_okpd2 / MainDataSet >> STRING_VALUE / ANALYSIS_OBJECT_ATTRIBUTE

="Код ОКПД 2 " & Fields!code_okpd2.Value
Паспорт качества распространяется на объемы газа, поданного через газораспределительные станции: Parameters!ReportParameterStation.Value
=IIF(Parameters!ReportParameterStation.Value = "-", "", Parameters!ReportParameterStation.Value)
Дата (период) отбора проб Лабораторные журналы >> Журнал регистрации проб и испытаний >> Выбрать пробу >> Редактировать >> Карточка пробы >> Информация >> Дата и время отбора пробы

Fields!sampling_date.Value >> sampling_date / MainDataSet >> DATE_VALUE / JOURNAL_RECORD_ATTRIBUTE

=RangeDate(Min(Fields!sampling_date.Value), Max(Fields!sampling_date.Value))
Public Function RangeDate(minDate As Object, maxDate As Object) As String
	Dim hasMin As Boolean = Not minDate Is Nothing
	Dim hasMax As Boolean = Not maxDate Is Nothing

	If Not hasMin And Not hasMax Then Return "-"
	
	If hasMin And Not hasMax Then
		Return minDate.Date
	ElseIf Not hasMin And hasMax Then
		Return maxDate.Date
	ElseIf hasMin And hasMax Then
		If minDate.Date = maxDate.Date Then
			Return minDate.Date
		Else
			Return minDate.Date & " - " & maxDate.Date
		End If
	End If
End Function
НД на метод отбора Объекты анализа >> Выбрать объект >> Редактировать >> Карточка объекта анализа >> НД на отбор проб

Fields!sampling_norm_doc.Value >> sampling_norm_doc / MainDataSet >> STRING_VALUE / JOURNAL_RECORD_ATTRIBUTE

=First(Fields!sampling_norm_doc.Value)
Место отбора проб Лабораторные журналы >> Журнал регистрации проб и испытаний >> Выбрать пробу >> Редактировать >> Карточка пробы >> Источник >> Выбранный источник

Fields!place_name.Value >> place_name / MainDataSet >> SHORT_NAME / SAMPLE_SOURCE

=First(Fields!place_name.Value)
Дата (период) испытаний Лабораторные журналы >> Журнал регистрации проб и испытаний >> Выбрать пробу >> Редактировать >> Карточка пробы >> Информация >> Дата поставки пробы

Fields!delivery_date.Value >> delivery_date / MainDataSet >> DATE_VALUE / JOURNAL_RECORD_ATTRIBUTE

=RangeDate(Fields!min_date_analysis.Value, Fields!max_date_analysis.Value)

Таблица результатов

Поля Интерфейс ... >> ...

и данные ... >> ...

Код и комментарии
Fields!group_index.Value >> group_index / ResultDataSet >> SQL
=Fields!group_index.Value & "."
Наименование показателя Объекты анализа >> Выбрать объект >> Редактировать >> Карточка объекта анализа >> Выбрать показатель >> Карточка показателя >> Группа в паспорт качества, Наименование

Методики анализа >> Выбрать методику >> Редактировать >> Карточка методики анализа >> Наименование по методике, Единица измерения

Fields!group_number.Value, Fields!met_ind_name.Value, Fields!ind_name.Value, Fields!unit.Value >> group_number, met_ind_name, ind_name, unit / ResultDataSet >> INTEGER_VALUE / INDICATOR_ATTRIBUTE, INDICATOR_METHODOLOGY_NAME / METHODOLOGY_INDICATOR, NAME / INDICATOR, HTML_NAME / UNIT

=GetIndName(Fields!group_number.Value, Fields!met_ind_name.Value, Fields!ind_name.Value, Fields!unit.Value)
Public Function GetIndName(group As Integer, methIndName As Object, indName As Object, unit As Object) As String
	
	Dim resultName As String = ""
	
	If methIndName IsNot Nothing AndAlso Not IsDBNull(methIndName) AndAlso Not String.IsNullOrWhiteSpace(methIndName.ToString()) Then
		resultName = methIndName.ToString().Trim()
	ElseIf indName IsNot Nothing AndAlso Not IsDBNull(indName) Then
		resultName = indName.ToString().Trim()
	End If
		
	If unit IsNot Nothing AndAlso Not IsDBNull(unit) AndAlso Not String.IsNullOrWhiteSpace(unit.ToString()) Then
		If group <> 1 Then
			Dim unitStr As String = RemoveTagsWithSupIndex(unit)
			resultName &= ", " & unitStr
		End If
	End If	
	
	If resultName = "Метан" Then
		resultName = "Молярная доля компонентов (компонентный состав), %" & vbLf & resultName
	End If
	
	Return resultName
	
End Function
Public Function RemoveTagsWithSupIndex(ByVal input As String) As String
	Dim tags() As String = {"<span>", "</span>", "<sub>", "</sub>", "<sup>", "</sup>"}
	Dim txt As String = input
    
	For Each tag As String In tags
		txt = Replace(txt, tag, "", , , CompareMethod.Text)
	Next
    
	Return Replace(txt, "3", "³", , , CompareMethod.Text)
End Function
Метод испытания Методики анализа >> Выбрать методику >> Редактировать >> Карточка методики анализа >> Нормативный документ

Fields!norm_document.Value >> norm_document / ResultDataSet >> NORMATIVE_DOCUMENT / METHODOLOGY

=GetOrDash(Fields!norm_document.Value)
Норма минимальная и максимальная (строка 1) Объекты анализа >> Выбрать объект >> Редактировать >> Карточка объекта анализа >> Выбрать показатель >> Карточка показателя >> Номер в паспорт качества, Группа в паспорт качества

Объекты анализа >> Выбрать объект >> Редактировать >> Карточка объекта анализа >> Выбрать показатель >> Карточка показателя >> Нормы >> Нижний предел, Округление

Fields!serial_number.Value, Fields!group_number.Value, Fields!min.Value, Fields!comment.Value, Fields!limit_scale.Value >> serial_number, group_number, min, comment, limit_scale / ResultDataSet >> INTEGER_VALUE / INDICATOR_ATTRIBUTE, LOWER_LIMIT, COMMENT, LIMIT_SCALE / QUANTITATIVE_NORM

=IIF(Fields!serial_number.Value = 1, GetNorms(Fields!group_number.Value, Fields!min.Value, Fields!comment.Value, Fields!limit_scale.Value), "")
Public Function GetNorms(groupNumber As Integer, norm As String, comment As String, scale As Object) As String

	If groupNumber = 1 Or groupNumber = 8 Or groupNumber = 9 Or groupNumber = 10 Then Return comment
	If norm = "0" Or norm Like "*0*(0)*" Then Return "-"	
	If groupNumber = 6 Or groupNumber = 7 Then Return norm.Replace(".", ",")
	If scale IsNot Nothing Then Return RoundMethod(Double.Parse(norm.Replace(".", ",")), Integer.Parse(scale), 1)
	Return norm.Replace(".", ",")
	
End Function
  • используется функция RoundMethod, вариация функции Rounding.RoundBase()
Норма минимальная и максимальная (строка 2)
=GetNorms(Fields!group_number.Value, Fields!min.Value, Fields!comment.Value, Fields!limit_scale.Value)
Норма минимальная (строка 3)
=GetNorms(Fields!group_number.Value, Fields!min.Value, Fields!comment.Value, Fields!limit_scale.Value)
Норма максимальная (строка 3) Вместо Нижний предел используется Объекты анализа >> Выбрать объект >> Редактировать >> Карточка объекта анализа >> Выбрать показатель >> Карточка показателя >> Нормы >> Верхний предел

Вместо min используется Fields!max.Value >> max / ResultDataSet >> UPPER_LIMIT / QUANTITATIVE_NORM

=GetNorms(Fields!group_number.Value, Fields!max.Value, Fields!comment.Value, Fields!limit_scale.Value)
Результаты испытаний Объекты анализа >> Выбрать объект >> Редактировать >> Карточка объекта анализа >> Выбрать показатель >> Карточка показателя >> Группа в паспорт качества

Лабораторные журналы >> Журнал регистрации проб и результатов >> Выбрать пробу >> Результаты >> Ввод результатов >> Результат

Методики анализа >> Выбрать методику >> Редактировать >> Карточка методики анализа >> Показатели качества >> Выбрать показатель >> Диапазоны

Методики анализа >> Выбрать методику >> Редактировать >> Карточка методики анализа >> Округление >> Округление >> Выбрать показатель >> Представление результата анализа

Fields!group_number.Value, Fields!num_result.Value, Fields!str_result.Value, Fields!met_min.Value, Fields!met_max.Value, Fields!round_num.Value, Fields!round_type.Value >> group_number, num_result, str_result, met_min, met_max, round_num, round_type / ResultDataSet >> INTEGER_VALUE / INDICATOR_ATTRIBUTE, NAME / INDICATOR, AVG_R / JOURNAL_RESULT, FROM, TO / METH_METR_RNG_BNDS, NUMBER, TYPE / STANDARD_ROUND_RESULT

=GetResult(Fields!group_number.Value,  Fields!num_result.Value, Fields!str_result.Value, Fields!met_min.Value, Fields!met_max.Value, Fields!round_num.Value, Fields!round_type.Value)
Public Function GetResult(group As Integer, numRes As Double, strRes As String, 
	min As Object, max As Object, digits As Object, mode As Object) As String
	
	Select Case group
		
		Case 6, 7
			Dim arr() As String = strRes.Split(" "c)
			Dim firstNum As Double = Double.Parse(arr(0).Replace(".", ","))
			Dim secondNum As Double = Double.Parse(arr(1).Replace(".", ",").Replace("(", "").Replace(")", ""))
			
			Dim compareRangeNorm = GetMetRange(numRes, min, max, digits, mode)
			
			If compareRangeNorm Like "*менее*" Or compareRangeNorm Like "*более*" Then
				Return compareRangeNorm
			Else 
				Return RoundMethod(firstNum, 2, 1) & " (" & RoundMethod(secondNum, 0, 1) & ")"
			End If
			
		Case 11
			Return "отсутствуют"

		Case Else
			Return GetMetRange(numRes, min, max, digits, mode)	
		
	End Select
	
End Function
Public Function GetMetRange(numRes As Double, min As Object, max As Object, digits As Object, mode As Object) As String
	
	Dim numMin As Double
	If min Is Nothing OrElse IsDBNull(min) OrElse String.IsNullOrWhiteSpace(min.ToString()) Then
		numMin = Double.MinValue
	Else 
		numMin = Val(min.ToString().Replace(",", "."))
	End If
		
	Dim numMax As Double
	If max Is Nothing OrElse IsDBNull(max) OrElse String.IsNullOrWhiteSpace(max.ToString()) Then
		numMax = Double.MaxValue
	Else 
		numMax = Val(max.ToString().Replace(",", "."))
	End If 
	
	If numRes < numMin Then 
		Return "менее " & min.ToString()
	ElseIf numRes > numMax Then
		Return "более " & max.ToString()
	Else
		Return RoundMethod(numRes, digits, mode)  
	End If    	
	
End Function
  • используется функция RoundMethod, вариация функции Rounding.RoundBase()

Примечания

Поля Интерфейс ... >> ...

и данные ... >> ...

Код и комментарии
1. Значения и нормы показателей ... установлены при стандартном давлении 101,325 кПа и стандартной температуре 20,0 °С. Стандартная температура сгорания 25,0 °С. Объекты анализа >> Выбрать объект >> Редактировать >> Карточка объекта анализа >> Выбрать показатель >> Карточка показателя >> Норма при стандартных условиях

Fields!standart_norm.Value >> standart_norm / NoteDataSet >> BOOLEAN_VALUE / INDICATOR_ATTRIBUTE

Fields!group_index.Value >> group_index / NoteDataSet >> SQL

="1. Значения и нормы показателей " & CollapseNumbers(LookupSet(True, Fields!standart_norm.Value, Fields!group_index.Value, "NoteDataSet")) & " установлены при стандартном давлении 101,325 кПа и стандартной температуре 20,0 °С. Стандартная температура сгорания 25,0 °С."
2. Нормы и значения показателей ... установлены при давлении в точке отбора пробы. Методики анализа >> Выбрать методику >> Редактировать >> Карточка методики анализа >> Наименование по методике

Объекты анализа >> Выбрать объект >> Редактировать >> Карточка объекта анализа >> Выбрать показатель >> Карточка показателя >> Наименование

Fields!group_index.Value >> group_index / NoteDataSet >> SQL

Fields!met_ind_name.Value, Fields!ind_name.Value >> met_ind_name, ind_name / NoteDataSet >> INTEGER_VALUE / INDICATOR_ATTRIBUTE, INDICATOR_METHODOLOGY_NAME / METHODOLOGY_INDICATOR

="2. Нормы и значения показателей " &  CollapseNumbers(LookupSet(1, 1, GetNumForNote23(Fields!group_index.Value, Fields!met_ind_name.Value, Fields!ind_name.Value), "NoteDataSet")) &  " установлены при давлении в точке отбора пробы."
Public Function GetNumForNote23(group As Object, methIndName As Object, indName As Object) As Object
	Dim text As String = ""
	If methIndName IsNot Nothing AndAlso Not IsDBNull(methIndName) Then
		text = methIndName.ToString()
	ElseIf indName IsNot Nothing AndAlso Not IsDBNull(indName) Then
		text = indName.ToString()
	End If

	If LCase(text) Like "*емпер*точк*ос*" Then
		Return group
	End If
	
	Return Nothing
End Function
3. Температура газа в точке отбора пробы при определении показателей ... Методики анализа >> Выбрать методику >> Редактировать >> Карточка методики анализа >> Наименование по методике

Объекты анализа >> Выбрать объект >> Редактировать >> Карточка объекта анализа >> Выбрать показатель >> Карточка показателя >> Наименование

Лабораторные журналы >> Журнал регистрации проб и результатов >> Выбрать пробу >> Результаты >> Ввод результатов >> + >> Температура газа

Fields!group_index.Value >> group_index / NoteDataSet >> SQL

Fields!met_ind_name.Value, Fields!ind_name.Value, Fields!temperature.Value >> met_ind_name, ind_name, temperature / NoteDataSet >> INTEGER_VALUE / INDICATOR_ATTRIBUTE, INDICATOR_METHODOLOGY_NAME / METHODOLOGY_INDICATOR, VALUE / JRPARALLELVARS

="3. Температура газа в точке отбора пробы при определении показателей " &  CollapseNumbers(LookupSet(1, 1, GetNumForNote23(Fields!group_index.Value, Fields!met_ind_name.Value, Fields!ind_name.Value), "NoteDataSet"))
=Format(Max(Fields!temperature.Value), "0.##")
4. Значения показателей ... определены потоковыми средствами измерений (среднеарифметическое значение за период поставки). Лабораторные журналы >> Журнал регистрации проб и результатов >> Выбрать пробу >> Результаты >> Ввод результатов >> Определен

Fields!group_index.Value >> group_index / NoteDataSet >> SQL

Fields!definition.Value >> definition / NoteDataSet >> STRING_VALUE / JOURNAL_RESULT_ATTRIBUTE

=CollapseNumbers(LookupSet(1, 1, GetNumForNote4(Fields!group_index.Value, Fields!definition.Value), "NoteDataSet"))
Public Function GetNumForNote4(group As Object, definition As Object) As Object
	If definition Is Nothing Then Return Nothing
	
	If LCase(definition.ToString()) Like "*ото*си*" Then Return group	
	
	Return Nothing
End Function
5. Значения показателей ... определены ... Лабораторные журналы >> Журнал регистрации проб и результатов >> Выбрать пробу >> Результаты >> Ввод результатов >> Определен

Fields!group_index.Value >> group_index / NoteDataSet >> SQL

Fields!definition.Value >> definition / NoteDataSet >> STRING_VALUE / JOURNAL_RESULT_ATTRIBUTE

=Parameters!ReportParameterLaboratory.Label

=CollapseNumbers(LookupSet(1, 1, GetNumForNote5(Fields!group_index.Value, Fields!definition.Value, Fields!first_45.Value), "NoteDataSet"))
Public Function GetNumForNote5(group As Object, definition As Object, first_45 As Boolean) As Object
	If first_45 AndAlso group = 1 Then Return Nothing
		
	If definition Is Nothing OrElse Not (LCase(definition.ToString()) Like "*ото*си*") Then Return group

	Return Nothing
End Function
=Parameters!ReportParameterLaboratory.Label

Подписи

Поля Интерфейс ... >> ...

и данные ... >> ...

Код и комментарии
Должность Персонал >> Выбрать запись >> Карточка сотрудника >> Должность

Fields!position.Value >> position / FilterDataSetFio >> SURNAME; NAME; PATRONYMIC / EMPLOYEE

=Fields!position.Value
И.О. Фамилия Персонал >> Выбрать запись >> Карточка сотрудника >> Фамилия; Имя; Отчество

Fields!surname.Value, Fields!name.Value, Fields!patronimyc.Value >> surname, name, patronimyc / FilterDataSetFio >> SURNAME; NAME; PATRONYMIC / EMPLOYEE

=FormatFio(Fields!surname.Value, Fields!name.Value, Fields!patronymic.Value, 2)