|
КД Перенос из 7.7 в 8.3 | ☑ | ||
---|---|---|---|---|
0
Wefast
28.03.17
✎
08:39
|
в 7.7 есть справочник Номенклатура. У него есть реквизит справочник Сертификаты.
в 8.3 в номенклатуре нет такого реквизита. Но есть справочник Сертификаты и есть регистр сведений для связи номенклатуры и сертификатов. Как правильно будет все это выгрузить? Я попробовал так: Сделал ПКО Номенклатура - Номенклатура. и ПКО Сертификаты - Сертификаты. Поставил у сертификатов приоритет 1. У номенклатуры 2. Сделал у ПКО Номенклатура ПКС Сертификат - Описание Написал Значение = Источник.Наименование. В после загрузки написал. Попытка Если Объект.Описание <> "" Тогда Сертификат = Справочники.СертификатыНоменклатуры.НайтиПоНаименованию(Объект.Описание); Если Сертификат <> Справочники.СертификатыНоменклатуры.ПустаяСсылка() Тогда РС = РегистрыСведений.ОбластиДействияСертификатовНоменклатуры.СоздатьМенеджерЗаписи(); РС.ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Товар"); РС.Номенклатура = Объект; РС.СертификатНоменклатуры = Сертификат; РС.Прочитать(); Если НЕ РС.Выбран() Тогда РС.ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Товар"); РС.Номенклатура = Объект; РС.СертификатНоменклатуры = Справочники.СертификатыНоменклатуры.НайтиПоНаименованию(Объект.Описание); РС.Записать(); КонецЕсли; КонецЕсли; КонецЕсли; Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; |
|||
1
Wefast
28.03.17
✎
12:53
|
ап
|
|||
2
Rema Dan
28.03.17
✎
13:04
|
(0) Приоритет таким образом стоит выставлять не у ПКО, а у ПВД, и конечно для каждого справочника должно присутствовать своё ПВД.
Я не помню можно ли применять при выгрузке из 7.7 выгрузку в параметры. Если да, то выгружаем ссылку на сертификат в параметр номенклатуры, а после загрузки номенклатуры связываем их в регистре. Если же выгрузить в параметр нельзя, то возможно придумать велосипед с выгрузкой кода/наименования/номера сертификата в один из текстовых реквизитов номенклатуры и потом связывать их в регистре с очисткой этого реквизита. |
|||
3
Wit77
28.03.17
✎
13:04
|
Искать по наименованию - не кошерно. И на стороне загрузки создавать объекты нужно, только если их никак не получается сформировать при выгрузке.
После выгрузки номенклатуры - проверять заполнен ли реквизит "Сертификат", если заполнен, то вызывать правило выгрузки "Сертификаты - Сертификаты" куда в качестве источника передавать значение этого реквизита. Следом вызывать правило выгрузки "РС для связи", где в качестве источника данных передавать структурой значения для заполнения регистра. В итоге у вас в конечной ХМЛ уже должны быть выгружены номенклатура, сертификат и запись регистра сведений. |
|||
4
Rema Dan
28.03.17
✎
13:12
|
(3) Идея с выгрузкой сразу записей регистра действительно приятнее и значительно быстрее при больших объёмах данных.
Можно сделать отдельный ПВД для выгрузки записей регистра. Перед обработкой ПВД собирать ТЗ с колонками ВидНоменклатуры, Номенклатура, СертификатНоменклатуры по заполненным в базе сертификатам и передавать её в ВыборкаДанных в качестве источника данных. |
|||
5
Wefast
28.03.17
✎
14:25
|
(2) с параметрами в 7.7 вроде не поработать.
выгружаю имя сертификата в описание номенклатуры. Ну я так и делаю. Но не уверен что приоритетность работает. Т.о придется сначала загрузить сертификаты. А потом уже запускать загрузку номенклатуры. (3) в 7.7 я так понял нет структуры, поэтому наверное не выйдет передать их в выгрузитьпоправилу() (4) а вот тут не понял. Такого не делал |
|||
6
Rema Dan
28.03.17
✎
14:57
|
(5)
1. Порядок выгрузки определяется в первую очередь приоритетами ПВД. 2. Там наверняка можно использовать вместо структуры что-то иное. Таблицу значений или список. 3. В ПВД регистра сведений выбирается способ выгрузки "Произвольный алгоритм" и в событии перед обработкой в переменной ВыборкаДанных собирается ТЗ каждая строка которой будет одной записью регистра. |
|||
7
Wit77
29.03.17
✎
06:32
|
(4,6) Полностью согласен.
(0) Один из основных принципов обмена в КД2 - все объекты для базы приемника должны формироваться при выгрузке в базе-источнике. Т.е. после выгрузки у вас в файле должны быть конечные объекты, которые достаточно только загрузить с минимальной обработкой на стороне приемника. При написании правил переноса смотрите на обмен с такой точки зрения. Конечно бывают исключения, когда такое сделать невозможно - такие случаи надо рассматривать индивидуально. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |