Имя: Пароль:
1C
1C 7.7
v7: КД 2.1 Создание объектов в приемнике, не существующий в источнике
0 vadim777
 
08.04.17
18:01
Из 7-ки в 8-ку переносится справочник Организации.
В 7-ке в этом справочнике миллион реквизитов, которые нужно сконвертировать в справочник НалоговыеИнспекции (которого в источнике нет), и в регистр КодыОрганизации. Причем в регистре КодыОрганизации присутствует реквизит НалоговаяИнспекция типа СправочникСсылка.НалоговыеИнспекции.
Как сделать такой перенос?
1 mistеr
 
08.04.17
18:11
(0) В ПВД формируешь нужные объекты и вызываешь ВыгрузитьПоПравилу().
2 vadim777
 
08.04.17
18:15
(1) Именно в ПВД? По какому событию? А в ПКО нельзя?
3 mistеr
 
08.04.17
18:45
(2) Да как удобно. В ПослеВыгрузки, например.
Можно и в ПКО.
4 Vlad_69
 
08.04.17
18:55
Думается, можно и в ПКО. Семерка же умеет в ИсходящиеДанные?
ЕМНИП, там вместо Структуры через СписокЗначений передается.

В ПКС реквизита, который станет полем "Наименование" для справочника НалоговыеИнспекции, в его обработчик "ПередВыгрузкой" затолкать в ИсходящиеДанные остальные реквизиты для этого справочника, а уже, в свою очередь, в ПКО для всего справочника НалоговыеИнспекции всё, кроме наименования, получать из ВходящиеДанные.

(как-то так, навскидку).
5 vadim777
 
08.04.17
19:19
(4) Создать справочник НалоговыеИнспекции в приемнике получилось: в ПКО ОРганизации, в событие ПриВыгрузке, вставил код:
СЗ = СоздатьОбъект("СписокЗначений");
СЗ.ДобавитьЗначение(СокрЛП(Источник.ОтделНалоговойИнспекции),"Наименование");
СЗ.ДобавитьЗначение(1,"ТипДПИ");
СЗ.ДобавитьЗначение(54,"КодАдмРайона");
СЗ.ДобавитьЗначение("Ворошиловский","НаименованиеАдмРайона");
СЗ.ДобавитьЗначение("г.Донецк","Адрес");
СЗ.ДобавитьЗначение(СокрЛП(Источник.ЕГРПОУНалоговойинспекции),"ЕДРПОУ");
СЗ.ДобавитьЗначение(СокрЛП(Источник.КодНалоговойИнспекции),"КодДляПоиска");
ВыгрузитьПоПравилу( , ,СЗ , , "НалоговыеИнспекции");
А как теперь ссылку на выгруженный справочник присвоить реквизиту НалоговаяИнспекция регистра КодыОрганизаций?
6 Vlad_69
 
08.04.17
19:45
Перенос разовый?
Если да, то можно забить на оптимизацию, и сделать второе ПКО для справочника Налоговые инспекции:
ОбъектИсточник - Пусто, ОбъектПриемник = НалоговыеИнспекции.
ПКС:
Источник - Пусто, Приемник - КодНалоговой (или как этот реквизит у вас называется).
В обработчике этого ПКС "ПередВыгрузкой":
Значение=Источник;

И второе ПКО для Организации:
ОбъектИсточник - Организации, ОбъектПриемник - КодыОрганизаций.

ПКС в нем соответственно только для полей-измерений, ресурсов и реквизитов регистра.
Измерение там какое - "Организация"? Значит, в ПКС для него Источник - Организация, Приемник - соответственно. ПКО для этого ПКС - _первое_ ПКО для Организаций.
А для реквизита НалоговаяИнспекция ПКС такое:
Источник - КодНалоговой, Приемник - НалоговаяИнспекция, и ссылка на ПКО - _второе_ ПКО для справочника НалоговыеИнспекции.

(где-то в этом духе)
7 Vlad_69
 
08.04.17
19:48
Вдогонку:
Соответственно, в настройках для второго ПКО "НалоговыеИнспекции":
Включить галку "Не создавать новый объект в приемнике, если он не найден".
И в его ПКС - "Поиск объекта при загрузке по свойству".

Ну, и убедиться, что по приоритету ПКО расставлены как надо.
8 mistеr
 
09.04.17
10:10
(5) Присваивай сам объект (СЗ). Ссылку в приемнике КД сама поставит.
9 vadim777
 
11.04.17
11:40
(6,7) Спасибо за подсказку со вторым ПКО для НалоговойИнспекции, все получилось.