В процессе работы с типовой синхронизацией между конфигурациями «Зарплата и управление персоналом» (ЗУП) и «Бухгалтерия предприятия» (БП) специалисты часто сталкиваются с неприятной ситуацией: документ (например, ведомость на выплату зарплаты) помечается на удаление в базе-источнике (ЗУП), но после успешного завершения обмена в базе-приемнике (БП) он остается проведенным и активным. Рассмотрим подробно, почему это происходит, и разберем по шагам, как исправить эту проблему и не допустить ее повторения.
Для начала проанализируем, как работает механизм обмена. Когда мы изменяем объект или помечаем его на удаление, платформа 1С фиксирует это событие в специальной таблице — Плане обмена. Эта запись называется «регистрацией изменений». Во время очередного сеанса синхронизации система считывает эти записи, упаковывает данные в XML-файл (или JSON в формате Enterprise Data) и отправляет в приемник.
Выясним причину, по которой пометка на удаление может «потеряться». Основная сложность заключается в том, что если объект был помечен на удаление некорректным способом (например, через внешнюю обработку, где установлен признак ОбменДанными.Загрузка = Истина), регистрация изменений в плане обмена просто не создается. В этом случае система «считает», что в ЗУП ничего не произошло, и не передает информацию о пометке в БП.
Самый простой метод, который помогает в большинстве случаев, — это заставить систему заново «увидеть» изменения. Если вы заметили, что ведомость в БП не пометилась на удаление, выполните следующие действия в ЗУП:
Эти действия принудительно создают запись в таблице регистрации изменений. Рассмотрим, как проверить, попал ли документ в состав отправляемых данных. Перейдем в раздел Администрирование — Синхронизация данных, выберем настройку обмена с БП и нажмем кнопку «Состав отправляемых данных» (иконка с монитором и карандашом). В открывшемся окне мы должны увидеть наш документ в списке объектов, подлежащих выгрузке.
Если документов, которые не перенеслись, много (например, более 50 штук), ручное перещелкивание пометок становится неэффективным. В такой ситуации разберем профессиональный инструмент:
ВедомостьНаВыплатуЗарплатыВКассу).ПометкаУдаления Равно Да.После выполнения этих действий при следующем сеансе синхронизации система гарантированно попытается передать информацию о пометке удаления в Бухгалтерию.
Бывают ситуации, когда данные успешно уходят из ЗУП, но БП отказывается их принимать. Проанализируем ситуацию на стороне приемника. Почему документ может игнорировать пометку на удаление?
1. Конфликты версий. В современных обменах на базе EnterpriseData реализован механизм разрешения коллизий. Если бухгалтер в БП зашел в документ и что-то в нем исправил (например, изменил подразделение или перепровел вручную), система может пометить этот объект как «измененный в приемнике». При загрузке данных из ЗУП возникнет конфликт, и система отдаст приоритет версии из БП, проигнорировав удаление из ЗУП. Проверьте раздел «Конфликты» в окне синхронизации данных.
2. Связанные документы. Если в БП на основании ведомости уже создан документ ВыдачаНаличных или СписаниеСРасчетногоСчета, и он проведен, то попытка пометить «Ведомость» на удаление программно может быть заблокирована механизмом контроля ссылочной целостности. Рассмотрим пример кода, который часто отрабатывает в подписках на события в БП:
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимЗагрузки)
Если РежимЗагрузки Тогда
Возврат;
КонецЕсли;
// Логика проверки связанных документов, которая может вызвать Отказ = Истина
КонецПроцедуры
Важно помнить, что при синхронизации параметр РежимЗагрузки обычно установлен в значение Истина, что должно обходить проверки. Однако, если в базе настроены дополнительные расширения или нестандартные правила, они могут блокировать запись.
В некоторых старых правилах обмена (на базе КД 2.0) или при использовании специфических настроек может стоять признак «Не перезаписывать существующие объекты при загрузке». Если документ уже существует в БП и он проведен, загрузка просто проигнорирует любые изменения, включая смену признака ПометкаУдаления. В типовом обмене ЗУП — БП такое встречается редко, но при использовании доработанных правил это первая причина, которую стоит проверить.
Если вы столкнулись с «волшебством», когда документ упорно не хочет удаляться, попробуйте следующий алгоритм совместной работы с данными:
УдалениеОбъектов), предварительно убедившись, что на него нет ссылок в финансовых документах.Такой радикальный метод помогает сбросить «кэш» версий объекта в обеих базах и восстановить корректную связь между ними. Также обязательно заглядывайте в Журнал регистрации в Бухгалтерии под пользователем, от имени которого выполняется синхронизация. Там могут быть зафиксированы ошибки типа «Объект заблокирован» или «Ошибка при вызове метода Записать()», которые не выводятся в общий интерфейс обмена, но объясняют, почему пометка не была установлена.