Имя: Пароль:
1C
1С v8
Конвертация контактных данных в регистр сведений
0 manti
 
21.05.13
15:53
Делаю перенос/конвертацию из конфигурации SynExp: Конкурентные закупки в УПП 1.3.

Необходимо перенести контакты из спр. Контрагенты источника в регистр сведений  контактная информация приемника .

Делаю таким образом:
Создаю новое ПКО КонтактнаяИнформация источник: СправочникСсылка.Контрагенты, приемник: РегистрСведенийЗапись.КонтактнаяИнформация.
Далее создаю ПКС для получения источника, источник у ПКС - ПолноеНаименование, правило - контрагенты. И при выгрузке в ПКС такой код:


Если Не Источник.ЭтоГруппа Тогда
Отбор = Новый Структура("Объект");
Отбор.Объект = Источник.Ссылка;
Сообщить(Отбор);
ВыборкаИнформации =   РегистрыСведений.КонтактнаяИнформация.Выбрать(Отбор);


Запись = РегистрыСведений.КонтактнаяИнформация.СоздатьМенеджерЗаписи();

Запись.Объект = Источник.Ссылка;
Запись.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес;
Запись.Вид = Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента;
Запись.Представление = Источник.ЮридическийАдрес;
Запись.Записать();
Сообщить("Дополнен контрагент " + Источник.Ссылка+ " "+Запись.Тип + " "+ Запись.Вид + " " + Запись.Пердставление);

Запись = РегистрыСведений.КонтактнаяИнформация.СоздатьМенеджерЗаписи();
Запись.Объект = Источник.Ссылка;
Запись.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес;
Запись.Вид = Справочники.ВидыКонтактнойИнформации.ФактАдресКонтрагента;
Запись.Представление = Источник.ФактическийАдрес;
Сообщить("Дополнен контрагент " + Источник.Ссылка+ " "+Запись.Тип + " "+ Запись.Вид + " " + Запись.Пердставление);
Запись.Записать();

Запись = РегистрыСведений.КонтактнаяИнформация.СоздатьМенеджерЗаписи();
Запись.Объект = Источник.Ссылка;
Запись.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон;
Запись.Вид = Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента;
Запись.Представление = Источник.Телефон;
Запись.Записать();
Сообщить("Дополнен контрагент " + Источник.Ссылка+ " "+Запись.Тип + " "+ Запись.Вид + " " + Запись.Пердставление);

Запись = РегистрыСведений.КонтактнаяИнформация.СоздатьМенеджерЗаписи();
Запись.Объект = Источник.Ссылка;
Запись.Тип = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты;
Запись.Вид = Справочники.ВидыКонтактнойИнформации.EmailФизЛица;
Запись.Представление = Источник.ЭлектроннаяПочта;
Запись.Записать();
Сообщить("Дополнен контрагент " + Источник.Ссылка+ " "+Запись.Тип + " "+ Запись.Вид + " " + Запись.Пердставление);
КонецЕсли

http://s2.ipicture.ru/uploads/20130521/5a6ShQRM.jpg

http://s1.ipicture.ru/uploads/20130521/acq3J0fY.jpg

Тоесть в источнике у нас в спр контрагенте есть факт адрес, юр адрес, телефн и почта. Эти данные нужно по объету перенсти в регист сведений контактная информация.

При выгрузке по правилам пишет ошибку:

http://s1.ipicture.ru/uploads/20130521/2qhWNuM5.jpg

Также пробую делать через параметр:
В ПКО контрагенты создаю ПКС с источником ЮридическийАдрес - флажок передавать данные в параметр. Далее в ПКО контрагенты псоле загрузки пишу :

Запись = РегистрыСведений.КонтактнаяИнформация.СоздатьМенеджерЗаписи();
   
   Запись.Объект = Объект.Ссылка;
   Запись.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес;
   Запись.Вид = Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента;
   Запись.Представление = ПараметрыОбъекта.ЮридическийАдрес;  
   Запись.Записать();

При загрузке ошибка:
Ошибка в обработчике события ПослеЗагрузкиОбъекта
   ИмяПКО                 =  Контрагенты
   ТипОбъекта             =  Контрагент
   Объект                 =  Конвейерное машиностроение
   Обработчик             =  ПослеЗагрузкиОбъекта
   ОписаниеОшибки         =  Поле объекта не обнаружено (ЮридическийАдрес)
   ПозицияМодуля          =  (13)
   КодСообщения           =  21

