При переходе с обмена «Управление торговлей, редакция 10.3» (УТ 10.3) → «Бухгалтерия предприятия, редакция 2.0» (БП 2.0) на новую версию «Бухгалтерия предприятия, редакция 3.0» (БП 3.0) пользователи часто сталкиваются с неприятным поведением системы. В старом обмене, если у ранее перенесенного документа снимался флаг «Отражать в бухгалтерском учете», при очередной синхронизации этот документ автоматически помечался на удаление в базе-приемнике. В обмене с БП 3.0 этого не происходит: документ успешно регистрируется к обмену в УТ, но в БП никаких изменений не вносится, и документ продолжает оставаться активным и проводить движения по бухгалтерии.
В этой статье мы подробно разберем, почему возникает эта проблема, как функционирует системный механизм удаления объектов при синхронизации и как исправить правила регистрации объектов (ПРО), чтобы восстановить корректную работу обмена.
Для того чтобы понять суть проблемы, сначала проанализируем, каким образом платформа «1С:Предприятие» передает информацию об удалении или исключении объектов из обмена. В основе типового обмена лежит технология «Конвертации данных 2.1» и использование планов обмена.
Когда в базе-источнике (УТ 10.3) происходит изменение объекта, срабатывает следующий алгоритм:
ОтражатьВБухгалтерскомУчете механизм регистрации фиксирует изменение, и ссылка на документ помещается на узел плана обмена.<УдалениеОбъекта>, содержащая уникальный идентификатор (GUID) документа.ПометкаУдаления = Истина.Этот механизм безупречно работает для большинства документов, однако для некоторых ключевых документов закупки и продажи цепочка прерывается.
Проанализируем, почему стандартное поведение нарушается для документов «Поступление товаров и услуг» и «Возврат товаров от покупателя».
Дело в том, что для этих документов в правилах регистрации (ПРО) прописана сложная дополнительная логика. Разработчики используют специальные обработчики событий: При обработке и При обработке (дополнительный). Эти обработчики необходимы для сопутствующей регистрации связанных сущностей — например, счетов-фактур, документов расчетов или договоров контрагентов.
Внутри этих обработчиков выполняются запросы к базе данных. Если в тексте этих запросов отсутствует жесткое условие проверки признака ОтражатьВБухгалтерскомУчете = Истина, то происходит следующее:
<УдалениеОбъекта> в файл выгрузки XML не записывается.Чтобы восстановить логику автоматической пометки на удаление, нам потребуется внести изменения в правила регистрации объектов с помощью конфигурации «Конвертация данных 2.1».
Выполним корректировку правил регистрации по шагам:
ДокументСсылка.ПоступлениеТоваровУслуг и ДокументСсылка.ВозвратТоваровОтПокупателя.При обработке и При обработке (дополнительный).ГДЕ основного запроса.
// Пример добавления условия в запрос обработчика для Поступления товаров и услуг
Запрос.Текст =
"ВЫБРАТЬ
| Источник.Ссылка КАК Ссылка
|ИЗ
| Документ.ПоступлениеТоваровУслуг КАК Источник
|ГДЕ
| Источник.Ссылка В (&ОбъектыВыгрузки)
| И Источник.ОтражатьВБухгалтерскомУчете = ИСТИНА";
Аналогичное условие Источник.ОтражатьВБухгалтерскомУчете = ИСТИНА необходимо внедрить во все запросы обработчиков событий «При обработке» для обоих проблемных документов. После внесения изменений сохраните правила регистрации объектов в XML-файл.
После сохранения новых правил их необходимо применить к действующему обмену в базе-источнике:
Для того чтобы документы, у которых ранее уже был снят флаг БУ, наконец-то пометились на удаление в бухгалтерии, их нужно принудительно перерегистрировать к обмену. Сами по себе они больше не запишутся, так как пользователи с ними не работают.
Выполним процедуру повторной регистрации:
Операции → Обработки → Регистрация изменений для обмена).Если у вас нет возможности оперативно изменить правила регистрации в «Конвертации данных» (например, из-за отсутствия прав доступа или необходимых навыков разработки), рассмотрим обходные пути решения этой проблемы.
Если расхождения носят массовый характер, можно выровнять базы вручную непосредственно в информационной базе БП 3.0:
ОтражатьВБухгалтерскомУчете.Администрирование → Обслуживание → Корректировка данных).Да и нажмите кнопку «Изменить реквизиты».Этот способ требует регулярного контроля со стороны администратора или ведущего бухгалтера, но позволяет быстро привести учет в соответствие без программирования.