При использовании типовой синхронизации между конфигурациями «Зарплата и управление персоналом 3» (ЗУП) и «Бухгалтерия предприятия 3» (БП) через универсальный формат EnterpriseData пользователи часто сталкиваются с тем, что документ ОтражениеЗарплатыВБухучете загружается в бухгалтерскую базу непроведенным. Рассмотрим причины такого поведения системы и разберем способы автоматизации этого процесса.
Проанализируем стандартную логику разработчиков 1С. В конфигурации БП 3.0 документ ОтражениеЗарплатыВБухучете имеет специфическую особенность: специальный реквизит-флаг ЗарплатаОтраженаВБухучетеПользователем (в интерфейсе он отображается как галочка «Зарплата отражена в бухучете пользователем»).
Пока этот флаг не установлен в значение Истина, документ не будет формировать проводки, даже если программно вызвать метод Записать(РежимЗаписиДокумента.Проведение). Это сделано умышленно: предполагается, что бухгалтер должен зайти в документ, проверить корректность заполнения счетов учета и аналитики (субконто), которые могли не заполниться автоматически из-за различий в настройках баз, и только после этого подтвердить отражение в учете.
Однако в ситуациях, когда аналитика полностью синхронизирована, ручное подтверждение каждого документа становится избыточной операцией. Разберем, как это автоматизировать.
Вместо изменения типовой конфигурации и правки сложных модулей обмена, мы рекомендуем использовать механизм расширений. Это позволит сохранить базу на поддержке и упростит дальнейшие обновления.
Рассмотрим алгоритм создания такого решения по шагам:
ОтражениеЗарплатыВБухучете.ПередЗаписью в модуле объекта документа).Проанализируем пример кода, который необходимо разместить в обработчике события:
&После("ПередЗаписью")
Процедура Расш_ПередЗаписью(Отказ, РежимЗаписи, РежимЗагрузки)
// Проверяем, что запись происходит в режиме загрузки данных из другой базы
Если ОбменДанными.Загрузка Тогда
// Устанавливаем обязательный флаг проверки
ЭтотОбъект.ЗарплатаОтраженаВБухучетеПользователем = Истина;
// Устанавливаем режим проведения, если документ пришел из ЗУП проведенным
Если ЭтотОбъект.Проведен Тогда
РежимЗаписи = РежимЗаписиДокумента.Проведение;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Важный нюанс: при использовании свойства ОбменДанными.Загрузка мы гарантируем, что автоматика сработает только в момент синхронизации, не мешая обычной работе пользователя в интерфейсе.
Если по каким-то причинам вы предпочитаете работать напрямую с правилами обработки данных формата EnterpriseData, нам потребуется найти место, где описывается логика получения данных на стороне БП. Весь код правил в современных версиях 1С сосредоточен в модуле менеджера обмена.
Разберем, где именно искать нужную точку входа:
МенеджерОбменаЧерезУниверсальныйФормат (версия модуля может отличаться, например, МенеджерОбменаЧерезУниверсальныйФормат13).ПКО_Документ_ОтражениеЗарплатыВБухучете_Получение_ПередЗаписьюПолученныхДанных.Выясним причину, по которой правка в этом месте может быть сложной: менеджер обмена — это огромный модуль (часто более 100 000 строк кода), который генерируется автоматически. Любые изменения в нем требуют внимательности. Вам необходимо дописать установку реквизита ЗарплатаОтраженаВБухучетеПользователем непосредственно в структуру загружаемых данных.
Проанализируем ситуацию с точки зрения корректности данных. Автоматическое проведение может привести к ошибкам в следующих случаях:
Чтобы избежать этих проблем, в коде расширения можно добавить проверку: если документ уже существует в базе и имеет статус проведенного, возможно, стоит пропустить его автоматическое перепроведение.
Если вы не хотите вносить изменения в конфигурацию, существует административный способ решения проблемы. Бухгалтер может использовать типовую обработку «Групповое изменение реквизитов»:
Отражение зарплаты в бухучете за нужный период.Зарплата отражена в бухучете пользователем в значение Да.Этот метод позволяет сохранить типовую конфигурацию в чистоте, хотя и требует нескольких дополнительных кликов от пользователя раз в месяц.
Подводя итог, мы видим, что наиболее элегантным техническим решением является использование расширения с установкой флага ЗарплатаОтраженаВБухучетеПользователем при условии ОбменДанными.Загрузка = Истина. Это обеспечит автоматизацию, которую требует бизнес, сохраняя при этом гибкость системы 1С.