Почему не видны выплаты из переноса данных в ЗУП 3.1 и как это исправить?

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

Переход со старых редакций программы (например, с ЗУП 2.5) на современную 1С:Зарплата и управление персоналом 3.1 — это сложный процесс, который часто сопровождается техническими нюансами. Одной из самых частых и неприятных проблем является ситуация, когда после выполнения «Полного переноса» данных пользователь обнаруживает, что в отчетах (например, в «Полном своде начислений, удержаний и выплат») начисления видны, а выплаты за прошлые периоды отсутствуют. При этом, если создать новую ведомость вручную, она прекрасно отображается в отчетах.

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

Анализ причин: конфликт режимов взаиморасчетов

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

  1. Взаиморасчеты ведутся по месяцам расчета зарплаты: в этом режиме программа обращается к регистру накопления ВзаиморасчетыССотрудниками. Обычно именно сюда попадают данные при любом виде переноса. Если в настройках стоит этот флаг, автор темы видит свои выплаты.
  2. Взаиморасчеты ведутся по данным бухгалтерского учета: это более строгий режим, при котором система анализирует регистр накопления БухгалтерскиеВзаиморасчетыССотрудниками. В этом регистре данные фиксируются не по «месяцу начисления», а по фактическим датам событий, что ближе к логике бухгалтерского счета 70.

Проблема заключается в том, что при использовании устаревшего механизма «Полного переноса» (через выгрузку всех документов за прошлые годы), помощник переноса зачастую заполняет только первый («управленческий») регистр, полностью игнорируя «бухгалтерский». В результате, если бухгалтер привык работать в режиме «по данным бухучета», программа сообщает, что выплат не было, так как в соответствующем регистре записей просто нет.

Исследование регистров накопления

Разберем подробнее структуру данных, с которыми нам предстоит работать. Чтобы понять, куда «пропали» деньги, нам нужно зайти в документ ПереносДанных (раздел Администрирование — Переносы данных) и посмотреть движения по следующим регистрам:

Выясним причину, почему обычное перепроведение документа ПереносДанных не помогает. В отличие от типовых документов (например, «Начисление зарплаты»), документ переноса не содержит алгоритмов проведения. Все записи регистров в нем прописаны жестко в табличных частях. Если записи в таблице по конкретному регистру нет, то никакое «перепроведение» или «снятие пометки удаления» ее там не создаст.

Способ 1: Использование документа «Начальная задолженность»

Если объем данных невелик, или если вы только начали работать в базе, рассмотрим методический способ решения. В ЗУП 3.1 существует специальный документ НачальнаяЗадолженность (Главное — Данные на начало эксплуатации).

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

Способ 2: Программное заполнение регистра (решение для разработчика)

Как показывает практика, наиболее эффективным решением является написание небольшой обработки, которая «синхронизирует» регистры. Суть метода: прочитать данные из регистра ВзаиморасчетыССотрудниками и на их основе создать идентичные записи в БухгалтерскиеВзаиморасчетыССотрудниками.

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


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

Важный момент при написании обработки: обратите внимание на измерение ТипНалога и ГруппаНачисленияУдержания. В регистре БухгалтерскиеВзаиморасчетыССотрудниками аналитика может быть чуть шире, чем в обычном. Если вы просто скопируете данные, не заполнив Статью расходов, у вас могут возникнуть проблемы с формированием проводок в дальнейшем (документ «Отражение зарплаты в бухучете» ориентируется именно на эти данные).

Почему не стоит просто менять настройки учета?

Казалось бы, самым простым решением будет переключить настройку в положение «по месяцам расчета зарплаты» и забыть о проблеме. Однако мы не рекомендуем этот путь по нескольким причинам:

Резюме

Выяснив причину отсутствия выплат, мы понимаем, что это не ошибка пользователя, а особенность алгоритмов «Полного переноса». Для исправления ситуации выполним следующие шаги:

  1. Проверим текущие настройки в разделе Настройка — Дополнительные настройки.
  2. Убедимся в отсутствии записей в регистре БухгалтерскиеВзаиморасчетыССотрудниками через «Функции для технического специалиста».
  3. Если база находится на начальном этапе — попробуем воспользоваться документом НачальнаяЗадолженность.
  4. Если данных много — используем программное копирование записей из регистра ВзаиморасчетыССотрудниками в регистр БухгалтерскиеВзаиморасчетыССотрудниками с обязательным контролем заполнения аналитики (Статьи расходов, Периоды).

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

← На главную