zup-hr-api-reference
Справочник API конфигурации 1С:ЗУП 3.1 (Зарплата и управление персоналом) по кадровому учету. Используй при разработке/доработке на ЗУП 3.1, когда нужны методы КадровыйУчет, КадровыйУчетРасширенный, ЗарплатаКадры, ФизическиеЛицаЗарплатаКадры - получение кадровых данных сотруднико
Install
npx skills add https://github.com/Desko77/claude-code-skills-1c/tree/main/skills/zup-hr-api-reference
claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install desko77-claude-code-skills-1c@llmmart
git clone https://github.com/Desko77/claude-code-skills-1c.git
The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole desko77/claude-code-skills-1c collection as a plugin from our marketplace. Git is the plain clone.
Skill manifest
ЗУП 3.1 HR API reference
Полный справочник API 1С:ЗУП 3.1 для работы с кадровыми данными хранится в отдельном файле references/zup-hr-api.md, чтобы не раздувать контекст постоянно.
Действие: прочитай файл references/zup-hr-api.md (относительно папки скила) и используй его как справочник при решении задачи.
Файл покрывает:
- Архитектуру Сотрудник vs ФизическоеЛицо
- Иерархию модулей (КадровыйУчет, КадровыйУчетРасширенный, ЗарплатаКадры и др.)
КадровыеДанныеСотрудников/КадровыеДанныеФизическихЛиц- основные методы и все поля- Периоды работы, даты приема/увольнения
- Стажи (виды, расчет, представление)
- Связи Сотрудник <-> ФизическоеЛицо (основной, совместители, подработки)
- Получение списков сотрудников организации
- Временные таблицы (ВТ) для пакетных запросов
- Рабочие места, архив сотрудников
- Создание физлиц и сотрудников
- ФИО: инициалы, склонение, пол
- Текущие/плановые начисления и удержания
- Остатки отпусков
- Графики работы и производственный календарь
- Паспортные данные, штатное расписание
- Проверки кадрового учета, формирование движений
- Договоры ГПХ, совместительство
- Механизм представлений СКД (виртуальные таблицы для отчетов)
- Настройки кадрового учета, права, ответственные лица
- Средний заработок: данные, регистры, перерасчет (§36-37)
- Начисления: план видов расчета и регистр расчета (§38)
- Корректировка движений через документ ПереносДанных (§39)
- Регламентированная и статистическая отчетность (§40)
- Пособия и обмен с СФР/СЭДО (§41)
- Регистры расчетов с сотрудниками и страховых взносов (§42)
- Частые ошибки обращения к API - несуществующие методы и поля (§43)
Files (claude-code-skills-1c)
-
references
-
zup-hr-api.md 54.3 KB
# Типовые механизмы ЗУП 3.1 - кадровый учет и расчет Универсальный справочник API конфигурации 1С:ЗУП 3.1 для работы с кадровыми данными. Применяется: при разработке на конфигурациях ЗУП 3.1 (базовая, ПРОФ, КОРП). --- ## 1. Архитектура: Сотрудник vs ФизическоеЛицо | | Справочник.Сотрудники | Справочник.ФизическиеЛица | |---|---|---| | **Хранит** | Рабочее место (трудовой договор) | Персональные данные человека | | **Данные** | Организация, должность, подразделение, оклад, график | ФИО, дата рождения, паспорт, ИНН, СНИЛС | | **Связь** | Реквизит `ФизическоеЛицо` -> ФизическиеЛица | Один ФЛ -> несколько Сотрудников | **Правило:** данные о рабочем месте -> Сотрудник; персональные данные -> ФизическоеЛицо. --- ## 2. Иерархия модулей Публичный API - модули **без** суффикса "Внутренний". Методы из `ПрограммныйИнтерфейс` сохраняют совместимость. ``` КадровыйУчет (~275 экспортных методов) - основной API -> КадровыйУчетВнутренний (НЕ вызывать напрямую, но содержит полные списки полей) -> КадровыйУчетРасширенный (~244 метода) - КОРП: стажи, подработки, ОсновнойСотрудник -> КадровыйУчетПовтИсп (кешируемые) КадровыйУчетВызовСервера - серверные вызовы с клиента КадровыйУчетКлиентСервер - клиент-серверные ЗарплатаКадры (~310 методов) - организации, валюта, ответственные лица ЗарплатаКадрыОбщиеНаборыДанных - отборы, ВТ, механизм представлений СКД ФизическиеЛицаЗарплатаКадры / ...КлиентСервер - ФИО, склонение, пол ``` --- ## 3. КадровыеДанныеСотрудников - главный метод ```bsl // Массовый (основной) ТЗ = КадровыйУчет.КадровыеДанныеСотрудников(ТолькоРазрешенные, СписокСотрудников, КадровыеДанные, ДатаПолученияДанных, ПоляОтбора, ФормироватьСПериодичностьДень); // Возвращает: ТаблицаЗначений (Сотрудник, ФизическоеЛицо, Период + запрошенные поля) // Для одного (обертка, возвращает СтрокаТЗ или Неопределено) Данные = КадровыйУчет.КадровыеДанныеСотрудника(ТолькоРазрешенные, Сотрудник, КадровыеДанные, Дата); ``` **Параметры:** - `ТолькоРазрешенные` (Булево) - учитывать RLS. `Ложь` = привилегированный доступ - `СписокСотрудников` - Массив СправочникСсылка.Сотрудники или одна ссылка - `КадровыеДанные` - Строка через запятую: `"Должность, Подразделение, ДатаПриема"` - `ДатаПолученияДанных` - Дата; `'00010101'` = последние данные без ограничения по дате --- ## 4. КадровыеДанныеФизическихЛиц ```bsl // Массовый ТЗ = КадровыйУчет.КадровыеДанныеФизическихЛиц(ТолькоРазрешенные, СписокФЛ, КадровыеДанные, ДатаПолученияДанных, ПоляОтбора); // Возвращает: ТаблицаЗначений (ФизическоеЛицо, Период + запрошенные поля) // Для одного Данные = КадровыйУчет.КадровыеДанныеФизическогоЛица(ТолькоРазрешенные, ФизЛицо, КадровыеДанные, Дата); ``` --- ## 5. Справочник полей КадровыеДанные ### 5.1. Поля сотрудников - периодические (зависят от даты) `Организация`, `Подразделение`, `Должность`, `ДолжностьПоШтатномуРасписанию`, `ВидЗанятости`, `ВидДоговора`, `КоличествоСтавок`, `МестоВСтруктуреПредприятия`, `ВидСобытия`, `Состояние`, `СостояниеПериодРегистрации`, `Территория`, `ТерриторияВыполненияРаботВОрганизации`, `РазрядКатегория`, `РайонныйКоэффициент`, `РайонныйКоэффициентРФ`, `ГрафикРаботы`, `СуммированныйУчетРабочегоВремени`, `СреднемесячноеЧислоЧасов`, `ДоляНеполногоРабочегоВремени`, `ТарифнаяСтавка`, `ФОТ`, `Надбавка`, `ОсновноеНачисление`, `СовокупнаяТарифнаяСтавка`, `СпособРасчетаАванса`, `Аванс`, `ЗарплатныйПроект`, `НомерЛицевогоСчета`, `СтатьяФинансирования`, `СпособОтраженияЗарплатыВБухучете`, `ДатаДоговораКонтракта`, `НомерДоговораКонтракта`, `ДатаНачала`, `ТрудовойДоговорДатаОкончания`, `СрочныйДоговор`, `КлассУсловийТруда`, `ИспытательныйСрокДатаЗавершения`, `НаходитсяНаИспытательномСроке` (КОРП) ### 5.2. Поля сотрудников - постоянные (из РС ТекущиеКадровыеДанныеСотрудников) `ДатаПриема`, `ДатаУвольнения`, `ДатаЗавершенияРаботы`, `ТекущаяОрганизация`, `ТекущееПодразделение`, `ТекущаяДолжность`, `ТекущийВидЗанятости`, `ОсновноеРабочееМестоВОрганизации`, `ОформленПоТрудовомуДоговору`, `ТекущаяТарифнаяСтавка`, `ТекущийФОТ`, `ТабельныйНомер`, `ПриказОПриеме`, `ПриказОПриемеДата`, `ПриказОПриемеНомер`, `ПриказОбУвольнении`, `ПриказОбУвольненииДата`, `ПриказОбУвольненииНомер`, `ПриказОбУвольненииСтатьяТКРФ`, `РуководительСтруктурногоПодразделения` ### 5.3. Поля физических лиц - периодические **ФИО:** `Фамилия`, `Имя`, `Отчество`, `ФИОПолные`, `ФамилияИО`, `ИОФамилия`, `Инициалы` **Гражданство:** `Страна`, `ИННВСтранеГражданства` **Документ УЛ:** `ДокументВид`, `ДокументСерия`, `ДокументНомер`, `ДокументДатаВыдачи`, `ДокументСрокДействия`, `ДокументКемВыдан`, `ДокументКодПодразделения`, `ДокументПредставление` **Инвалидность:** `Инвалидность`, `ИнвалидностьДатаВыдачи`, `ИнвалидностьСрокДействияСправки` **Стажи:** для каждого вида (ОбщийСтаж, СтраховойСтаж, СеверныйСтаж, НепрерывныйСтаж и др.) доступны суффиксы `*Лет`, `*Месяцев`, `*Дней`, `*Вид`, `*ПериодРегистрации`, `*РазмерДней`, `*РазмерМесяцев` **Воинский учет:** `ВоинскийУчетКатегорияЗапаса`, `ВоинскийУчетЗвание`, `ВоинскийУчетВУС`, `ВоинскийУчетГодность` ### 5.4. Поля физических лиц - постоянные `ДатаРождения`, `Пол`, `Возраст`, `ИНН`, `СтраховойНомерПФР`, `СтатусНалогоплательщика`, `ДатаСмерти` **Контакты:** `АдресМестаПроживания(Представление)`, `АдресПоПрописке(Представление)`, `ТелефонМобильный(Представление)`, `EMail(EMailПредставление)` **Образование:** `Образование1*`, `Образование2*` (УчебноеЗаведение, Специальность, ДатаВыдачи...) **Семья:** `КоличествоДетей`, `КоличествоИждивенцев` ### Нюанс: периодические vs постоянные - Без префикса "Текущий" = **периодические** (зависят от ДатаПолученияДанных) - С префиксом "Текущий" = **постоянные** (всегда актуальные) - Полный список полей: `КадровыйУчетВнутренний.ЗапросВТКадровыеДанныеСотрудников` / `...ФизическихЛиц` --- ## 6. Дата приема, увольнения, периоды работы ```bsl // Через КадровыеДанные (основной способ) ТЗ = КадровыйУчет.КадровыеДанныеСотрудников(Ложь, Массив, "ДатаПриема, ДатаУвольнения, ДатаЗавершенияРаботы"); ``` **Важно!** `ДатаУвольнения` = ГОЛОВНОГО сотрудника. `ДатаЗавершенияРаботы` = ТЕКУЩЕГО (для подработок отличается). Пустая = активен. ```bsl // Периоды работы (ТЗ: Сотрудник, ДатаПриема, ДатаЗавершенияРаботы) ПериодыРаботы = КадровыйУчет.ПериодыРаботыСотрудников(МассивСотрудников); // Дата приема ФЛ (минимальная среди всех рабочих мест) ДатаПриема = КадровыйУчетРасширенный.ДатаПриемаФизическогоЛица(ФизЛицо, ДатаСведений); // Первый ли прием на работу? Первый = КадровыйУчет.ЭтоНачалоТрудовойДеятельности(ФизЛицо, ДатаСобытия, ИсключаемыеРегистраторы); ``` --- ## 7. Стажи ```bsl // Простой способ - через КадровыеДанныеФизическихЛиц ТЗ = КадровыйУчет.КадровыеДанныеФизическихЛиц(Ложь, МассивФЛ, "ОбщийСтажЛет, ОбщийСтажМесяцев, ОбщийСтажДней, СтраховойСтажЛет", ДатаРасчета); // Детальный способ - все виды стажа (Соответствие[Сотрудник -> Соответствие[ВидСтажа -> Структура]]) ТЗ = Новый ТаблицаЗначений; // колонки: Сотрудник, Период Стажи = КадровыйУчетРасширенный.СведенияОСтажахСотрудников(ТЗ); // Или по ФЛ: Стажи = КадровыйУчетРасширенный.СведенияОСтажахФизическихЛиц(ТЗ); // колонки: ФизическоеЛицо, Период // Представление стажа Текст = КадровыйУчетРасширенный.ПредставлениеСтажа(Дней, Месяцев, Лет); // "26 дней 9 месяцев 40 лет" Текст = ЗарплатаКадрыРасширенныйКлиентСервер.ПредставлениеСтажа(Лет, Месяцев, Дней); // "40 лет, 9 месяцев и 26 дней" // Расчет продолжительности стажа ДанныеСтажа = ЗарплатаКадрыРасширенныйКлиентСервер.СведенияОСтаже(); // заполнить ДатаОтсчета, РазмерМесяцев, РазмерДней... Продолжительность = ЗарплатаКадрыРасширенныйКлиентСервер.ПродолжительностьСтажа(ДанныеСтажа, ДатаОкончания); // Нормализация (объединение) Лет = КадровыйУчетРасширенныйКлиентСервер.ЛетПриПодсчетеСтажа(Лет, Месяцев, Дней); Месяцев = КадровыйУчетРасширенныйКлиентСервер.МесяцевГодаПриПодсчетеСтажа(Месяцев, Дней); Дней = КадровыйУчетРасширенныйКлиентСервер.ДнейМесяцаПриПодсчетеСтажа(Дней); ``` --- ## 8. Связь Сотрудник <-> ФизическоеЛицо ```bsl // Сотрудник -> ФЛ ФЛ = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Сотрудник, "ФизическоеЛицо"); МассивФЛ = КадровыйУчет.ФизическиеЛицаСотрудников(МассивСотрудников); // уникальные ФЛ // ФЛ -> все сотрудники (включая уволенных) ТЗ = КадровыйУчет.СотрудникиФизическихЛиц(МассивФЛ); // ТЗ: Сотрудник, ФизическоеЛицо // ФЛ -> основной сотрудник (кешируется через КадровыйУчетПовтИсп) Сотрудник = КадровыйУчет.ОсновнойСотрудникФизическогоЛица(ФизЛицо, Организация, Период); // ФЛ -> массив основных сотрудников (массовый, приоритет: ОсновноеМесто -> Совместительство) ТЗ = КадровыйУчет.ОсновныеСотрудникиФизическихЛиц(СписокФЛ, ТолькоРазрешенные, Организация, Период); // ФЛ -> все сотрудники в организации (КадровыйУчетРасширенный) Массив = КадровыйУчетРасширенный.МассивСотрудников(ФизЛицо, Организация, Период, ВключаяРанееУволенных, РаботникиПоДоговорамГПХ, ПодработкиПоТД, ПоГоловной); Массив = КадровыйУчетРасширенный.СотрудникиФизическихЛиц(МассивФЛ, Организация, ПоГоловной, ГПХ, Подработки); // ФЛ -> основной с выводом ошибки Сотр = КадровыйУчетРасширенный.ОсновнойСотрудникФизЛица(ФизЛицо, Организация, Дата, ВыводитьСообщения); // Кадровые данные основного сотрудника ФЛ (ищет: Основное -> Совместительство -> уволенный) Данные = КадровыйУчет.КадровыеДанныеОсновногоСотрудникаФизическогоЛица( Организация, ФизЛицо, "Должность, Подразделение", Дата, ТолькоРазрешенные, ТекстОшибки); // Неоформленные (без трудового договора, при необходимости создает) Соответствие = КадровыйУчет.НеоформленныеСотрудникиФизическихЛиц(МассивФЛ, Организация); ``` --- ## 9. Получение списков сотрудников организации ```bsl Параметры = КадровыйУчет.ПараметрыПолученияСотрудниковОрганизацийПоСпискуФизическихЛиц(); Параметры.Организация = Организация; Параметры.НачалоПериода = НачалоМесяца(Дата); Параметры.ОкончаниеПериода = КонецМесяца(Дата); Параметры.КадровыеДанные = "Должность, Подразделение, ДатаПриема"; // Опционально: Параметры.Подразделение = Подразделение; // с иерархией Параметры.РаботникиПоТрудовымДоговорам = Истина; // Истина/Ложь/Неопределено Параметры.РаботникиПоДоговорамГПХ = Неопределено; Параметры.ПодработкиРаботниковПоТрудовымДоговорам = Ложь; Параметры.ВключаяУволенныхНаНачалоПериода = Ложь; Параметры.ОтбиратьПоГоловнойОрганизации = Ложь; // Дополнительные отборы: ЗарплатаКадрыОбщиеНаборыДанных.ДобавитьВКоллекциюОтбор( Параметры.Отборы, "ФизическоеЛицо", "=", ФизЛицо); Сотрудники = КадровыйУчет.СотрудникиОрганизации(Истина, Параметры); // Возвращает ТЗ: Период, Сотрудник, ФизическоеЛицо + кадровые данные ``` ```bsl // ФЛ, работавшие в организации за период ТЗ = КадровыйУчет.ФизическиеЛицаРаботавшиеВОрганизации(Ложь, Организация, Начало, Конец, Подразделение); // Проверка работающих (для ОбработкаПроверкиЗаполнения) КадровыйУчет.ПроверитьРаботающихСотрудников(СписокСотрудников, Параметры, Отказ, ПараметрыСообщения); // Среднесписочная численность Численность = КадровыйУчет.СреднесписочнаяЧисленностьРаботающих(Организация, Начало, Конец); ``` --- ## 10. Временные таблицы (для пакетных запросов) ```bsl // Вариант 1: по массиву сотрудников КадровыйУчет.СоздатьНаДатуВТКадровыеДанныеСотрудников(МВТ, Истина, Массив, "Должность, Подразделение", Дата); // Создает ВТКадровыеДанныеСотрудников // Вариант 2: через Описатель (когда сотрудники уже в ВТ) Описатель = КадровыйУчет.ОписательВременныхТаблицДляСоздатьВТКадровыеДанныеСотрудников(МВТ, "ВТМоиСотрудники"); КадровыйУчет.СоздатьВТКадровыеДанныеСотрудников(Описатель, Истина, "Организация, Подразделение"); ``` Другие методы создания ВТ: `СоздатьНаДатуВТКадровыеДанныеФизическихЛиц`, `СоздатьВТТекущиеКадровыеДанныеСотрудников`, `СоздатьВТФизическиеЛицаРаботавшиеВОрганизации`, `СоздатьВТСотрудникиОрганизации`, `СоздатьВТОсновныеСотрудникиФизическихЛиц`, `СоздатьВТРабочиеМестаСотрудников`. --- ## 11. Рабочие места сотрудников (интервалы работы) ```bsl ПараметрыРМ = КадровыйУчет.ПараметрыДляЗапросВТРабочиеМестаСотрудниковПоСпискуСотрудников( СписокСотрудников, ДатаНачала, ДатаОкончания); ПараметрыРМ.Организация = Организация; КадровыйУчет.СоздатьВТРабочиеМестаСотрудников(МВТ, Истина, ПараметрыРМ); // ВТРабочиеМестаСотрудников: Сотрудник, ФизическоеЛицо, Организация, Подразделение, Должность, // ДатаНачала, ДатаОкончания, ВидДоговора, ДокументОснование, ЭтоВозвратноеСобытие... ``` --- ## 12. Архив сотрудников ```bsl КадровыйУчет.ПоместитьСотрудникаВАрхив(Сотрудник, ПомечатьНаУдаление); КадровыйУчет.ИзвлечьСотрудникаИзАрхива(Сотрудник); // НЕ снимает пометку удаления! ``` --- ## 13. Создание сотрудников и физлиц ```bsl // Новое ФЛ ДанныеФЛ = КадровыйУчет.НовыеДанныеФизическогоЛица(); // Структура для заполнения НовыйФЛ = КадровыйУчет.НовоеФизическоеЛицо("Иванов Иван Иванович", ДанныеФЛ, Дата, Истина); // Новый сотрудник НовыйСотрудник = КадровыйУчет.НовыйСотрудникФизическогоЛица(ФизЛицо, Организация); ``` --- ## 14. ФИО: инициалы, склонение, пол ```bsl // Фамилия И.О. ФамилияИО = ФизическиеЛицаЗарплатаКадрыКлиентСервер.ФамилияИнициалы(ФизЛицо); // И.О. Фамилия ИОФамилия = ФизическиеЛицаЗарплатаКадры.РасшифровкаПодписи(ДанныеФИО); // Инициалы Иниц = ФизическиеЛицаЗарплатаКадрыКлиентСервер.ИнициалыПоИмениОтчеству(Имя, Отчество); // Склонение ФИО (НомерПадежа: 1-6; Пол: 1-муж, 2-жен) ФизическиеЛицаЗарплатаКадры.Просклонять(ФИОСтрока, НомерПадежа, РезультатСклонения, Пол); // или ПросклоненноеФИО = ЗарплатаКадрыОтчеты.ПросклоненныеФИО(ФИОПолные, НомерПадежа, Пол); // Определить пол по ФИО ФИО = Новый Структура("Фамилия, Имя, Отчество", Фамилия, Имя, Отчество); Пол = ФизическиеЛицаЗарплатаКадрыКлиентСервер.ПолПоЧастямФИО(ФИО); // Склонение должностей (требует веб-сервис "Морфер") Должность = СклонениеПредставленийОбъектов.ПросклонятьПредставление(Строка(Должность), 3); ``` --- ## 15. Вспомогательные методы ЗарплатаКадры ```bsl ЗарплатаКадры.ГоловнаяОрганизация(Организация) // головная для обособленного подразделения ЗарплатаКадры.ДоступныеОрганизации() // массив доступных организаций ЗарплатаКадры.ПерваяДоступнаяОрганизация() ЗарплатаКадры.ВалютаУчетаЗаработнойПлаты() ЗарплатаКадры.ИнформацияОВидеРасчета(ВидРасчета) ЗарплатаКадры.СоздатьВТПоТаблицеЗначений(МВТ, ТЗ, ИмяВТ) ЗарплатаКадры.ВТСуществует(МВТ, ИмяВТ) ЗарплатаКадры.УничтожитьВТ(МВТ, ИмяВТ) // Ответственные лица на произвольную дату Ответственные = СведенияОбОтветственныхЛицах.СведенияОбОтветственныхЛицах( Организация, "Руководитель,ДолжностьРуководителя", Дата); // Ответственные на дату сеанса (через ЗарплатаКадры) ЗначенияПоУмолчанию = Новый Структура("Организация,Руководитель,ДолжностьРуководителя,..."); ЗначенияПоУмолчанию.Организация = Организация; ЗарплатаКадры.ПолучитьЗначенияПоУмолчанию(ЗначенияПоУмолчанию, Дата); ``` --- ## 16. Вызовы с клиента ```bsl // КадровыйУчетВызовСервера - для клиентского кода Данные = КадровыйУчетВызовСервера.КадровыеДанныеСотрудника(Сотрудник, "Организация, Должность", Период); ``` --- ## 17. Текущие начисления и плановые данные ```bsl // Текущие начисления сотрудника на дату ТекущиеНачисления = КадровыйУчетРасширенный.ТекущиеНачисленияСотрудника(Сотрудник, Дата); ТекущиеНачисления = КадровыйУчетРасширенный.ТекущиеНачисленияСотрудников(МассивСотрудников, Дата); // Плановые начисления через ВТ ЗапросВТ = КадровыйУчетРасширенный.ЗапросВТПлановыеНачисленияСотрудников( Истина, "ВТПлановыеНачисления", "ВТСотрудники", "Сотрудник,Период", ОтборыНачислений, Истина); ЗапросВТ.МенеджерВременныхТаблиц = МВТ; ЗапросВТ.Выполнить(); ``` --- ## 18. Остатки отпусков ```bsl ТЗ = ОстаткиОтпусков.ОстаткиОтпусковСотрудниковНаДату( СписокСотрудников, ДатаНаКоторуюСчитать, ВидыОтпусков); // Неопределено = все виды ``` --- ## 19. Графики и производственный календарь ```bsl // Расписания работы (БСП) ТЗ = КалендарныеГрафики.РасписанияРаботыНаПериод(МассивГрафиков, ДатаНачала, ДатаОкончания); // Разность дат по календарю Дней = КалендарныеГрафики.РазностьДатПоКалендарю(ГрафикРаботы, ДатаНачала, ДатаОкончания); // Ближайшие рабочие даты (Соответствие: ИсходнаяДата -> БлижайшаяРабочая) Даты = КалендарныеГрафики.БлижайшиеРабочиеДаты(ПроизвКалендарь, МассивДат, Параметры); // Основной производственный календарь ПК = КалендарныеГрафики.ОсновнойПроизводственныйКалендарь(); // Данные графиков работы (ЗУП) ДанныеГрафиков = КадровыйУчет.ДанныеГрафиковРаботыДляСправкиОСреднемЗаработке(); ``` --- ## 20. Печатные формы - вспомогательное ```bsl // Табельный номер на печать ТабНомер = ЗарплатаКадрыОтчеты.ТабельныйНомерНаПечать(Сотрудник.Код); // Тарифная ставка "25 204 руб. 14 коп." Текст = ЗарплатаКадрыОтчеты.ТарифнаяСтавкаНаПечать(Сумма, Истина); // Номер без префиксов и лидирующих нулей НомерДок = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Номер, Истина, Истина); // Форма множественного числа Текст = КолДней + ПерсонифицированныйУчет.ФормаМножественногоЧисла("день", "дня", "дней", КолДней); // Представление количества ставок Текст = КадровыйУчетРасширенныйКлиентСервер.ПредставлениеКоличестваСтавок(КоличествоСтавок); ``` --- ## 21. Паспортные данные ```bsl // Через КадровыеДанныеФизическихЛиц ТЗ = КадровыйУчет.КадровыеДанныеФизическихЛиц(Истина, ФизЛицо, "ДокументВид, ДокументСерия, ДокументНомер, ДокументДатаВыдачи, ДокументКемВыдан", Дата); // Через специальный метод ДанныеДок = КадровыйУчет.ДокументыФизическихЛиц(ФизЛицо, Истина); // Через регистр сведений ДокУЛ = РегистрыСведений.ДокументыФизическихЛиц.ДокументУдостоверяющийЛичностьФизлица(ФизЛицо, КонецДня(Период)); ``` --- ## 22. Штатное расписание ```bsl ДанныеПозиции = УправлениеШтатнымРасписанием.ДанныеПозицииШтатногоРасписания(Позиция, Дата, Истина); ``` --- ## 23. Проверки кадрового учета (для документов) ```bsl // Проверка возможности проведения кадрового документа КадровыйУчет.ПроверитьВозможностьПроведенияПоКадровомуУчету(Документ, Отказ); // Проверка принадлежности сотрудников организации КадровыйУчет.ПроверитьСоответствиеСотрудниковОрганизации(СписокСотрудников, Организация, Отказ); // Проверка работающих по ФЛ (не только по Сотрудникам) КадровыйУчет.ПроверитьРаботающихФизическихЛиц(СписокФЛ, Параметры, Отказ, ПараметрыСообщения); // Проверка работающих в ТЧ документа КадровыйУчет.ПроверитьРаботающихСотрудниковТабличнойЧастиДокумента( ДокументОбъект, ИмяТЧ, ИмяПоляСотрудник, Параметры, Отказ); ``` --- ## 24. Формирование кадровых движений ```bsl // Основной метод проведения кадровых документов - формирование записей в регистрах КадровыйУчет.СформироватьКадровыеДвижения(ДокументОбъект, Движения, Отказ); КадровыйУчет.СформироватьДвиженияВидовЗанятостиСотрудников(ДокументОбъект, Движения); ``` --- ## 25. Договоры ГПХ ```bsl // Проверка наличия ГПХ у ФЛ ЕстьГПХ = КадровыйУчет.ЕстьДоговорыГПХ(ФизЛицо, Организация, НачалоПериода); // Договоры ГПХ через ВТ КадровыйУчетРасширенный.СоздатьВТДоговорыГПХФизическихЛицПоВременнойТаблице(МВТ, Параметры); ЗапросВТ = КадровыйУчетРасширенный.ЗапросВТДоговорыГПХФизическихЛиц(Параметры); ``` --- ## 26. Плановые удержания (аналог секции 17 для удержаний) ```bsl ЗапросВТ = КадровыйУчетРасширенный.ЗапросВТПлановыеУдержанияСотрудников( Истина, "ВТПлановыеУдержания", "ВТСотрудники", "Сотрудник,Период", ОтборыУдержаний, Истина); ЗапросВТ.МенеджерВременныхТаблиц = МВТ; ЗапросВТ.Выполнить(); ``` --- ## 27. Поиск физических лиц ```bsl // Поиск ФЛ по комбинации ФИО+СНИЛС+Организация ФизЛицо = КадровыйУчет.ФизическоеЛицоПоФИОСНИЛСИОрганизации(ФИО, СНИЛС, Организация); // Маппинг ФЛ -> ФИО (Соответствие) Соответствие = ЗарплатаКадры.СоответствиеФИОФизЛицСсылкам(МассивФЛ); // Периоды изменения ФИО (девичья фамилия и т.п.) ПериодыИзменений = КадровыйУчет.ПериодыИзмененияФИОФизическихЛиц(МассивФЛ); ``` --- ## 28. Совместительство и подработки ```bsl // Другие сотрудники того же ФЛ (кроме указанного) ТЗ = КадровыйУчетРасширенный.ДругиеСотрудникиФизическогоЛица(ФизЛицо, Организация, Сотрудник, ДатаНачала, ДатаОкончания); // Связь основные <-> внутренние совместители ТЗ = КадровыйУчетРасширенный.ОсновныеСотрудникиВнутреннихСовместителей(МассивСовместителей); ТЗ = КадровыйУчетРасширенный.ВнутренниеСовместителиОсновныхСотрудников(МассивОсновных); // ФЛ с несколькими договорами МассивФЛ = КадровыйУчетРасширенный.ФизическиеЛицаСНесколькимиДоговорами(Организация, Период); // Создание подработки (КОРП) Подработка = КадровыйУчетРасширенный.СоздатьПодработкуСотрудника(ГоловнойСотрудник, Уточнение); ТЗ = КадровыйУчетРасширенный.ПодработкиСотрудников(ТолькоРазрешенные, ПараметрыРМ, ВключатьГоловных); // Номер следующего трудового договора Номер = КадровыйУчетРасширенный.НомерСледующегоТрудовогоДоговора(Организация); ``` --- ## 29. Механизм представлений СКД (для отчетов) Система виртуальных таблиц: запросы-заглушки `Представления_*` подменяются реальными запросами к регистрам. ```bsl // Подключение к отчету (в модуле объекта): Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт Настройки.События.ПередЗагрузкойНастроекВКомпоновщик = Истина; КонецПроцедуры Процедура ПередЗагрузкойНастроекВКомпоновщик(Контекст, КлючВарианта, ...) Экспорт ЗарплатаКадрыОбщиеНаборыДанных.ЗаполнитьОбщиеИсточникиДанныхОтчета(СхемаКомпоновкиДанных); КонецПроцедуры ``` **Типы виртуальных таблиц:** `Представления_КадровыеДанныеСотрудников`, `Представления_КадровыеДанныеФизическихЛиц`, `Представления_СрезПоследних_<ИмяРегистра>`, `Представления_ТаблицаРегистра_<ИмяРегистра>`, `Представления_Периоды`, `Представления_СотрудникиОрганизации`, `Представления_ШтатноеРасписание`, `Представления_ОтработанноеВремя` и 30+ других. **Нюансы:** итоговая ВТ без подчеркивания (`ПредставленияКадровыеДанныеСотрудников`). Опции в блоке `ГДЕ`: `"ТолькоРазрешенные" = ИСТИНА`. Подробные примеры - `templatesearch "представления СКД ЗУП"`. Списки доступных полей: `КадровыйУчет.ПоляПредставленийКадровыхДанныхСотрудников()`, `...ФизическихЛиц()`. --- ## 30. Заполнение форм по умолчанию ```bsl // Заполнить организацию по умолчанию в форме документа ЗначенияДляЗаполнения = Новый Структура("Организация", "Объект.Организация"); ЗарплатаКадры.ЗаполнитьПервоначальныеЗначенияВФорме(ЭтаФорма, ЗначенияДляЗаполнения); // Получить значения по умолчанию (ТОЛЬКО на дату сеанса!) ЗапрашиваемыеЗначения = Новый Структура("Организация,Руководитель,ДолжностьРуководителя,..."); ЗапрашиваемыеЗначения.Организация = Организация; ЗарплатаКадры.ПолучитьЗначенияПоУмолчанию(ЗапрашиваемыеЗначения, Дата); ``` --- ## 31. Регистрация в налоговом органе ```bsl РегВНО = ЗарплатаКадры.РегистрацияВНалоговомОргане(СтруктурнаяЕдиница, ДатаАктуальности); РегВНО = ЗарплатаКадры.РегистрацияВНалоговомОрганеОрганизации(Организация, ДатаАктуальности); ``` --- ## 32. Состояния сотрудников и испытательный срок ```bsl // Состояния (работа, БиР, отпуск по уходу) через ВТ ЗапросВТ = КадровыйУчетРасширенный.ЗапросВТСведенияОСостоянииСотрудников(Параметры); // Испытательный срок НаИспСроке = КадровыйУчетРасширенный.СотрудникНаИспытательномСроке(Сотрудник, Дата); ``` --- ## 33. Текущая кадровая расстановка и тарифные ставки ```bsl // Текущая расстановка по позициям ШР КадровыйУчетРасширенный.СоздатьВТТекущаяКадроваяРасстановка(МВТ, Параметры); ЗапросВТ = КадровыйУчетРасширенный.ЗапросВТТекущаяКадроваяРасстановка(Параметры); // Тарифные ставки через ВТ ЗапросВТ = КадровыйУчетРасширенный.ЗапросВТТарифныеСтавкиСотрудников(Параметры); ``` --- ## 34. Настройки кадрового учета и права ```bsl // Текущие настройки (флаги функциональных опций) Настройки = КадровыйУчет.НастройкиКадровогоУчета(); // Проверка прав на разделы учета ИмеетПраво = КадровыйУчетРасширенный.ПравоНаРазделУчета(Право, ВидУчета); // Проверка ФО Использовать = ЗарплатаКадры.ИспользоватьСтатьиФинансированияЗарплата(); ``` --- ## 35. Утилиты ЗарплатаКадры (расширенные) ```bsl // Распределение суммы пропорционально базе ЗарплатаКадры.РаспределитьСуммуПропорциональноБазе(ТЗ, Сумма, ИмяКолонкиБазы, ИмяКолонкиРезультата); ЗарплатаКадры.РазнестиСуммуПоБазе(ТЗ, Сумма, ИмяКолонкиБазы, ИмяКолонкиРезультата); // Краткое представление списков (для сообщений) Текст = ЗарплатаКадры.КраткийСоставСотрудников(МассивСотрудников); Текст = ЗарплатаКадры.КраткийСоставФизЛиц(МассивФЛ); // Быстрый доступ к ответственным СведенияОбОрг = ЗарплатаКадры.ПолучитьСведенияОбОрганизации(Организация, Дата, СписокПоказателей); // Модуль ЗарплатаКадрыБазовый: СведенияОбОрг = ЗарплатаКадрыБазовый.ПолучитьСведенияОбОрганизации(Организация, Дата); ``` --- ## 36. Средний заработок: данные и регистры Данные для расчета среднего накапливаются в двух регистрах накопления (вид ОБОРОТЫ): - `РегистрНакопления.ДанныеОНачисленияхДляРасчетаСреднегоЗаработкаОбщий` - `РегистрНакопления.ДанныеДляРасчетаСреднегоЗаработкаПоНачислениям` (доп. измерение `Начисление` -> `ПланВидовРасчета.Начисления`) Измерение `Сотрудник`; реквизиты движений: `ФизическоеЛицо`, `ИсходныйДокумент`, `Организация`, `Сторно`, `СоставнаяЧасть`, `Год`. Движение привязывается к сотруднику из ТЧ документа-регистратора (`ФизическоеЛицо = Сотрудник.ФизическоеЛицо`). ```bsl // Сбор данных для регистрации в регистрах среднего заработка УчетСреднегоЗаработка.ЗаполнитьТаблицыДляРегистрацииДанныхСреднегоЗаработка(...); ``` --- ## 37. Средний заработок: перерасчет `РегистрСведений.ПерерасчетСреднегоЗаработка` (независимый, непериодический) помечает документы среднего заработка к пересчету. Измерения: `Организация`, `Сотрудник`, `ДокументСреднегоЗаработка`; реквизит `ДокументОснование`. ```bsl // Явная регистрация необходимости перерасчета // ДанныеДляРегистрацииПерерасчетов - ВТ (Организация, Сотрудник, ДокументСреднегоЗаработка, ДокументОснование) УчетСреднегоЗаработкаСобытия.ЗарегистрироватьНеобходимостьПерерасчетовДокументовСреднегоЗаработка(ДанныеДляРегистрацииПерерасчетов); ``` Обычно перерасчет регистрируется автоподписками при записи наборов записей регистров среднего заработка. При записи движений в обход бизнес-логики (`ЗарплатаКадры.ОтключитьБизнесЛогикуПриЗаписи`, временный набор, документ ПереносДанных) автоподписка НЕ срабатывает - регистрировать перерасчет нужно явно. --- ## 38. Начисления: план видов расчета и регистр расчета - `ПланВидовРасчета.Начисления` - виды расчета начислений. - `РегистрРасчета.Начисления` - результаты расчета. - `РегистрСведений.ЗначенияПоказателейНачислений` - значения показателей начислений. Исторические записи отпусков по периодам и видам доступны через `УчетНачисленнойЗарплатыРасширенный.НачисленныеОтпускаПоПериодамИВидам` (данные из регистра расчета Начисления + показатели из РС). Нюансы: - Поля `Показатель1..N` / `Значение1..N` - внутренние поля менеджера расчета, в самом регистре их нет. - Перечисление `КатегорииНачисленийИНеоплаченногоВремени` для отпуска использует значение `ОплатаОтпуска` (не "Отпуск"). --- ## 39. Корректировка движений через ПереносДанных Технический непроводимый документ `Документ.ПереносДанных` пишет произвольные движения в любые регистры ЗУП в обход бизнес-логики: ```bsl ДокПеренос = Документы.ПереносДанных.СоздатьДокумент(); Для Каждого ИмяРегистра Из СписокРегистров Цикл ДокПеренос.Движения[ИмяРегистра].Загрузить(ТаблицаДвижений[ИмяРегистра]); ДокПеренос.ТаблицаРегистров.Добавить().Имя = ИмяРегистра; КонецЦикла; ДокПеренос.Записать(); // в транзакции ``` Пишет в обход бизнес-логики - зависимые автоподписки (например перерасчет среднего заработка, см. §37) нужно инициировать явно. Типовой безопасный способ править регистры без перепроведения первичных документов. --- ## 40. Регламентированная и статистическая отчетность Документ `Документ.РегламентированныйОтчет`: - реквизит `ДанныеОтчета` - тип `ХранилищеЗначения`; - внутри: `ПоказателиОтчета.ПолеТабличногоДокументаФормаОтчета` - плоские ячейки; `ДанныеМногострочныхРазделов` - Структура {ПрефиксРаздела: ТаблицаЗначений}; - реквизита `Номер` у документа нет - искать по Ссылке/Дате. Конвертация показателей статистической отчетности: `РегламентированнаяОтчетность.КонвертированныеЗначенияПоказателейСтатистическойОтчетности` (деление на делитель данных ИБ, округление). Данные форм статистики персонала - модуль `СтатистикаПерсоналаРасширенный`. --- ## 41. Пособия и обмен с СФР (СЭДО) Документы больничных/пособий и электронного обмена с СФР: - `Документ.БольничныйЛист` - `Документ.ОтветНаЗапросФССДляРасчетаПособия`, `Документ.ВходящийЗапросФССДляРасчетаПособия` - `Документ.ЗапросСтатусовВыплатыПособия` (сообщение 8410), `Документ.СтатусыВыплатыПособия` (8510), `Документ.УведомлениеОСтатусеВыплатыПособия` (11000) - расчетный модуль `УчетПособийСоциальногоСтрахования` Режим "Сдвигать оплату больничного при наличии исключаемых периодов" передается ключом `СдвигатьПериодОплаты` в структуре `Реквизиты` при формировании ответа в СФР. --- ## 42. Регистры расчетов с сотрудниками и взносов - `РегистрНакопления.ЗарплатаКВыплате` - ресурс называется `СуммаКВыплате` (не "Сумма"), ВидДвижения Приход/Расход, реквизиты `ДокументОснование` и `Регистратор`. Закрытие обязательства надежнее определять по типу регистратора, а не по знаку/виду движения. - Взносы: `РегистрНакопления.СтраховыеВзносыПоФизическимЛицам`, `РегистрНакопления.СведенияОДоходахСтраховыеВзносы`, `Документ.ПерерасчетСтраховыхВзносов`. - `ОтражениеЗарплатыВБухучете.СформироватьДвиженияПоДокументу` перезатирает движения - дозаполнять после ее вызова. --- ## 43. Частые ошибки обращения к API (несуществующие методы) Правдоподобные имена, которых в ЗУП 3.1 / БСП нет. Незнакомый метод или поле перед использованием проверять по метаданным и исходникам, а не выводить "по аналогии". Формат: НЕТ X - использовать Y. - НЕТ полей `Показатель1..N` / `Значение1..N` в таблице `РегистрРасчета.Начисления` - это внутренние поля менеджера расчета; значения показателей читать из `РегистрСведений.ЗначенияПоказателейНачислений` (§38). - НЕТ ресурса `Сумма` в `РегистрНакопления.ЗарплатаКВыплате` - ресурс называется `СуммаКВыплате` (§42). - НЕТ реквизита `Номер` у `Документ.РегламентированныйОтчет` - искать документ по Ссылке/Дате (§40). - НЕТ метода `Пользователи.СсылкаТекущегоПользователя()` - использовать `Пользователи.ТекущийПользователь()` или `Пользователи.АвторизованныйПользователь()`, обе возвращают ссылку. - НЕТ метода `ОбщегоНазначения.JSONСтрокой()` - использовать `ОбщегоНазначения.ЗначениеВJSON()` / `ОбщегоНазначения.JSONВЗначение()`. - НЕТ общего модуля `ФайловаяСистемаКлиентСервер` - есть `ФайловаяСистема` (сервер) и `ФайловаяСистемаКлиент` (клиент). Общебиблиотечные пункты - по мотивам brake71/1c-ssl-skills (MIT). --- ## Ключевые нюансы 1. **ТолькоРазрешенные=Ложь** в серверном коде документов (привилегированный доступ). `Истина` - для отображения пользователю (RLS). 2. **ДатаПолученияДанных='00010101'** - последние данные. Конкретная дата - актуальные на нее. 3. **Для массовых операций** предпочтительнее массовые методы (`ОсновныеСотрудникиФизическихЛиц`) вместо циклов по единичным (`ОсновнойСотрудникФизическогоЛица`). 4. **Кеширование** `КадровыйУчетПовтИсп` - на время серверного вызова. 5. **Расчетная часть** (средний заработок, начисления, пособия/СФР, взносы, регламентированная отчетность) - см. §36-42. Прочие механизмы, не покрытые справочником, - искать через `templatesearch`.
-
-
SKILL.md 4.2 KB
--- name: zup-hr-api-reference description: "Справочник API конфигурации 1С:ЗУП 3.1 (Зарплата и управление персоналом) по кадровому учету. Используй при разработке/доработке на ЗУП 3.1, когда нужны методы КадровыйУчет, КадровыйУчетРасширенный, ЗарплатаКадры, ФизическиеЛицаЗарплатаКадры - получение кадровых данных сотрудников и физлиц, стажи, даты приема/увольнения, договоры ГПХ, совместители, штатное расписание, остатки отпусков, паспортные данные, склонение ФИО, представления СКД ЗУП. Также расчетная часть: средний заработок и его перерасчет, начисления (план видов расчета, регистр расчета), пособия и обмен с СФР (СЭДО), страховые взносы, регламентированная и статистическая отчетность, корректировка движений через ПереносДанных. НЕ использовать для БП, ERP, УТ, УНФ - только ЗУП" argument-hint: (no arguments) allowed-tools: [Read] --- # ЗУП 3.1 HR API reference Полный справочник API 1С:ЗУП 3.1 для работы с кадровыми данными хранится в отдельном файле `references/zup-hr-api.md`, чтобы не раздувать контекст постоянно. **Действие:** прочитай файл `references/zup-hr-api.md` (относительно папки скила) и используй его как справочник при решении задачи. Файл покрывает: - Архитектуру Сотрудник vs ФизическоеЛицо - Иерархию модулей (КадровыйУчет, КадровыйУчетРасширенный, ЗарплатаКадры и др.) - `КадровыеДанныеСотрудников` / `КадровыеДанныеФизическихЛиц` - основные методы и все поля - Периоды работы, даты приема/увольнения - Стажи (виды, расчет, представление) - Связи Сотрудник <-> ФизическоеЛицо (основной, совместители, подработки) - Получение списков сотрудников организации - Временные таблицы (ВТ) для пакетных запросов - Рабочие места, архив сотрудников - Создание физлиц и сотрудников - ФИО: инициалы, склонение, пол - Текущие/плановые начисления и удержания - Остатки отпусков - Графики работы и производственный календарь - Паспортные данные, штатное расписание - Проверки кадрового учета, формирование движений - Договоры ГПХ, совместительство - Механизм представлений СКД (виртуальные таблицы для отчетов) - Настройки кадрового учета, права, ответственные лица - Средний заработок: данные, регистры, перерасчет (§36-37) - Начисления: план видов расчета и регистр расчета (§38) - Корректировка движений через документ ПереносДанных (§39) - Регламентированная и статистическая отчетность (§40) - Пособия и обмен с СФР/СЭДО (§41) - Регистры расчетов с сотрудниками и страховых взносов (§42) - Частые ошибки обращения к API - несуществующие методы и поля (§43)
Comments (0)
Sign in to join the conversation.
Reviews (0)
No reviews yet.
No comments yet.