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