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

Сведения о работниках лаборатории

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

Параметры

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

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

Атрибуты

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

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

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

Поля Данные и выражения Элементы интерфейса или код
Верхний колонтитул Название лаборатории Parameters!ReportParameterLaboratory.Value Персонал >> Привязка или Редактировать >> Карточка сотрудника >> Привязка
Владелец версии Code.Globals.GetVersionOwner()
="Владелец версии: " & Code.Globals.GetVersionOwner()
Заголовок Текущая дата Today.ToString("dd.MM.yyyy")
="По состоянию на: " & Today.ToString("dd.MM.yyyy")
Подписи Подстановка должности из фильтра Parameters!ReportParameterPosition.Value
=Parameters!ReportParameterPosition.Value
Подстановка Фамилии Имени Отчества из фильтра Parameters!ReportParameterFio.Value
=Code.FormatAsInitialsSurname(Parameters!ReportParameterFio.Value)
Преобразование в формат И.О. Фамилия Code.FormatAsInitialsSurname()
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!PageNumber & " из " & Globals!TotalPages
Всего страниц Globals!TotalPages>
Основная таблица
№ п/п Вывод сквозной нумерации строк 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 дописывается через пробел необходимый суффикс «год/года/лет»; функция возвращает итоговую строку в вызвавшее ее выражение в ячейке для дальнейшей обработки (соединения с другими данными)