Имя: Пароль:
1C
1С v8
КД. Перенос данных 7.7 -> 8.2
0 Невский Александр
 
14.07.11
18:51
Написал правила обмена из 7.7 в 8.2
Но в справочнике контрагенты в 7.7 есть реквизит "ЮрФизЛицо", тип - "Справочник". При переносе контрагента я хочу дополнять справочник в 8.2 данными:
- если ЮрФизЛицо - ссылка на справочник "ФизЛица" в 7.7. то переносить из него ИНН и документ, удост. личность
- если ссылка на справочник "ЮрЛица" в 7.7, то переносить ИНН и ОКПО

Я понимаю, что для этого мне нужно дополнительно добавить 2 ПКО (ФизЛица -> Контрагенты, и ЮрЛица -> Контрагенты), и потом вызывать через ВыгрузитьПоПравилу, но как мне определить вид справочника в 7.7?

Пробовал делать так: в обработчике После выгрузки
добавлял

//СсылкаНаФизЛиц_1 = СоздатьОбъект("Справочник.ФизЛица");
//СсылкаНаЮрЛиц_1 = СоздатьОбъект("Справочник.ЮрЛица");

   
   //СсылкаНаФизЛиц = СсылкаНаФизЛиц_1.НайтиПоНаименованию(Источник.Наименование);

   //Если СсылкаНаФизЛиц.Выбран() = 1 Тогда
   //    
   //    ВыгрузитьПоПравилу(СсылкаНаФизЛиц,
   //                        ,
   //                        ,
   //                        ,
   //                        "ФизЛицаВКонтрагенты",
   //                        ,
   //                        ,
   //                        );
   //    
   //КонецЕсли;
//Иначе
   
//    ИмяПКО = "ЮрЛицаВКонтрагенты";
   
   //СсылкаНаЮрЛиц = СсылкаНаЮрЛиц_1.НайтиПоНаименованию(Источник.Наименование);

   //Если СсылкаНаЮрЛиц.Выбран() = 1 Тогда
   //    
   //    ВыгрузитьПоПравилу(СсылкаНаЮрЛиц,
   //                        ,
   //                        ,
   //                        ,
   //                        "ЮрЛицаВКонтрагенты",
   //                        ,
   //                        ,
   //                        );
   //    
   //КонецЕсли;
//КонецЕсли;    

Но при выгрузке из 7.7 выдает ошибку
1 Aleksey
 
14.07.11
18:56
зачем?
В ПКС ОКПО пишешь
Если Источник.ЮрФизЛицо.Вид()="ФизЛица" тогда
 Значение="";
Иначе
 Значение=Источник.ЮрФизЛицо.ОКПО ;
КонецЕсли;

Аналогично с ИНН

Документ,, там помоему через РС в 8-ке сделан
Так что после выгрузке дописываешь выгрузкуПоПравилу этого РС
2 Aleksey
 
14.07.11
19:00
Т.е. типа

если Источник.ЮрФизЛицо.Вид()="ФизЛица" тогда
  ИсходящиеДанные = Новый СписокЗначений();
  ИсходящиеДанные.ДобавитьЗначение(...);

  ВыгрузитьПоПравилу( , , ИсходящиеДанные, , "ПаспортныеДанныеФизЛиц");
КонецЕсли;
3 Невский Александр
 
14.07.11
19:13
В ПКС для ИНН написал вот так:

Если Источник.ЮрФизЛицо.Выбран() = 1 Тогда
   Если Источник.ЮрФизЛицо.Вид()="ФизЛица" ИЛИ  Источник.ЮрФизЛицо.Вид()="ЮрЛица" Тогда
       Значение = Источник.ЮрФизЛицо.ИНН;
   КонецЕсли;
КонецЕсли;

выводит ошибку при выгрузке из 7.7 (через универсальную выгрузку данных XML)
4 Aleksey
 
14.07.11
19:20
конечно будет ошибка, потому что 7-ка не понимает правила написанные в кд2. Т.е. вместе с правилами нужно выгружать текст модуля для обработки выгрузки (сама обработка идет в комплекте с кд)
5 Невский Александр
 
14.07.11
19:40
А можно поподробнее? Что за обработка? :)
Потому что сегодня бился с тем, что код 7.7 КД2 правда не воспринимает
6 Aleksey
 
14.07.11
19:44
(5) Ну хотя бы погугли особенности использования КД2 с 7-кой

А так V77Exp.ert идет с КД. Нужно заменить модуль обработки на тот, что сформирует КД при выгрузки правил (есть там галочка выгружать текст обработки)
7 MatrosoV AleXXXand_R
 
15.07.11
08:50
Aleksey, спасибо :)
У меня вот такой вопрос еще остался - мне теперь из справочников ФизЛица и ЮрЛица и 7.7 (реквизиты и там и там - ЮрАдрес и ФактАдрес) нужно перекинуть в 8.2, РС "Контактная информация"

Я написал - как в (2)

ПКО "КонтакнаяИнформация" - источник пустой, приемник - регистр "Контактная информация". Данные выгрузились нормально, но в 8.2 - в режиме отладки я посмотрел - данных там этих нет. Как бы мне передать список нужных мне значений из 7.7 в 8.2 и уже в 8.2 их обработать и добавить записи в регистр сведений?

Сейчас сделал вот так - в контрагенте в ПКО, в обработчике ПослеЗаписи добавил:

Если Источник.ЮрФизЛицо.Выбран()=1 Тогда
  ИсходящиеДанные = СоздатьОбъект("СписокЗначений");
  ИсходящиеДанные.ДобавитьЗначение("Объект",Источник.ЮрФизЛицо);
  ИсходящиеДанные.ДобавитьЗначение("ЮридическийАдрес",Источник.ЮрФизЛицо.ЮрАдрес);
  ИсходящиеДанные.ДобавитьЗначение("ФактическийАдрес",Источник.ЮрФизЛицо.ФактАдрес);

  ВыгрузитьПоПравилу( , , ИсходящиеДанные, , "КонтактнаяИнформация");
КонецЕсли;
8 MatrosoV AleXXXand_R
 
15.07.11
09:04
Вопрос - как передать эти данные на сторону 8.2?
9 Aleksey
 
15.07.11
09:56
ВыгрузитьПоПравилу как раз и предназначены для выгрузки