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

Паспорт качества газа (ГОСТ 5542)

Материал из Химсофт Вики

Параметры

В форме используются 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:

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

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

  • НД на отбор проб
  • Дата и время отбора пробы
  • Дата поставки пробы
  • Полное наименование

В наборе данных 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 / FilterDataSetFioHead >> SURNAME; NAME; PATRONYMIC / EMPLOYEE

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

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

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

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

=FormatFio(Fields!surname.Value, Fields!name.Value, Fields!patronimyc.Value, 2)
  • для преобразования ФИО используется функция FormatFio()

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

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

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

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

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

=Format(Min(Fields!sampling_date.Value), "dd.MM.yyyy") & " - " & Format(Max(Fields!sampling_date.Value), "dd.MM.yyyy")
НД на метод отбора Объекты анализа >> Выбрать объект >> Редактировать >> Карточка объекта анализа >> НД на отбор проб

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

=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 & "."
Наименование показателя Объекты анализа >> Выбрать объект >> Редактировать >> Карточка объекта анализа >> Выбрать показатель >> Карточка показателя >> Группа в паспорт качества, Наименование

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

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
Метод испытания Методики анализа >> Выбрать методику >> Редактировать >> Карточка методики анализа >> Нормативный документ

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
Норма минимальная и максимальная (строка 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!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 >> group_number, ind_name, num_result, str_result, min, max, round_num, round_type / ResultDataSet >> INTEGER_VALUE / INDICATOR_ATTRIBUTE, NAME / INDICATOR, AVG_R / JOURNAL_RESULT, LOWER_LIMIT, UPPER_LIMIT / QUANTITATIVE_NORM, NUMBER, TYPE / STANDARD_ROUND_RESULT

=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 °С. Объекты анализа >> Выбрать объект >> Редактировать >> Карточка объекта анализа >> Выбрать показатель >> Карточка показателя >> Норма при стандартных условиях

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")) &  " установлены при давлении в точке отбора пробы."
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"))
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"))
=Parameters!ReportParameterLaboratory.Label

Подписи

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

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

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

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

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

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

=FormatFio(Fields!surname.Value, Fields!name.Value, Fields!patronymic.Value, 2)
  • для преобразования ФИО используется функция FormatFio()