Переход с редакции Зарплата и управление персоналом 2.5 (или ЗБУ 1.0) на версию 3.1 часто вызывает сложности у разработчиков, привыкших к определенной структуре хранения данных. Одной из таких проблем является загрузка значений показателей для расчета зарплаты. В старой редакции существовал независимый регистр сведений, который можно было легко править программно или вручную. В новой версии архитектура существенно изменилась. В этой статье мы разберем, как устроено хранение показателей в ЗУП 3.1 и какими способами можно автоматизировать их ввод.
Первое, что нам необходимо понять: в ЗУП 3.1 больше нет единого независимого регистра для всех показателей. Система разделяет данные по их назначению и частоте использования. Все соответствующие регистры теперь являются зависимыми, то есть запись в них возможна только через документ-регистратор. Рассмотрим основные регистры, в которых хранятся значения:
Попытка прямой записи в эти регистры через МенеджерЗаписи не увенчается успехом, так как системе требуется ссылка на документ. Поэтому нам нужно выбрать методически верный путь интеграции.
Это наиболее правильный способ с точки зрения логики программы. Документ ДанныеДляРасчетаЗарплаты является универсальным инструментом, структура которого зависит от выбранного Шаблона ввода исходных данных.
Разберем алгоритм реализации этого метода по шагам:
НастройкаЗаполнения ссылкой на созданный шаблон.Сотрудники и Показатели. Обратите внимание, что связь между ними идет по ключу строки.Рассмотрим пример кода для заполнения такого документа:
НовыйДок = Документы.ДанныеДляРасчетаЗарплаты.СоздатьДокумент();
НовыйДок.Дата = ТекущаяДата();
НовыйДок.ПериодРегистрации = НачалоМесяца(ДатаЗагрузки);
НовыйДок.Организация = Справочники.Организации.НайтиПоРеквизиту("ИНН", ИННИзФайла);
НовыйДок.НастройкаЗаполнения = Справочники.ШаблоныВводаИсходныхДанных.НайтиПоНаименованию("ЗагрузкаИзВнешнейСистемы");
// Добавляем строку сотрудника
НоваяСтрокаСотрудник = НовыйДок.Сотрудники.Добавить();
НоваяСтрокаСотрудник.Сотрудник = СправочникСотрудник;
НоваяСтрокаСотрудник.ИдентификаторСтроки = 1;
// Добавляем значение показателя
НоваяСтрокаПоказатель = НовыйДок.Показатели.Добавить();
НоваяСтрокаПоказатель.ИдентификаторСтроки = 1;
НоваяСтрокаПоказатель.Показатель = Справочники.ПоказателиРасчетаЗарплаты.НайтиПоНаименованию("НочныеЧасы");
НоваяСтрокаПоказатель.Значение = ЗначениеИзФайла;
НовыйДок.Записать(РежимЗаписиДокумента.Проведение);
Если ваша задача — просто «залить» цифры для формирования отчетности и вы не планируете в дальнейшем редактировать эти данные через стандартный интерфейс расчетчика, можно воспользоваться техническим документом ПереносДанных. Этот документ позволяет делать записи напрямую в любые регистры системы.
Проанализируем плюсы и минусы этого подхода:
ДанныеДляРасчетаЗарплаты.Для реализации этого метода найдите в метаданных документ ПереносДанных и программно заполните его набор записей по регистру ЗначенияРазовыхПоказателейРасчетаЗарплатыСотрудников.
Прежде чем писать сложную обработку на встроенном языке, давайте выясним, нельзя ли обойтись стандартными средствами. В ЗУП 3.1 во многих документах (включая «Данные для расчета зарплаты») встроена подсистема БСП «Загрузка данных из файла».
Чтобы ей воспользоваться:
Если же автоматизация должна быть полной (например, чтение из файла .dbf по расписанию), то использование кода из Варианта 1 остается приоритетным.
Выясним важную деталь: если вы используете ЗУП 3.1 только как «репортер» (для сдачи отчетности), простой загрузки показателей может быть недостаточно. Для корректного заполнения 6-НДФЛ и РСВ система должна зафиксировать факт выплаты дохода.
Даже если вы загрузили показатели и рассчитали документ НачислениеЗарплатыИВзносов, обязательно проконтролируйте заполнение регистров накопления:
УчетДоходовДляИсчисленияНДФЛРасчетыНалогоплательщиковСБюджетомПоНДФЛСведенияОДоходахСтраховыеВзносы
Эти данные обычно формируются документами ВедомостьВБанк или ВедомостьВКассу. Без них ваша отчетность будет пустой, несмотря на корректно заполненные показатели.
Подведем итог: для автоматизации загрузки показателей в ЗУП 3.1 забудьте о прямой работе с регистрами сведений. Используйте объектную модель документов. Самый гибкий и методически верный путь — программное создание документа ДанныеДляРасчетаЗарплаты с предварительной настройкой соответствующих ШаблоновВводаИсходныхДанных. Это обеспечит целостность базы и позволит пользователям при необходимости корректировать загруженные данные вручную.