в обработчике события после выгрузки ПКО контрагенты прописал следующее:
помогите пожалуйста разобраться в чём проблема.
Запрос = Новый Запрос();
Запрос.Текст =
"ВЫБРАТЬ
| КонтактнаяИнформация.Объект
|ИЗ
| РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
|ГДЕ
| КонтактнаяИнформация.Объект = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", Источник.Ссылка);
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ВыгрузитьПоПравилу(ВыборкаДетальныеЗаписи.Объект , ,, , "КонтактнаяИнформация");
КонецЦикла;
т.е. фактически, после выгрузке контрагента(если она произойдёт) будем выгружать и всю его контактную информацию. Причём ПКО КИ это преобразование из регистра сведений в регистр сведений.
При попытке выгрузить контрагентов из базы выдал ошибку:
Ошибка получения значения свойства объекта (по имени свойства источника)
ПКО = КонтактнаяИнформация (Регистр сведений: Контактная информация)
ПКС = 1 (Вид --> Вид)
Объект = ЛУКОЙЛ-Интер-Кард (Контрагенты)
СвойствоПриемника = Вид ()
ОписаниеОшибки = Поле объекта не обнаружено (Вид)
ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8323)
КодСообщения = 13
Ошибка в обработчике события ПослеВыгрузкиОбъекта
ПКО = Контрагенты (:)
Объект = ЛУКОЙЛ-Интер-Кард (Контрагенты)
Обработчик = ПослеВыгрузкиОбъекта
ОписаниеОшибки = Ошибка получения значения свойства объекта (по имени свойства источника)
ПКО = КонтактнаяИнформация (Регистр сведений: Контактная информация)
ПКС = 1 (Вид --> Вид)
Объект = ЛУКОЙЛ-Интер-Кард (Контрагенты)
СвойствоПриемника = Вид ()
ОписаниеОшибки = Поле объекта не обнаружено (Вид)
ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8323)
КодСообщения = 13
ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1672)
КодСообщения = 43
Ошибка при выгрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1641)}: Ошибка в обработчике события ПослеВыгрузкиОбъекта
ПКО = Контрагенты (:)
Объект = ЛУКОЙЛ-Интер-Кард (Контрагенты)
Обработчик = ПослеВыгрузкиОбъекта
ОписаниеОшибки = Ошибка получения значения свойства объекта (по имени свойства источника)
ПКО = КонтактнаяИнформация (Регистр сведений: Контактная информация)
ПКС = 1 (Вид --> Вид)
Объект = ЛУКОЙЛ-Интер-Кард (Контрагенты)
СвойствоПриемника = Вид ()
ОписаниеОшибки = Поле объекта не обнаружено (Вид)
ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8323)
КодСообщения = 13
ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1672)
КодСообщения = 43
Показатьпомогите пожалуйста разобраться в чём проблема.
По теме из базы знаний
- Обмен через универсальный формат. Пример нестандартной конвертации данных
- Конвертация данных УТ и ДО. Дополнительные параметры
- Универсальный обмен XML (КД 2) + RabbitMQ – простая и комфортная работа вместе
- RabbitMQ+КД 3. История повторения чужого опыта. Наступаем на одни и те же грабли дважды
- Заметки по Конвертации данных 2.1
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) hobbit91, засовываешь в событие "После выгрузки в файл" код
В приведенном примере контактная информация в файле обмена будет располагаться после выгруженного объекта.
Запрос = Новый Запрос("
|ВЫБРАТЬ
| КонтактнаяИнформация.Объект,
| КонтактнаяИнформация.Тип,
| КонтактнаяИнформация.Вид,
| КонтактнаяИнформация.Представление,
| КонтактнаяИнформация.Поле1,
| КонтактнаяИнформация.Поле2,
| КонтактнаяИнформация.Поле3,
| КонтактнаяИнформация.Поле4,
| КонтактнаяИнформация.Поле5,
| КонтактнаяИнформация.Поле6,
| КонтактнаяИнформация.Поле7,
| КонтактнаяИнформация.Поле8,
| КонтактнаяИнформация.Поле9,
| КонтактнаяИнформация.Поле10,
| КонтактнаяИнформация.Комментарий
|ИЗ
| РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
|ГДЕ
| КонтактнаяИнформация.Объект = &Объект");
Запрос.УстановитьПараметр("Объект", Источник);
Выборка = Запрос.Выполнить().Выбрать();
Сообщить(Выборка.Количество());
Пока Выборка.Следующий() Цикл
ВыгрузитьПоПравилу(Выборка, , , , "КонтактнаяИнформация");
КонецЦикла;
ПоказатьВ приведенном примере контактная информация в файле обмена будет располагаться после выгруженного объекта.
(5) hobbit91, ваша строка
моя строка
Нужно передавать не только сам объект, а и его контактную информацию! Ну и сам Запрос у вас возвращает зачем то голый объект, а надо еще контактную инфу.
И плюс логичнее пихать контактную информацию после самого владельца...
ВыгрузитьПоПравилу(ВыборкаДетальныеЗаписи.Объект , ,, , "КонтактнаяИнформация");
моя строка
ВыгрузитьПоПравилу(Выборка, , , , "КонтактнаяИнформация");
Нужно передавать не только сам объект, а и его контактную информацию! Ну и сам Запрос у вас возвращает зачем то голый объект, а надо еще контактную инфу.
И плюс логичнее пихать контактную информацию после самого владельца...
(6) ZergKRSK, по поводу запроса. Если я правильно понимаю:
ВыгрузитьПоПравилу(Источник,
Приемник,
ВходящиеДанные,
ИсходящиеДанные,
ИмяПКО,
УзелСсылки,
ТолькоПолучитьУзелСсылки,
ПКО,
ЭтоПравилоСГлобальнойВыгрузкойОбъектов,
ВыборкаДляВыгрузкиДанных)
где Источник - ссылка на элемент объекта-источника, который передаем для конвертации. Т.е. получается, что достаточно из запроса вытянуть только объект, точнее ссылку на него, и передать в функцию ВыгрузитьПоПравилу.
Разве нет?
ВыгрузитьПоПравилу(Источник,
Приемник,
ВходящиеДанные,
ИсходящиеДанные,
ИмяПКО,
УзелСсылки,
ТолькоПолучитьУзелСсылки,
ПКО,
ЭтоПравилоСГлобальнойВыгрузкойОбъектов,
ВыборкаДляВыгрузкиДанных)
где Источник - ссылка на элемент объекта-источника, который передаем для конвертации. Т.е. получается, что достаточно из запроса вытянуть только объект, точнее ссылку на него, и передать в функцию ВыгрузитьПоПравилу.
Разве нет?
(7) hobbit91, нет. Источник - произвольный источник данных, подлежащий конвертации. Это может быть ссылка на выгружаемый объект, а может быть произвольный набор данных. Тип значения источника не обязательно должен совпадать с типом значения источника ПКО., с помощью к-рого будет осуществляться преобразование. Обязательно совпадение структуры свойств источника и тех свойств ПКО, к-рые должны быть получены из источника.
В данном случае вы должны передать по правилу Выборку со свойствами, а не голый объект.
В данном случае вы должны передать по правилу Выборку со свойствами, а не голый объект.
В РС КИ есть кроме "объекта" два реквизита: вид и тип КИ, для них нужно тоже делать ПКО и соот-но в ПКО КИ указывать правила конвертации для обоих реквизитов.
В запросе ты выбираешь только Объект, надо хотя бы так:
В запросе ты выбираешь только Объект, надо хотя бы так:
Если НЕ Источник.ЭтоГруппа Тогда
Запрос = Новый Запрос("ВЫБРАТЬ
| КорреспондентыКонтактнаяИнформация.Ссылка КАК Объект,
| КорреспондентыКонтактнаяИнформация.Тип,
| КорреспондентыКонтактнаяИнформация.Вид,
| КорреспондентыКонтактнаяИнформация.Представление,
| ИСТИНА КАК Активность
|ИЗ
| Справочник.Корреспонденты.КонтактнаяИнформация КАК КорреспондентыКонтактнаяИнформация
|ГДЕ
| КорреспондентыКонтактнаяИнформация.Ссылка = &Ссылка");
Запрос.УстановитьПараметр("Ссылка", Источник.Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ВыгрузитьПоПравилу( , , Выборка, , "КонтактнаяИнформация");
КонецЦикла;
КонецЕсли;
Показать
(2) killitch, спасибо за ответ.
ПКО вид и тип существуют. Они появились при синхронизации свойств КИ. Когда я передаю управление ПКО КИ, это правило само должно таскать нужные ему ПКО, которые, повторюсь, существуют.
То что вы привели в качестве примера это не совсем то. ВыгрузитьПоПравилу( , , Выборка, , "КонтактнаяИнформация") - парметр выборка стоит на 3 месте, значит данные будут браться не из объекта иб, а из выборки данных, тогда надо будет ещё в пко ки натыкать галочки "получать из входящих данных". Зачем это делать, если у нас в источнике есть регистр сведений КИ по структуре похожий на РС КИ в приёмнике, и мы можем в качестве выборки указать сам объект.
Поправьте, если не прав.
ПКО вид и тип существуют. Они появились при синхронизации свойств КИ. Когда я передаю управление ПКО КИ, это правило само должно таскать нужные ему ПКО, которые, повторюсь, существуют.
То что вы привели в качестве примера это не совсем то. ВыгрузитьПоПравилу( , , Выборка, , "КонтактнаяИнформация") - парметр выборка стоит на 3 месте, значит данные будут браться не из объекта иб, а из выборки данных, тогда надо будет ещё в пко ки натыкать галочки "получать из входящих данных". Зачем это делать, если у нас в источнике есть регистр сведений КИ по структуре похожий на РС КИ в приёмнике, и мы можем в качестве выборки указать сам объект.
Поправьте, если не прав.
По этой же методологии в ПКО контрогенты в событие после выгрузки добавляю выборку:
В ПКО КонтактнаяИнформация отключен встроеный реквизит "Активность" - сначало на него материлась обработка универсального обмена данными. Сейчас ругается на поле вид хотя конфигурации идентичные и загружены с нуля из xml файла который сформирован в конфигурации приемника и источника. Ругается на этапе выгрузки данных.
Ошибка при выгрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1672)}: Ошибка получения значения свойства объекта (по имени свойства источника)
ПКО = КонтактнаяИнформация (Регистр сведений: Контактная информация)
ПКС = 22 (Вид --> Вид)
Объект = РегистрСведенийНаборЗаписей.КонтактнаяИнформация (Регистр сведений набор записей: Контактная информация)
СвойствоПриемника = Вид ()
ОписаниеОшибки = Поле объекта не обнаружено (Вид)
ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8323)
КодСообщения = 13
Просьба помоч кто сможет понять или встречался с похожей проблеммой и пожалуйста конечно же.
Если НЕ Источник.ЭтоГруппа Тогда
Запрос = Новый Запрос;
//Структура = Новый Структура("Объект,Тип,Вид,Представление,Поле1,Поле2,Поле3,Поле4,Поле5,Поле6,Поле7,Поле8,Поле9,Поле10,Комментарий,ЗначениеПоУмолчанию");
Запрос.Текст =
"
|ВЫБРАТЬ
| КонтактнаяИнформация.Объект,
| КонтактнаяИнформация.Тип,
| КонтактнаяИнформация.Вид,
| КонтактнаяИнформация.Представление,
| КонтактнаяИнформация.Поле1,
| КонтактнаяИнформация.Поле2,
| КонтактнаяИнформация.Поле3,
| КонтактнаяИнформация.Поле4,
| КонтактнаяИнформация.Поле5,
| КонтактнаяИнформация.Поле6,
| КонтактнаяИнформация.Поле7,
| КонтактнаяИнформация.Поле8,
| КонтактнаяИнформация.Поле9,
| КонтактнаяИнформация.Поле10,
| КонтактнаяИнформация.Комментарий,
|ИЗ
| РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
|ГДЕ
| КонтактнаяИнформация.Объект = &Объект";
// | КонтактнаяИнформация.ЗначениеПоУмолчанию,
// | КонтактнаяИнформация.ТипДома,
// | КонтактнаяИнформация.ТипКорпуса,
// | КонтактнаяИнформация.ТипКвартиры
Запрос.УстановитьПараметр("Объект" , Источник.Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ВыгрузитьПоПравилу(Выборка, , , , "КонтактнаяИнформация");
КонецЦикла;
//Если Выборка.Количество()>0 Тогда
// Пока Выборка.Следующий() Цикл
//
// Структура.Вставить("Объект", Выборка.Объект);
// Структура.Вставить("Тип", Выборка.Тип);
// Структура.Вставить("Вид", Выборка.Вид);
// Структура.Вставить("Представление", Выборка.Представление);
// Структура.Вставить("Комментарий", Выборка.Комментарий);
// Структура.Вставить("Поле1", Выборка.Поле1);
// Структура.Вставить("Поле2", Выборка.Поле2);
// Структура.Вставить("Поле3", Выборка.Поле3);
// Структура.Вставить("Поле4", Выборка.Поле4);
// Структура.Вставить("Поле5", Выборка.Поле5);
// Структура.Вставить("Поле6", Выборка.Поле6);
// Структура.Вставить("Поле7", Выборка.Поле7);
// Структура.Вставить("Поле8", Выборка.Поле8);
// Структура.Вставить("Поле9", Выборка.Поле9);
// Структура.Вставить("Поле10", Выборка.Поле10);
// //Структура.Вставить("Активность", Выборка.Активность);
// ВыгрузитьПоПравилу(Структура, , , , "КонтактнаяИнформация");
// КонецЦикла;
//КонецЕсли;
//Структура = Неопределено;
Выборка = Неопределено;
КонецЕсли;
ПоказатьВ ПКО КонтактнаяИнформация отключен встроеный реквизит "Активность" - сначало на него материлась обработка универсального обмена данными. Сейчас ругается на поле вид хотя конфигурации идентичные и загружены с нуля из xml файла который сформирован в конфигурации приемника и источника. Ругается на этапе выгрузки данных.
Ошибка при выгрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1672)}: Ошибка получения значения свойства объекта (по имени свойства источника)
ПКО = КонтактнаяИнформация (Регистр сведений: Контактная информация)
ПКС = 22 (Вид --> Вид)
Объект = РегистрСведенийНаборЗаписей.КонтактнаяИнформация (Регистр сведений набор записей: Контактная информация)
СвойствоПриемника = Вид ()
ОписаниеОшибки = Поле объекта не обнаружено (Вид)
ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8323)
КодСообщения = 13
Просьба помоч кто сможет понять или встречался с похожей проблеммой и пожалуйста конечно же.
Ребята может кто поможет?!
Я все делаю как в этой статье описано и контактная инфа выгружается (отрабатывает сообщить и в файле видно выгруженные записи регистра), но в приемнике записи не появляются. Бьюсь второй день не могу понять. Выгрузку делаю из типовой конфы Бухгалтерия предприятия, редакция 2.0 (2.0.65.39) в самописную и в ней структура хранения контактной инфы точно такая же как и в бух. Файл с правилами прицепил к сообщению.
ПКО Контрагенты ПослеВыгрузкиВФайл:
Я все делаю как в этой статье описано и контактная инфа выгружается (отрабатывает сообщить и в файле видно выгруженные записи регистра), но в приемнике записи не появляются. Бьюсь второй день не могу понять. Выгрузку делаю из типовой конфы Бухгалтерия предприятия, редакция 2.0 (2.0.65.39) в самописную и в ней структура хранения контактной инфы точно такая же как и в бух. Файл с правилами прицепил к сообщению.
ПКО Контрагенты ПослеВыгрузкиВФайл:
Запрос = Новый Запрос("
|ВЫБРАТЬ
|ИСТИНА КАК Активность,
| КонтактнаяИнформация.Объект,
| КонтактнаяИнформация.Тип,
| КонтактнаяИнформация.Вид,
| КонтактнаяИнформация.Представление,
| КонтактнаяИнформация.Поле1,
| КонтактнаяИнформация.Поле2,
| КонтактнаяИнформация.Поле3,
| КонтактнаяИнформация.Поле4,
| КонтактнаяИнформация.Поле5,
| КонтактнаяИнформация.Поле6,
| КонтактнаяИнформация.Поле7,
| КонтактнаяИнформация.Поле8,
| КонтактнаяИнформация.Поле9,
| КонтактнаяИнформация.Поле10,
| КонтактнаяИнформация.Комментарий
|ИЗ
| РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
|ГДЕ
| КонтактнаяИнформация.Объект = &Объект");
Запрос.УстановитьПараметр("Объект", Источник);
Выборка = Запрос.Выполнить().Выбрать();
Сообщить(Выборка.Количество());
Пока Выборка.Следующий() Цикл
ВыгрузитьПоПравилу(Выборка, , , , "КонтактнаяИнформация");
КонецЦикла;
ПоказатьПрикрепленные файлы:
Оплата.xml
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот