Как исправить ошибку Поле объекта не обнаружено (ПродажаКомиссия) при обмене УТ 10.3 и БП 3.0

Программист 1С v8.3 (Обычные формы) 1C:Бухгалтерия Управленческий учет Торговля и дистрибуция
← На главную

При организации обмена данными между Управлением торговлей 10.3 (УТ) и Бухгалтерией предприятия 3.0 (БП) специалисты часто сталкиваются с ситуацией, когда стабильно работающая синхронизация внезапно прерывается после очередного обновления конфигурации «Бухгалтерия предприятие». Одна из наиболее распространенных ошибок в такой ситуации — Поле объекта не обнаружено (ПродажаКомиссия). Разберем подробно причины возникновения этой проблемы и рассмотрим несколько способов ее решения: от «быстрой правки» до системного подхода.

Выясним причину возникновения ошибки

Проанализируем ситуацию. Конфигурация БП 3.0 развивается динамично, и фирма «1С» периодически проводит рефакторинг метаданных. В рассматриваемом случае в последних релизах Бухгалтерии для перечисления ВидыОперацийВозвратТоваровОтПокупателя было изменено имя одного из значений. Старое имя ПродажаКомиссия было заменено на более общее Товары.

Поскольку УТ 10.3 часто остается на старых релизах из-за большого количества доработок (как в случае автора темы), типовой механизм обмена, использующий правила конвертации объектов (КД 2.0), начинает «спотыкаться». При загрузке сообщения обмена база-приемник (БП) пытается найти в своих метаданных значение ПродажаКомиссия, не находит его и выдает ошибку, выполнение загрузки при этом полностью прекращается.

Решение 1: Ручная корректировка правил обмена (быстрый способ)

Если нам необходимо восстановить обмен в кратчайшие сроки без обновления конфигурации УТ 10.3, мы можем внести точечные изменения непосредственно в правила конвертации. Рассмотрим этот процесс по шагам.

Для начала нам необходимо извлечь текущие правила из базы. Это можно сделать через регистр сведений ПравилаДляОбменаДанными. Выполним следующие действия:

  1. В базе БП 3.0 перейдем в режим «Все функции» (или «Функции для технического специалиста») и найдем регистр сведений Правила для обмена данными.
  2. Найдем запись, соответствующую нашему обмену с УТ 10.3 (вид правил — Правила конвертации объектов).
  3. Нажмем кнопку «Сохранить правила в файл». Будет выгружен архив, внутри которого находится XML-файл (обычно CorrespondentExchangeRules.xml).

Теперь проанализируем содержимое файла. Откроем его любым текстовым редактором (например, Notepad++ или встроенным текстовым редактором 1С). Нам нужно найти блок, отвечающий за сопоставление перечисления. Найдем строку ПеречислениеСсылка.ВидыОперацийВозвратТоваровОтПокупателя.

Прокрутим файл чуть ниже до узлов сопоставления значений. Мы увидим конструкцию, подобную этой:

Значение = "ПродажаКомиссия";

Нам необходимо заменить ее на актуальное значение, которое понимает современная БП 3.0:

Значение = "Товары";

После внесения изменений сохраним файл и загрузим его обратно в тот же регистр сведений в БП 3.0, установив переключатель в положение «Правила из файла». Аналогичную операцию по замене значения рекомендуется провести и на стороне УТ 10.3, чтобы правила в обеих базах были идентичны.

Решение 2: Использование актуальных правил из дистрибутива

Фирма «1С» при выпуске обновлений БП 3.0 включает в состав поставки свежие файлы правил для обмена со старыми конфигурациями. Рассмотрим, где их найти и как применить.

Распакуем дистрибутив обновления БП 3.0 на диске. В папке с установленным шаблоном (путь вида .../1cv8/tmplt/1c/Accounting/3.0.x.x/) найдем подпапку Обмены данными, а в ней — каталог, относящийся к УТ 10.3. Там будут находиться свежие XML-файлы правил конвертации и регистрации.

Чтобы обновить правила, выполним следующие шаги в УТ 10.3:

  1. Перейдем в меню «Сервис» — «Обмен данными» — «Настройка обмена данными».
  2. Откроем нашу настройку и перейдем на закладку «Параметры обмена».
  3. Нажмем кнопку для загрузки правил и укажем путь к файлу, который мы взяли из папки обновления БП.

Важный момент: если ваша УТ 10.3 сильно изменена, типовые правила могут не учитывать ваши доработки (нетиповые реквизиты или документы). В этом случае после загрузки типовых правил их придется донастраивать в конфигурации «Конвертация данных 2.0».

Решение 3: Переход на Enterprise Data (Универсальный формат)

Разберем более современный и надежный подход. Начиная с определенных релизов (включая 10.3.52.2), в УТ 10.3 появилась поддержка обмена через EnterpriseData. В отличие от классического обмена на правилах КД 2.0, этот формат более устойчив к изменениям метаданных в приемнике.

Проанализируем преимущества этого метода:

Для настройки такого обмена в БП 3.0 при создании новой синхронизации следует выбирать вариант «Универсальный формат (Enterprise Data)». Это потребует создания новой настройки обмена «с нуля», но в долгосрочной перспективе избавит от подобных ошибок.

Дополнительные рекомендации по сопровождению обмена

Рассмотрим ситуацию, когда даже после правки правил возникают ошибки Поле объекта не обнаружено. Часто это связано с использованием COM-соединения. Если базы находятся на разных серверах или имеют разную разрядность (например, 64-битный сервер 1С и 32-битный COM-клиент), компоненты связи могут работать некорректно.

Посмотрим на альтернативные варианты транспорта данных:

  1. Обмен через сетевой каталог: Самый простой и надежный способ, не зависящий от разрядности платформ.
  2. Обмен через FTP: Удобен, если базы территориально распределены.
  3. Веб-сервисы: Позволяют организовать онлайн-обмен, но требуют публикации базы на веб-сервере. Чтобы автоматизировать этот процесс по расписанию без доработки конфигураций, применяется программа автоматического обмена данными по расписанию.

Также стоит обратить внимание на расширения конфигурации в БП 3.0. Если вы не хотите менять правила обмена, вы можете создать расширение, которое в процедуре ПриЗагрузкеОбъекта будет программно перехватывать старое значение ПродажаКомиссия и подставлять Товары. Пример логики в расширении (общий модуль или модуль объекта):


Если ИмяТипаОбъекта = "ПеречислениеСсылка.ВидыОперацийВозвратТоваровОтПокупателя" Тогда
    Если Значение = "ПродажаКомиссия" Тогда
        Значение = "Товары";
    КонецЕсли;
КонецЕсли;

Подведем итог: проблема с «отваливающимся» обменом в связке УТ 10.3 — БП 3.0 — это следствие естественной эволюции Бухгалтерии. Для решения достаточно либо точечно поправить XML-файл правил, либо перейти на более современный формат обмена Enterprise Data, который минимизирует зависимость от конкретных имен метаданных.

← На главную