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

Сведения о работниках лаборатории: различия между версиями

Материал из Химсофт Вики
Нет описания правки
 
(не показано 36 промежуточных версий этого же участника)
Строка 1: Строка 1:
==Параметры==
==Параметры==
В форме используются 5 фильтров параметров:
#<code>Выберите лабораторию:</code> (выбор одного из вариантов); выводятся в алфавитном порядке лаборатории, имеющие сотрудников;
#<code>Укажите ФИО уполномоченного лица:</code> (выбор одного из вариантов); выводятся только сотрудники выбранной в п.1 лаборатории;
#<code>Укажите должность уполномоченного лица:</code> (выбор одного из вариантов); выводятся должности, относящиеся к выбранному в п.2 сотруднику;
#<code>Сотрудники (область аккредитации):</code> (доступные значения – «в области аккредитации», «вне области аккредитации»);
#<code>Введите начальное значение нумерации строк:</code> (ввод целого числа); по умолчанию 1, возможен ввод в т.ч. 0 или отрицательного числа.


==Атрибуты==
В наборе данных (SQL-запрос для <code>DataSet</code>) в таблице <code>ATTRIBUTE_NAME</code> используются атрибуты со следующими значениями <code>NAME</code>:
*'СНИЛС' – <code>snils</code>;
*'Форма привлечения труда' – <code>form</code>;
*'Тип занятости' – <code>type</code>;
*'Номер договора' – <code>number</code>;
*'Дата договора' – <code>date</code>;
*'Выполняемые функции, исследования, испытания, измерения' – <code>func</code>;
*'Наименование учебного заведения' – <code>univer</code>;
*'Год окончания' – <code>uni_year</code>;
*'Квалификация по документу' – <code>prof</code>;
*'Реквизиты документа об образовании' – <code>diplom</code>;
*'Дата начала практического опыта' – <code>start</code>;
*'В области аккредитации' – <code>accred</code>.
==Поля, данные, выражения и формулы==
{|class="wikitable" style="margin:auto; background-color: #fff;"  
{|class="wikitable" style="margin:auto; background-color: #fff;"  
|-
|-
!Поля!!Данные и выражения!!Формулы
!№!!Параметр!!Тип поля!!Данные!!Сортировка
|-
|-
|rowspan="2"|Верхний колонтитул||Название лаборатории <code>=Parameters!ReportParameterLaboratory.Value</code>||<code>Персонал</code> >> <code>Привязка</code> или <code>Редактировать</code> >> <code>Карточка сотрудника</code> >> <code>Привязка</code>
|align="center"|1
|<code>Выберите лабораторию:</code>
|align="center"|выбор значения
|лаборатории, имеющие записи в журналах
|align="center"|сначала головное учреждение, затем остальные по алфавиту
|-
|-
|Владелец версии <code>Code.Globals.GetVersionOwner()</code>||<syntaxhighlight lang="vb">="Владелец версии: " & Code.Globals.GetVersionOwner()</syntaxhighlight>
|align="center"|2
|<code>Укажите ФИО уполномоченного лица:</code>
|align="center"|выбор значения
|сотрудники из <code>лаборатории (п.1)</code>
|align="center"|по алфавиту
|-
|-
|Заголовок||Текущая дата <code>Today.ToString("dd.MM.yyyy")</code>||<syntaxhighlight lang="vb">="По состоянию на: " & Today.ToString("dd.MM.yyyy")</syntaxhighlight>
|align="center"|3
|<code>Укажите должность уполномоченного лица:</code>
|align="center"|выбор значения
|должности <code>сотрудника (п.2)</code>
|align="center"|по алфавиту
|-
|-
|rowspan="3"|Подписи||Подстановка должности из фильтра <code>Parameters!ReportParameterPosition.Value</code>||<syntaxhighlight lang="vb">=Parameters!ReportParameterPosition.Value</syntaxhighlight>
|align="center"|4
|<code>Сотрудники (область аккредитации):</code>
|align="center"|выбор одного из 2-х вариантов - «в области аккредитации», «вне области аккредитации»
|отметка проставляется ТОЛЬКО для сотрудников лаборатории
|align="center"|-
|-
|-
|Подстановка Фамилии Имени Отчества из фильтра <code>Parameters!ReportParameterFio.Value</code>||<syntaxhighlight lang="vb">=Code.FormatAsInitialsSurname(Parameters!ReportParameterFio.Value)</syntaxhighlight>
|align="center"|5
|<code>Введите начальное значение нумерации строк:</code>
|align="center"|ввод числа
|начальное значение, с которого будет начинаться нумерация строк (по умолчанию 1)
|align="center"|-
|-
|-
|Преобразование в формат И.О. Фамилия <code>Code.FormatAsInitialsSurname()</code>||<syntaxhighlight lang="vb">Public Function FormatAsInitialsSurname(fullName As String) As String
|}
Dim trimmedName As String = fullName.Trim()
 
Dim nameParts() As String = trimmedName.Split(New Char() {" "c}, StringSplitOptions.RemoveEmptyEntries)
==Атрибуты==
В наборе данных <code>MainDataSet</code> в таблице <code>ATTRIBUTE_NAME</code> используются атрибуты со следующими значениями <code>NAME</code>:
<div style="column-count: 2;">
*СНИЛС
*Форма привлечения труда
*Тип занятости
*Номер договора
*Дата договора
*Выполняемые функции
*Образовательное учреждение
*Период обучения
*Специальность, специализация, квалификация
*Реквизиты документа об образовании
*Дата получения диплома
*В области аккредитации
</div>
 
<div style="background-color: #fff3cd; border-left: 5px solid #ffc107; padding: 15px; margin: 10px 0;">
'''Внимание!'''
 
Описание атрибутов приведено в соответствии с базой данных <code>ASTRA-PG13</code> на основе созданных пользователем полей.
 
В других базах этих полей может не быть либо их наименование может отличаться!!!


If nameParts.Length < 2 Then
Отсутствующие в базе атрибуты не будут выводиться в документе. Для корректной работы документа актуализируйте атрибуты в соответствии с приведенным списком.
Return fullName
</div>
End If


Dim surname As String = nameParts(0)
==Поля, данные, выражения, элементы интерфейса и код==
Dim firstNameInitial As Char = nameParts(1)(0)
Dim middleNameInitial As Char? = Nothing
If nameParts.Length >= 3 Then
middleNameInitial = nameParts(2)(0)
End If


Dim result As String = $"{firstNameInitial}."
===Верхний колонтитул===
If middleNameInitial.HasValue Then
result &= $"{middleNameInitial}."
End If
result &= $" {surname}"


Return result
{|class="wikitable" style="margin:auto; background-color: #fff;"
End Function
</syntaxhighlight> функция принимает строку полных Фамилии, Имени и Отчества;
полученное значение сохраняется в переменной <code>trimmedName</code> после удаления начальных и конечных пробелов (если они были) с помощью встроенной функции <code>Trim()</code>;
в массиве <code>nameParts()</code> сохраняются составные части строки (слова), разбитые с помощью встроенной функции <code>Split()</code>;
если имя содержит менее двух частей (например, только "Иван" или только "Петров"), функция возвращает исходную строку <code>fullName</code> без изменений;
в переменной surname сохраняется первый элемент массива <code>nameParts(0)</code> - Фамилия;
в переменной <code>firstNameInitial</code> сохраняется из второго элемента массива первая буква <code>nameParts(1)(0)</code> – инициал имени;
создается переменная <code>middleNameInitial</code>, которая по умолчанию назначается пустой (на случай отсутствия отчества);
при количестве элементов массива более или равных 3 (при наличии отчества), переменной <code>middleNameInitial</code> в качестве значения присваивается из третьего элемента массива первая буква <code>nameParts(2)(0)</code> – инициал отчества;
создается переменная <code>result</code>, в которую объединяются «И.» + «О.» + « Фамилия»;
функция возвращает значение <code>result</code> в выражение ячейки для дальнейшего отображения
|-
|-
|rowspan="3"|Нижний колонтитул||Имя программы <code>Code.Globals.GetProgramName()</code>||<syntaxhighlight lang="vb">=Code.Globals.GetProgramName()</syntaxhighlight>
!Поля
!Интерфейс <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>Globals!PageNumber</code>||rowspan="2"|<syntaxhighlight lang="vb">="Страница " & Globals!PageNumber & " из " & Globals!TotalPages</syntaxhighlight>
|Название лаборатории
|<code>Parameters!ReportParameterLaboratory.Value</code>
|<syntaxhighlight lang="vb">=Parameters!ReportParameterLaboratory.Value</syntaxhighlight>
|-
|-
|Всего страниц <code>Globals!TotalPages></code>
|Владелец версии
|<code>Code.Globals.GetVersionOwner()</code>
|<syntaxhighlight lang="vb">="Владелец версии: " & Code.Globals.GetVersionOwner()</syntaxhighlight>
|-
|-
|style="text-align: center;" colspan="3"|<b>Основная таблица</b>
|}
 
===Заголовок===
{|class="wikitable" style="margin:auto; background-color: #fff;"  
|-
|-
|rowspan="2"|№ п/п||Вывод сквозной нумерации строк <code>RowNumber()</code>||rowspan="2"|<syntaxhighlight lang="vb">=RowNumber() + Parameters!ReportParametrNumberFirstString.Value – 1</syntaxhighlight> из счетчика <code>RowNumber()</code> вычитается единица, чтобы скорректировать смещение относительно числа, введенного пользователем; при вводе пользователем, например, числа 50, для первой строки отчета <code>RowNumber()</code> вернет 1: выражение вычисляется как 1 + 50 - 1, что дает в результате 50 (желаемый начальный номер); для второй строки <code>RowNumber()</code> вернет 2, и выражение даст 2 + 50 - 1 = 51, и так далее
!Поля
!Интерфейс <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!ReportParametrNumberFirstString.Value – 1</code>
|Текущая дата
|<code>Today.ToString("dd.MM.yyyy")</code>
|<syntaxhighlight lang="vb">="По состоянию на: " & Today.ToString("dd.MM.yyyy")</syntaxhighlight>
|-
|-
|rowspan="7"|Фамилия, имя, отчество (при наличии), страховой номер индивидуального лицевого счета, дата и место рождения||rowspan="3"|Вывод ФИО <code>Fields!fio.Value</code>||<code>Редактировать</code> >> <code>Карточка сотрудника</code> >> <code>Информация</code> >> <code>Фамилия:</code>
|}
 
===Основная информация===
{|class="wikitable" style="margin:auto; background-color: #fff;"  
|-
|-
|<code>Редактировать</code> >> <code>Карточка сотрудника</code> >> <code>Информация</code> >> <code>Имя:</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>Редактировать</code> >> <code>Карточка сотрудника</code> >> <code>Информация</code> >> <code>Отчество:</code>
|№ п/п
|Сквозная нумерация строк <code>RowNumber()</code>, начальное значение нумерации строк из параметра фильтра <code>Parameters!ReportParametrNumberFirstString.Value – 1</code>
|<syntaxhighlight lang="vb">=RowNumber() + Parameters!ReportParametrNumberFirstString.Value – 1</syntaxhighlight> из счетчика <code>RowNumber()</code> вычитается единица, чтобы скорректировать смещение относительно числа, введенного пользователем; при вводе пользователем, например, числа 50, для первой строки отчета <code>RowNumber()</code> вернет 1: выражение вычисляется как 1 + 50 - 1, что дает в результате 50 (желаемый начальный номер); для второй строки <code>RowNumber()</code> вернет 2, и выражение даст 2 + 50 - 1 = 51, и так далее
|-
|-
|Вывод СНИЛС <code>Fields!snils.Value</code>||<code>Редактировать</code> >> <code>Карточка сотрудника</code> >> <code>Информация</code> >> <code>СНИЛС:</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!fio.Value</code> >> <code style="background-color: #fff3e0;>fio / MainDataSet</code> >> <code style="background-color: #fff3e0;>SURNAME; NAME; PATRONYMIC / EMPLOYEE</code>
 
<code style="background-color: #fff3e0;>Fields!snils.Value</code> >> <code style="background-color: #fff3e0;>snils / MainDataSet</code> >> <code style="background-color: #fff3e0;>STRING_VALUE / EMPLOYEE_ATTRIBUTE</code>
|<syntaxhighlight lang="vb">=IIF( Not IsNothing(Fields!snils.Value), Fields!fio.Value + vbLF + "СНИЛС " + Fields!snils.Value, Fields!fio.Value)</syntaxhighlight> если поле БД, содержащее СНИЛС, не пустое, то в ячейку вносится значение ФИО + перенос на новую строку + надпись «СНИЛС: » + значение поля СНИЛС; иначе вносится только значение ФИО
|-
|-
|Условие <code>IIF()</code>||rowspan="3"|<syntaxhighlight lang="vb">=IIF( Not IsNothing(Fields!snils.Value), Fields!fio.Value + vbLF + "СНИЛС " + Fields!snils.Value, Fields!fio.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>Not IsNothing()</code>
<code style="background-color: #fff3e0;>Fields!employment_form.Value</code>; <code style="background-color: #fff3e0;>Fields!contract_number.Value</code>; <code style="background-color: #fff3e0;>Fields!employment_type.Value</code> >> <code style="background-color: #fff3e0;>employment_form; contract_number; employment_type / MainDataSet</code> >> <code style="background-color: #fff3e0;>STRING_VALUE / EMPLOYEE_ATTRIBUTE</code>
|-
 
|Перенос строки <code>vbLF</code>
<code style="background-color: #fff3e0;>Fields!contract_date.Value</code> >> <code style="background-color: #fff3e0;>contract_date / MainDataSet</code> >> <code style="background-color: #fff3e0;>DATE_VALUE / EMPLOYEE_ATTRIBUTE</code>
|-
|<syntaxhighlight lang="vb">=IIF(IsNothing(Fields!employment_form.Value) And IsNothing(Fields!contract_number.Value) And IsNothing(Fields!contract_date.Value) And IsNothing(Fields!employment_type.Value), "-", Fields!employment_form.Value + " " + Fields!contract_number.Value +IIF( Not IsNothing(Fields!contract_date.Value), " от " + DateValue(Fields!contract_date.Value), "") + " (" + Fields!employment_type.Value + ")")</syntaxhighlight>
|rowspan="6"|Основание для привлечения личного труда (трудовой договор, гражданско-правовой договор или иное), работа по основному месту работы или по совместительству||Форма договора <code>Fields!form.Value</code>||<code>Редактировать</code> >> <code>Карточка сотрудника</code> >> <code>Информация</code> >> <code>Трудовые отношения</code> >> <code>Форма привлечения труда:</code>
|-
|Номер договора <code>Fields!number.Value</code>||<code>Редактировать</code> >> <code>Карточка сотрудника</code> >> <code>Информация</code> >> <code>Трудовые отношения</code> >> <code>Номер договора:</code>
|-
|Дата договора <code>Fields!date.Value</code>||<code>Редактировать</code> >> <code>Карточка сотрудника</code> >> <code>Информация</code> >> <code>Трудовые отношения</code> >> <code>Дата договора</code>
|-
|Вид работы <code>Fields!type.Value</code>||<code>Редактировать</code> >> <code>Карточка сотрудника</code> >> <code>Информация</code> >> <code>Трудовые отношения</code> >> <code>Тип занятости</code>
|-
|Условие <code>IIF()</code>||rowspan=2"|<syntaxhighlight lang="vb">=IIF(IsNothing(Fields!form.Value) And IsNothing(Fields!number.Value) And IsNothing(Fields!date.Value) And IsNothing(Fields!type.Value), "-", Fields!form.Value + " " + Fields!number.Value + IIF( Not IsNothing(Fields!date.Value), " от " + Fields!date.Value, "") + " (" + Fields!type.Value + ")")</syntaxhighlight>
если все 4 поля БД, содержащие форму, номер, дату и тип являются пустыми, то в строку заносится прочерк; иначе вносятся форма + номер + (если дата не пустая, то « от » + дата, если пустая то ничего) + тип
если все 4 поля БД, содержащие форму, номер, дату и тип являются пустыми, то в строку заносится прочерк; иначе вносятся форма + номер + (если дата не пустая, то « от » + дата, если пустая то ничего) + тип
|-
|-
|Сравнение с пустой ячейкой <code>Not IsNothing()</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!function_value.Value</code> >> <code style="background-color: #fff3e0;>function_value / MainDataSet</code> >> <code style="background-color: #fff3e0;>STRING_VALUE / EMPLOYEE_ATTRIBUTE</code>
|<syntaxhighlight lang="vb">=IIF(IsNothing (Fields!function_value.Value), "-", Fields!function_value.Value)</syntaxhighlight> если поле БД, содержащее функцию, пустое, то вносится прочерк, иначе вносится функция из поля
|-
|-
|rowspan="3"|Выполняемые функции, проводимые исследования, испытания, измерения||Выполняемые функции <code>Fields!func.Value</code>||<code>Редактировать</code> >> <code>Карточка сотрудника</code> >> <code>Информация</code> >> <code>Выполняемые функции, исследования, испытания, измерения</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>IIF()</code>||rowspan="2"|<syntaxhighlight lang="vb">=IIF(IsNothing (Fields!func.Value), "-", Fields!func.Value)<</syntaxhighlight> если поле БД, содержащее функцию, пустое, то вносится прочерк, иначе вносится функция из поля
<code style="background-color: #fff3e0;>Fields!uni.Value</code>; <code style="background-color: #fff3e0;>Fields!prof.Value</code>; <code style="background-color: #fff3e0;>Fields!diplom.Value</code> >> <code style="background-color: #fff3e0;>uni; prof; diplom / MainDataSet</code> >> <code style="background-color: #fff3e0;>STRING_VALUE / EMPLOYEE_ATTRIBUTE</code>
|-
 
|Сравнение с пустой ячейкой <code>Not IsNothing()</code>
<code style="background-color: #fff3e0;>Fields!uni_year.Value</code> >> <code style="background-color: #fff3e0;>uni_year / MainDataSet</code> >> <code style="background-color: #fff3e0;>DATE_VALUE / EMPLOYEE_ATTRIBUTE</code>
|-
|<syntaxhighlight lang="vb">=IIF(IsNothing(Fields!uni.Value) And IsNothing(Fields!uni_year.Value) And  IsNothing(Fields!prof.Value) And  IsNothing(Fields!diplom.Value), "-", IIF( Not IsNothing(Fields!uni.Value), Fields!uni.Value  & ", ", "") &IIF( Not IsNothing(Fields!uni_year.Value), Fields!uni_year.Value & ", ", "") & IIF( Not IsNothing(Fields!prof.Value), Fields!prof.Value & ", ", "") & Fields!diplom.Value)</syntaxhighlight>
|rowspan="6"|Образование (наименование учебного заведения, год окончания, квалификация по документу об образовании, реквизиты документа об образовании)||Название учебного заведения <code>Fields!univer.Value</code>||<code>Редактировать</code> >> <code>Карточка сотрудника</code> >> <code>Информация</code> >> <code>Образование</code> >> <code>Наименование учебного заведения</code>
|-
|Год окончания <code>Fields!uni_year.Value</code>||<code>Редактировать</code> >> <code>Карточка сотрудника</code> >> <code>Информация</code> >> <code>Трудовые отношения</code> >> <code>Год окончания</code>
|-
|Квалификация <code>Fields!prof.Value</code>||<code>Редактировать</code> >> <code>Карточка сотрудника</code> >> <code>Информация</code> >> <code>Трудовые отношения</code> >> <code>Квалификация по документу</code>
|-
|Реквизиты диплома <code>Fields!diplom.Value</code>||<code>Редактировать</code> >> <code>Карточка сотрудника</code> >> <code>Информация</code> >> <code>Трудовые отношения</code> >> <code>Реквизиты документа об образовании</code>
|-
|Условие <code>IIF()</code>||rowspan="2"|<syntaxhighlight lang="vb">=IIF(IsNothing(Fields!univer.Value) And IsNothing(Fields!uni_year.Value) And  IsNothing(Fields!prof.Value) And  IsNothing(Fields!diplom.Value), "-", IIF( Not IsNothing(Fields!univer.Value), Fields!univer.Value  & ", ", "") &IIF( Not IsNothing(Fields!uni_year.Value), Fields!uni_year.Value & ", ", "") & IIF( Not IsNothing(Fields!prof.Value), Fields!prof.Value & ", ", "") & Fields!diplom.Value)</syntaxhighlight>
если все 4 поля БД (учебное заведение, год окончания, специальность и реквизиты диплома) пустые, то вносится прочерк; иначе к трем полям применяется условие – если поле не пустое, выводится поле и запятая, если пустое, то ничего; к последнему полю применяется условие без запятой – если поле не пустое, то выводится поле, если пустое, то ничего;  
если все 4 поля БД (учебное заведение, год окончания, специальность и реквизиты диплома) пустые, то вносится прочерк; иначе к трем полям применяется условие – если поле не пустое, выводится поле и запятая, если пустое, то ничего; к последнему полю применяется условие без запятой – если поле не пустое, то выводится поле, если пустое, то ничего;  
|-
|-
|Сравнение с пустой ячейкой <code>Not IsNothing()</code>
|Практический опыт по исследованиям, испытаниям, измерениям, включенным в область аккредитации (в годах, с указанием, в каких организациях, в какой период и по каким видам исследований (испытаний) измерений получен)
|-
|<code style="background-color: #d4edda;>Персонал</code> >> Выбрать запись >> <code style="background-color: #d4edda;>Карточка сотрудника</code> >> <code style="background-color: #d4edda;>Дата получения диплома</code>
|rowspan="3"|Практический опыт по исследованиям, испытаниям, измерениям, включенным в область аккредитации (в годах, с указанием, в каких организациях, в какой период и по каким видам исследований (испытаний) измерений получен)||Дата начала трудовой деятельности <code>Fields!start.Value</code>||<code>Редактировать</code> >> <code>Карточка сотрудника</code> >> <code>Информация</code> >> <code>Дата начала практического опыта</code>
<code style="background-color: #fff3e0;>Fields!diplom_date.Value</code> >> <code style="background-color: #fff3e0;>diplom_date / MainDataSet</code> >> <code style="background-color: #fff3e0;>DATE_VALUE / EMPLOYEE_ATTRIBUTE</code>
|-
|<syntaxhighlight lang="vb">=IIF(IsNothing(Fields!diplom_date.Value), "-", Code.ReturnYearsWithSuffix(DateValue(Fields!diplom_date.Value))  & vbLF & Fields!diplom_date.Value & " - по текущую дату")</syntaxhighlight>
|Условие <code>IIF()</code>||<syntaxhighlight lang="vb">=IIF(IsNothing(Fields!start.Value), "-", Code.ReturnYearsWithSuffix (Fields!start.Value)  & vbLF & Fields!start.Value & " - по текущую дату")</syntaxhighlight>
если в БД поле даты начала трудовой деятельности пустое, выводится прочерк;  
если в БД поле даты начала трудовой деятельности пустое, выводится прочерк;  
иначе  
иначе  
Строка 137: Строка 148:
‒ переносит строку (<code>vbLF</code>);
‒ переносит строку (<code>vbLF</code>);
‒ выводит год начала трудовой деятельности + «по текущую дату»
‒ выводит год начала трудовой деятельности + «по текущую дату»
|-
<syntaxhighlight lang="vb">Public Function ReturnYearsWithSuffix(inputDate As Date) As String
|Количество лет <code>DateDiff(DateInterval.Year, Fields!start.Value, Now()</code>||<syntaxhighlight lang="vb">Public Function ReturnYearsWithSuffix(inputDate As Date) As String
Dim yearsDiff As Long = DateDiff(DateInterval.Year, inputDate, Now())
Dim yearsDiff As Long = DateDiff(DateInterval.Year, inputDate, Now())
Dim resultDate As Long = yearsDiff
Dim resultDate As Long = yearsDiff
Строка 166: Строка 176:
функция возвращает итоговую строку в вызвавшее ее выражение в ячейке для дальнейшей обработки (соединения с другими данными)
функция возвращает итоговую строку в вызвавшее ее выражение в ячейке для дальнейшей обработки (соединения с другими данными)
|-
|-
|}
===Подписи===
{|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!ReportParameterPosition.Value</code>
|<syntaxhighlight lang="vb">=Parameters!ReportParameterPosition.Value</syntaxhighlight>
|-
|ФИО
|Получение данных из фильтра <code>Parameters!ReportParameterFio.Value</code> и преобразование в формат И.О. Фамилия <code>Code.FormatAsInitialsSurname()</code>
|<syntaxhighlight lang="vb">=Code.FormatAsInitialsSurname(Parameters!ReportParameterFio.Value)</syntaxhighlight>
<syntaxhighlight lang="vb">Public Function FormatAsInitialsSurname(fullName As String) As String
Dim trimmedName As String = fullName.Trim()
Dim nameParts() As String = trimmedName.Split(New Char() {" "c}, StringSplitOptions.RemoveEmptyEntries)
If nameParts.Length < 2 Then
Return fullName
End If
Dim surname As String = nameParts(0)
Dim firstNameInitial As Char = nameParts(1)(0)
Dim middleNameInitial As Char? = Nothing
If nameParts.Length >= 3 Then
middleNameInitial = nameParts(2)(0)
End If
Dim result As String = $"{firstNameInitial}."
If middleNameInitial.HasValue Then
result &= $"{middleNameInitial}."
End If
result &= $" {surname}"
Return result
End Function
</syntaxhighlight>
функция принимает строку полных Фамилии, Имени и Отчества;
полученное значение сохраняется в переменной <code>trimmedName</code> после удаления начальных и конечных пробелов (если они были) с помощью встроенной функции <code>Trim()</code>;
в массиве <code>nameParts()</code> сохраняются составные части строки (слова), разбитые с помощью встроенной функции <code>Split()</code>;
если имя содержит менее двух частей (например, только "Иван" или только "Петров"), функция возвращает исходную строку <code>fullName</code> без изменений;
в переменной surname сохраняется первый элемент массива <code>nameParts(0)</code> - Фамилия;
в переменной <code>firstNameInitial</code> сохраняется из второго элемента массива первая буква <code>nameParts(1)(0)</code> – инициал имени;
создается переменная <code>middleNameInitial</code>, которая по умолчанию назначается пустой (на случай отсутствия отчества);
при количестве элементов массива более или равных 3 (при наличии отчества), переменной <code>middleNameInitial</code> в качестве значения присваивается из третьего элемента массива первая буква <code>nameParts(2)(0)</code> – инициал отчества;
создается переменная <code>result</code>, в которую объединяются «И.» + «О.» + « Фамилия»;
функция возвращает значение <code>result</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>
|-
|}
{{Navbox
|name = Блок документов
|state = collapsed
|title = Блок документов
|bodyclass = hlist
|group1 = Дизайнер документов
|list1 = child
| 1_group1 = Контролы
| 1_list1 =
* [[Текстовое поле|Текстовое поле]]
* [[Форматированный текст|Форматированный текст]]
* [[Таблица|Таблица]]
* [[Табликс|Табликс]]
| 1_group2 = Стандартные формы
| 1_list2 = {{Navbox|subgroup
| group1 = Персонал (картотека)
| list1 =
* [[Сведения о работниках лаборатории|Сведения о работниках лаборатории]]
* [[Общая информация о сотрудниках|Общая информация о сотрудниках]]
* [[Карточка персонального учета сотрудника|Карточка персонального учета сотрудника]]
* [[Информация об уволенных сотрудниках|Информация об уволенных сотрудниках]]
| group2 = Объекты анализа
| list2 =
* [[Информация по спискам показателей объектов и нормативов|Информация по спискам показателей объектов и нормативов]]
* [[Информация о нормах показателей|Информация о нормах показателей]]
| group3 = Методики анализа
| list3 =
* [[Приложение к аттестату аккредитации|Приложение к аттестату аккредитации]]
* [[Общая информация о методиках анализа|Общая информация о методиках анализа]]
* [[Полная информация о методике анализа|Полная информация о методике анализа]]
* [[Информация об использовании методик анализа в ЛЖ|Информация об использовании методик анализа в ЛЖ]]
| group4 = Формулы
| list4 =
* [[Полная информация по методам анализа (формулы)|Полная информация по методам анализа (формулы)]]
| group5 = Структура предприятия (лаборатории)
| list5 =
* [[Структура предприятия (всё дерево)|Структура предприятия (всё дерево)]]
* [[Карточка предприятия|Карточка предприятия]]
| group6 = Источники проб
| list6 =
* [[Структура источников (с выбором уровня)|Структура источников (с выбором уровня)]]
* [[Список мест выбранного типа|Список мест выбранного типа]]
* [[Информация о нормах в источниках проб|Информация о нормах в источниках проб]]
| group7 = Администрирование
| list7 =
* [[Информация о ролях и пользователях|Информация о ролях и пользователях]]
| group8 = Статистика
| list8 =
* [[Общая информация по БД|Общая информация по БД]]
* [[Расширенная статистика запусков|Расширенная статистика запусков]]
| group9 = Лабораторные журналы
| list9 =
* [[Сводный журнал регистрации проб|Сводный журнал регистрации проб]]
* [[Сводный журнал результатов анализов|Сводный журнал результатов анализов]]
* [[Журнал контроля окружающей среды|Журнал контроля окружающей среды]]
* [[Журнал на показатель (фотометрия)|Журнал на показатель (фотометрия)]]
* [[Журнал на показатель (фракционный состав)|Журнал на показатель (фракционный состав)]]
* [[Учет и анализ объемов внесенной информации|Учет и анализ объемов внесенной информации]]
* [[Протокол|Протокол]]
* [[Графическое изображение результатов|Графическое изображение результатов]]
}}
}}

Текущая версия от 03:48, 26 января 2026

Параметры

Параметр Тип поля Данные Сортировка
1 Выберите лабораторию: выбор значения лаборатории, имеющие записи в журналах сначала головное учреждение, затем остальные по алфавиту
2 Укажите ФИО уполномоченного лица: выбор значения сотрудники из лаборатории (п.1) по алфавиту
3 Укажите должность уполномоченного лица: выбор значения должности сотрудника (п.2) по алфавиту
4 Сотрудники (область аккредитации): выбор одного из 2-х вариантов - «в области аккредитации», «вне области аккредитации» отметка проставляется ТОЛЬКО для сотрудников лаборатории -
5 Введите начальное значение нумерации строк: ввод числа начальное значение, с которого будет начинаться нумерация строк (по умолчанию 1) -

Атрибуты

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

  • СНИЛС
  • Форма привлечения труда
  • Тип занятости
  • Номер договора
  • Дата договора
  • Выполняемые функции
  • Образовательное учреждение
  • Период обучения
  • Специальность, специализация, квалификация
  • Реквизиты документа об образовании
  • Дата получения диплома
  • В области аккредитации

Внимание!

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

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

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

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

Верхний колонтитул

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

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

Код и комментарии
Название лаборатории Parameters!ReportParameterLaboratory.Value
=Parameters!ReportParameterLaboratory.Value
Владелец версии Code.Globals.GetVersionOwner()
="Владелец версии: " & Code.Globals.GetVersionOwner()

Заголовок

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

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

Код и комментарии
Текущая дата Today.ToString("dd.MM.yyyy")
="По состоянию на: " & Today.ToString("dd.MM.yyyy")

Основная информация

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

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

Код и комментарии
№ п/п Сквозная нумерация строк RowNumber(), начальное значение нумерации строк из параметра фильтра Parameters!ReportParametrNumberFirstString.Value – 1
=RowNumber() + Parameters!ReportParametrNumberFirstString.Value  1
из счетчика RowNumber() вычитается единица, чтобы скорректировать смещение относительно числа, введенного пользователем; при вводе пользователем, например, числа 50, для первой строки отчета RowNumber() вернет 1: выражение вычисляется как 1 + 50 - 1, что дает в результате 50 (желаемый начальный номер); для второй строки RowNumber() вернет 2, и выражение даст 2 + 50 - 1 = 51, и так далее
Фамилия, имя, отчество (при наличии), страховой номер индивидуального лицевого счета, дата и место рождения Персонал >> Выбрать запись >> Карточка сотрудника >> Фамилия; Имя; Отчество; СНИЛС; Дата рождения

Fields!fio.Value >> fio / MainDataSet >> SURNAME; NAME; PATRONYMIC / EMPLOYEE

Fields!snils.Value >> snils / MainDataSet >> STRING_VALUE / EMPLOYEE_ATTRIBUTE

=IIF( Not IsNothing(Fields!snils.Value), Fields!fio.Value + vbLF + "СНИЛС " + Fields!snils.Value, Fields!fio.Value)
если поле БД, содержащее СНИЛС, не пустое, то в ячейку вносится значение ФИО + перенос на новую строку + надпись «СНИЛС: » + значение поля СНИЛС; иначе вносится только значение ФИО
Основание для привлечения личного труда (трудовой договор, гражданско-правовой договор или иное), работа по основному месту работы или по совместительству Персонал >> Выбрать запись >> Карточка сотрудника >> Форма привлечения труда; Номер договора; Дата договора; Тип занятости

Fields!employment_form.Value; Fields!contract_number.Value; Fields!employment_type.Value >> employment_form; contract_number; employment_type / MainDataSet >> STRING_VALUE / EMPLOYEE_ATTRIBUTE

Fields!contract_date.Value >> contract_date / MainDataSet >> DATE_VALUE / EMPLOYEE_ATTRIBUTE

=IIF(IsNothing(Fields!employment_form.Value) And IsNothing(Fields!contract_number.Value) And IsNothing(Fields!contract_date.Value) And IsNothing(Fields!employment_type.Value), "-", Fields!employment_form.Value + " " + Fields!contract_number.Value +IIF( Not IsNothing(Fields!contract_date.Value), " от " + DateValue(Fields!contract_date.Value), "") + " (" + Fields!employment_type.Value + ")")

если все 4 поля БД, содержащие форму, номер, дату и тип являются пустыми, то в строку заносится прочерк; иначе вносятся форма + номер + (если дата не пустая, то « от » + дата, если пустая то ничего) + тип

Выполняемые функции, проводимые исследования, испытания, измерения Персонал >> Выбрать запись >> Карточка сотрудника >> Выполняемые функции

Fields!function_value.Value >> function_value / MainDataSet >> STRING_VALUE / EMPLOYEE_ATTRIBUTE

=IIF(IsNothing (Fields!function_value.Value), "-", Fields!function_value.Value)
если поле БД, содержащее функцию, пустое, то вносится прочерк, иначе вносится функция из поля
Образование (наименование учебного заведения, год окончания, квалификация по документу об образовании, реквизиты документа об образовании) Персонал >> Выбрать запись >> Карточка сотрудника >> Образовательное учреждение; Дата получения диплома; Специальность, специализация, квалификация; Реквизиты документа об образовании

Fields!uni.Value; Fields!prof.Value; Fields!diplom.Value >> uni; prof; diplom / MainDataSet >> STRING_VALUE / EMPLOYEE_ATTRIBUTE

Fields!uni_year.Value >> uni_year / MainDataSet >> DATE_VALUE / EMPLOYEE_ATTRIBUTE

=IIF(IsNothing(Fields!uni.Value) And IsNothing(Fields!uni_year.Value) And  IsNothing(Fields!prof.Value) And  IsNothing(Fields!diplom.Value), "-", IIF( Not IsNothing(Fields!uni.Value), Fields!uni.Value  & ", ", "") &IIF( Not IsNothing(Fields!uni_year.Value), Fields!uni_year.Value & ", ", "") & IIF( Not IsNothing(Fields!prof.Value), Fields!prof.Value & ", ", "") & Fields!diplom.Value)

если все 4 поля БД (учебное заведение, год окончания, специальность и реквизиты диплома) пустые, то вносится прочерк; иначе к трем полям применяется условие – если поле не пустое, выводится поле и запятая, если пустое, то ничего; к последнему полю применяется условие без запятой – если поле не пустое, то выводится поле, если пустое, то ничего;

Практический опыт по исследованиям, испытаниям, измерениям, включенным в область аккредитации (в годах, с указанием, в каких организациях, в какой период и по каким видам исследований (испытаний) измерений получен) Персонал >> Выбрать запись >> Карточка сотрудника >> Дата получения диплома

Fields!diplom_date.Value >> diplom_date / MainDataSet >> DATE_VALUE / EMPLOYEE_ATTRIBUTE

=IIF(IsNothing(Fields!diplom_date.Value), "-", Code.ReturnYearsWithSuffix(DateValue(Fields!diplom_date.Value))  & vbLF & Fields!diplom_date.Value & " - по текущую дату")

если в БД поле даты начала трудовой деятельности пустое, выводится прочерк; иначе ‒ вызывает функцию ReturnYearsWithSuffix(), возвращающую количество лет и текстовый суффикс « год/года/лет» в зависимости от числа лет стажа; ‒ переносит строку (vbLF); ‒ выводит год начала трудовой деятельности + «по текущую дату»

Public Function ReturnYearsWithSuffix(inputDate As Date) As String
	Dim yearsDiff As Long = DateDiff(DateInterval.Year, inputDate, Now())
	Dim resultDate As Long = yearsDiff
	Dim resultString As String = yearsDiff.ToString()
	
	If (resultDate > 20) Then
		resultDate = resultDate Mod 10
	End If
	
	Select Case resultDate
		Case 1
			resultString &= $" год"
		Case 2 To 4
			resultString &= $" года"
		Case Else
			resultString &= $" лет"
	End Select
	
	Return resultString
End Function

функция принимает числовое значение количества лет трудового стажа; DateDiff() вычисляет разницу между двумя датами (между третьим и вторым аргументами), при этом первый аргумент DateInterval.Year указывает функции, в каких единицах измерения нужно вернуть разницу (в данном случае, в полных годах), второй аргумент inputDate начало периода, третий аргумент Now() конец периода (текущая системная дата и время на момент выполнения кода); результат вычисления присваивается переменной yearsDiff; значение сохраняется в виде строки в переменной resultString; создается переменная resultDate и ей присваивается ранее вычисленное значение лет из переменной yearsDiff (для последующих вычислений суффикса); если количество лет более 20, то resultDate делится на 10 и получившийся остаток перезаписывается в переменную resultDate; переменная resultDate для определения соответствующего суффикса отправляется в оператор Select Case, где в зависимости от ее значения к ранее полученной строке resultString дописывается через пробел необходимый суффикс «год/года/лет»; функция возвращает итоговую строку в вызвавшее ее выражение в ячейке для дальнейшей обработки (соединения с другими данными)

Подписи

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

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

Код и комментарии
Должность Подстановка из фильтра Parameters!ReportParameterPosition.Value
=Parameters!ReportParameterPosition.Value
ФИО Получение данных из фильтра Parameters!ReportParameterFio.Value и преобразование в формат И.О. Фамилия Code.FormatAsInitialsSurname()
=Code.FormatAsInitialsSurname(Parameters!ReportParameterFio.Value)
Public Function FormatAsInitialsSurname(fullName As String) As String
	Dim trimmedName As String = fullName.Trim()
	Dim nameParts() As String = trimmedName.Split(New Char() {" "c}, StringSplitOptions.RemoveEmptyEntries)

	If nameParts.Length < 2 Then
		Return fullName
	End If

	Dim surname As String = nameParts(0)
	Dim firstNameInitial As Char = nameParts(1)(0)
	Dim middleNameInitial As Char? = Nothing
	If nameParts.Length >= 3 Then
		middleNameInitial = nameParts(2)(0)
	End If

	Dim result As String = $"{firstNameInitial}."
	If middleNameInitial.HasValue Then
		result &= $"{middleNameInitial}."
	End If
	result &= $" {surname}"

	Return result
End Function

функция принимает строку полных Фамилии, Имени и Отчества; полученное значение сохраняется в переменной trimmedName после удаления начальных и конечных пробелов (если они были) с помощью встроенной функции Trim(); в массиве nameParts() сохраняются составные части строки (слова), разбитые с помощью встроенной функции Split(); если имя содержит менее двух частей (например, только "Иван" или только "Петров"), функция возвращает исходную строку fullName без изменений; в переменной surname сохраняется первый элемент массива nameParts(0) - Фамилия; в переменной firstNameInitial сохраняется из второго элемента массива первая буква nameParts(1)(0) – инициал имени; создается переменная middleNameInitial, которая по умолчанию назначается пустой (на случай отсутствия отчества); при количестве элементов массива более или равных 3 (при наличии отчества), переменной middleNameInitial в качестве значения присваивается из третьего элемента массива первая буква nameParts(2)(0) – инициал отчества; создается переменная result, в которую объединяются «И.» + «О.» + « Фамилия»; функция возвращает значение result в выражение ячейки для дальнейшего отображения

Нижний колонтитул

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

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

Код и комментарии
Имя программы Code.Globals.GetProgramName()
=Code.Globals.GetProgramName()
Нумерация страниц Номер страницы Globals!PageNumber и всего страниц Globals!TotalPages
="Страница " & Globals!PageNumber & " из " & Globals!TotalPages