Паспорт качества газа (ГОСТ 5542): различия между версиями
Sidminik (обсуждение | вклад) |
Sidminik (обсуждение | вклад) Нет описания правки |
||
| (не показано 25 промежуточных версий этого же участника) | |||
| Строка 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"|- | ||
| Строка 44: | Строка 48: | ||
*Дата поставки пробы | *Дата поставки пробы | ||
*Полное наименование | *Полное наименование | ||
*Код ОКПД 2 | |||
</div> | </div> | ||
| Строка 91: | Строка 96: | ||
<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> | <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>]]; | |||
|- | |- | ||
|Наименование лаборатории | |Наименование лаборатории | ||
| Строка 114: | Строка 122: | ||
|Должность | |Должность | ||
|<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!position.Value</code> >> <code style="background-color: #fff3e0;>position / | <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: #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 / | <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: #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 / | <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>]] | |||
|- | |- | ||
|} | |} | ||
| Строка 149: | Строка 158: | ||
|- | |- | ||
|Код ОКПД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"> | |||
<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> | |||
|- | |- | ||
|Паспорт качества распространяется на объемы газа, поданного через газораспределительные станции: | |Паспорт качества распространяется на объемы газа, поданного через газораспределительные станции: | ||
| Строка 196: | Строка 207: | ||
<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> | <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> | |||
|- | |- | ||
|Метод испытания | |Метод испытания | ||
| Строка 201: | Строка 250: | ||
<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> | <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) | ||
| Строка 208: | Строка 258: | ||
<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> | <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">=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> | |||
*используется функция [[Глобальные_функции#Rounding.RoundBase()|<code>Rounding.RoundBase()</code>]] | |||
|- | |- | ||
|Норма минимальная и максимальная (строка 2) | |Норма минимальная и максимальная (строка 2) | ||
| Строка 230: | Строка 292: | ||
<code style="background-color: #fff3e0;>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</code> >> <code style="background-color: #fff3e0;>group_number, ind_name, num_result, str_result, min, 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;>LOWER_LIMIT, UPPER_LIMIT / QUANTITATIVE_NORM</code>, <code style="background-color: #fff3e0;>NUMBER, TYPE / STANDARD_ROUND_RESULT</code> | <code style="background-color: #fff3e0;>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</code> >> <code style="background-color: #fff3e0;>group_number, ind_name, num_result, str_result, min, 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;>LOWER_LIMIT, UPPER_LIMIT / QUANTITATIVE_NORM</code>, <code style="background-color: #fff3e0;>NUMBER, TYPE / STANDARD_ROUND_RESULT</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> | |<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> | ||
<syntaxhighlight lang="vb"> | |||
Public Function GetResult(group As Integer, ind As String, numRes As Double, strRes As String, min As Object, max As Object, digits As Object, mode As Object) As String | |||
If group = 6 Or group = 7 Then | |||
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(")", "")) | |||
Return RoundMethod(firstNum, 2, 1) & " (" & RoundMethod(secondNum, 0, 1) & ")" | |||
End If | |||
If ind.ToLower() Like "*еханич*римес*" And strRes = "0" Then | |||
Return "отсутствуют" | |||
End If | |||
If group = 1 Or group = 8 Or group = 9 Then | |||
Return RoundMethod(numRes, digits, mode) | |||
End If | |||
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> | |||
*используется функция [[Глобальные_функции#Rounding.RoundBase()|<code>Rounding.RoundBase()</code>]] | |||
|- | |- | ||
|} | |} | ||
| Строка 248: | Строка 355: | ||
<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!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> | |<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. Нормы и значения показателей ... установлены при давлении в точке отбора пробы. | |2. Нормы и значения показателей ... установлены при давлении в точке отбора пробы. | ||
| Строка 258: | Строка 366: | ||
<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> | <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> | |<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. Температура газа в точке отбора пробы при определении показателей ... | |3. Температура газа в точке отбора пробы при определении показателей ... | ||
| Строка 271: | Строка 396: | ||
|<syntaxhighlight lang="vb">="3. Температура газа в точке отбора пробы при определении показателей " & CollapseNumbers(LookupSet(1, 1, GetNumForNote23(Fields!group_index.Value, Fields!met_ind_name.Value, Fields!ind_name.Value), "NoteDataSet"))</syntaxhighlight> | |<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> | <syntaxhighlight lang="vb">=Format(Max(Fields!temperature.Value), "0.##")</syntaxhighlight> | ||
|- | |- | ||
|4. Значения показателей ... определены потоковыми средствами измерений (среднеарифметическое значение за период поставки). | |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> | ||
<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!group_index.Value</code> >> <code style="background-color: #fff3e0;>group_index / NoteDataSet</code> >> <code style="background-color: #fff3e0;>SQL</code> | ||
| Строка 280: | Строка 406: | ||
<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> | <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> | |<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. Значения показателей ... определены ... | |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> | ||
<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!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> | |||
<code>=Parameters!ReportParameterLaboratory.Label</code> | <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> | |<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"> | |||
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 | |||
</syntaxhighlight> | |||
<syntaxhighlight lang="vb">=Parameters!ReportParameterLaboratory.Label</syntaxhighlight> | <syntaxhighlight lang="vb">=Parameters!ReportParameterLaboratory.Label</syntaxhighlight> | ||
|- | |- | ||
| Строка 302: | Строка 450: | ||
|Должность | |Должность | ||
|<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!position.Value</code> >> <code style="background-color: #fff3e0;>position / | <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">=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: #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 / | <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> | |<syntaxhighlight lang="vb">=FormatFio(Fields!surname.Value, Fields!name.Value, Fields!patronymic.Value, 2)</syntaxhighlight> | ||
*используется функция [[Scripts#FormatFio()|<code>FormatFio()</code>]] | |||
|- | |- | ||
|} | |} | ||
Текущая версия от 10:05, 31 марта 2026
Общий вид

Параметры
В форме используются 7 фильтров параметров:
| № | Параметр | Тип поля | Данные | Сортировка |
|---|---|---|---|---|
| 1 | Выберите лабораторию: |
выбор значения | лаборатории, имеющие записи в журналах с показателями, у которых в наименовании нормы присутствует ГОСТ 5542 | по алфавиту |
| 2 | Введите номер паспорта: |
ввод текста | 1 (значение по умолчанию) | - |
| 3 | Введите начало периода поставки: |
поле-календарь | 01.01.2020 0:00 (значение по умолчанию) | - |
| 4 | Введите завершение периода поставки: |
поле-календарь | текущие дата и время (значение по умолчанию) | - |
| 5 | Введите газораспределительные станции: |
ввод текста | газораспределительные станции ("-" значение по умолчанию) | - |
| 6 | Выберите сотрудника, утверждающего паспорт: |
выбор значения | сотрудники лаборатории (п.1) |
по алфавиту |
| 7 | Выберите сотрудников, ответственных за оформление паспорта: |
выбор одного или нескольких значений | сотрудники лаборатории (п.1) |
по алфавиту |
Внимание!
Также для фильтров п.6 и п.7 используются составные поля в DataSet, образующиеся с помощью функции FormatFio():
Атрибуты
В наборе данных OrganisationDataSet в таблице ATTRIBUTE_NAME используются атрибуты со следующими значениями NAME:
- Адрес
- Телефоны
В наборе данных MainDataSet в таблице ATTRIBUTE_NAME используются атрибуты со следующими значениями NAME:
- НД на отбор проб
- Дата и время отбора пробы
- Дата поставки пробы
- Полное наименование
- Код ОКПД 2
В наборе данных ResultDataSet в таблице ATTRIBUTE_NAME используются атрибуты со следующими значениями NAME:
- Группа в паспорт качества
- Номер в паспорт качества
- Дата поставки пробы
В наборе данных NoteDataSet в таблице ATTRIBUTE_NAME используются атрибуты со следующими значениями NAME:
- Дата поставки пробы
- Определен
- Группа в паспорт качества
- Номер в паспорт качества
- Норма при стандартных условиях
Внимание!
Описание атрибутов приведено в соответствии с базой данных ASTRA-PG13 на основе созданных пользователем полей.
В других базах этих полей может не быть либо их наименование может отличаться!!!
Отсутствующие в базе атрибуты не будут выводиться в документе. Для корректной работы документа актуализируйте атрибуты в соответствии с приведенным списком.
Поля, данные, выражения, элементы интерфейса и код
Информация об организации
| Поля | Интерфейс ... >> ...
и данные |
Код и комментарии |
|---|---|---|
| Наименование организации | Подразделения предприятия >> + >> Выбрать предприятие >> Редактировать >> Карточка подразделения >> Краткое наименование
|
=Fields!head_org.Value
|
| Адрес, телефоны, e-mail | Подразделения предприятия >> + >> Выбрать предприятие >> Редактировать >> Карточка подразделения >> Адрес, Телефоны, E-mail
|
=Fields!head_org_address.Value & vbLF & "тел, e-mail: " & ConcatFields("; ", Fields!head_org_tel.Value, Fields!head_org_mail.Value)
используются:
|
| Наименование лаборатории | Подразделения предприятия >> + >> Выбрать подразделение >> Редактировать >> Карточка подразделения >> Краткое наименование
|
=Fields!lab_name.Value
|
| Адрес лаборатории | Подразделения предприятия >> + >> Выбрать подразделение >> Редактировать >> Карточка подразделения >> Адрес
|
=Fields!lab_address.Value
|
Блок утверждения
| Поля | Интерфейс ... >> ...
и данные |
Код и комментарии |
|---|---|---|
| Должность | Персонал >> Выбрать запись >> Карточка сотрудника >> Должность
|
=First(Fields!position.Value)
|
| Лаборатория | Подразделения предприятия >> + >> Выбрать подразделение >> Редактировать >> Карточка подразделения >> Краткое наименование
|
=First(Fields!lab_name.Value)
|
| И.О. Фамилия | Персонал >> Выбрать запись >> Карточка сотрудника >> Фамилия; Имя; Отчество
|
=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
|
| Код ОКПД2 | Объекты анализа >> Выбрать объект >> Редактировать >> Карточка объекта анализа >> Код ОКПД 2
|
="Код ОКПД 2 " & Fields!code_okpd2.Value
|
| Паспорт качества распространяется на объемы газа, поданного через газораспределительные станции: | Parameters!ReportParameterStation.Value
|
=IIF(Parameters!ReportParameterStation.Value = "-", "", Parameters!ReportParameterStation.Value)
|
| Дата (период) отбора проб | Лабораторные журналы >> Журнал регистрации проб и испытаний >> Выбрать пробу >> Редактировать >> Карточка пробы >> Информация >> Дата и время отбора пробы
|
=Format(Min(Fields!sampling_date.Value), "dd.MM.yyyy") & " - " & Format(Max(Fields!sampling_date.Value), "dd.MM.yyyy")
|
| НД на метод отбора | Объекты анализа >> Выбрать объект >> Редактировать >> Карточка объекта анализа >> НД на отбор проб
|
=First(Fields!sampling_norm_doc.Value)
|
| Место отбора проб | Лабораторные журналы >> Журнал регистрации проб и испытаний >> Выбрать пробу >> Редактировать >> Карточка пробы >> Источник >> Выбранный источник
|
=First(Fields!place_name.Value)
|
| Дата (период) испытаний | Лабораторные журналы >> Журнал регистрации проб и испытаний >> Выбрать пробу >> Редактировать >> Карточка пробы >> Информация >> Дата поставки пробы
|
=Format(Min(Fields!delivery_date.Value), "dd.MM.yyyy") & " - " & Format(Max(Fields!delivery_date.Value), "dd.MM.yyyy")
|
Таблица результатов
| Поля | Интерфейс ... >> ...
и данные |
Код и комментарии |
|---|---|---|
| № | Fields!group_index.Value >> group_index / ResultDataSet >> SQL
|
=Fields!group_index.Value & "."
|
| Наименование показателя | Объекты анализа >> Выбрать объект >> Редактировать >> Карточка объекта анализа >> Выбрать показатель >> Карточка показателя >> Группа в паспорт качества, Наименование
|
=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
|
| Метод испытания | Методики анализа >> Выбрать методику >> Редактировать >> Карточка методики анализа >> Нормативный документ
|
=GetOrDash(Fields!norm_document.Value)
|
| Норма минимальная и максимальная (строка 1) | Объекты анализа >> Выбрать объект >> Редактировать >> Карточка объекта анализа >> Выбрать показатель >> Карточка показателя >> Номер в паспорт качества, Группа в паспорт качества
|
=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
|
| Норма минимальная и максимальная (строка 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) | Вместо Нижний предел используется Объекты анализа >> Выбрать объект >> Редактировать >> Карточка объекта анализа >> Выбрать показатель >> Карточка показателя >> Нормы >> Верхний пределВместо |
=GetNorms(Fields!group_number.Value, Fields!max.Value, Fields!comment.Value, Fields!limit_scale.Value)
|
| Результаты испытаний | Объекты анализа >> Выбрать объект >> Редактировать >> Карточка объекта анализа >> Выбрать показатель >> Карточка показателя >> Группа в паспорт качества, Наименование
|
=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)
Public Function GetResult(group As Integer, ind As String, numRes As Double, strRes As String, min As Object, max As Object, digits As Object, mode As Object) As String
If group = 6 Or group = 7 Then
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(")", ""))
Return RoundMethod(firstNum, 2, 1) & " (" & RoundMethod(secondNum, 0, 1) & ")"
End If
If ind.ToLower() Like "*еханич*римес*" And strRes = "0" Then
Return "отсутствуют"
End If
If group = 1 Or group = 8 Or group = 9 Then
Return RoundMethod(numRes, digits, mode)
End If
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
|
Примечания
| Поля | Интерфейс ... >> ...
и данные |
Код и комментарии |
|---|---|---|
| 1. Значения и нормы показателей ... установлены при стандартном давлении 101,325 кПа и стандартной температуре 20,0 °С. Стандартная температура сгорания 25,0 °С. | Объекты анализа >> Выбрать объект >> Редактировать >> Карточка объекта анализа >> Выбрать показатель >> Карточка показателя >> Норма при стандартных условиях
|
="1. Значения и нормы показателей " & CollapseNumbers(LookupSet(True, Fields!standart_norm.Value, Fields!group_index.Value, "NoteDataSet")) & " установлены при стандартном давлении 101,325 кПа и стандартной температуре 20,0 °С. Стандартная температура сгорания 25,0 °С."
|
| 2. Нормы и значения показателей ... установлены при давлении в точке отбора пробы. | Методики анализа >> Выбрать методику >> Редактировать >> Карточка методики анализа >> Наименование по методике
|
="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. Температура газа в точке отбора пробы при определении показателей ... | Методики анализа >> Выбрать методику >> Редактировать >> Карточка методики анализа >> Наименование по методике
|
="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. Значения показателей ... определены потоковыми средствами измерений (среднеарифметическое значение за период поставки). | Лабораторные журналы >> Журнал регистрации проб и результатов >> Выбрать пробу >> Результаты >> Ввод результатов >> Определен
|
=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. Значения показателей ... определены ... | Лабораторные журналы >> Журнал регистрации проб и результатов >> Выбрать пробу >> Результаты >> Ввод результатов >> Определен
|
=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
|
| И.О. Фамилия | Персонал >> Выбрать запись >> Карточка сотрудника >> Фамилия; Имя; Отчество
|
=FormatFio(Fields!surname.Value, Fields!name.Value, Fields!patronymic.Value, 2)
|