Как программно заполнить показатели для расчета зарплаты в 1С:ЗУП 3.1?

Программист 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом
← На главную

Переход с редакции Зарплата и управление персоналом 2.5 (или ЗБУ 1.0) на версию 3.1 часто вызывает сложности у разработчиков, привыкших к определенной структуре хранения данных. Одной из таких проблем является загрузка значений показателей для расчета зарплаты. В старой редакции существовал независимый регистр сведений, который можно было легко править программно или вручную. В новой версии архитектура существенно изменилась. В этой статье мы разберем, как устроено хранение показателей в ЗУП 3.1 и какими способами можно автоматизировать их ввод.

Анализируем архитектуру хранения показателей в ЗУП 3.1

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

  1. ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудников — здесь хранятся плановые показатели, такие как Оклад, Надбавки (аналог плановых начислений).
  2. ЗначенияРазовыхПоказателейРасчетаЗарплатыСотрудников — предназначен для показателей, которые вводятся раз в месяц (например, Сумма премии или Ночные часы).
  3. ЗначенияПоказателейРасчетаЗарплатыОрганизаций — показатели, общие для всего учреждения.

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

Вариант 1. Использование документа «Данные для расчета зарплаты» (Рекомендуемый)

Это наиболее правильный способ с точки зрения логики программы. Документ ДанныеДляРасчетаЗарплаты является универсальным инструментом, структура которого зависит от выбранного Шаблона ввода исходных данных.

Разберем алгоритм реализации этого метода по шагам:

  1. Создание шаблона: Перейдем в раздел «Настройка» — «Шаблоны ввода исходных данных». Создадим новый шаблон, выберем в нем необходимые показатели (например, «Ученая степень» или «Ночные»). Это критически важно, так как документ без привязки к шаблону не будет знать, какие колонки ему отрисовывать и записывать.
  2. Программное создание документа: В нашей обработке загрузки мы должны создать объект документа и заполнить его реквизит НастройкаЗаполнения ссылкой на созданный шаблон.
  3. Заполнение табличной части: Данные в документе хранятся в табличных частях Сотрудники и Показатели. Обратите внимание, что связь между ними идет по ключу строки.

Рассмотрим пример кода для заполнения такого документа:


НовыйДок = Документы.ДанныеДляРасчетаЗарплаты.СоздатьДокумент();
НовыйДок.Дата = ТекущаяДата();
НовыйДок.ПериодРегистрации = НачалоМесяца(ДатаЗагрузки);
НовыйДок.Организация = Справочники.Организации.НайтиПоРеквизиту("ИНН", ИННИзФайла);
НовыйДок.НастройкаЗаполнения = Справочники.ШаблоныВводаИсходныхДанных.НайтиПоНаименованию("ЗагрузкаИзВнешнейСистемы");

// Добавляем строку сотрудника
НоваяСтрокаСотрудник = НовыйДок.Сотрудники.Добавить();
НоваяСтрокаСотрудник.Сотрудник = СправочникСотрудник;
НоваяСтрокаСотрудник.ИдентификаторСтроки = 1;

// Добавляем значение показателя
НоваяСтрокаПоказатель = НовыйДок.Показатели.Добавить();
НоваяСтрокаПоказатель.ИдентификаторСтроки = 1;
НоваяСтрокаПоказатель.Показатель = Справочники.ПоказателиРасчетаЗарплаты.НайтиПоНаименованию("НочныеЧасы");
НоваяСтрокаПоказатель.Значение = ЗначениеИзФайла;

НовыйДок.Записать(РежимЗаписиДокумента.Проведение);

Вариант 2. Использование документа «Перенос данных»

Если ваша задача — просто «залить» цифры для формирования отчетности и вы не планируете в дальнейшем редактировать эти данные через стандартный интерфейс расчетчика, можно воспользоваться техническим документом ПереносДанных. Этот документ позволяет делать записи напрямую в любые регистры системы.

Проанализируем плюсы и минусы этого подхода:

Для реализации этого метода найдите в метаданных документ ПереносДанных и программно заполните его набор записей по регистру ЗначенияРазовыхПоказателейРасчетаЗарплатыСотрудников.

Вариант 3. Встроенный механизм «Загрузка из файла»

Прежде чем писать сложную обработку на встроенном языке, давайте выясним, нельзя ли обойтись стандартными средствами. В ЗУП 3.1 во многих документах (включая «Данные для расчета зарплаты») встроена подсистема БСП «Загрузка данных из файла».

Чтобы ей воспользоваться:

  1. Создайте документ «Данные для расчета зарплаты» вручную.
  2. Выберите нужный шаблон.
  3. Нажмите кнопку «Загрузить из файла» (если её нет на панели, загляните в меню «Ещё»).
  4. Программа предложит шаблон таблицы, который можно заполнить копированием из Excel.

Если же автоматизация должна быть полной (например, чтение из файла .dbf по расписанию), то использование кода из Варианта 1 остается приоритетным.

Важные замечания по расчету среднего заработка и НДФЛ

Выясним важную деталь: если вы используете ЗУП 3.1 только как «репортер» (для сдачи отчетности), простой загрузки показателей может быть недостаточно. Для корректного заполнения 6-НДФЛ и РСВ система должна зафиксировать факт выплаты дохода.

Даже если вы загрузили показатели и рассчитали документ НачислениеЗарплатыИВзносов, обязательно проконтролируйте заполнение регистров накопления:

  1. УчетДоходовДляИсчисленияНДФЛ
  2. РасчетыНалогоплательщиковСБюджетомПоНДФЛ
  3. СведенияОДоходахСтраховыеВзносы

Эти данные обычно формируются документами ВедомостьВБанк или ВедомостьВКассу. Без них ваша отчетность будет пустой, несмотря на корректно заполненные показатели.

Подведем итог: для автоматизации загрузки показателей в ЗУП 3.1 забудьте о прямой работе с регистрами сведений. Используйте объектную модель документов. Самый гибкий и методически верный путь — программное создание документа ДанныеДляРасчетаЗарплаты с предварительной настройкой соответствующих ШаблоновВводаИсходныхДанных. Это обеспечит целостность базы и позволит пользователям при необходимости корректировать загруженные данные вручную.

← На главную