Каталог решений - Типовые методы конфигурации "Зарплата и управление персоналом", которые пригодятся каждому ЗУП программисту и не только

Типовые методы конфигурации "Зарплата и управление персоналом", которые пригодятся каждому ЗУП программисту и не только

Типовые методы конфигурации "Зарплата и управление персоналом", которые пригодятся каждому ЗУП программисту и не только

В наличии

В данном обзоре дам описание полезных встроенных функций и процедур в конфигурации «Зарплата и управление персоналом 3.1».

Категория:

Описание

Привет всем! Возвращаясь к вопросу отказа от изобретения собственных велосипедов, в данном обзоре рассмотрю наиболее полезные функции и процедуры в конфигурации "Зарплата и управление персоналом 3.1". С большой вероятностью, что вы уже "изобретали" что-то подобное собственное, работая с данной конфигурацией.

Ни для кого не секрет, что выражение для программиста  "все уже придумано до вас" — это уже истина.

Итак, посмотрим что есть полезного:

 

1.Некоторые полезные функции работы со временем и датами:

Функция 1.1

ДнейВПериоде(Знач ДатаНачала, Знач ДатаОкончания, Знач ПроверятьКорректностьПериода = Ложь)

Данная функция определяет количество дней в заданном периоде, работает вот так:

Дата1 = "01.06.2020 0:00:00";
Дата2 = "21.08.2020 0:00:00";

Результ = ЗарплатаКадрыКлиентСервер.ДнейВПериоде(Дата1,Дата2,Истина); //82

 

Функция 1.2

ДобавитьДней(Знач ДатаСобытия, Знач КоличествоДней)

Эта функция возвращает дату, которая получается, при "увеличении" входящей даты на определенное количество дней. Пример вот такой:

Дата1 = "01.06.2020 0:00:00";
Результ = ЗарплатаКадрыКлиентСервер.ДобавитьДней(Дата1,5); //05.06.2020 0:00:00

 

Функция 1.3

ПредставлениеВременногоИнтервала(Знач ДатаНачала, Знач ДатаОкончания)

Еще одна очень классная функция, возвращает строку, представляя заданный период:

Дата1 = "01.06.2020 0:00:00";
Дата2 = "21.08.2020 0:00:00";
	
Результ = ЗарплатаКадрыКлиентСервер.ПредставлениеВременногоИнтервала(Дата1,Дата2); //2 месяца 20 дней

 

Функция 1.4

ДлительностьСутокВСекундах()

Простейшая функция, определяющая количество суток в секундах, тем не менее, она встроена в конфигурацию.

Функция ДлительностьСутокВСекундах() Экспорт
   Возврат 24 * 60 * 60;
КонецФункции

 

Функция 1.5

ПолучитьПредставлениеМесяца(ДатаНачалаМесяца)

Так же, простая функция, которая возвращает месяц/год , в зависимости от "даты на входе".

Функция ПолучитьПредставлениеМесяца(ДатаНачалаМесяца) Экспорт
	Возврат Формат(ДатаНачалаМесяца, "ДФ='ММММ гггг'");
КонецФункции

 

2.Полезные методы работы с кадровым учетом:

Функция 2.1

СотрудникиОрганизации(Истина, Параметры)

Данная функция возвращает таблицу значений — соответствие сотрудника и физического лица.

Пример работы такой:

&НаСервере
Процедура ВыполнитьНаСервере()
	
	 Парам = КадровыйУчет.ПараметрыПолученияСотрудниковОрганизацийПоСпискуФизическихЛиц();
	 СотрудникиТЗ = КадровыйУчет.СотрудникиОрганизации(Истина, Парам);
	 Возврат СотрудникиТЗ;
	
КонецПроцедуры

Где Парам — это структура параметров, формируемая функцией ПараметрыПолученияСотрудниковОрганизацийПоСпискуФизическихЛиц() — можно не заморачиваться, что в этой структуре.

СотрудникиТЗ — таблица значений с колонками "Период, ПолеПорядка0, ПолеПорядка1, ПолеПорядка2, Сотрудник, ФизическоеЛицо".

