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

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

Материал из Химсофт Вики
Строка 35: Строка 35:
|style="text-align: center;" colspan="3"|<b>Основная таблица</b>
|style="text-align: center;" colspan="3"|<b>Основная таблица</b>
|-
|-
|rowspan="2"|№ п/п||Вывод сквозной нумерации строк <code>RowNumber()</code>||rowspan="2"|<code>=RowNumber() + Parameters!ReportParametrNumberFirstString.Value – 1</code> из счетчика <code>RowNumber()</code> вычитается единица, чтобы скорректировать смещение относительно числа, введенного пользователем; при вводе пользователем, например, числа 50, для первой строки отчета <code>RowNumber()</code> вернет 1: выражение вычисляется как 1 + 50 - 1, что дает в результате 50 (желаемый начальный номер); для второй строки <code>RowNumber()</code> вернет 2, и выражение даст 2 + 50 - 1 = 51, и так далее
|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>Parameters!ReportParametrNumberFirstString.Value – 1</code>
|Начальное значение нумерации строк из параметра фильтра: <code>Parameters!ReportParametrNumberFirstString.Value – 1</code>
Строка 61: Строка 61:
|Вид работы <code>Fields!type.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"|<code>=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 + ")")</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 поля БД, содержащие форму, номер, дату и тип являются пустыми, то в строку заносится прочерк; иначе вносятся форма + номер + (если дата не пустая, то « от » + дата, если пустая то ничего) + тип
|-
|-
Строка 68: Строка 68:
|rowspan="3"|Выполняемые функции, проводимые исследования, испытания, измерения||Выполняемые функции <code>Fields!func.Value</code>||<code>Редактировать</code> >> <code>Карточка сотрудника</code> >> <code>Информация</code> >> <code>Выполняемые функции, исследования, испытания, измерения</code>
|rowspan="3"|Выполняемые функции, проводимые исследования, испытания, измерения||Выполняемые функции <code>Fields!func.Value</code>||<code>Редактировать</code> >> <code>Карточка сотрудника</code> >> <code>Информация</code> >> <code>Выполняемые функции, исследования, испытания, измерения</code>
|-
|-
|Условие <code>IIF()</code>||rowspan="2"|<code>=IIF(IsNothing (Fields!func.Value), "-", Fields!func.Value)</code> если поле БД, содержащее функцию, пустое, то вносится прочерк, иначе вносится функция из поля  
|Условие <code>IIF()</code>||rowspan="2"|<syntaxhighlight lang="vb">=IIF(IsNothing (Fields!func.Value), "-", Fields!func.Value)<</syntaxhighlight> если поле БД, содержащее функцию, пустое, то вносится прочерк, иначе вносится функция из поля  
|-
|-
|Сравнение с пустой ячейкой <code>Not IsNothing()</code>
|Сравнение с пустой ячейкой <code>Not IsNothing()</code>
Строка 80: Строка 80:
|Реквизиты диплома <code>Fields!diplom.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"|<code>=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)</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 поля БД (учебное заведение, год окончания, специальность и реквизиты диплома) пустые, то вносится прочерк; иначе к трем полям применяется условие – если поле не пустое, выводится поле и запятая, если пустое, то ничего; к последнему полю применяется условие без запятой – если поле не пустое, то выводится поле, если пустое, то ничего;  
|-
|-
Строка 87: Строка 87:
|rowspan="3"|Практический опыт по исследованиям, испытаниям, измерениям, включенным в область аккредитации (в годах, с указанием, в каких организациях, в какой период и по каким видам исследований (испытаний) измерений получен)||Дата начала трудовой деятельности <code>Fields!start.Value</code>||<code>Редактировать</code> >> <code>Карточка сотрудника</code> >> <code>Информация</code> >> <code>Дата начала практического опыта</code>
|rowspan="3"|Практический опыт по исследованиям, испытаниям, измерениям, включенным в область аккредитации (в годах, с указанием, в каких организациях, в какой период и по каким видам исследований (испытаний) измерений получен)||Дата начала трудовой деятельности <code>Fields!start.Value</code>||<code>Редактировать</code> >> <code>Карточка сотрудника</code> >> <code>Информация</code> >> <code>Дата начала практического опыта</code>
|-
|-
|Условие <code>IIF()</code>||<code>=IIF(IsNothing(Fields!start.Value), "-", Code.ReturnYearsWithSuffix (Fields!start.Value)  & vbLF & Fields!start.Value & " - по текущую дату")</code>  
|Условие <code>IIF()</code>||<syntaxhighlight lang="vb">=IIF(IsNothing(Fields!start.Value), "-", Code.ReturnYearsWithSuffix (Fields!start.Value)  & vbLF & Fields!start.Value & " - по текущую дату")</syntaxhighlight>
если в БД поле даты начала трудовой деятельности пустое, выводится прочерк;  
если в БД поле даты начала трудовой деятельности пустое, выводится прочерк;  
иначе  
иначе  

Версия от 09:41, 20 января 2026

Параметры

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

  1. Выберите лабораторию: (выбор одного из вариантов); выводятся в алфавитном порядке лаборатории, имеющие сотрудников;
  2. Укажите ФИО уполномоченного лица: (выбор одного из вариантов); выводятся только сотрудники выбранной в п.1 лаборатории;
  3. Укажите должность уполномоченного лица: (выбор одного из вариантов); выводятся должности, относящиеся к выбранному в п.2 сотруднику;
  4. Сотрудники (область аккредитации): (доступные значения – «в области аккредитации», «вне области аккредитации»);
  5. Введите начальное значение нумерации строк: (ввод целого числа); по умолчанию 1, возможен ввод в т.ч. 0 или отрицательного числа.

