Имя: Пароль:
1C
 
Конвертация
0 repin_mike
 
18.12.18
09:15
В базе-источнике есть Документ, в ПВД описаны только эти документы без справочников.

У Документа один-единственный реквизит Справочник А с одним реквизитом, тип у этого реквизита - справочник Б.
Справочник Б имеет много реквизитов, в том числе ссылочных, и много табличных частей.


В базе-приёмнике есть такой же самый документ, и у него тоже один реквизит-справочник, который полностью повторяет справочник Б из источника.

Задача: нужно чтобы перегрузились документы, и в документах базы-приёмника у всех элементов справочника Б был такой же гуид, как и у справочника А в документе из источника.


Пожалуйста подскажите как бы вы решали такую задачу, на уровне детсада, я в КД не особо. Промучался вчера весь день. Если конвертировать из Б в Б, то всё замечательно, но я не нашёл способа подменить уникальный идентификатор на нужный из А. Если конвертировать из А в Б, то гуид правильный, но непонятно откуда взять данные.
1 Glup0sti
 
18.12.18
11:20
Способ 1
В единственном ПКС (ПКО СправочникаБ - СправочникаБ) документа Перед выгрузкой:
Значение = Источник.РеквизитСправочникаА.РеквизитСправочникаБ;

В ПКО СправочникаБ - СправочникаБ снимаешь все поля поиска и поиск делаешь только по полям поиска:)(узел ссылки создаешь самостоятельно в обработчике Перед выгрузкой):

УзелКоллекцииСвойств.ЗаписатьНачалоЭлемента("Свойство");
        УстановитьАтрибут(УзелКоллекцииСвойств, "Имя", "{УникальныйИдентификатор}");
                    
        Если НЕ ВыполнитьОбменДаннымиВОптимизированномФормате Тогда
            УстановитьАтрибут(УзелКоллекцииСвойств, "Тип", "Строка");
        КонецЕсли;
                    
        одЗаписатьЭлемент(УзелКоллекцииСвойств, "Значение", ГУИД_А);
        УзелКоллекцииСвойств.ЗаписатьКонецЭлемента();

Способ 2:
делаешь ПКО СправочникаА - СправочникаБ
Добавляешь все нужные ПКС и в обработчик перед выгрузкой:
Значение = Источник.РеквизитСправочникаБ[ИмяРеквизита];
2 repin_mike
 
18.12.18
11:43
(1) Спасибо
Я сейчас пытаюсь сделать по способу
В ПКО справочникБ-СправочникБ добавил параметр, в него при выгрузке пишу уникальный идентификатор справочника А. А после загрузки соответственно пытаюсь у созданного Объект подменить уникальный идентификатор из параметра. Такая схема жизнеспособна? У меня как раз подмена гуида не получается пока.
3 Glup0sti
 
18.12.18
11:43
Стоп, самый главный вопрос КД 2 или 3?
я написал для кд 2
4 Glup0sti
 
18.12.18
11:47
(2) подменять ты должен узел ссылки в xml, либо
способ 3:
с параметром в обработчике "поля поиска" искать по гуид и после загрузки устанавливать гуид для новых
5 repin_mike
 
18.12.18
11:50
(4) КД2
Метод в (2) нерабочий, у справочника Б уид подменился, но в самом документе ссылки стоят неправильные
6 Glup0sti
 
18.12.18
11:58
(5) Прочитай внимательнее, какие действия нужно сделать, чтобы в ПКО СправочникБ - СправочникБ  подменить ссылку на справочник А (способ 1)