Всем привет!
Не скажу, что активно программирую переносы документов и справочников. Было дело в 2011-2012 годах - активно программировал, с тех пор сохранилась работа https://infostart.ru/1c/tools/103008/.
Сейчас решил задачу, пишу статью - делаю зарубку на память.
1. Есть некоторые особенности в разработке правил обмена на базе Конвертации Данных 2.1: например, если имя правила не задано, то будет подобрано и использовано правило обмена согласно типу Источника.
Если Владелец характеристики из рисунка выше будет иметь тип СправочникСсылка.Номенклатура, и будет задано единственное правило переноса (конвертации/обмена) справочника Номенклатура, то такие правила будут работать корректно.
Как только вы добавите новое правило, например, зададите правило для создания одной конкретной услуги в базе -приемнике (см. рис. ниже) - у вас сразу "посыпется" обмен.
Скажем так, при переносе Владельца характеристики будет подставляться именно эта услуга. Чтобы избежать ошибок, нужно для правила переноса Владельца прописать указание, по какому правилу делать перенос - используя функцию ВыгрузитьПоПравилу().
ВыгрузитьПоПравилу() - функция это или процедура - об этом ниже.
Еще раз, если в конфигурации «Конвертация данных 2.1» создано два правила конвертации одного объекта (два ПКО для одного типа объекта), то необходимо будет в каждом правиле конвертации свойств прописать конкретное ПКО: указать имя соответствующего ПКО можно двумя способами - через функцию ВыгрузитьПоПравилу() или используя параметр обработчика события ИмяПКО (подробнее об этом ниже).
2. Рассмотрим другой пример - имеется правило переноса Счет-Фактуры Выданной, имеющей реквизит Документ-основание смешанного типа.
Также известно, что документ "Реализация товаров" в зависимости от вида договора - с комиссионером или на продажу - должен выгружаться в разные документы. Для вида "С комиссионером" - в документ "Передача товаров хранителю (комиссионеру)". Для вида "На продажу" - в документ "Реализация товаров и услуг".
В таком случае правильно будет прописать правило выгрузки реквизита Документ-Основание таким образом - указав в явном виде ИмяПКО.
Для остальных типов документов-оснований задавать Правило конвертации необязательно в явном виде - будет подобрано правило согласно типу документа. Подразумевается, что такое правило однозначно задано для каждого типа документа-основания.
3. Иногда надо, чтобы объект выгрузился полностью по своему правилу обмена, при этом на основании него должен будет создаться еще один объект. В таком случае также нужно использовать вспомогательную функцию ВыгрузитьПоПравилу().
Сколько и каких имеются вспомогательных функций, можно ли написать свою вспомогательную функцию или процедуру - об этом ниже.
В данном случае, обязательным условием является вызов функции ВыгрузитьПоПравилу() по событию "После выгрузки в файл". Причина указана в описании к обработчику.
4. На ИТС есть раздел, посвященный Конвертации Данных 2.1 - https://its.1c.ru/db/metod8dev#browse:13:-1:3199:3210:3219
Из него можно детально узнать: общие принципы работы с Конвертацией данных 2.1, как использовать обработчики событий с описанием примеров, как отлаживать обработчики правил обмена, можно скачать дистрибутив Конвертации данных 2.1.
5. Отладка правил обмена базируется на универсальной обработке "Универсальный обмен данными в формате XML".
После установки дистрибутива - все вспомогательные файлы находятся в одной папке - см. рис.
Есть внешняя обработка (Универсальный обмен данными в формате XML) как для обычных форм, так и для управляемых форм. Есть встроенная обработка - встроенная в конфигурации - во многие типовые и отраслевые конфигурации.
Если у вас не встроена или встроена старая версия, можете обновить ее самостоятельно.
Так вот, в модуле этой универсальной обработки имеется вспомогательная функция ВыгрузитьПоПравилу(), модуль открыт для просмотра и редактирования. Можете добавить свои вспомогательные функции - не забудьте их встроить потом в конфигурацию.
6. В конфигурации Конвертация данных 2.1 имеется Сервисная функция "Сравнение правил обмена" - в окне разработки правил обмена есть меню Сервис. Для отображения сравнений надо сначала поставить галочки в Настройках, затем нажать Обновить.
7. Есть большая разница между отладкой и настройкой правил в двух случаях:
- когда мы загружаем правила обмена с предварительной загрузкой метаданных конфигурации Источника и Приемника;
- когда мы загружаем правила обмена без предварительной загрузки метаданных конфигурации Источника и Приемника.
В первом случае, при загрузке метаданных конфигурации Источника и Приемника загружаются дополнительные сведения по объектам, которые могут быть уже использованы в загружаемых в Правилах обмена.
8. Вам пригодится старая добрая консоль запросов - я использую типовую. Например, для поиска пустых правил ПКО для ПКС, чтобы в явном виде прописать имя правила ПКО для ПКС. В данном примере надо искать пустые ПКО для смешанных типов Источника. Для примитивных типов Источника ПКО задавать не обязательно.
На этом все. Всем добра!
С пользой для клиентов, Рустем
Подписывайтесь, дарите донаты !