Атрибуты

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

  • 'СНИЛС' – snils;
  • 'Форма привлечения труда' – form;
  • 'Тип занятости' – type;
  • 'Номер договора' – number;
  • 'Дата договора' – date;
  • 'Выполняемые функции, исследования, испытания, измерения' – func;
  • 'Наименование учебного заведения' – univer;
  • 'Год окончания' – uni_year;
  • 'Квалификация по документу' – prof;
  • 'Реквизиты документа об образовании' – diplom;
  • 'Дата начала практического опыта' – start;
  • 'В области аккредитации' – accred.

Поля, данные, выражения и формулы

Поля Данные и выражения Формулы
Верхний колонтитул Название лаборатории =Parameters!ReportParameterLaboratory.Value Персонал >> Привязка или Редактировать >> Карточка сотрудника >> Привязка
Владелец версии Code.Globals.GetVersionOwner()
="Владелец версии: " & Code.Globals.GetVersionOwner()
Заголовок Текущая дата Today.ToString("dd.MM.yyyy")
="По состоянию на: " & Today.ToString("dd.MM.yyyy")
Основная таблица
№ п/п Вывод сквозной нумерации строк RowNumber()
=RowNumber() + Parameters!ReportParametrNumberFirstString.Value  1
из счетчика RowNumber() вычитается единица, чтобы скорректировать смещение относительно числа, введенного пользователем; при вводе пользователем, например, числа 50, для первой строки отчета RowNumber() вернет 1: выражение вычисляется как 1 + 50 - 1, что дает в результате 50 (желаемый начальный номер); для второй строки RowNumber() вернет 2, и выражение даст 2 + 50 - 1 = 51, и так далее
Начальное значение нумерации строк из параметра фильтра: Parameters!ReportParametrNumberFirstString.Value – 1
Фамилия, имя, отчество (при наличии), страховой номер индивидуального лицевого счета, дата и место рождения Вывод ФИО Fields!fio.Value Редактировать >> Карточка сотрудника >> Информация >> Фамилия:
Редактировать >> Карточка сотрудника >> Информация >> Имя:
Редактировать >> Карточка сотрудника >> Информация >> Отчество:
Вывод СНИЛС Fields!snils.Value Редактировать >> Карточка сотрудника >> Информация >> СНИЛС:
Условие IIF()
=IIF( Not IsNothing(Fields!snils.Value), Fields!fio.Value + vbLF + "СНИЛС " + Fields!snils.Value, Fields!fio.Value)
если поле БД, содержащее СНИЛС, не пустое, то в ячейку вносится значение ФИО + перенос на новую строку + надпись «СНИЛС: » + значение поля СНИЛС; иначе вносится только значение ФИО
Сравнение с пустой ячейкой Not IsNothing()
Перенос строки vbLF
Основание для привлечения личного труда (трудовой договор, гражданско-правовой договор или иное), работа по основному месту работы или по совместительству Форма договора Fields!form.Value Редактировать >> Карточка сотрудника >> Информация >> Трудовые отношения >> Форма привлечения труда:
Номер договора Fields!number.Value Редактировать >> Карточка сотрудника >> Информация >> Трудовые отношения >> Номер договора:
Дата договора Fields!date.Value Редактировать >> Карточка сотрудника >> Информация >> Трудовые отношения >> Дата договора
Вид работы Fields!type.Value Редактировать >> Карточка сотрудника >> Информация >> Трудовые отношения >> Тип занятости
Условие IIF()
=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 + ")")

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

Сравнение с пустой ячейкой Not IsNothing()
Выполняемые функции, проводимые исследования, испытания, измерения Выполняемые функции Fields!func.Value Редактировать >> Карточка сотрудника >> Информация >> Выполняемые функции, исследования, испытания, измерения
Условие IIF()
=IIF(IsNothing (Fields!func.Value), "-", Fields!func.Value)<
если поле БД, содержащее функцию, пустое, то вносится прочерк, иначе вносится функция из поля
Сравнение с пустой ячейкой Not IsNothing()
Образование (наименование учебного заведения, год окончания, квалификация по документу об образовании, реквизиты документа об образовании) Название учебного заведения Fields!univer.Value Редактировать >> Карточка сотрудника >> Информация >> Образование >> Наименование учебного заведения
Год окончания Fields!uni_year.Value Редактировать >> Карточка сотрудника >> Информация >> Трудовые отношения >> Год окончания
Квалификация Fields!prof.Value Редактировать >> Карточка сотрудника >> Информация >> Трудовые отношения >> Квалификация по документу
Реквизиты диплома Fields!diplom.Value Редактировать >> Карточка сотрудника >> Информация >> Трудовые отношения >> Реквизиты документа об образовании
Условие IIF()
=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)

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

Сравнение с пустой ячейкой Not IsNothing()
Практический опыт по исследованиям, испытаниям, измерениям, включенным в область аккредитации (в годах, с указанием, в каких организациях, в какой период и по каким видам исследований (испытаний) измерений получен) Дата начала трудовой деятельности Fields!start.Value Редактировать >> Карточка сотрудника >> Информация >> Дата начала практического опыта
Условие IIF()
=IIF(IsNothing(Fields!start.Value), "-", Code.ReturnYearsWithSuffix (Fields!start.Value)  & vbLF & Fields!start.Value & " - по текущую дату")

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

Количество лет DateDiff(DateInterval.Year, Fields!start.Value, Now()
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 дописывается через пробел необходимый суффикс «год/года/лет»; функция возвращает итоговую строку в вызвавшее ее выражение в ячейке для дальнейшей обработки (соединения с другими данными)