Как можно перенести в регистр?
1 manti
 
21.05.13
15:56
Обший вид конвертации:
http://s1.ipicture.ru/uploads/20130521/1ir1W7Jv.jpg
2 Alex S D
 
21.05.13
16:04
чет ты намутил много лишнего и ненужного

В обработчике ПриВыгрузке контрагента
формируешь структуру со всеми полями контактной информации,
затем , там же

ВыгрузитьПоПравилу(СтруктураДанных,,,,"КонтактнаяИнформация");

Создаешь правило ПКО КонтактнаяИнофрмация,в ПКС все поля с пустым источником

все
3 manti
 
21.05.13
16:52
(2) пропробовал таким образом:
Правила
http://s1.ipicture.ru/uploads/20130521/SEZASRZf.jpg
ПКО
http://s2.ipicture.ru/uploads/20130521/lWcSRFhU.jpg
Ошибка
http://s1.ipicture.ru/uploads/20130521/0VWKTxpu.jpg

Чего то не хватает))
4 zak555
 
21.05.13
16:54
(2) не сработает, но что-то в модуля прописать

а лучше сделать пгкс
5 lxndr
 
21.05.13
16:55
(3) v8 не умеет "СоздатьОбъект()"
6 Alex S D
 
21.05.13
16:58
СтруктураДанных = Новый Структура;
...
СтруктураДанных.Вставить("Объект",Источник.Ссылка)
...
7 Alex S D
 
21.05.13
16:59
+ там еще "Вид" есть
8 Alex S D
 
21.05.13
17:00
(4) у меня все работает
9 Alex S D
 
21.05.13
17:08
и Источник в ПКО КонтактнаяИнформация убери
10 manti
 
21.05.13
17:10
(8) требуется перенести Юр адрес, факт адрес, телефон, е-маил, как это все прописать то? в ПКО контрагенты пишу:
Если не Источник.ЭтоГруппа Тогда
   СтруктураДанных = Новый Структура;
   СтруктураДанных.Вставить("Представление", Источник.ЮридическийАдрес);
   СтруктураДанных.ДобавитьЗначение("Объект", Источник.Ссылка);
   СтруктураДанных.ДобавитьЗначение( "Тип", "Адрес");
   
   ВыгрузитьПоПравилу(СтруктураДанных,,,,"КонтактнаяИнформация");
КонецЕсли
Пишет метод объекта не обнаружен "Добавить знаение", может как то через параметр передавать?
11 manti
 
21.05.13
17:11
(9) нет источника, скрин прикладывал выше))
12 Alex S D
 
21.05.13
17:13
(11) объект - источник: СправочникСсылка.Контрагенты
Это не источник?

блин, СтруктураДанных это структура, метод "Вставить" Используй для всех полей
13 hhhh
 
21.05.13
17:13
(11) справа сверху щелкни, где 26 кейсов, там у ребят есть бесплатные уроки по конвертации, и как раз эта задача есть.
14 Alex S D
 
21.05.13
17:17
Для юр.адреса:

СтруктураДанных = Новый Структура;
   СтруктураДанных.Вставить("Представление", Источник.ЮридическийАдрес);
   СтруктураДанных.Вставить("Объект", Источник.Ссылка);
   СтруктураДанных.Вставить( "Тип", "Адрес");
   СтруктураДанных.Вставить( "Вид", "ЮрАдресКонтрагента");
   ВыгрузитьПоПравилу(СтруктураДанных,,,,"КонтактнаяИнформация");
15 manti
 
