Как исправить ошибку «Месяц не заполнен в строке таблицы Начисления» при переносе данных из БП 3 в ЗУП 3?

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

При выполнении переноса данных из конфигурации «1С:Бухгалтерия предприятия 3.0» в «1С:Зарплата и управление персоналом 3.1» пользователи и программисты часто сталкиваются с ситуацией, когда перенесенные документы начисления заработной платы не проводятся. Платформа выдает системное сообщение вида: «Месяц не заполнен в строке N таблицы "Начисления"». При этом вручную проблема решается перевыбором сотрудника в строке, однако при большом объеме документов делать это вручную неэффективно. Проанализируем, почему возникает данная ошибка и как решить проблему программным путем.

Причины возникновения ошибки

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

  1. Разница в структуре табличных частей: В «1С:ЗУП 3» табличная часть Начисления содержит скрытые от стандартного интерфейса служебные реквизиты периода действия — ДатаНачала и ДатаОкончания, а также связана с подчиненной табличной частью Показатели. В «1С:БП 3» табличные части устроены существенно проще.
  2. Неполное заполнение реквизитов при конвертации: При переносе данных через правила конвертации (КД 2) реквизиты дат периода действия начисления в ТЧ Начисления могут оставаться незаполненными, даже если в шапке документа реквизит МесяцНачисления указ корректно.
  3. Неэффективность «Группового изменения реквизитов»: Стандартная обработка Групповое изменение реквизитов напрямую меняет значения полей в базе данных. Она не вызывает события формы (например, ПриИзменении), которые вычисляют даты периода действия начисления и формируют подчиненные показатели. Из-за этого замена сотрудника через групповую обработку не решает проблему.

Способ 1. Программное заполнение реквизитов периода через внешнюю обработку

Рассмотрим основной способ решения задачи. Для исправления непроведенных документов необходимо написать внешнюю обработку или запустить произвольный алгоритм, который переберет документы начисления, явно заполнит реквизиты ДатаНачала и ДатаОкончания в каждой строке табличной части и произведет проведение объектов.

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


Выборка = Документы.НачислениеЗарплаты.Выбрать();

Пока Выборка.Следующий() Цикл
    
    // Пропускаем уже проведенные документы при необходимости
    Если Выборка.Проведен Тогда
        Продолжить;
    КонецЕсли;
    
    ДокОбъект = Выборка.ПолучитьОбъект();
    
    // Определяем даты начала и окончания месяца начисления
    ПервыйДеньМесяца = НачалоМесяца(ДокОбъект.МесяцНачисления);
    ПоследнийДеньМесяца = КонецМесяца(ДокОбъект.МесяцНачисления);
    
    ЕстьИзменения = Ложь;
    
    Для Каждого СтрокаТЧ Из ДокОбъект.Начисления Цикл
        СтрокаТЧ.ДатаНачала = ПервыйДеньМесяца;
        СтрокаТЧ.ДатаОкончания = ПоследнийДеньМесяца;
        ЕстьИзменения = Истина;
    КонецЦикла;
    
    Если ЕстьИзменения Тогда
        Попытка
            ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);
        Исключение
            ЗаписьЖурналаРегистрации("ОшибкаПроведенияНачислений",
                УровеньЖурналаРегистрации.Ошибка,,,
                "Не удалось провести документ " + ДокОбъект.Ссылка + ": " + ОписаниеОшибки());
        КонецПопытки;
    КонецЕсли;
    
КонецЦикла;

Способ 2. Автоматическое перезаполнение документов в форме

Если в целевой базе «1С:ЗУП 3» уже заведены нормативно-справочные данные (заполнены Производственные календари, Графики работы, а также проведены кадровые документы Прием на работу или Начальная штатная расстановка), можно использовать штатный механизм перезаполнения.

При вызове команды перезаполнения система заново рассчитает показатели и автоматически проставит корректные даты периода действия. Однако учитывайте: если расчетные показатели исправлялись вручную на стороне «1С:БП 3», автоматическое перезаполнение сбросит ручные корректировки до нормативных значений.

Способ 3. Перенос данных через документ «Перенос данных»

Выясним еще один важный архитектурный нюанс. Если документы выгружаются из «1С:БП 3» только для ввода начальных остатков или формирования истории для расчета среднего заработка, перенос первичных расчетных документов является неоптимальным решением. В «1С:ЗУП 3» для этих целей рекомендуется использовать специальный документ ПереносДанных, заполняющий регистры расчета и накопления напрямую, минуя первичные документы начисления.

Важные рекомендации при исправлении данных

  1. Проверьте кадровую историю: До попытки проведения расчетных документов убедитесь, что в базе есть кадровые данные по сотрудникам. Без документов приема на работу или начальной штатной расстановки проведение расчетных документов завершится ошибкой.
  2. Проверьте графики работы: Все графики работы сотрудников должны быть заполнены на весь период, за который выгружаются документы начисления.
  3. Сделайте резервную копию: Перед запуском любых групповых обработок или программного кода обязательно создайте резервную копию информационной базы.
← На главную