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

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

Материал из Химсофт Вики
 
(не показаны 4 промежуточные версии этого же участника)
Строка 354: Строка 354:
<syntaxhighlight lang="vb">=GetNorms56(Fields!group_index.Value, LookupSet(6, Fields!group_index.Value, Fields!max.Value, "ResultDataSet"), LookupSet(6, Fields!group_index.Value, Fields!limit_scale.Value, "ResultDataSet"))</syntaxhighlight>
<syntaxhighlight lang="vb">=GetNorms56(Fields!group_index.Value, LookupSet(6, Fields!group_index.Value, Fields!max.Value, "ResultDataSet"), LookupSet(6, Fields!group_index.Value, Fields!limit_scale.Value, "ResultDataSet"))</syntaxhighlight>
|-
|-
|Результаты испытаний
|Результаты испытаний (кроме 4, 5, 6 групп)
|<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>  
|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>  


<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>
Строка 363: Строка 363:
<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>
<code style="background-color: #fff3e0;>Fields!group_number.Value, Fields!group_index.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">=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">
<syntaxhighlight lang="vb">
Строка 372: Строка 371:
Select Case group
Select Case group
Case 6, 7
Case 4
Dim arr() As String = strRes.Split(" "c)
Dim arr() As String = strRes.Split(" "c)
Dim firstNum As Double = Double.Parse(arr(0).Replace(".", ","))
Dim firstNum As Double = Double.Parse(arr(0).Replace(".", ","))
Строка 379: Строка 378:
Dim compareRangeNorm = GetMetRange(numRes, min, max, digits, mode)
Dim compareRangeNorm = GetMetRange(numRes, min, max, digits, mode)
If compareRangeNorm Like "*менее*" Or compareRangeNorm Like "*более*" Then
If compareRangeNorm Like "%менее%" Or compareRangeNorm Like "%более%" Then
Return compareRangeNorm
Return compareRangeNorm
Else  
Else  
Строка 385: Строка 384:
End If
End If
Case 11
Case 10
Return "отсутствуют"
Return "отсутствуют"