21.05.13
17:40
(13) где это найти? дайте ссылку плиз
(14) При выгрузке в ПКО контрагенты прописал:
Если не Источник.ЭтоГруппа Тогда
   СтруктураДанных = Новый Структура;
   СтруктураДанных.Вставить("Представление", Источник.ЮридическийАдрес);
   СтруктураДанных.Вставить("Объект", Источник.Ссылка);
   СтруктураДанных.Вставить( "Тип", "Адрес");
   СтруктураДанных.Вставить( "Вид", "ЮрАдресКонтрагента");
   ВыгрузитьПоПравилу(СтруктураДанных,,,,"КонтактнаяИнформация");
   
   СтруктураДанных = Новый Структура;
   СтруктураДанных.Вставить("Представление", Источник.ФактическийАдрес);
   СтруктураДанных.Вставить("Объект", Источник.Ссылка);
   СтруктураДанных.Вставить( "Тип", "Адрес");
   СтруктураДанных.Вставить( "Вид", "ФактАдресКонтрагента");
   ВыгрузитьПоПравилу(СтруктураДанных,,,,"КонтактнаяИнформация");
       
   СтруктураДанных = Новый Структура;
   СтруктураДанных.Вставить("Представление", Источник.Телефон);
   СтруктураДанных.Вставить("Объект", Источник.Ссылка);
   СтруктураДанных.Вставить( "Тип", "Телефон");
   СтруктураДанных.Вставить( "Вид", "ТелефонКонтрагента");
   ВыгрузитьПоПравилу(СтруктураДанных,,,,"КонтактнаяИнформация");
   
   СтруктураДанных = Новый Структура;
   СтруктураДанных.Вставить("Представление", Источник.ЭлектроннаяПочта);
   СтруктураДанных.Вставить("Объект", Источник.Ссылка);
   СтруктураДанных.Вставить( "Тип", "АдресЭлектроннойПочты");
   СтруктураДанных.Вставить( "Вид", "EmailФизЛица");
   ВыгрузитьПоПравилу(СтруктураДанных,,,,"КонтактнаяИнформация");
   
КонецЕсли

Вроде все нормально переносится, но вид в УПП пишется в виде ЮрАдресКонтрагента, тогда как нужн Юридический адрес контрагента.
СтруктураДанных.Вставить( "Вид", "ЮрАдресКонтрагента"); заменяю на СтруктураДанных.Вставить( "Вид", Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента);
но при выгрузке это недоступно, поскольку находится в применике. Как быть?
16 Alex S D
 
21.05.13
17:44
(15) "ЮрАдресКонтрагента" и "ФактАдресКонтрагента" вроде предопределенные элементы , должно так сработать.. не заполняется чтоли?
17 Alex S D
 
21.05.13
17:45
аа, понял
18 manti
 
21.05.13
17:51
(17) вот и дойдем до события при загрузке, а там параметром нужно адреса и явки передавать, вопрос как параметром грамотно?
19 Alex S D
 
21.05.13
17:52
не уверен, но попробуй так:

в ПКС "Вид" в ПКО КонтактнаяИнформация:
Перед Выгрузкой:
Выражение = "Справочник.ВидыКонтактнойИнформации."+Источник.Вид;
20 manti
 
21.05.13
18:03
(19) источника нет поэтому не прокатит(
21 manti
 
21.05.13
18:05
поле объекта не обнаружено ВИД
22 acsent
 
21.05.13
18:06
смотри перенос ут11>бп2
23 Alex S D
 
21.05.13
18:08
а так?))
не уверен, но попробуй так?)):

в ПКС "Вид" в ПКО КонтактнаяИнформация:
Перед Выгрузкой:
Выражение = "Справочник.ВидыКонтактнойИнформации."+ОбъектКоллекции.Вид;
24 bazvan
 
21.05.13
18:08
(22) или бух 77 бп8
25 Alex S D
 
21.05.13
18:09
да там, лажа, легко делается, влом пробовать
26 manti
 
21.05.13
18:12
(23) все равно значение не является объектным типом - ВИД. Как же правильно то будет?
27 manti
 
22.05.13
11:48
(22) (24) там через алгоритм - слелано уж слишком мудрено.
(25) возможно ли через параметр перенести?
28 Alex S D
 
22.05.13
11:49
(27) можно, через входящиеданные еще попробовать
29 manti
 
22.05.13
11:51
(28) я вначале пробовал, не знаю как получить этот параметр, ругается что нет такго - в теме еще писал)
30 manti
 
22.05.13
12:55
Товарищи, оказывается ларчик то просто открывался:

Запись = РегистрыСведений.КонтактнаяИнформация.СоздатьМенеджерЗаписи();
       Запись.Объект = Объект.Ссылка;
       Запись.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес;
       Запись.Вид = Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента;
       Запись.Представление = ПараметрыОбъекта.Получить("ЮридическийАдрес");
       //ПараметрыОбъекта.ЮридическийАдрес;  
       Запись.Записать();
       Сообщить("Дополнен контрагент " + Объект.Ссылка+ " "+Запись.Тип + " "+ Запись.Вид + " " + Запись.Представление);
Получение параметра: ПараметрыОбъекта.Получить("ЮридическийАдрес");
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой