Данная задача возникает, когда необходимо перенести справочники между конфигурациями у которых различается количество уровней (например, количество уровней в справочнике «Номенклатура» в конфигурации «Торговля и Склад» — 5, а в конфигурации «Бухгалтерия» — 4).
Самое простое решение — отбросить реквизит «Родитель» элементов справочника при выгрузке, но есть способ элегантнее. В данном случае мы не обсуждаем возможность изменения структуры справочника в базе-приемнике конфигурации «1С:Бухгалтерия».
Т.к. количество уровней в целевой конфигурации на 1 меньше, придется пожертвовать одним уровнем исходной конфигурации. Как правило это будет подгруппа уровня 4. Конечно, возможна ситуация, когда на Вашем предприятии каждый уровень имеет определенную семантику, тогда решение о том какой уровень отбросить надо принимать по ситуации.
Итак, как избавиться от подгруппы уровня №4? Разделим все множество элементов справочника на два множества:
- находящиеся на уровне 5,
- и находящиеся на уровне меньше 5-го.
Для этих двух групп создаем правила выгрузки:
Пятый уровень иерархии (вернее более четвертого)…
…и
Уровень иерархии 4 и меньше.
Для каждого из данных правил конвертации определяем условия выгрузки. Соответственно:
…и:
Для элементов, которые удовлетворяют первому правилу (уровень оказался менее 5) состав правила конвертации объекта обычен, в части конвертации реквизита «Родитель»:
А для элементов с уровнем более 5 преобразуем реквизит «Родитель»:
Вот и все. При загрузке элементы пятого уровня попадут в четвертый, группы четвертого уровня перенесены не будут.
Дополнение: Хотя, конечно, данное решение имеет и свои недостатки. Например, если мы выгружаем какие-либо документы имеющие реквизит «Номенклатура» — придется явно указывать по какому из двух правилу конвертировать данный реквизит, а для этого предварительно вычислять его уровень. Это же верно и для случая, когда выгружаем элементы переданные в качестве параметра форму выгрузки.
Фигасе статью сократил. 😉 В результате, утерян смысл предложенного решения.
По сути — изобретен велосипед. Достаточно посмотреть в типовые правила и увидеть простое решение.
В ПКА "Родитель —> Родитель" написать скрипт:
Показать полностью
При таком решении, разница между количеством уровней справочников может быть больше одного.