Например:

Период:  01.01.0001 0:00:00 (Дата)

ПолеПорядка0: "00001" (Строка)

ПолеПорядка1:  1 (Число)

ПолеПорядка2:  "Иванов Иван Иванович" (Строка)

Сотрудник: Иванов Иван Иванович (Сотрудники)

ФизическоеЛицо: Иванов Иван Иванович (Физические лица)

 

Функция 2.2

ОсновныеСотрудникиФизическихЛиц(МассивФизическихЛиц, ТолькоРазрешенные, Организация, Период)

Данная функция возвращает таблицу значений с такими колонками:

ГоловнаяОрганизация (Организации)

Период (Дата)

Сотрудник (Сотрудники)

ФизическоеЛицо (Физические лица)

Пример работы такой:

&НаСервере
Процедура ВыполнитьНаСервере()
	
	МассивФизическихЛиц = Новый Массив;
	МассивФизическихЛиц.Добавить(Справочники.ФизическиеЛица.НайтиПоКоду("ЗК-0000036"));
	МассивФизическихЛиц.Добавить(Справочники.ФизическиеЛица.НайтиПоКоду("ЗК-0000032"));
	
	СотрудникиТЗ = КадровыйУчет.ОсновныеСотрудникиФизическихЛиц(МассивФизическихЛиц, Истина, Организация, Дата1);  // Таблица значений
		
КонецПроцедуры

Здесь формирую массив физических лиц и отправляю его в эту функцию. По каждому лицу получаю сотрудника и организацию, в которой он находится на данный момент Дата1.

Если не указывать параметр Организация, то можно получить все организации базы.

В основе данной функции лежит работа с запросом к периодическому регистру сведений ОсновныеСотрудникиФизическихЛиц.

 

Функция 2.3

ФизическиеЛицаСотрудников(МассивСотрудников)

Данная функция возвращает массив физических лиц, согласно передаваемому массиву сотрудников. Тоже все писали что-то подобное. Работает вот так:

&НаСервере
Процедура ВыполнитьНаСервере()

МассивСотрудников = Новый Массив;
МассивСотрудников.Добавить(Справочники.Сотрудники.НайтиПоКоду("00ЗК-00035"));
МассивСотрудников.Добавить(Справочники.Сотрудники.НайтиПоКоду("00ЗК-00036"));
	
ФизЛицо = КадровыйУчет.ФизическиеЛицаСотрудников(МассивСотрудников);  // Массив физических лиц

КонецПроцедуры

 

Функция 2.4

ДоговорыФизическихЛиц(ТаблицаФизическихЛиц)

Данная функция получает таблицу значений и возвращает таблицу значений по договору на физическое лицо. Пример работы такой:

&НаСервере
Процедура ВыполнитьНаСервере()
	
	ТаблицаФизическихЛиц = Новый ТаблицаЗначений;
	ТаблицаФизическихЛиц.Колонки.Добавить("ФизическоеЛицо",Новый ОписаниеТипов("СправочникСсылка.ФизическиеЛица"));
	ТаблицаФизическихЛиц.Колонки.Добавить("ГоловнаяОрганизация",Новый ОписаниеТипов("СправочникСсылка.Организации"));
	ТаблицаФизическихЛиц.Колонки.Добавить("НачалоПериода",Новый ОписаниеТипов("Дата"));
	ТаблицаФизическихЛиц.Колонки.Добавить("ОкончаниеПериода",Новый ОписаниеТипов("Дата"));
	
	НовСтр = ТаблицаФизическихЛиц.Добавить();
	НовСтр.ФизическоеЛицо = Справочники.ФизическиеЛица.НайтиПоКоду("ЗК-0000034");
	НовСтр.ГоловнаяОрганизация = Организация;
	НовСтр.НачалоПериода = Дата1;
	НовСтр.ОкончаниеПериода = Дата2;
	
	ДоговорыФЗ = КадровыйУчет.ДоговорыФизическихЛиц(ТаблицаФизическихЛиц);
	
	
КонецПроцедуры

Соблюдение типов на "входе" для ТаблицыФизическихЛиц в данном случае обязательно. Возвращаемая таблица ДоговорыФЗ имеет такие колонки "ВидДоговора, ВидДоговораГПХ, Дата, Начало, Окончание, Номер, Организация, ФизическоеЛицо".

 

Функция 2.5

ДокументыФизическихЛиц(СписокФизическихЛиц, ТолькоРазрешенные, ВидДокумента = Неопределено, ДатаПолученияДанных = Неопределено)

Данная функция позволяет получить таблицу значений документов физических лиц по списку — массиву (СписокФизическихЛиц) на определенную дату.

Работает вот так:

&НаСервере
Процедура ВыполнитьНаСервере()
	
	МассивФизическихЛиц = Новый Массив;
	МассивФизическихЛиц.Добавить(Справочники.ФизическиеЛица.НайтиПоКоду("ЗК-0000036"));
	МассивФизическихЛиц.Добавить(Справочники.ФизическиеЛица.НайтиПоКоду("ЗК-0000032"));
	
	ДокументыФЗ = КадровыйУчет.ДокументыФизическихЛиц(МассивФизическихЛиц,Истина,,ТекущаяДата());
	
	
КонецПроцедуры	

Так же можно сделать отбор по виду документа, например, выбрать все паспорта.

 

Функция 2.6

ФизическиеЛицаРаботавшиеВОрганизации(ТолькоРазрешенные, Организация, НачалоПериода, ОкончаниеПериода, Подразделение = Неопределено)

Данная функция возвращает таблицу значений физических лиц, которые попали в отбор входящих параметров. Работает достаточно просто:

&НаСервере
Процедура ВыполнитьНаСервере()
	
	ТаблицаФЛ= КадровыйУчет.ФизическиеЛицаРаботавшиеВОрганизации(Истина,Организация,Дата1,Дата2);//ТаблицаФизическихЛиц;
	
КонецПроцедуры	

Можно отобрать по подразделению.
   

Функция 2.7

КадровыеДанныеСотрудников(ТолькоРазрешенные, СписокСотрудников, КадровыеДанные, ДатаПолученияДанных = ‘00010101’, ПоляОтбораПериодическихДанных = Неопределено, ФормироватьСПериодичностьДень = Истина)

Это функция из разряда "хочу все и сразу". Возвращает таблицу значений из колонок КадровыеДанные по списку сотрудников (массив сотрудников). Пример работы функции:

&НаСервере
Процедура ВыполнитьНаСервере()	
	
	МассивСотрудников = Новый Массив;
	МассивСотрудников.Добавить(Справочники.Сотрудники.НайтиПоКоду("ЗК-0000036"));
	МассивСотрудников.Добавить(Справочники.Сотрудники.НайтиПоКоду("ЗК-0000032"));
	МассивСотрудников.Добавить(Справочники.Сотрудники.НайтиПоКоду("ЗК-0000035"));
	МассивСотрудников.Добавить(Справочники.Сотрудники.НайтиПоКоду("ЗК-0000034"));
	
	ИменаКадровыхДанных = "ФИОПолные,Пол,ГоловнаяОрганизация";
	
	Результат = КадровыйУчет.КадровыеДанныеСотрудников(Истина,МассивСотрудников,ИменаКадровыхДанных,ТекущаяДата());
	
КонецПроцедуры	

Строка перечисления кадровых данных может быть такая, например:

ИменаКадровыхДанных = "ФИОПолные,Пол,ГоловнаяОрганизация,Организация,ДатаПриема,ДатаУвольнения,ПриказОбУвольнении,ПриказОбУвольненииДата,ВидЗанятости,EMailПредставление";
	

 

Функция 2.8

КадровыеДанныеФизическихЛиц(ТолькоРазрешенные, СписокФизическихЛиц, КадровыеДанные, ДатаПолученияДанных = ‘00010101’, ПоляОтбораПериодическихДанных = Неопределено)

Еще одна функция из разряда "хочу все и сразу" — возвращает таблицу значений с колонками кадровых данных (на входе строка с возможными колонками через запятую). Работает так:

&НаСервере
Процедура ВыполнитьНаСервере()
	
	МассивФизическихЛиц = Новый Массив;
	МассивФизическихЛиц.Добавить(Справочники.ФизическиеЛица.НайтиПоКоду("ЗК-0000036"));
	МассивФизическихЛиц.Добавить(Справочники.ФизическиеЛица.НайтиПоКоду("ЗК-0000032"));
	
	ИменаКадровыхДанных = "ИменаКадровыхДанных = "ФИОПолные,Пол,ДатаРождения,Фамилия,Имя,Отчество,КоличествоДетей,СостояниеВБраке, ИННВСтранеГражданства,ОбщийСтажВид";
	";
	
	Результат = КадровыйУчет.КадровыеДанныеФизическихЛиц(Истина,МассивФизическихЛиц,ИменаКадровыхДанных,ТекущаяДата());
	
КонецПроцедуры

Кадровые данные могут быть такие (это обширнейшие возможности):

//Информация о гражданстве
// - ГражданствоПериодРегистрации, Страна, ИННВСтранеГражданства
//
//Информация о документе, удостоверяющем личность.
//- ДокументПериодРегистрации, ДокументВид, ДокументКодМВД, ДокументСерия, 			
//- ДокументНомер, ДокументДатаВыдачи, ДокументСрокДействия, ДокументКемВыдан, 			
//- ДокументКодПодразделения, ДокументСтранаВыдачи, ДокументПредставление 	
//
//Информация о фамилии, имени, отчестве.
//- ФИОПериодРегистрации, Фамилия, Имя, Отчество, 				
//- ФИОПолные, ФамилияИО, ИОФамилия 			
//
//Информация о сведениях об инвалидности.
//- ИнвалидностьПериодРегистрации, Инвалидность, 						
//- ИнвалидностьДатаВыдачи, ИнвалидностьСрокДействияСправки 	
//
//- СтатусНалогоплательщикаПериодРегистрации, СтатусНалогоплательщика 					
//															
//- ВидЗастрахованногоЛицаПериодРегистрации, ВидЗастрахованногоЛица 					
//						
//Сведения о стажах:
//- ОбщийСтажВид, ОбщийСтажПериодРегистрации, ОбщийСтажРазмерДней,			
//- ОбщийСтажРазмерМесяцев, ОбщийСтажДней, ОбщийСтажМесяцев, ОбщийСтажЛет					
//
//- СеверныйСтажВид, СеверныйСтажПериодРегистрации,
//- СеверныйСтажРазмерДней, СеверныйСтажРазмерМесяцев,
//- СеверныйСтажДней, СеверныйСтажМесяцев, СеверныйСтажЛет
//
//- НепрерывныйСтажВид, НепрерывныйСтажПериодРегистрации, НепрерывныйСтажРазмерДней,
//- НепрерывныйСтажРазмерМесяцев, НепрерывныйСтажДней, НепрерывныйСтажМесяцев, НепрерывныйСтажЛет.
//
//- СтажНаНадбавкуЗаВыслугуЛетВид, СтажНаНадбавкуЗаВыслугуЛетПериодРегистрации,
//- СтажНаНадбавкуЗаВыслугуЛетРазмерДней, СтажНаНадбавкуЗаВыслугуЛетРазмерМесяцев,
//- СтажНаНадбавкуЗаВыслугуЛетДней, СтажНаНадбавкуЗаВыслугуЛетМесяцев, СтажНаНадбавкуЗаВыслугуЛетЛет.
//
//- ОбщийНаучноПедагогическийСтажВид,ОбщийНаучноПедагогическийСтажПериодРегистрации, ОбщийНаучноПедагогическийСтажРазмерДней
//- ОбщийНаучноПедагогическийСтажРазмерМесяцев, ОбщийНаучноПедагогическийСтажДней
//- ОбщийНаучноПедагогическийСтажМесяцев, ОбщийНаучноПедагогическийСтажЛет.
//
//- ПедагогическийСтажВид, ПедагогическийСтажПериодРегистрации, ПедагогическийСтажРазмерДней
//- ПедагогическийСтажРазмерМесяцев, ПедагогическийСтажДней
//- ПедагогическийСтажМесяцев, ПедагогическийСтажЛет.
//
//- СтраховойСтажВид, СтраховойСтажПериодРегистрации,
//- СтраховойСтажРазмерДней, СтраховойСтажРазмерМесяцев,
//- СтраховойСтажДней, СтраховойСтажМесяцев, СтраховойСтажЛет.
//
//- РасширенныйСтраховойСтажВид, РасширенныйСтраховойСтажПериодРегистрации,
//- РасширенныйСтраховойСтажРазмерДней, РасширенныйСтраховойСтажРазмерМесяцев,
//- РасширенныйСтраховойСтажДней, РасширенныйСтраховойСтажМесяцев, РасширенныйСтраховойСтажЛет.
//
//- ПрочийСтажВид, ПрочийСтажПериодРегистрации,
//- ПрочийСтажРазмерДней, ПрочийСтажРазмерМесяцев,
//- ПрочийСтажДней, ПрочийСтажМесяцев, ПрочийСтажЛет.
//
//- ВыслугаЛетНаГосударственнойСлужбеВид, ВыслугаЛетНаГосударственнойСлужбеПериодРегистрации,
//- ВыслугаЛетНаГосударственнойСлужбеРазмерМесяцев, ВыслугаЛетНаГосударственнойСлужбеРазмерДней,
//- ВыслугаЛетНаГосударственнойСлужбеДней,ВыслугаЛетНаГосударственнойСлужбеМесяцев,
//- ВыслугаЛетНаГосударственнойСлужбеЛет.
//
//- ВыслугаЛетНаВоеннойСлужбеВид, ВыслугаЛетНаВоеннойСлужбеПериодРегистрации,
//- ВыслугаЛетНаВоеннойСлужбеРазмерМесяцев, ВыслугаЛетНаВоеннойСлужбеРазмерДней,
//- ВыслугаЛетНаВоеннойСлужбеДней, ВыслугаЛетНаВоеннойСлужбеМесяцев, ВыслугаЛетНаВоеннойСлужбеЛет.
//
//Состояния в браке:
//- СостояниеВБракеПериодРегистрации, СостояниеВБраке 	
//
//Воинский учет:
//- ВоинскийУчетПериодРегистрации, ВоинскийУчетКатегорияЗапаса, ВоинскийУчетЗвание,						
//- ВоинскийУчетСостав, ВоинскийУчетВУС, ВоинскийУчетВоенкомат, ВоинскийУчетНомерКомандыПартии,		
//- ВоинскийУчетПунктПеречня, ВоинскийУчетНаличиеМобпредписания, ВоинскийУчетОтношениеКВоинскойОбязанностикойОбязанности
//- ВоинскийУчетОтношениеКВоинскомуУчету	
//
//Сведения о бронировании:
//- ВоинскийУчетЗабронированОрганизациейПериодРегистрации, ВоинскийУчетЗабронированОрганизациейРегистратор, ВоинскийУчетЗабронированОрганизацией 					
//
//Сведения о государственном служащем:
//- КлассныйЧинРангПериодРегистрации, КлассныйЧинРанг					
//
//Сведения о воинских специальных званиях:
//- ВоинскоеСпециальноеЗваниеПериодРегистрации, ВоинскоеСпециальноеЗвание						
//
//Сведения о составах семей:
//- КоличествоДетей, КоличествоИждивенцев, КоличествоРодственников

Назвал бы ее тоже универсальной функцией по получению информации о физическом лице.

 

На этом, пожалуй, все. Я сделал обзор наиболее интересных функций, встречающихся в конфигурации "Зарплата и управление персоналом 3.1". Спасибо, что дочитали данный материал до конца. Так же, прошу ознакомиться с моими предыдущими статьями и обработками:

Возможности работы со строками при помощи БСП, которые должен знать каждый программист

Полезные встроенные функции для работы с печатными формами и не только на УТ 11.4 и БП 3.0 (сравнение)

Доступность ролей пользователей в конфигурации

 

Все привет и до новых встреч!

has been added to your cart:
Оформление заказа