Работа с типовыми обменами в 1С часто вызывает опасения у начинающих разработчиков, особенно когда речь заходит о такой мощной, но сложной подсистеме, как Конвертация данных 2.1 (КД 2.1). В этой статье мы подробно разберем, как модифицировать обмен между Управление торговлей 10.3 и Бухгалтерия предприятия 3.0, настроить программную подмену реквизитов и защитить данные в приемнике от нежелательной перезаписи.
Прежде чем приступать к редактированию правил в Конвертации данных, нам необходимо подготовить "фундамент" — актуальные описания структур конфигураций (метаданные) и сами XML-файлы правил обмена. Поскольку конфигурация УТ 10.3 часто бывает доработанной (нетиповой), использование стандартных метаданных из поставки КД может привести к ошибкам.
Разберем процесс получения метаданных по шагам:
Конвертации данных внешнюю обработку MD82.epf.Теперь нам нужно найти сами типовые правила обмена. Как правило, в современных версиях Бухгалтерии предприятия 3.0 они хранятся внутри конфигурации. Проанализируем, где их искать:
ПланОбмена.ОбменУправлениеТорговлей103БухгалтерияПредприятия30.ПравилаОбмена или ПравилаОбменаКорреспондента.Когда все файлы готовы, откроем базу Конвертация данных 2.1 и приступим к импорту. Рассмотрим правильную последовательность действий:
Сначала обновим информацию о конфигурациях. Зайдем в справочник "Конфигурации" и создадим (или обновим) описания для УТ и БП, загрузив созданные ранее файлы метаданных через обработку "Загрузка описания конфигурации". Это критически важно, так как без этого Конвертация данных не "увидит" ваши новые реквизиты, добавленные в УТ 10.3.
Затем перейдем в меню "Сервис" — "Загрузка правил обмена". При загрузке выберем наш XML-файл правил. Важный нюанс: при загрузке система может спросить, обновлять ли существующие ПКО (Правила конвертации объектов) и ПКС (Правила конвертации свойств). Если вы загружаете правила впервые, просто соглашаемся со всеми пунктами.
Рассмотрим ситуацию, когда при выгрузке документа "Реализация товаров и услуг" нам нужно заполнить определенный реквизит в зависимости от того, какой договор выбран в документе. Для этого мы будем использовать обработчики событий внутри КД.
Найдем в дереве правил ПКО для документа "Реализация" и перейдем к списку ПКС (свойств). Найдем нужный реквизит приемника. Чтобы изменить его программно, нам нужно открыть обработчик Перед выгрузкой для этого конкретного свойства.
Проанализируем пример кода, который позволит нам реализовать логику "Реквизит -> Константа":
// В обработчике ПКС "Перед выгрузкой"
Если Источник.ДоговорКонтрагента.ВидВзаиморасчетов = Справочники.ВидыВзаиморасчетов.НайтиПоНаименованию("Особый") Тогда
Значение = "Константа_1";
Иначе
Значение = "Константа_2";
КонецЕсли;
В данном коде переменная Значение определяет то, что фактически попадет в файл выгрузки. Если мы явно присваиваем ей данные, стандартный поиск значения в Источнике (автоматическое сопоставление) игнорируется. Это позволяет гибко управлять данными "на лету".
Часто возникает задача: обмен идет из УТ в БП, и если бухгалтер изменил наименование контрагента или его адрес в базе БП, эти изменения не должны затереться при следующей синхронизации. Выясним, как это настроить в КД 2.1.
Существует два уровня настройки "незамещения":
Не замещать существующие объекты в приемнике. Если этот флаг стоит, то при обнаружении в базе БП контрагента с таким же ИНН/КПП (или GUID), система просто пропустит его и не будет обновлять ни одно поле.Не замещать значение свойства у существующих объектов в приемнике.Проанализируем ситуацию с поиском. Чтобы система поняла, что объект "существующий", должны быть правильно настроены поля поиска. Для контрагентов это обычно ИНН и КПП. Убедитесь, что галочки Поиск стоят напротив нужных реквизитов в ПКС.
После внесения правок сохраним правила в XML-файл через обработку "Выгрузка правил обмена". Теперь нам нужно "воткнуть" их обратно в типовой механизм синхронизации БП 3.0.
Посмотрим на алгоритм действий в Бухгалтерии предприятия 3.0:
Важный момент: если вы изменили логику выгрузки (например, условия по договорам), то объекты, которые уже были зарегистрированы к обмену ранее, могут не сразу применить новые правила. В таких случаях рекомендуется воспользоваться обработкой Регистрация изменений для обмена и перерегистрировать нужные документы или справочники.
Разберем вопрос выбора версии Конвертации данных. Хотя существует более современная Конвертация данных 3.0, для обменов с участием УТ 10.3 она не подходит. КД 3.0 работает по технологии XDTO и ориентирована на конфигурации, построенные на современных версиях БСП (Библиотеки стандартных подсистем). УТ 10.3 — это конфигурация старого поколения на "обычных формах", поэтому использование КД 2.1 здесь является единственно верным и технически обоснованным решением.
В случае возникновения сложностей при отладке программного кода в обработчиках, рекомендуем использовать механизм отладки выгрузки. В КД 2.1 можно сформировать специальный модуль отладки, вставить его во внешнюю обработку и запустить в УТ 10.3. Это позволит пройти по каждой строчке вашего кода Значение = ... и увидеть, как заполняются переменные в реальном времени.