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

19.07.20

Разработка - Механизмы типовых конфигураций

В данном обзоре дам описание полезных встроенных функций и процедур в конфигурации "Зарплата и управление персоналом 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 (сравнение)

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

 

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

зарплата управление персоналом функции методы процедуры

См. также

СКД Механизмы типовых конфигураций Запросы Программист Платформа 1С v8.3 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Россия Бесплатно (free)

Работая с типовыми отчетами в конфигурациях «Зарплата и управление персоналом, редакция 3», «Зарплата и кадры государственного учреждения, редакция 3» и подобных, в схемах компоновки данных можно встретить конструкции запросов, которые обращаются к некоторым виртуальным таблицам.

20.08.2024    1736    PROSTO-1C    0    

18

Механизмы типовых конфигураций Программист Платформа 1С v8.3 1С:Комплексная автоматизация 2.х Россия Бесплатно (free)

Эта ошибка была обнаружена мной в типовой конфигурации 1С:Комплексная автоматизация 2 (2.5.16.115), БСП версия 3.1.9.302. Возникает она после того, как вы добавляете в расширение бизнес-процесс или задачу, выполняете обновление идентификаторов метаданных расширений, но ошибка при записи любого элемента справочника "Профили групп доступа" всё равно остаётся.

01.07.2024    1743    Vidz    0    

11

Механизмы типовых конфигураций Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

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

24.06.2024    1106    olja-ljaaa    0    

3

Механизмы типовых конфигураций Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Статистическая выборка сценариев и точек изменения отчетов на общей форме ФормаОтчета в типовых конфигурациях. Примеры кода.

03.06.2024    4891    Serg2000mr    32    

108

Механизмы типовых конфигураций Ценообразование, анализ цен Программист Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Россия Абонемент ($m)

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

1 стартмани

11.04.2024    1057    tango    5    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. biimmap 2019 20.07.20 20:34 Сейчас в теме
неплохая статья... предлагаю Вам расширить её добавив какие задачи решает каждая из функций. Там много сценариев и особенностей получения данных. Это касается получения кадровых данных.
Интерфейс по кадровым данным физлиц возьму на вооружение! Сейчас пишу универсальную выгрузку из ЗУПа.
И конечно же в конфигурации гораздо больше всего интересного))) ещё статей на 10 хватит.
ivnik; quazare; +2 Ответить
2. Totoro 571 20.07.20 21:53 Сейчас в теме
(0) Если говорить про печатные формы, то я бы еще добавил:

1. СклонениеПредставленийОбъектов.ПросклонятьФИО(ФИО, Падеж, Объект = Неопределено, Пол = Неопределено)
2. СклонениеПредставленийОбъектов.ПросклонятьПредставление(Представление, Падеж, Объект = Неопределено)
ivnik; quazare; +2 Ответить
3. ivnik 595 21.07.20 10:13 Сейчас в теме
Замечательная статья! Побольше бы таких статей. Просил 1С-ников сделать что-то подобное, типа справочной информации - ни куда меня не послали, обещали в далеком будущем...
4. partizand 137 22.07.20 17:06 Сейчас в теме
ЗарплатаКадрыКлиентСервер - все функции в СлужебныйПрограммныйИнтерфейс. По хорошему их лучше не использовать.
JohnyDeath; +1 Ответить
5. LexSeIch 211 30.07.20 04:47 Сейчас в теме
Хорошая статья. Будем ждать дополнений и продолжения этой полезной работы. Несомненно в копилку знаний. Авторы подобных пусть и небольших статей по "черным ящикам" конфигураций помогают в поиске информации, а иногда невольно становятся триггерами идей по использованию тех или иных функций.
6. quazare 3800 30.07.20 08:14 Сейчас в теме
(5) спасибо всем за подобные комментарии к статье - вы так же можете ознакомиться с другими моими подобными статьями-исследованиями

https://infostart.ru/articles/1261648/

и https://infostart.ru/articles/1260173/
7. Nowa 45 24.02.21 09:43 Сейчас в теме
Очень хорошо, но лучше добавлять в одно место, лучше будет.

https://infostart.ru/1c/articles/942569/
8. sashocq 193 08.11.21 08:41 Сейчас в теме
Эх, только на прошлой неделе нужно было получать сотрудников по физлицам, мастерил свой запрос. А тут, оказывается, уже всё есть:
КадровыйУчет.ОсновныеСотрудникиФизическихЛиц()

Спасибо!
9. mrSallivan 78 16.09.22 09:32 Сейчас в теме
Спасибо! Как шпаргалку - сохраню себе =)
10. fratriaArzgir 25.12.23 17:07 Сейчас в теме
Оставьте свое сообщение