Получение элемента по индексу для значения не определено
Господа! Помогите, пожалуйста! Второй день бъюсь над, чувствую что простым, затыком.
Суть: две разные отраслевые конфы. В приемнике - справочник ФизЛица, у которго есть реквизит "Гражданство"(СправочникСсылка.Гражданства), в источнике - регистр сведений "Гражданство физлиц" (Измерение-ФизЛицо(СправочникСсылка.ФизическиеЛица), Ресурс-Страна (СправочникСсылка.КлассификаторСтранМира)). При обмене мне нужно заполнить реквизит "Гражданство", основываясь на РС.
Сделал:
1) ПКО с пустым источником (Приемник-СправочникСсылка.ФизическиеЛица)
2)Сделал ПВД:
[
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ГражданствоФизЛицСрезПоследних.ФизЛицо.Наименование КАК Наименование,
| ГражданствоФизЛицСрезПоследних.ФизЛицо.Код КАК Код,
| ГражданствоФизЛицСрезПоследних.Страна КАК Гражданство
|ИЗ
| РегистрСведений.ГражданствоФизЛиц.СрезПоследних КАК ГражданствоФизЛицСрезПоследних";
Выборка = Запрос.Выполнить().Выбрать();
ДатаВыгрузки = ТекущаяДата();
Пока Выборка.Следующий() Цикл
ИсходящиеДанные = Новый Структура;
ИсходящиеДанные.Вставить("Код", Строка(Выборка.Код));
ИсходящиеДанные.Вставить("Наименование", Выборка.Наименование);
ИсходящиеДанные.Вставить("Гражданство", Выборка.Гражданство.ПолучитьОбъект().Ссылка);
КонецЦикла;
ВыгрузитьПоПравилу(, , ИсходящиеДанные, , "ФизическиеЛица");
]
3) Сделал ПКС: рисунок снизу
4) Ошибка при выгрузке данных: {ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1705)}: Ошибка в обработчике события ПередОбработкойПравилаВыгрузки
ПВД = осн
Обработчик = ПередОбработкойВыгрузкиДанных
ОписаниеОшибки = Ошибка получения свойства объекта из входящих данных
ПКО = ФизическиеЛица (:)
ПКС = 2 (--> Код)
Объект = РОССИЯ (Классификатор стран мира)
СвойствоПриемника = Код (Строка)
ОписаниеОшибки = Получение элемента по индексу для значения не определено
ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8270)
КодСообщения = 68
ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1682)
КодСообщения = 31
Помогите разобраться, пожалуйста!!!
Суть: две разные отраслевые конфы. В приемнике - справочник ФизЛица, у которго есть реквизит "Гражданство"(СправочникСсылка.Гражданства), в источнике - регистр сведений "Гражданство физлиц" (Измерение-ФизЛицо(СправочникСсылка.ФизическиеЛица), Ресурс-Страна (СправочникСсылка.КлассификаторСтранМира)). При обмене мне нужно заполнить реквизит "Гражданство", основываясь на РС.
Сделал:
1) ПКО с пустым источником (Приемник-СправочникСсылка.ФизическиеЛица)
2)Сделал ПВД:
[
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ГражданствоФизЛицСрезПоследних.ФизЛицо.Наименование КАК Наименование,
| ГражданствоФизЛицСрезПоследних.ФизЛицо.Код КАК Код,
| ГражданствоФизЛицСрезПоследних.Страна КАК Гражданство
|ИЗ
| РегистрСведений.ГражданствоФизЛиц.СрезПоследних КАК ГражданствоФизЛицСрезПоследних";
Выборка = Запрос.Выполнить().Выбрать();
ДатаВыгрузки = ТекущаяДата();
Пока Выборка.Следующий() Цикл
ИсходящиеДанные = Новый Структура;
ИсходящиеДанные.Вставить("Код", Строка(Выборка.Код));
ИсходящиеДанные.Вставить("Наименование", Выборка.Наименование);
ИсходящиеДанные.Вставить("Гражданство", Выборка.Гражданство.ПолучитьОбъект().Ссылка);
КонецЦикла;
ВыгрузитьПоПравилу(, , ИсходящиеДанные, , "ФизическиеЛица");
]
3) Сделал ПКС: рисунок снизу
4) Ошибка при выгрузке данных: {ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1705)}: Ошибка в обработчике события ПередОбработкойПравилаВыгрузки
ПВД = осн
Обработчик = ПередОбработкойВыгрузкиДанных
ОписаниеОшибки = Ошибка получения свойства объекта из входящих данных
ПКО = ФизическиеЛица (:)
ПКС = 2 (--> Код)
Объект = РОССИЯ (Классификатор стран мира)
СвойствоПриемника = Код (Строка)
ОписаниеОшибки = Получение элемента по индексу для значения не определено
ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8270)
КодСообщения = 68
ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1682)
КодСообщения = 31
Помогите разобраться, пожалуйста!!!
По теме из базы знаний
- ОбменComXML
- Удаление ошибки виды контактной информации во время выгрузки из УТ 10.3 в УТ 11
- Перенос данных из ЗУП2.5 в ЗУП3.0 (Исправление правил)
- Счет на оплату покупателю (исправлена ошибка: "Получение элемента по индексу для значения не определено")
- "Заплатка" для больничного листа, для КА 2.4.8.82
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Х.з. как это делать в КД 2.0, я обычно решаю вопрос по частям.
1) Выгрузилось ли то что мне нужно в файл. Проверяется поиском реквизита в файле обмена, через любой XML редактор. Например XML Notpad
2) Загрузилось ли из файла. Ставлю точку останова при загрузке в базе приемнике, том месте где выдало ошибку, анализирую программный код. И только после этого лезу в КД 2.0 и исправляю там.
1) Выгрузилось ли то что мне нужно в файл. Проверяется поиском реквизита в файле обмена, через любой XML редактор. Например XML Notpad
2) Загрузилось ли из файла. Ставлю точку останова при загрузке в базе приемнике, том месте где выдало ошибку, анализирую программный код. И только после этого лезу в КД 2.0 и исправляю там.
Выгрузки нет, т.к. где-то в коде ошибка, это только кажется, что отладчиком очень долго искать, при определенной сноровке уйдет минут 20. Ошибка при выгрузке данных ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1705)} В этом месте, а далее вверх по коду.
Зато потом становится прозрачно и понятно, как работают правила.
"ОписаниеОшибки = Получение элемента по индексу для значения не определено," Вот эту ошибку и нужно копать. Хотя бы по гуглить для начала.
Зато потом становится прозрачно и понятно, как работают правила.
"ОписаниеОшибки = Получение элемента по индексу для значения не определено," Вот эту ошибку и нужно копать. Хотя бы по гуглить для начала.
(7) Xatori111, спасибо, только тут нету получения входящих данных из произвольного запроса... и типы источников и приемников совпадают... такие штуки для текущего проекта я уже сделал... тут все понятно... а вот что с моей проблемой делать ума не приложу... и ошибки, чувствую, глупейшие... просто к КД только- что судьба свела...
(8) я просто по другому бы наверное задачу делал, переносил бы Физ лица, а от них уже цеплял данные от регистра сведений (всё равно же их тащить), а если так дела в примерчике найдёшь как в РС запись сделать.
П.С. Только что увидел, у тебя Гражданство > Приемник Справочник.Гражданство, а ты поставил ПКО ФИз лица, конечно так не взлетит (Грубо ты пытаешься заполнить справочник гражданство по ПКО для Физических лиц).
Наверное правильнее было бы сделать структуру,
Переносишь Физ лица, к ним цепляется РС, а из РС выйдешь на справочник Гражданство, и всё перенесётся, а если надо не все физ лица переносить, Универсальный обмен даёт довольно гибкий механизм отбора (Кстати можно без проблем заполнить программно)
П.С. Только что увидел, у тебя Гражданство > Приемник Справочник.Гражданство, а ты поставил ПКО ФИз лица, конечно так не взлетит (Грубо ты пытаешься заполнить справочник гражданство по ПКО для Физических лиц).
Наверное правильнее было бы сделать структуру,
Переносишь Физ лица, к ним цепляется РС, а из РС выйдешь на справочник Гражданство, и всё перенесётся, а если надо не все физ лица переносить, Универсальный обмен даёт довольно гибкий механизм отбора (Кстати можно без проблем заполнить программно)
(19) Проблема решена! Поскольку сам ненавижу тех, кто спрашивает, потом говорит что решил, но не говорит как, описываю ситуацию и решение.
Задача: из базы источник переносим в базу приемник документ "Суточный рапорт", в котором есть поле Маршрут. Это поле маршрут является ссылкой на справочник Маршруты и в приемнике и в источнике, но связать их ни как не получается из-за разного подхода в базах: в базе приемнике маршруты кратны подразделениями, а в базе источник один маршрут на все подразделения. Поэтому в базе источнике сделан РС, который по сути и синхронизирует маршруты для обоих баз. Поэтому при выгрузке рапорта нужно было брать маршрут и подразделение источника, находить название в РС для приемника и уже по этому названию искать нужный маршрут в приемнике.
Что было сделано:
1) Создано ПКО с пустым источником и приемником ссылкой на справочник маршрут
2) В ПКО из п.1. создано единственное ПКС с пустым источником и приемником "Код", поставлен флаг поиска
3) В ПКО рапорта создано ПКС с пустым источником, с приемником Маршрут и с правилом, созданным в п.1
4) В событии При выгрузке ПКС из п.3 сделан запрос к РС и написан следующий код
И все)
Задача: из базы источник переносим в базу приемник документ "Суточный рапорт", в котором есть поле Маршрут. Это поле маршрут является ссылкой на справочник Маршруты и в приемнике и в источнике, но связать их ни как не получается из-за разного подхода в базах: в базе приемнике маршруты кратны подразделениями, а в базе источник один маршрут на все подразделения. Поэтому в базе источнике сделан РС, который по сути и синхронизирует маршруты для обоих баз. Поэтому при выгрузке рапорта нужно было брать маршрут и подразделение источника, находить название в РС для приемника и уже по этому названию искать нужный маршрут в приемнике.
Что было сделано:
1) Создано ПКО с пустым источником и приемником ссылкой на справочник маршрут
2) В ПКО из п.1. создано единственное ПКС с пустым источником и приемником "Код", поставлен флаг поиска
3) В ПКО рапорта создано ПКС с пустым источником, с приемником Маршрут и с правилом, созданным в п.1
4) В событии При выгрузке ПКС из п.3 сделан запрос к РС и написан следующий код
Значение = Новый Структура;
Значение.Вставить("Код",Выборка.НазваниеВЗУП);
И все)
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот