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