Конвертация 3.0. Пример доработки: два справочника в один

Публикация № 1060904

Обмен - Обмен через XML

конвертация 3.0 КД3

28
Доработка правил конвертации путем расширения конфигурации: номенклатура и характеристика (ERP) в номенклатуру (БП).

Постановка задачи

В конфигурации "1С: ERP. Управление предприятием, ред. 2.4" (далее "Источник") ведется оперативный учет. Формирование бухгалтерской отчетности осуществляется в конфигурации "1С: Бухгалтерия предприятием, ред. 3.0" (далее "Приемник"). Обмен данными между Источником и Приемником односторонний. При переносе требуется формировать номенклатурные позиции Приемника как совокупность номенклатуры и характеристики (если ведется учет по характеристикам) Источника: 

Источник Приемник
Номенклатура Характеристика Номенклатура
код наименование наименование код наименование
ЦБ-00006158 Кирпич гладкий белый 00061580001 Кирпич, гладкий белый
ЦБ-00006158 Кирпич желтый 00061580002 Кирпич, желтый

 

Решение задачи

1. Так как "конечной точкой" трансформации рассматриваемых объектов Источника является справочник "Номенклатура", необходимо обеспечить последовательную нумерацию элементов справочника "Характеристики номенклатуры" (реквизит "Код" отсутствует в Источнике). Один из вариантов решения проблемы: добавление реквизита "БИТ_Код" для справочника "ХарактеристикиНоменклатуры" Источника. Заполнение реквизита (в том числе автоинкремент) оформляем путем расширения метода ПриЗаписи(). В общем случае, значение реквизита формируется как код номенклатурной позиции без используемого префикса ("ЦБ-00006158" ---> "0006158") и номер по порядку используемой в связке с номенклатурой характеристики ("0001"). Длина номера (11 символов) соответствует параметрам кодов Приемника.

Наименования элементов справочника Применика формируются путем конкатенации наименования номенклатуры и наименования характеристики.

 

2. Расширяем процедуры менеджера обмена через универсальный формат (редакция 1.6).

2.1. Правила обмена практически всех документов конфигурации Источника, имеющие в табличных частях набор реквизитов "Номенклатура и характеристика", ссылаются на процедуру ЗаполнитьХарактеристикуСтрокиТЧ. Изменим процедуру таким образом, чтобы вместо ссылки на элемент справочника "Номенклатура" передавалась структура, аналогичная ссылке, но со значениями реквизитов, которые нам необходимы (код, наименование, GUID):

 
 ЗаполнитьХарактеристикуСтрокиТЧ

 

2.2. Изменим правила обработки данных для справочника "Номенклатура":

 
 ПОД_Справочник_Номенклатура_Отправка_ПриОбработке
 
 ПКО_Справочник_Номенклатура_Отправка_ПриОтправкеДанных

 

2.3. При выгрузке документов Источника все "подчиненные" объекты передаются как ссылки (только ключевые свойства), даже если сами элементы справочника "Номенклатура" и были выгружены. Таким образом, наши номенклатурные позиции "потеряют" ряд необходимых свойств (вид номенклатуры, ставка НДС и т.п.). Исправим подобное поведение. Выгрузим полные сведения о номенклатурных позициях с характеристиками. Для этого проанализируем состав выгруженных данных и дополним файл обмена с помощью принудительного вызова ОбменДаннымиXDTOСервер.ВыгрузкаОбъектаВыборки(...):

 
 БИТ_ПослеКонвертации

 

3. Готово!

28

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. Поручик 4291 16.05.19 11:38 Сейчас в теме
Как намного проще в КД 2. Я такие вещи делал назад по заказу.
YPermitin; +1 Ответить
2. kembrik 3 17.05.19 14:15 Сейчас в теме
С Родителем в приёмнике проблем не бывает при таком варианте? Его то не перегружаете на всякий случай, предполагаете что он уже корректно заехал и создан ранее
3. blindcat2006 66 20.05.19 08:19 Сейчас в теме
Смутила фраза:
изменим GUID обрабатываемой номенклатурной позиции (для поиска по уникальному идентификатору в Приемнике). Теперь в "Ссылка" будет храниться уникальный идентификатор характеристики

При таком подходе корректно будет отрабатываться только настройка Вида номенклатуры "Характеристики – Индивидуальные для номенклатуры".
Если вдруг в ERP "заведется" Вид номенклатуры с настройкой "Характеристики – Общие для вида номенклатуры", или (еще веселее) "Общие с другим видом номенклатуры" то при передаче по Вашему алгоритму вновь появившейся номенклатуры "Плитка" с харктеристикой "Желтый" в БП 3.0 будет фигурировать все тот же "Кирпич "+ "Желтый".
Что-то мне подсказывает что бухгалтера будут совсем не рады такому "оборотню" ((.
4. forusing 41 24.05.19 12:11 Сейчас в теме
(3) Подмена GUID - на самом деле в получаемом XML "Ссылка" - это текстовое поле (пакет "ExchangeMessage" - Типы значений - Ref), которая не привязана к виду объекта метаданных, а к конкретному элементу (группе, документу). При обозначенном подходе становится возможным поиск по Уникальному идентификатору; просто GIUD (строка) характеристики теперь становится GUID (строка) номенклатуры.
Номенклатура определяется не по владельцу характеристики, а по табличным частям документа. Так что, всегда будет передан корректный "оборотень". Более того, и все реквизиты номенклатуры Приемника будут определяться только по свойствам номенклатуры из табличных частей (конечная выгрузка с полным перечнем реквизитов).
Оставьте свое сообщение