Строка 423: Строка 422:
</syntaxhighlight>
</syntaxhighlight>
*используется функция <code>RoundMethod</code>, вариация функции [[Глобальные_функции#Rounding.RoundBase()|<code>Rounding.RoundBase()</code>]]
*используется функция <code>RoundMethod</code>, вариация функции [[Глобальные_функции#Rounding.RoundBase()|<code>Rounding.RoundBase()</code>]]
|-
|Результаты испытаний (4 группа)
|<syntaxhighlight lang="vb">=GetResult4( LookupSet(4, Fields!group_index.Value, Fields!num_result.Value, "ResultDataSet"),  LookupSet(4, Fields!group_index.Value, Fields!met_min.Value, "ResultDataSet"), LookupSet(4, Fields!group_index.Value, Fields!met_max.Value, "ResultDataSet"), LookupSet(4, Fields!group_index.Value, Fields!round_num.Value, "ResultDataSet"),  LookupSet(4, Fields!group_index.Value, Fields!round_type.Value, "ResultDataSet"))</syntaxhighlight>
<syntaxhighlight lang="vb">Public Function GetResult4(numRes As Object, min As Object, max As Object, digits As Object, mode As Object) As String
Dim first As String = ""
If numRes(0) IsNot Nothing Then first = numRes(0).ToString().Replace(".", ",")
Dim second As String = ""
If numRes(1) IsNot Nothing Then second = numRes(1).ToString().Replace(".", ",")
   
If (first = "0" Or first = "") And (second = "0" Or second = "") Then Return "-"
Dim compareRangeNorm = GetMetRange(numRes(0), min(0), max(0), digits(0), mode(0))
If compareRangeNorm Like "*менее*" Or compareRangeNorm Like "*более*" Then
Return compareRangeNorm
Else
Return RoundMethod(numRes(0), 2, 1) & " (" & RoundMethod(numRes(1), 0, 1) & ")"
End If
End Function</syntaxhighlight>
*используется функция <code>RoundMethod</code>, вариация функции [[Глобальные_функции#Rounding.RoundBase()|<code>Rounding.RoundBase()</code>]]
|-
|Результаты испытаний (5, 6 группы)
|<syntaxhighlight lang="vb">=GetResult56(Fields!group_index.Value,  LookupSet(5, Fields!group_index.Value, Fields!num_result.Value, "ResultDataSet"),  LookupSet(5, Fields!group_index.Value, Fields!met_min.Value, "ResultDataSet"),  LookupSet(5, Fields!group_index.Value, Fields!met_max.Value, "ResultDataSet"),  LookupSet(5, Fields!group_index.Value, Fields!round_num.Value, "ResultDataSet"),  LookupSet(5, Fields!group_index.Value, Fields!round_type.Value, "ResultDataSet"),  Fields!delivery_date.Value)</syntaxhighlight>
<syntaxhighlight lang="vb">=GetResult56(Fields!group_index.Value,  LookupSet(6, Fields!group_index.Value, Fields!num_result.Value, "ResultDataSet"),  LookupSet(6, Fields!group_index.Value, Fields!met_min.Value, "ResultDataSet"),  LookupSet(6, Fields!group_index.Value, Fields!met_max.Value, "ResultDataSet"),  LookupSet(6, Fields!group_index.Value, Fields!round_num.Value, "ResultDataSet"),  LookupSet(6, Fields!group_index.Value, Fields!round_type.Value, "ResultDataSet"),  Fields!delivery_date.Value)</syntaxhighlight>
<syntaxhighlight lang="vb">
Public Function GetResult56(group As Integer, numRes As Object, min As Object, max As Object, digits As Object, mode As Object, startDate As Object) As String
Dim first As String = ""
If numRes(0) IsNot Nothing Then first = numRes(0).ToString().Replace(".", ",")
Dim second As String = ""
If numRes(1) IsNot Nothing Then second = numRes(1).ToString().Replace(".", ",")
   
If (first = "0" Or first = "") And (second = "0" Or second = "") Then Return "-"
Dim result As New System.Text.StringBuilder()
result.Append(vbLF & vbLF & vbLF)
If String.IsNullOrEmpty(first) OrElse first = "0" Then
first = "-"
ElseIf numRes.Length > 0 AndAlso numRes(0) IsNot Nothing Then
first = GetMetRange(numRes(0), min(0), max(0), digits(0), mode(0))
End If
If String.IsNullOrEmpty(second) OrElse second = "0" Then
second = "-"
ElseIf numRes.Length > 1 AndAlso numRes(1) IsNot Nothing Then
second = GetMetRange(numRes(1), min(1), max(1), digits(1), mode(1))
End If
If group = 6 Then result.Append(vbLF)
If Month(startDate) >= 10 Or Month(startDate) <= 4 Then
result.Append(first & vbLF & "-")
Else
result.Append("-" & vbLF & second)
End If
Return result.ToString()
End Function
</syntaxhighlight>
|-
|-
|}
|}
Строка 434: Строка 498:
!Код и комментарии
!Код и комментарии
|-
|-
|1. Значения и нормы показателей ... установлены при стандартном давлении 101,325 кПа и стандартной температуре 20,0 °С. Стандартная температура сгорания 25,0 °С.
|1. Значения и нормы показателей ... установлены при стандартном давлении 101,325 кПа и стандартной температуре 20,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>  
|<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>  


Строка 443: Строка 507:
*используется функция [[Scripts#CollapseNumbers()|<code>CollapseNumbers()</code>]]
*используется функция [[Scripts#CollapseNumbers()|<code>CollapseNumbers()</code>]]
|-
|-
|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;>Наименование по методике</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</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>
 
<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>
|<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>


Строка 503: Строка 525:
</syntaxhighlight>
</syntaxhighlight>
|-
|-
|5. Значения показателей ... определены ...
|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> >> Выбрать пробу >> <code style="background-color: #d4edda;>Результаты</code> >> <code style="background-color: #d4edda;>Ввод результатов</code> >> <code style="background-color: #d4edda;>Определен</code>


Строка 544: Строка 566:
|<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>]]
*используется функция [[Scripts#FormatFio()|<code>FormatFio()</code>]]
|-
|Дата выдачи паспорта качества
|<nowiki>-</nowiki>
|<syntaxhighlight lang="vb">="Дата выдачи паспорта качества: " & Format(Now(), "dd.MM.yyyy")</syntaxhighlight>
|-
|-
|}
|}

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

Общий вид

Параметры

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

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

Атрибуты

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

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

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

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

В наборе данных 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

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

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

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

Код и комментарии
Номер паспорта качества 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
Период поставки -
=" с     " & Format(Parameters!ReportParameterFrom.Value, "HH:mm      dd.MM.yyyy")
="по     " & Format(Parameters!ReportParameterTo.Value, "HH:mm     dd.MM.yyyy")
Дата (период) отбора проб Лабораторные журналы >> Журнал регистрации проб и испытаний >> Выбрать пробу >> Редактировать >> Карточка пробы >> Информация >> Дата и время отбора пробы

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!min_date_analysis.Value, Fields!max_date_analysis.Value >> min_date_analysis, max_date_analysis / MainDataSet >> DATE_VALUE / JOURNAL_RESULT_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!max.Value, Fields!comment.Value, Fields!limit_scale.Value >> serial_number, group_number, min, max, comment, limit_scale / ResultDataSet >> INTEGER_VALUE / INDICATOR_ATTRIBUTE, LOWER_LIMIT, UPPER_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 = 11 Then Return comment
	If norm = "0" Or norm Like "*0*(0)*" Then Return "-"	
	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)
Норма (строки прочие)
=GetNorms(Fields!group_number.Value, Fields!min.Value, Fields!comment.Value, Fields!limit_scale.Value)
=GetNorms(Fields!group_number.Value, Fields!max.Value, Fields!comment.Value, Fields!limit_scale.Value)
Норма (строка 4) Объекты анализа >> Выбрать объект >> Редактировать >> Карточка объекта анализа >> Выбрать показатель >> Карточка показателя >> Номер в паспорт качества

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

Fields!group_index.Value, Fields!min.Value, Fields!max.Value, Fields!limit_scale.Value >> group_index, min, max, limit_scale / ResultDataSet >> INTEGER_VALUE / INDICATOR_ATTRIBUTE, LOWER_LIMIT, UPPER_LIMIT, LIMIT_SCALE / QUANTITATIVE_NORM

=GetNorms4(LookupSet(4, Fields!group_index.Value, Fields!min.Value, "ResultDataSet"), LookupSet(4, Fields!group_index.Value, Fields!limit_scale.Value, "ResultDataSet"))
=GetNorms4(LookupSet(4, Fields!group_index.Value, Fields!max.Value, "ResultDataSet"), LookupSet(4, Fields!group_index.Value, Fields!limit_scale.Value, "ResultDataSet"))
Public Function GetNorms4(norms As Object(), scales As Object()) As String
	
	Dim first As String = ""
	If norms(0) IsNot Nothing Then first = norms(0).ToString().Replace(".", ",")
	
	Dim second As String = ""
	If norms(1) IsNot Nothing Then second = norms(1).ToString().Replace(".", ",")
    
	If (first = "0" Or first = "") And (second = "0" Or second = "") Then Return "-"
	
	Dim result As New System.Text.StringBuilder()
		
	If Not String.IsNullOrEmpty(first) Then
		If scales.Length > 0 AndAlso scales(0) IsNot Nothing Then
			result.Append(RoundMethod(Double.Parse(first), Integer.Parse(scales(0)), 1)) 
		Else 
			result.Append(first) 
		End If
	End If
			
	If Not String.IsNullOrEmpty(second) Then
		result.Append(" (")
		
		If scales.Length > 1 AndAlso scales(1) IsNot Nothing Then
			result.Append(RoundMethod(Double.Parse(second), Integer.Parse(scales(1)), 1))
		Else 
			result.Append(second)
		End If
		
		result.Append(")")
	End If
	
	Return result.ToString()

End Function
Норма (строка 5)
=GetNorms56(Fields!group_index.Value, LookupSet(5, Fields!group_index.Value, Fields!min.Value, "ResultDataSet"), LookupSet(5, Fields!group_index.Value, Fields!limit_scale.Value, "ResultDataSet"))
=GetNorms56(Fields!group_index.Value, LookupSet(5, Fields!group_index.Value, Fields!max.Value, "ResultDataSet"), LookupSet(5, Fields!group_index.Value, Fields!limit_scale.Value, "ResultDataSet"))
Public Function GetNorms56(group As Integer, norms As Object(), scales As Object()) As String
	
	Dim first As String = ""
	If norms(0) IsNot Nothing Then first = norms(0).ToString().Replace(".", ",")
	
	Dim second As String = ""
	If norms(1) IsNot Nothing Then second = norms(1).ToString().Replace(".", ",")
	
	Dim result As New System.Text.StringBuilder() 
	result.Append(vbLF & vbLF & vbLF)
	
	If String.IsNullOrEmpty(first) OrElse first = "0" Then 
		first = "-"
	ElseIf scales.Length > 0 AndAlso scales(0) IsNot Nothing Then
			first = RoundMethod(Double.Parse(first), Integer.Parse(scales(0)), 1)
	End If
		
	If String.IsNullOrEmpty(second) OrElse second = "0" Then 
		second = "-"
	ElseIf scales.Length > 1 AndAlso scales(1) IsNot Nothing Then
		second = RoundMethod(Double.Parse(second), Integer.Parse(scales(1)), 1)
	End If
		
	If group = 5 Then
		result.Append(first & vbLF & second)
	Else 
		result.Append(vbLF & first & vbLF & second)
	End If
	
	Return result.ToString()
	
End Function
Норма (строка 6)
=GetNorms56(Fields!group_index.Value, LookupSet(6, Fields!group_index.Value, Fields!min.Value, "ResultDataSet"), LookupSet(6, Fields!group_index.Value, Fields!limit_scale.Value, "ResultDataSet"))
=GetNorms56(Fields!group_index.Value, LookupSet(6, Fields!group_index.Value, Fields!max.Value, "ResultDataSet"), LookupSet(6, Fields!group_index.Value, Fields!limit_scale.Value, "ResultDataSet"))
Результаты испытаний (кроме 4, 5, 6 групп) Объекты анализа >> Выбрать объект >> Редактировать >> Карточка объекта анализа >> Выбрать показатель >> Карточка показателя >> Группа в паспорт качества, Номер в паспорт качества

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

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

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

Fields!group_number.Value, Fields!group_index.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 4
			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 10
			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()
Результаты испытаний (4 группа)
=GetResult4( LookupSet(4, Fields!group_index.Value, Fields!num_result.Value, "ResultDataSet"),  LookupSet(4, Fields!group_index.Value, Fields!met_min.Value, "ResultDataSet"), LookupSet(4, Fields!group_index.Value, Fields!met_max.Value, "ResultDataSet"), LookupSet(4, Fields!group_index.Value, Fields!round_num.Value, "ResultDataSet"),   LookupSet(4, Fields!group_index.Value, Fields!round_type.Value, "ResultDataSet"))
Public Function GetResult4(numRes As Object, min As Object, max As Object, digits As Object, mode As Object) As String
	
	Dim first As String = ""
	If numRes(0) IsNot Nothing Then first = numRes(0).ToString().Replace(".", ",")
	
	Dim second As String = ""
	If numRes(1) IsNot Nothing Then second = numRes(1).ToString().Replace(".", ",")
    
	If (first = "0" Or first = "") And (second = "0" Or second = "") Then Return "-"
	
	Dim compareRangeNorm = GetMetRange(numRes(0), min(0), max(0), digits(0), mode(0))
			
	If compareRangeNorm Like "*менее*" Or compareRangeNorm Like "*более*" Then
		Return compareRangeNorm
	Else 
		Return RoundMethod(numRes(0), 2, 1) & " (" & RoundMethod(numRes(1), 0, 1) & ")"
	End If

End Function
  • используется функция RoundMethod, вариация функции Rounding.RoundBase()
Результаты испытаний (5, 6 группы)
=GetResult56(Fields!group_index.Value,  LookupSet(5, Fields!group_index.Value, Fields!num_result.Value, "ResultDataSet"),  LookupSet(5, Fields!group_index.Value, Fields!met_min.Value, "ResultDataSet"),  LookupSet(5, Fields!group_index.Value, Fields!met_max.Value, "ResultDataSet"),  LookupSet(5, Fields!group_index.Value, Fields!round_num.Value, "ResultDataSet"),  LookupSet(5, Fields!group_index.Value, Fields!round_type.Value, "ResultDataSet"),  Fields!delivery_date.Value)
=GetResult56(Fields!group_index.Value,  LookupSet(6, Fields!group_index.Value, Fields!num_result.Value, "ResultDataSet"),  LookupSet(6, Fields!group_index.Value, Fields!met_min.Value, "ResultDataSet"),  LookupSet(6, Fields!group_index.Value, Fields!met_max.Value, "ResultDataSet"),  LookupSet(6, Fields!group_index.Value, Fields!round_num.Value, "ResultDataSet"),  LookupSet(6, Fields!group_index.Value, Fields!round_type.Value, "ResultDataSet"),  Fields!delivery_date.Value)
Public Function GetResult56(group As Integer, numRes As Object, min As Object, max As Object, digits As Object, mode As Object, startDate As Object) As String
	
	Dim first As String = ""
	If numRes(0) IsNot Nothing Then first = numRes(0).ToString().Replace(".", ",")
	
	Dim second As String = ""
	If numRes(1) IsNot Nothing Then second = numRes(1).ToString().Replace(".", ",")
    
	If (first = "0" Or first = "") And (second = "0" Or second = "") Then Return "-"
	
	Dim result As New System.Text.StringBuilder()
	result.Append(vbLF & vbLF & vbLF)
	
	If String.IsNullOrEmpty(first) OrElse first = "0" Then 
		first = "-"
	ElseIf numRes.Length > 0 AndAlso numRes(0) IsNot Nothing Then
		first = GetMetRange(numRes(0), min(0), max(0), digits(0), mode(0))
	End If

	If String.IsNullOrEmpty(second) OrElse second = "0" Then 
		second = "-"
	ElseIf numRes.Length > 1 AndAlso numRes(1) IsNot Nothing Then
		second = GetMetRange(numRes(1), min(1), max(1), digits(1), mode(1))
	End If
	
	If group = 6 Then result.Append(vbLF)
	
	If Month(startDate) >= 10 Or Month(startDate) <= 4 Then
		result.Append(first & vbLF & "-")
	Else
		result.Append("-" & vbLF & second)
	End If	
		
	Return result.ToString()

End Function

Примечания

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

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

Код и комментарии
1. Значения и нормы показателей ... установлены при стандартном давлении 101,325 кПа и стандартной температуре 20,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!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
3. Значения показателей ... определены ... Лабораторные журналы >> Журнал регистрации проб и результатов >> Выбрать пробу >> Результаты >> Ввод результатов >> Определен

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)
Дата выдачи паспорта качества -
="Дата выдачи паспорта качества: " & Format(Now(), "dd.MM.yyyy")