Сводный журнал результатов анализов: различия между версиями
Sidminik (обсуждение | вклад) |
Sidminik (обсуждение | вклад) |
||
| (не показано 17 промежуточных версий этого же участника) | |||
| Строка 1: | Строка 1: | ||
==Общий вид== | |||
[[Файл:jl_2.png|center|border]] | |||
==Параметры== | ==Параметры== | ||
В форме используются 5 фильтров параметров: | В форме используются 5 фильтров параметров: | ||
| Строка 40: | Строка 44: | ||
|- | |- | ||
|} | |} | ||
<div style="background-color: #fff3cd; border-left: 5px solid #ffc107; padding: 15px; margin: 10px 0;"> | |||
'''Внимание!''' | |||
При использовании в параметре множественных значений (<code>Multivalue</code>) и множественном выборе в SQL в качестве значений для фильтра <code>WHERE</code> (независимо от типа данных в параметре - и <code>String</code>, и <code>Integer</code>) будет передаваться плоская строка со значениями через запятую, которая будет интерпретироваться SQL как набор литералов. | |||
Сравнение будет проводиться по схеме ''"поиск строки в наборе строк"''). | |||
Для корректной работы блок <code>WHERE</code> в SQL должен выглядеть так: | |||
<syntaxhighlight lang="sql"> | |||
WHERE ssf."CHILD_ID"::text IN (@ss_id) | |||
AND ao."ID"::text IN (@ao_id) | |||
</syntaxhighlight > | |||
</div> | |||
<div style="background-color: #fff3cd; border-left: 5px solid #ffc107; padding: 15px; margin: 10px 0;"> | |||
'''Внимание!''' | |||
В параметре <code>Дата завершения</code> в принимаемой колонке <code>date_value</code> хранятся не только даты, но и время (тип данных <code>Timestamp</code>). При этом устанавливается <code>Дата завершения 00:00:00</code>, то есть несмотря на символ <code><=</code> по сути параметр принимает значение ''"не включая"''. | |||
Чтобы «захватить» весь последний день целиком нужно добавить один день. | |||
Для корректной работы условие в блоке <code>WHERE</code> в SQL должно выглядеть так: | |||
<syntaxhighlight lang="sql"> | |||
attribute_jrecord_cte.date_value <= (@end_date::Date + interval '1 day') | |||
</syntaxhighlight > | |||
</div> | |||
==Атрибуты== | ==Атрибуты== | ||
| Строка 59: | Строка 91: | ||
==Поля, данные, выражения, элементы интерфейса и код== | ==Поля, данные, выражения, элементы интерфейса и код== | ||
===Верхний колонтитул=== | |||
{|class="wikitable" style="margin:auto; background-color: #fff;" | |||
|- | |||
!Поля | |||
!Интерфейс <code style="background-color: #d4edda;>...</code> >> <code style="background-color: #d4edda;>...</code> | |||
и данные <code style="background-color: #fff3e0;>...</code> >> <code style="background-color: #fff3e0;>...</code> | |||
!Код и комментарии | |||
|- | |||
|Название лаборатории | |||
|<code>Parameters!ReportParameterLaboratory.Label</code> | |||
|<syntaxhighlight lang="vb">=Parameters!ReportParameterLaboratory.Label</syntaxhighlight> | |||
|- | |||
|Владелец версии | |||
|<code>Code.Globals.GetVersionOwner()</code> | |||
|<syntaxhighlight lang="vb">="Владелец версии: " & Code.Globals.GetVersionOwner()</syntaxhighlight> | |||
|- | |||
|} | |||
===Заголовок=== | |||
{|class="wikitable" style="margin:auto; background-color: #fff; width:100%;" | |||
|- | |||
!Поля | |||
!Интерфейс <code style="background-color: #d4edda;>...</code> >> <code style="background-color: #d4edda;>...</code> | |||
и данные <code style="background-color: #fff3e0;>...</code> >> <code style="background-color: #fff3e0;>...</code> | |||
!Код и комментарии | |||
|- | |||
|colspan = "3"|Сводный журнал результатов анализов | |||
|- | |||
|Текущая дата | |||
|<code>Today.ToString("dd.MM.yyyy")</code> | |||
|<syntaxhighlight lang="vb">="По состоянию на: " & Today.ToString("dd.MM.yyyy")</syntaxhighlight> | |||
|- | |||
|} | |||
===Основная информация=== | ===Основная информация=== | ||
| Строка 68: | Строка 135: | ||
!Код и комментарии | !Код и комментарии | ||
|- | |- | ||
| | |№ п/п | ||
|<code>GroupIndex()</code> | |||
|<syntaxhighlight lang="vb">=GroupIndex() + 1</syntaxhighlight> | |||
для объединения одинаковых ячеек по вертикали (№п/п, дата и время и др.) создана группа на основе поля <code>date_value</code>; сама группировка в таблице не отображается (в настройках таблицы отключены значения <code>Include group header</code> и <code>Include group footer</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!date_value.Value</code> >> <code style="background-color: #fff3e0;>date_value / MainDataSet</code> >> <code style="background-color: #fff3e0;>DATE_VALUE / JOURNAL_RESULT_ATTRIBUTE</code> | |||
|<syntaxhighlight lang="vb">=Format(Fields!date_value.Value, "dd.MM.yyyy hh:mm")</syntaxhighlight> | |||
|- | |||
|Шифр пробы | |||
|<code style="background-color: #d4edda;>Лабораторные журналы</code> >> Выбрать подразделение >> Выбрать запись >> <code style="background-color: #d4edda;>Редактировать</code> >> <code style="background-color: #d4edda;>Журнал регистрации проб и результатов испытаний</code> >> <code style="background-color: #d4edda;>Информация</code> >> <code style="background-color: #d4edda;>Номер пробы</code> | |||
<code style="background-color: #fff3e0;>Fields!code.Value</code> >> <code style="background-color: #fff3e0;>code / MainDataSet</code> >> <code style="background-color: #fff3e0;>STRING_VALUE / JOURNAL_RECORD_ATTRIBUTE</code> | |||
|<syntaxhighlight lang="vb">=GetOrDash(Fields!code.Value)</syntaxhighlight> | |||
используется функция [[Scripts#GetOrDash()|<code>GetOrDash()</code>]] | |||
|- | |||
|Информация о пробе | |||
|<code style="background-color: #d4edda;>Объекты анализа</code> >> <code style="background-color: #d4edda;>Тип</code> и <code style="background-color: #d4edda;>Наименование</code><br> | |||
<code style="background-color: #d4edda;>Источники проб</code> >> Выбрать запись >> <code style="background-color: #d4edda;>Редактировать</code> >> <code style="background-color: #d4edda;>Полное наименование</code> | |||
<code style="background-color: #fff3e0;>Fields!ao_type.Value</code> >> <code style="background-color: #fff3e0;>ao_type / MainDataSet</code> >> <code style="background-color: #fff3e0;>NAME / CATALOG_RECORD_TYPE</code> | |||
<code style="background-color: #fff3e0;>Fields!ao_name.Value</code> >> <code style="background-color: #fff3e0;>ao_name / MainDataSet</code> >> <code style="background-color: #fff3e0;>NAME / ANALYSIS_OBJECT</code> | |||
<code style="background-color: #fff3e0;>Fields!sample_source</code> >> <code style="background-color: #fff3e0;>sample_source / MainDataSet</code> >> <code style="background-color: #fff3e0;>FULL_NAME / SAMPLE_SOURCE</code> | |||
|<syntaxhighlight lang="vb">=ConcatFields(vblf, Fields!ao_type.Value, Fields!ao_name.Value, Fields!ss_name.Value)</syntaxhighlight> | |||
используется функция [[Scripts#ConcatFields()|<code>ConcatFields()</code>]] | |||
|- | |||
|Показатель, ед. изм., НД на методику анализа, Дата анализа | |||
|<code style="background-color: #d4edda;>Лабораторные журналы</code> >> Выбрать подразделение >> Выбрать запись >> <code style="background-color: #d4edda;>Результаты</code> >> <code style="background-color: #d4edda;>Показатель</code>; <code style="background-color: #d4edda;>Методика анализа</code>; <code style="background-color: #d4edda;>Дата и время отбора пробы</code> | |||
<code style="background-color: #fff3e0;>Fields!ind_meth_name.Value</code> >> <code style="background-color: #fff3e0;>ind_meth_name / MainDataSet</code> >> <code style="background-color: #fff3e0;>INDICATOR_METHODOLOGY_NAME / METHODOLOGY_INDICATOR</code><br> | |||
<code style="background-color: #fff3e0;>Fields!unit.Value</code> >> <code style="background-color: #fff3e0;>unit / MainDataSet</code> >> <code style="background-color: #fff3e0;>HTML_NAME / UNIT</code><br> | |||
<code style="background-color: #fff3e0;>Fields!norm_document.Value</code> >> <code style="background-color: #fff3e0;>norm_document / MainDataSet</code> >> <code style="background-color: #fff3e0;>NORMATIVE_DOCUMENT / METHODOLOGY</code><br> | |||
<code style="background-color: #fff3e0;>Fields!date_value.Value</code> >> <code style="background-color: #fff3e0;>date_value / MainDataSet</code> >> <code style="background-color: #fff3e0;>DATE_VALUE / JOURNAL_RESULT_ATTRIBUTE</code> | |||
|<syntaxhighlight lang="vb">=Fields!ind_meth_name.Value & ", " & Code.RemoveTagsSimple(Fields!unit.Value) & vbLF & Fields!norm_document.Value & vbLF & Fields!date_value.Value.ToString("dd.MM.yyyy hh:mm")</syntaxhighlight> | |||
используется функция [[Scripts#RemoveTagsSimple()|<code>RemoveTagsSimple()</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!single_result.Value</code> >> <code style="background-color: #fff3e0;>single_result / MainDataSet</code> >> <code style="background-color: #fff3e0;>RESULT / JRPARALLEL</code> | |||
|<syntaxhighlight lang="vb">=GetOrDash(Fields!single_result.Value)</syntaxhighlight> | |||
используется функция [[Scripts#GetOrDash()|<code>GetOrDash()</code>]] | |||
|- | |||
|Проверка приемлемости (контроль повторяемости) r ≤ rₙ | |||
|<code style="background-color: #d4edda;></code> >> <code style="background-color: #d4edda;></code> | |<code style="background-color: #d4edda;></code> >> <code style="background-color: #d4edda;></code> | ||
<code style="background-color: #fff3e0;></code> >> <code style="background-color: #fff3e0;> / </code> >> <code style="background-color: #fff3e0;> / </code> | <code style="background-color: #fff3e0;></code> >> <code style="background-color: #fff3e0;> / </code> >> <code style="background-color: #fff3e0;> / </code> | ||
|<syntaxhighlight lang="vb"></syntaxhighlight> | |<syntaxhighlight lang="vb">=GetOrDash(Fields!acceptable.Value)</syntaxhighlight> | ||
используется функция [[Scripts#GetOrDash()|<code>GetOrDash()</code>]] | |||
|- | |||
|Результат анализа, Х ± Δ(U) | |||
|<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!result_val.Value; Fields!result_dc.Value</code> >> <code style="background-color: #fff3e0;>result_val; result_dc / MainDataSet</code> >> <code style="background-color: #fff3e0;>AVG_R; DC / JOURNAL_RESULT</code> | |||
|<syntaxhighlight lang="vb">=GetOrDash(ConcatFields("±", Fields!result_val.Value, Fields!result_dc.Value))</syntaxhighlight> | |||
используются функции: | |||
*[[Scripts#ConcatFields()|<code>ConcatFields()</code>]] | |||
*[[Scripts#GetOrDash()|<code>GetOrDash()</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!min.Value; Fields!max.Value</code> >> <code style="background-color: #fff3e0;>min; max / MainDataSet</code> >> <code style="background-color: #fff3e0;>LOWER_LIMIT; UPPER_LIMIT / QUANTITATIVE_NORM</code> | |||
|<syntaxhighlight lang="vb">=Code.NormProcessing(Fields!min.Value, Fields!max.Value)</syntaxhighlight> | |||
<syntaxhighlight lang="vb"> | |||
Function NormProcessing(ByVal min As String, ByVal max As String) As String | |||
Dim result As String = "" | |||
Dim hasMin As Boolean = Not String.IsNullOrEmpty(min) AndAlso min <> "0" | |||
Dim hasMax As Boolean = Not String.IsNullOrEmpty(max) AndAlso max <> "0" | |||
If hasMin And hasMax Then | |||
result = min & "-" + max | |||
Else If hasMin Then | |||
result = "≥" & min | |||
Else If hasMax Then | |||
result = "≤" & max | |||
Else | |||
result = "-" | |||
End If | |||
Return result | |||
End Function | |||
</syntaxhighlight> | |||
|- | |||
|Ф.И.О. исполнителя | |||
|<code style="background-color: #d4edda;>Лабораторные журналы</code> >> Выбрать подразделение >> Выбрать запись >> <code style="background-color: #d4edda;>Результаты</code> >> <code style="background-color: #d4edda;>Исполнитель</code> | |||
<code style="background-color: #fff3e0;>Fields!e_surname.Value; Fields!e_name.Value; Fields!e_patronymic.Value</code> >> <code style="background-color: #fff3e0;>e_surname; e_name; e_patronymic / MainDataSet</code> >> <code style="background-color: #fff3e0;>SURNAME; NAME; PATRONYMIC / EMPLOYEE</code> | |||
|<syntaxhighlight lang="vb">=FormatFio(Fields!surname.Value, Fields!name.Value, Fields!patronymic.Value, 1)</syntaxhighlight> | |||
используется функция [[Scripts#FormatFio()|<code>FormatFio()</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!note.Value</code> >> <code style="background-color: #fff3e0;>note / MainDataSet</code> >> <code style="background-color: #fff3e0;>STRING_VALUE / JOURNAL_RESULT_ATTRIBUTE</code> | |||
|<syntaxhighlight lang="vb">=GetOrDash(Fields!note.Value)</syntaxhighlight> | |||
используется функция [[Scripts#GetOrDash()|<code>GetOrDash()</code>]] | |||
|- | |||
|} | |||
===Нижний колонтитул=== | |||
{|class="wikitable" style="margin:auto; background-color: #fff;" | |||
|- | |||
!Поля | |||
!Интерфейс <code style="background-color: #d4edda;>...</code> >> <code style="background-color: #d4edda;>...</code> | |||
и данные <code style="background-color: #fff3e0;>...</code> >> <code style="background-color: #fff3e0;>...</code> | |||
!Код и комментарии | |||
|- | |||
|Имя программы | |||
|<code>Code.Globals.GetProgramName()</code> | |||
|<syntaxhighlight lang="vb">=Code.Globals.GetProgramName()</syntaxhighlight> | |||
|- | |||
|Нумерация страниц | |||
|Номер страницы <code>Globals!PageNumber</code> и всего страниц <code>Globals!TotalPages</code> | |||
|<syntaxhighlight lang="vb">="Страница " & Globals!PageNumber & " из " & Globals!TotalPages</syntaxhighlight> | |||
|- | |- | ||
|} | |} | ||
Текущая версия от 00:57, 2 апреля 2026
Общий вид

Параметры
В форме используются 5 фильтров параметров:
| № | Параметр | Тип поля | Данные | Сортировка |
|---|---|---|---|---|
| 1 | Выберите лабораторию:
|
выбор одного значения | лаборатории, имеющие записи в журналах | по алфавиту |
| 2 | Выберите источники анализа:
|
выбор нескольких значений | источники анализа, относящиеся к выбранной лаборатории (п.1)
|
по алфавиту |
| 3 | Выберите объекты анализа:
|
выбор нескольких значений | объекты анализа, относящиеся к выбранному источнику (п.2)
|
по алфавиту |
| 4 | Дата начала:
|
ввод или выбор даты | начало периода (включительно) | - |
| 5 | Дата завершения:
|
ввод или выбор даты | конец периода (включительно) | - |
Внимание!
При использовании в параметре множественных значений (Multivalue) и множественном выборе в SQL в качестве значений для фильтра WHERE (независимо от типа данных в параметре - и String, и Integer) будет передаваться плоская строка со значениями через запятую, которая будет интерпретироваться SQL как набор литералов.
Сравнение будет проводиться по схеме "поиск строки в наборе строк").
Для корректной работы блок WHERE в SQL должен выглядеть так:
WHERE ssf."CHILD_ID"::text IN (@ss_id)
AND ao."ID"::text IN (@ao_id)
Внимание!
В параметре Дата завершения в принимаемой колонке date_value хранятся не только даты, но и время (тип данных Timestamp). При этом устанавливается Дата завершения 00:00:00, то есть несмотря на символ <= по сути параметр принимает значение "не включая".
Чтобы «захватить» весь последний день целиком нужно добавить один день.
Для корректной работы условие в блоке WHERE в SQL должно выглядеть так:
attribute_jrecord_cte.date_value <= (@end_date::Date + interval '1 day')
Атрибуты
В наборе данных MainDataSet в таблице ATTRIBUTE_NAME используются атрибуты со следующими значениями NAME:
- Дата и время отбора пробы
- Номер пробы
- Примечание для журнала
Внимание!
Описание атрибутов приведено в соответствии с базой данных ASTRA-PG13 на основе созданных пользователем полей.
В других базах этих полей может не быть либо их наименование может отличаться!!!
Отсутствующие в базе атрибуты не будут выводиться в документе. Для корректной работы документа актуализируйте атрибуты в соответствии с приведенным списком.
Поля, данные, выражения, элементы интерфейса и код
Верхний колонтитул
| Поля | Интерфейс ... >> ...
и данные |
Код и комментарии |
|---|---|---|
| Название лаборатории | Parameters!ReportParameterLaboratory.Label
|
=Parameters!ReportParameterLaboratory.Label
|
| Владелец версии | Code.Globals.GetVersionOwner()
|
="Владелец версии: " & Code.Globals.GetVersionOwner()
|
Заголовок
| Поля | Интерфейс ... >> ...
и данные |
Код и комментарии |
|---|---|---|
| Сводный журнал результатов анализов | ||
| Текущая дата | Today.ToString("dd.MM.yyyy")
|
="По состоянию на: " & Today.ToString("dd.MM.yyyy")
|
Основная информация
| Поля | Интерфейс ... >> ...
и данные |
Код и комментарии |
|---|---|---|
| № п/п | GroupIndex()
|
=GroupIndex() + 1
для объединения одинаковых ячеек по вертикали (№п/п, дата и время и др.) создана группа на основе поля |
| Дата, время регистрации | Лабораторные журналы >> Выбрать подразделение >> Выбрать запись >> Результаты >> Дата и время отбора пробы
|
=Format(Fields!date_value.Value, "dd.MM.yyyy hh:mm")
|
| Шифр пробы | Лабораторные журналы >> Выбрать подразделение >> Выбрать запись >> Редактировать >> Журнал регистрации проб и результатов испытаний >> Информация >> Номер пробы
|
=GetOrDash(Fields!code.Value)
используется функция |
| Информация о пробе | Объекты анализа >> Тип и Наименование
|
=ConcatFields(vblf, Fields!ao_type.Value, Fields!ao_name.Value, Fields!ss_name.Value)
используется функция |
| Показатель, ед. изм., НД на методику анализа, Дата анализа | Лабораторные журналы >> Выбрать подразделение >> Выбрать запись >> Результаты >> Показатель; Методика анализа; Дата и время отбора пробы
|
=Fields!ind_meth_name.Value & ", " & Code.RemoveTagsSimple(Fields!unit.Value) & vbLF & Fields!norm_document.Value & vbLF & Fields!date_value.Value.ToString("dd.MM.yyyy hh:mm")
используется функция |
| Результат ед. опр. | Лабораторные журналы >> Выбрать подразделение >> Выбрать запись >> Результаты >> Выбрать показатель >> Раскрыть >> Результат измерения
|
=GetOrDash(Fields!single_result.Value)
используется функция |
| Проверка приемлемости (контроль повторяемости) r ≤ rₙ | >>
|
=GetOrDash(Fields!acceptable.Value)
используется функция |
| Результат анализа, Х ± Δ(U) | Лабораторные журналы >> Выбрать подразделение >> Выбрать запись >> Результаты >> Результат; Показатель точности
|
=GetOrDash(ConcatFields("±", Fields!result_val.Value, Fields!result_dc.Value))
используются функции: |
| Норма | Лабораторные журналы >> Выбрать подразделение >> Выбрать запись >> Результаты >> Норма
|
=Code.NormProcessing(Fields!min.Value, Fields!max.Value)
Function NormProcessing(ByVal min As String, ByVal max As String) As String
Dim result As String = ""
Dim hasMin As Boolean = Not String.IsNullOrEmpty(min) AndAlso min <> "0"
Dim hasMax As Boolean = Not String.IsNullOrEmpty(max) AndAlso max <> "0"
If hasMin And hasMax Then
result = min & "-" + max
Else If hasMin Then
result = "≥" & min
Else If hasMax Then
result = "≤" & max
Else
result = "-"
End If
Return result
End Function
|
| Ф.И.О. исполнителя | Лабораторные журналы >> Выбрать подразделение >> Выбрать запись >> Результаты >> Исполнитель
|
=FormatFio(Fields!surname.Value, Fields!name.Value, Fields!patronymic.Value, 1)
используется функция |
| Примечание | Лабораторные журналы >> Выбрать подразделение >> Выбрать запись >> Результаты >> Примечание
|
=GetOrDash(Fields!note.Value)
используется функция |
Нижний колонтитул
| Поля | Интерфейс ... >> ...
и данные |
Код и комментарии |
|---|---|---|
| Имя программы | Code.Globals.GetProgramName()
|
=Code.Globals.GetProgramName()
|
| Нумерация страниц | Номер страницы Globals!PageNumber и всего страниц Globals!TotalPages
|
="Страница " & Globals!PageNumber & " из " & Globals!TotalPages
|