Получение кадровых данных в конфигурации 1C ЗУП 3.1 с помощью БСП – Библиотека разработчика Programming Store

Получение фамилии с инициалами в 1С 8.3, 8.2

Получить фамилию с инициалами в 1С 8.3, 8.2

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

Функция ПолучениеФамилииСИнициалами(значФИО)

    СтрФИОСПереносами = СтрЗаменить(ФИО,” “,Символы.ПС);

    МассЧастиСтроки = Новый Массив;

    Для Индекс= 1ПоСтрЧислоСтрок(СтрФИОСПереносами)Цикл

        Стр= СтрПолучитьСтроку(СтрФИОСПереносами,Индекс);

        Если ЗначениеЗаполнено(Стр)Тогда

            МассЧастиСтроки.Добавить(СокрЛП(Стр));

        КонецЕсли;

    КонецЦикла;

    Результат= “”;

    Если МассЧастиСтроки.Количество()>0Тогда

        Результат= Результат+МассЧастиСтроки[0];

        Если МассЧастиСтроки.Количество()>1Тогда

            Результат= Результат+” “+Лев(МассЧастиСтроки[1],1)+“.”;

            Если МассЧастиСтроки.Количество()>2Тогда

                Результат= Результат+” “+Лев(МассЧастиСтроки[2],1)+“.”;

            КонецЕсли;

        КонецЕсли;

    КонецЕсли;

    Возврат Результат;

КонецФункции

Введение

В данной статье мы рассмотрим получение кадровых данных сотрудников и физических лиц с помощью библиотеки стандартных подсистем в конфигурации 1C Зарплата и управление персоналом (ЗУП), редакция 3.1

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

В данной статье рассматриваются только способы получения кадровой информации для сотрудников и физических лиц. Описанным способом можно получить следующую кадровую информацию: кадровые данные сотрудников (дата приема, текущее подразделение, должность, работает сотрудник, находится в отпуске или же на больничном), кадровые данные физических лиц (ФИО, информация о стаже, образовании и т.д.) и данные о начислениях.

Все примеры проверены на конфигурации ЗУП 3.1.10.135, версия 1C БСП 3.0.3.59.

Получение информации для одного сотрудника или физического лица

Рассмотрим получение текущей фамилии для сотрудника Боровой Дмитрий Валентинович. Для наглядности добавим ему в историю изменения ФИО фамилию Бонд и изменим отчество.

Для получения кадровой информации используется общий модуль КадровыйУчет. Для получения кадровых данных физических лиц используется функция КадровыеДанныеФизическихЛиц. Более подробно о принимаемых параметрах вы можете в описании к функции. Для нас важен параметр СписокФизическихЛиц, куда мы передаем ссылку на физическое лицо или массив ссылок на физические лица, параметр КадровыеДанные, в котором указываются те кадровые данные, которые мы хотим получить и параметр ДатаПолученияДанных – дата, на которую мы получаем данные.
Видов кадровых данных, которые мы можем получить, очень много, поэтому мы рассмотрим только несколько из них.
Чтобы узнать какие кадровые данные можно получить с помощью данной функции вы можете обратиться к описанию функции КадровыйУчетВнутренний.ЗапросВТКадровыеДанныеФизическихЛиц.

ДатаПолученияДанных = Дата(2019, 12, 1);ПоляОтбораПериодическихДанных = Неопределено;КадровыеДанные = КадровыйУчет.КадровыеДанныеФизическихЛиц(Истина, ФизическоеЛицо, “Фамилия”, ДатаПолученияДанных, ПоляОтбораПериодическихДанных);Для Каждого ТекСтрока из КадровыеДанные Цикл Сообщить(“” + ТекСтрока.ФизическоеЛицо + “, Фамилия: ” + ТекСтрока.фамилия); КонецЦикла;

Если мы выполним этот код, то получим следующую строку:

Боровой Дмитрий Валентинович,  Фамилия: Бонд

Т.е. функция нам вернет фамилию актуальную в период с 30.11.2019 по 01.01.2020. Если же указать дату получения данных не из этого периода, то функция вернет другую фамилию.

Кроме того, у данной функции есть еще один параметр, с помощью которого мы можем накладывать дополнительные отборы – ПоляОтбораПериодическихДанных. В данном параметре указывается коллекция отборов. Для примера мы можем наложить отбор на отчество:

