При организации обмена данными между Управлением торговлей 10.3 (УТ) и Бухгалтерией предприятия 3.0 (БП) специалисты часто сталкиваются с ситуацией, когда стабильно работающая синхронизация внезапно прерывается после очередного обновления конфигурации «Бухгалтерия предприятие». Одна из наиболее распространенных ошибок в такой ситуации — Поле объекта не обнаружено (ПродажаКомиссия). Разберем подробно причины возникновения этой проблемы и рассмотрим несколько способов ее решения: от «быстрой правки» до системного подхода.
Проанализируем ситуацию. Конфигурация БП 3.0 развивается динамично, и фирма «1С» периодически проводит рефакторинг метаданных. В рассматриваемом случае в последних релизах Бухгалтерии для перечисления ВидыОперацийВозвратТоваровОтПокупателя было изменено имя одного из значений. Старое имя ПродажаКомиссия было заменено на более общее Товары.
Поскольку УТ 10.3 часто остается на старых релизах из-за большого количества доработок (как в случае автора темы), типовой механизм обмена, использующий правила конвертации объектов (КД 2.0), начинает «спотыкаться». При загрузке сообщения обмена база-приемник (БП) пытается найти в своих метаданных значение ПродажаКомиссия, не находит его и выдает ошибку, выполнение загрузки при этом полностью прекращается.
Если нам необходимо восстановить обмен в кратчайшие сроки без обновления конфигурации УТ 10.3, мы можем внести точечные изменения непосредственно в правила конвертации. Рассмотрим этот процесс по шагам.
Для начала нам необходимо извлечь текущие правила из базы. Это можно сделать через регистр сведений ПравилаДляОбменаДанными. Выполним следующие действия:
Правила для обмена данными.CorrespondentExchangeRules.xml).Теперь проанализируем содержимое файла. Откроем его любым текстовым редактором (например, Notepad++ или встроенным текстовым редактором 1С). Нам нужно найти блок, отвечающий за сопоставление перечисления. Найдем строку ПеречислениеСсылка.ВидыОперацийВозвратТоваровОтПокупателя.
Прокрутим файл чуть ниже до узлов сопоставления значений. Мы увидим конструкцию, подобную этой:
Значение = "ПродажаКомиссия";
Нам необходимо заменить ее на актуальное значение, которое понимает современная БП 3.0:
Значение = "Товары";
После внесения изменений сохраним файл и загрузим его обратно в тот же регистр сведений в БП 3.0, установив переключатель в положение «Правила из файла». Аналогичную операцию по замене значения рекомендуется провести и на стороне УТ 10.3, чтобы правила в обеих базах были идентичны.
Фирма «1С» при выпуске обновлений БП 3.0 включает в состав поставки свежие файлы правил для обмена со старыми конфигурациями. Рассмотрим, где их найти и как применить.
Распакуем дистрибутив обновления БП 3.0 на диске. В папке с установленным шаблоном (путь вида .../1cv8/tmplt/1c/Accounting/3.0.x.x/) найдем подпапку Обмены данными, а в ней — каталог, относящийся к УТ 10.3. Там будут находиться свежие XML-файлы правил конвертации и регистрации.
Чтобы обновить правила, выполним следующие шаги в УТ 10.3:
Важный момент: если ваша УТ 10.3 сильно изменена, типовые правила могут не учитывать ваши доработки (нетиповые реквизиты или документы). В этом случае после загрузки типовых правил их придется донастраивать в конфигурации «Конвертация данных 2.0».
Разберем более современный и надежный подход. Начиная с определенных релизов (включая 10.3.52.2), в УТ 10.3 появилась поддержка обмена через EnterpriseData. В отличие от классического обмена на правилах КД 2.0, этот формат более устойчив к изменениям метаданных в приемнике.
Проанализируем преимущества этого метода:
EnterpriseData под новые метаданные.Для настройки такого обмена в БП 3.0 при создании новой синхронизации следует выбирать вариант «Универсальный формат (Enterprise Data)». Это потребует создания новой настройки обмена «с нуля», но в долгосрочной перспективе избавит от подобных ошибок.
Рассмотрим ситуацию, когда даже после правки правил возникают ошибки Поле объекта не обнаружено. Часто это связано с использованием COM-соединения. Если базы находятся на разных серверах или имеют разную разрядность (например, 64-битный сервер 1С и 32-битный COM-клиент), компоненты связи могут работать некорректно.
Посмотрим на альтернативные варианты транспорта данных:
Также стоит обратить внимание на расширения конфигурации в БП 3.0. Если вы не хотите менять правила обмена, вы можете создать расширение, которое в процедуре ПриЗагрузкеОбъекта будет программно перехватывать старое значение ПродажаКомиссия и подставлять Товары. Пример логики в расширении (общий модуль или модуль объекта):
Если ИмяТипаОбъекта = "ПеречислениеСсылка.ВидыОперацийВозвратТоваровОтПокупателя" Тогда
Если Значение = "ПродажаКомиссия" Тогда
Значение = "Товары";
КонецЕсли;
КонецЕсли;
Подведем итог: проблема с «отваливающимся» обменом в связке УТ 10.3 — БП 3.0 — это следствие естественной эволюции Бухгалтерии. Для решения достаточно либо точечно поправить XML-файл правил, либо перейти на более современный формат обмена Enterprise Data, который минимизирует зависимость от конкретных имен метаданных.