Как настроить автоматическое проведение документа «Отражение зарплаты в бухучете» при переносе из ЗУП 3 в БП 3?

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

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

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

Проанализируем стандартную логику разработчиков 1С. В конфигурации БП 3.0 документ ОтражениеЗарплатыВБухучете имеет специфическую особенность: специальный реквизит-флаг ЗарплатаОтраженаВБухучетеПользователем (в интерфейсе он отображается как галочка «Зарплата отражена в бухучете пользователем»).

Пока этот флаг не установлен в значение Истина, документ не будет формировать проводки, даже если программно вызвать метод Записать(РежимЗаписиДокумента.Проведение). Это сделано умышленно: предполагается, что бухгалтер должен зайти в документ, проверить корректность заполнения счетов учета и аналитики (субконто), которые могли не заполниться автоматически из-за различий в настройках баз, и только после этого подтвердить отражение в учете.

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

Способ 1. Использование расширения и подписки на события (Рекомендуемый)

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

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

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

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


&После("ПередЗаписью")
Процедура Расш_ПередЗаписью(Отказ, РежимЗаписи, РежимЗагрузки)
    
    // Проверяем, что запись происходит в режиме загрузки данных из другой базы
    Если ОбменДанными.Загрузка Тогда
        
        // Устанавливаем обязательный флаг проверки
        ЭтотОбъект.ЗарплатаОтраженаВБухучетеПользователем = Истина;
        
        // Устанавливаем режим проведения, если документ пришел из ЗУП проведенным
        Если ЭтотОбъект.Проведен Тогда
            РежимЗаписи = РежимЗаписиДокумента.Проведение;
        КонецЕсли;
        
    КонецЕсли;
    
КонецПроцедуры

Важный нюанс: при использовании свойства ОбменДанными.Загрузка мы гарантируем, что автоматика сработает только в момент синхронизации, не мешая обычной работе пользователя в интерфейсе.

Способ 2. Изменение логики в Менеджере обмена

Если по каким-то причинам вы предпочитаете работать напрямую с правилами обработки данных формата EnterpriseData, нам потребуется найти место, где описывается логика получения данных на стороне БП. Весь код правил в современных версиях 1С сосредоточен в модуле менеджера обмена.

Разберем, где именно искать нужную точку входа:

  1. Откроем модуль МенеджерОбменаЧерезУниверсальныйФормат (версия модуля может отличаться, например, МенеджерОбменаЧерезУниверсальныйФормат13).
  2. Найдем процедуру ПКО_Документ_ОтражениеЗарплатыВБухучете_Получение_ПередЗаписьюПолученныхДанных.
  3. В этой процедуре выполняется обработка структуры данных перед тем, как они будут превращены в объект информационной базы.

Выясним причину, по которой правка в этом месте может быть сложной: менеджер обмена — это огромный модуль (часто более 100 000 строк кода), который генерируется автоматически. Любые изменения в нем требуют внимательности. Вам необходимо дописать установку реквизита ЗарплатаОтраженаВБухучетеПользователем непосредственно в структуру загружаемых данных.

Риски и проверки при автоматическом проведении

Проанализируем ситуацию с точки зрения корректности данных. Автоматическое проведение может привести к ошибкам в следующих случаях:

Чтобы избежать этих проблем, в коде расширения можно добавить проверку: если документ уже существует в базе и имеет статус проведенного, возможно, стоит пропустить его автоматическое перепроведение.

Альтернативный «безкодовый» вариант

Если вы не хотите вносить изменения в конфигурацию, существует административный способ решения проблемы. Бухгалтер может использовать типовую обработку «Групповое изменение реквизитов»:

  1. В базе БП выберите все непроведенные документы Отражение зарплаты в бухучете за нужный период.
  2. Через групповое изменение установите реквизит Зарплата отражена в бухучете пользователем в значение Да.
  3. Запустите групповое проведение выбранных документов.

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

Подводя итог, мы видим, что наиболее элегантным техническим решением является использование расширения с установкой флага ЗарплатаОтраженаВБухучетеПользователем при условии ОбменДанными.Загрузка = Истина. Это обеспечит автоматизацию, которую требует бизнес, сохраняя при этом гибкость системы 1С.

← На главную