ДатаПолученияДанных = Дата(2019, 12, 1);ЗначенияОтборов = Новый Массив;УсловиеОтбора = Новый Структура();УсловиеОтбора.Вставить(“ЛевоеЗначение”, “Отчество”);УсловиеОтбора.Вставить(“ВидСравнения”, ” подобно “);УсловиеОтбора.Вставить(“ПравоеЗначение”, “””Вади%”””);ЗначенияОтборов.Добавить(УсловиеОтбора);ПоляОтбораПериодическихДанных = Новый Структура(“ФИОФизическихЛиц”, ЗначенияОтборов);КадровыеДанные = КадровыйУчет.КадровыеДанныеФизическихЛиц(Истина, ФизическоеЛицо, “Фамилия”, ДатаПолученияДанных, ПоляОтбораПериодическихДанных);Для Каждого ТекСтрока из КадровыеДанные Цикл Сообщить(“” + ТекСтрока.ФизическоеЛицо + “,  Фамилия: ” + ТекСтрока.фамилия);КонецЦикла;

В результате получим строку:

Боровой Дмитрий Валентинович,  Фамилия: Быков

Т.е. мы получили другую фамилию, используя одну и ту же дату.

Для получения кадровых данных сотрудников используется функция КадровыеДанныеСотрудников из того же модуля. И, по аналогии, чтобы узнать список возможных кадровых данных можно посмотреть описание функции КадровыйУчетВнутренний.ЗапросВТКадровыеДанныеСотрудников.

 Для получения кадровой информации по списку сотрудников или списку физлиц можно использовать эти же функции. Только вместо ссылки на физическое лицо в параметр СписокФизическихЛиц передается массив физических лиц, а в параметр СписокСотрудников – массив сотрудников.

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

Иногда гораздо удобнее не получать данные в промежуточных переменных, а формировать временные таблицы и использовать эти временные таблицы в одном запросе. Для этого мы можем использовать функции СоздатьНаДатуВТКадровыеДанныеСотрудников и СоздатьНаДатуВТКадровыеДанныеФизическихЛиц из общего модуля КадровыйУчет. Данные функции отличаются тем, что не возвращают таблицу кадровых данных, а формируют временную таблицу в менеджере временных таблиц.

Для демонстрации можно использовать данный код.

ДатаПолученияДанных = Дата(2019, 12, 1);МенеджерВТ = Новый МенеджерВременныхТаблиц;КадровыйУчет.СоздатьНаДатуВТКадровыеДанныеСотрудников(МенеджерВТ, Истина, СписокСотрудников, “Подразделение, Должность, ФОТ”, ДатаПолученияДанных);КадровыйУчет.СоздатьНаДатуВТКадровыеДанныеФизическихЛиц(МенеджерВТ, Истина, МассивФизлиц, “Фамилия”, ДатаПолученияДанных);Запрос = Новый Запрос;Запрос.МенеджерВременныхТаблиц = МенеджерВТ;Запрос.Текст = “ВЫБРАТЬ | Сотрудники.Ссылка КАК Ссылка, | Сотрудники.ФизическоеЛицо КАК ФизическоеЛицо, | ВТКадровыеДанныеФизическихЛиц.Фамилия КАК Фамилия, | ВТКадровыеДанныеСотрудников.Подразделение КАК Подразделение, | ВТКадровыеДанныеСотрудников.ФОТ КАК ФОТ, | ВТКадровыеДанныеСотрудников.Должность КАК Должность |ИЗ | Справочник.Сотрудники КАК Сотрудники | ЛЕВОЕ СОЕДИНЕНИЕ ВТКадровыеДанныеФизическихЛиц КАК ВТКадровыеДанныеФизическихЛиц | ПО Сотрудники.ФизическоеЛицо = ВТКадровыеДанныеФизическихЛиц.ФизическоеЛицо | ЛЕВОЕ СОЕДИНЕНИЕ ВТКадровыеДанныеСотрудников КАК ВТКадровыеДанныеСотрудников | ПО Сотрудники.Ссылка = ВТКадровыеДанныеСотрудников.Сотрудник |ГДЕ | Сотрудники.Ссылка В(&СписокСотрудников)”;Запрос.УстановитьПараметр(“СписокСотрудников”, СписокСотрудников);КадровыеДанные = Запрос.Выполнить().Выгрузить();

После выполнения данного кода мы получим таблицу кадровых данных следующего вида:

В данном примере мы сначала подготовили кадровые данные сотрудника и кадровые данные физического лица во временных таблицах, и затем использовали их в одном запросе.

Рейтинг
( 1 оценка, среднее 5 из 5 )
Загрузка ...