Постановка задачи
В конфигурации "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. Готово!
Как намного проще в КД 2. Я такие вещи делал назад по заказу.
С Родителем в приёмнике проблем не бывает при таком варианте? Его то не перегружаете на всякий случай, предполагаете что он уже корректно заехал и создан ранее
Смутила фраза:
При таком подходе корректно будет отрабатываться только настройка Вида номенклатуры «Характеристики – Индивидуальные для номенклатуры».
Если вдруг в ERP «заведется» Вид номенклатуры с настройкой «Характеристики – Общие для вида номенклатуры», или (еще веселее) «Общие с другим видом номенклатуры» то при передаче по Вашему алгоритму вновь появившейся номенклатуры «Плитка» с харктеристикой «Желтый» в БП 3.0 будет фигурировать все тот же «Кирпич «+ «Желтый».
Что-то мне подсказывает что бухгалтера будут совсем не рады такому «оборотню» ((.
(3) Подмена GUID — на самом деле в получаемом XML «Ссылка» — это текстовое поле (пакет «ExchangeMessage» — Типы значений — Ref), которая не привязана к виду объекта метаданных, а к конкретному элементу (группе, документу). При обозначенном подходе становится возможным поиск по Уникальному идентификатору; просто GIUD (строка) характеристики теперь становится GUID (строка) номенклатуры.
Номенклатура определяется не по владельцу характеристики, а по табличным частям документа. Так что, всегда будет передан корректный «оборотень». Более того, и все реквизиты номенклатуры Приемника будут определяться только по свойствам номенклатуры из табличных частей (конечная выгрузка с полным перечнем реквизитов).