При настройке синхронизации данных между конфигурациями «1С:Управление торговлей» и «1С:Розница» специалисты часто сталкиваются со специфическим поведением обмена: принудительно зарегистрированные документы ПриходныйКассовыйОрдер (ПКО) упорно не хотят переноситься в базу-приемник. Более того, при анализе файла выгрузки XML вместо ожидаемых данных обнаруживаются лишь загадочные строки удаления объектов.
Даже если разработчик заходит в программу «Конвертация данных 2.1» и комментирует жесткие ограничения в правилах конвертации объектов (ПКО), это не приносит желаемого результата. Давайте подробно разберем по шагам, почему так происходит, как функционируют механизмы регистрации изменений Библиотеки стандартных подсистем (БСП) и как правильно решить эту задачу.
Проанализируем типичную ситуацию. В правилах конвертации свойств для документа ПриходныйКассовыйОрдер в событии «Перед выгрузкой» изначально прописан следующий код:
Если ТипЗнч(Источник.ДокументОснование) <> Тип("ДокументСсылка.ВыемкаДенежныхСредствИзКассыККМ") Тогда
Отказ = Истина;
КонецЕсли;
Казалось бы, достаточно закомментировать эти строки в правилах конвертации данных (КД), обновить правила в узлах обмена и запустить регистрацию заново. Однако на практике в XML-файле обмена вместо структуры документа мы продолжаем видеть строки следующего вида:
<УдалениеОбъекта УникальныйИдентификатор="b0d319be-f879-11e8-b39d-000c292bf9da" ТипИсточника="ДокументСсылка.ПриходныйКассовыйОрдер" ТипПриемника="ДокументСсылка.ПриходныйКассовыйОрдер"/>
Выясним истинную причину этого поведения и рассмотрим правильный алгоритм решения проблемы.
Для того чтобы понять логику платформы 1С, необходимо разграничить два независимых механизма: Правила регистрации объектов (ПРО) и Правила конвертации данных (ПКД).
Когда мы принудительно регистрируем документы с помощью обработки «Регистрация изменений для обмена данными», мы всего лишь записываем ссылку на объект в таблицу регистрации изменений конкретного плана обмена. Но в момент непосредственного выполнения синхронизации в работу вступает программный движок БСП.
Перед тем как передать объект на конвертацию, БСП всегда проверяет его на соответствие правилам регистрации. Если объект зарегистрирован к выгрузке, но по своим реквизитам (в нашем случае — из-за отсутствия нужного заполненного реквизита ДокументОснование) он не удовлетворяет условиям правил регистрации, система делает следующий вывод:
УдалениеОбъекта.Именно поэтому простое редактирование правил конвертации (удаление проверки в ПКО) не решает проблему. Нам в обязательном порядке необходимо скорректировать правила регистрации.
В процессе анализа правил обмена в КД 2.1 можно заметить, что некоторые правила конвертации свойств (например, ПКС для ДокументОснование) подсвечиваются мягким желтым (или кремовым) цветом. Это важный визуальный маркер среды разработки:
Желтое выделение строки в иерархии КД означает, что для данного свойства или объекта написан и активирован индивидуальный программный обработчик (например, «Перед выгрузкой», «При выгрузке» или «После выгрузки»). Это сигнализирует разработчику, что стандартный перенос свойства переопределен вручную и логику его работы нужно искать внутри событий этой строки.
Прежде чем отключать проверки, давайте проанализируем, зачем разработчики фирмы «1С» заложили такое жесткое ограничение в типовые конфигурации.
В концепции совместного использования систем «1С:Управление торговлей» и «1С:Розница» кассовые книги в торговых точках (Розница) и управляющем офисе (УТ) ведутся обособленно. Обычные кассовые ордера не должны мигрировать напрямую, чтобы избежать путаницы и задвоения кассовой отчетности.
Единственным сквозным процессом является инкассация (выемка денег). Когда кассир в магазине делает выемку, в Рознице фиксируется документ ВыемкаДенежныхСредствИзКассыККМ. На его основании в центральном офисе (УТ) оформляется приход в кассу управляющей организации. Именно под эту бизнес-логику и настроен жесткий отбор: мигрируют только те ПКО, которые жестко привязаны к процессу розничной выемки.
Если ваши бизнес-процессы требуют переноса всех документов ПКО без исключения, перейдем к технической части реализации этой задачи.
Для решения проблемы нам потребуется изменить правила регистрации объектов (ПРО) и загрузить их обратно в информационную базу. Рассмотрим этот процесс подробно.
Перейдите в режим администрирования синхронизации данных в вашей базе «1С:Управление торговлей»:
.xml на ваш локальный диск.Запустите информационную базу «Конвертация данных 2.1»:
ДокументСсылка.ПриходныйКассовыйОрдер.ДокументОснование или жесткое ограничение по типу источника.Вернитесь в базу «1С:Управление торговлей» и выполните обратную операцию:
Важно понимать, что система БСП уже запомнила предыдущие отказы и пометила объекты к удалению. Чтобы сбросить кэш и принудительно заставить обновить очередь выгрузки, выполните следующие действия:
ПриходныйКассовыйОрдер, которые зависли в очереди.После выполнения этих шагов БСП перестанет перехватывать выгрузку документов, правила конвертации отработают штатно, и все ваши ПКО без документов-оснований успешно появятся в информационной базе «1С:Розница».