Имя: Пароль:
1C
 
КД. Получение элемента по индексу для значения не определено
,
0 Platon1C
 
07.09.13
17:41
Господа! Помогите, пожалуйста! Второй день бъюсь над, чувствую что простым, затыком.
Суть: две разные отраслевые конфы. В приемнике - справочник ФизЛица, у которго есть реквизит "Гражданство"(СправочникСсылка.Гражданства), в источнике - регистр сведений "Гражданство физлиц" (Измерение-ФизЛицо(СправочникСсылка.ФизическиеЛица), Ресурс-Страна (СправочникСсылка.КлассификаторСтранМира)). При обмене мне нужно заполнить реквизит "Гражданство", основываясь на РС.
Сделал:
1) ПКО с пустым источником (Приемник-СправочникСсылка.ФизическиеЛица)
2)Сделал ПВД:
[    
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|    ГражданствоФизЛицСрезПоследних.ФизЛицо.Наименование КАК Наименование,
|    ГражданствоФизЛицСрезПоследних.ФизЛицо.Код КАК Код,
|    ГражданствоФизЛицСрезПоследних.Страна КАК Гражданство
|ИЗ
|    РегистрСведений.ГражданствоФизЛиц.СрезПоследних КАК ГражданствоФизЛицСрезПоследних";
Выборка = Запрос.Выполнить().Выбрать();
ДатаВыгрузки = ТекущаяДата();
Пока Выборка.Следующий() Цикл
ИсходящиеДанные = Новый Структура;
ИсходящиеДанные.Вставить("Код", Строка(Выборка.Код));
ИсходящиеДанные.Вставить("Наименование", Выборка.Наименование);
ИсходящиеДанные.Вставить("Гражданство", Выборка.Гражданство.ПолучитьОбъект().Ссылка);

КонецЦикла;
ВыгрузитьПоПравилу(, , ИсходящиеДанные, , "ФизическиеЛица");
]

3) Сделал ПКС: рисунок снизу

4) Ошибка при выгрузке данных: {ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1705)}: Ошибка в обработчике события ПередОбработкойПравилаВыгрузки
ПВД = осн
Обработчик = ПередОбработкойВыгрузкиДанных
ОписаниеОшибки = Ошибка получения свойства объекта из входящих данных
ПКО = ФизическиеЛица (:)
ПКС = 2 (--> Код)
Объект = РОССИЯ (Классификатор стран мира)
СвойствоПриемника = Код (Строка)
ОписаниеОшибки = Получение элемента по индексу для значения не определено
ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8270)
КодСообщения = 68
ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1682)
КодСообщения = 31

Помогите разобраться, пожалуйста!!!
1 zladenuw
 
07.09.13
17:50
а зачем вот так ?
Выборка.Гражданство.ПолучитьОбъект().Ссылка)
если ссылка уже есть тут Выборка.Гражданство
2 Platon1C
 
07.09.13
17:56
Пардон. Это я от отчаяния начал пытаться делать всякую фигню... и реквизит ссылка таще и получить объект пытаюсь...В первом варианте без поля ссылки грузил...
3 Platon1C
 
07.09.13
21:12
Господа! П-О-М-О-Г-И-Т-Е
4 grayshadow
 
07.09.13
21:45
рисунков не видно
>СвойствоПриемника = Код (Строка)
хрень какая-то, что за функция Код()?
текст ПВД в студию...
5 Platon1C
 
07.09.13
22:30
а текст ПВД в моём топике написан... А Код(Строка) - эт реквизит "Код" в приемнике (и выгрузке), с типом "строка"... На всякий случай ещё раз код ПВД:

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ГражданствоФизЛицСрезПоследних.Страна КАК Гражданство,
    |    ГражданствоФизЛицСрезПоследних.ФизЛицо.Код КАК Код,
    |    ГражданствоФизЛицСрезПоследних.ФизЛицо.Наименование КАК Наименование
    |ИЗ
    |    РегистрСведений.ГражданствоФизЛиц.СрезПоследних КАК ГражданствоФизЛицСрезПоследних";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
    ИсходящиеДанные = Новый Структура;
    ИсходящиеДанные.Вставить("Код", Выборка.Код);
    ИсходящиеДанные.Вставить("Наименование", Выборка.Наименование);
    ИсходящиеДанные.Вставить("Гражданство", Выборка.Гражданство);

КонецЦикла;
ВыгрузитьПоПравилу(, , ИсходящиеДанные, , "ФизическиеЛица");
6 grayshadow
 
07.09.13
22:32
как минимум я бы сделала так:
Пока Выборка.Следующий() Цикл
ИсходящиеДанные = Новый Структура;
ИсходящиеДанные.Вставить("Код", Строка(Выборка.Код));
ИсходящиеДанные.Вставить("Наименование", Выборка.Наименование);
ИсходящиеДанные.Вставить("Гражданство", Выборка.Гражданство.ПолучитьОбъект().Ссылка);

ВыгрузитьПоПравилу(, , ИсходящиеДанные, , "ФизическиеЛица");
КонецЦикла;
7 hhhh
 
07.09.13
22:34
(5) да, но зачем вы засандалили этот запрос в Классификатор стран мира?
8 Platon1C
 
07.09.13
22:51
grayshadow, так уже было. И ничего. В первом варианте. Ошибки не отличались.
9 Platon1C
 
07.09.13
22:55
hhhh, запрос по регистру засандалил... а результат хочу как-то отправить в реквизит с типом "СправочникСсылка.Гражданства". У Регистре нужное измерение имеет тип "СправочникСсылка.КлассификаторСтранМира". Тут, может, я не учел что-то??? Просто всегда прикладным программированием занимался и с КД только судьба свела... Глупейшая где-то рядом ошибка... Что-то стандартное не учел...
10 grayshadow
 
07.09.13
23:05
КД - она не простая:)
а ничего что в запросе выбираются ВСЕ физлица? и их гражданство надо отправить в реквизит какого элемента справочника? весь массив не прокатит, надо как в (6)
ну и посмотреть бы скрин ПКО Физлица
а также ПКО КлассификаторСтранМира -> Гражданство, такое имеется?
(кстати реквизит гражданство вместо РС - это жестко...)
11 Platon1C
 
08.09.13
00:28
grayshadow, сейчас увидел, что у вас строка "ВыгрузитьПоПравилу..." внутри цикла и вот что я Вам скажу... очень замечательно что мы с вами встретились! безмерно Вам благодарен! Вы вернули матери сына, а будущим детям отца! ) Все заработало! Самое главное-я понял как КД работает в этом контуре. Реально пытался в каждый реквизит засунуть ВЕСЬ результат запроса (тип-Структура). Ещё раз очень рад и гигантское спасибо Вам от меня,моих друзей , родственников и соседей)))
12 grayshadow
 
08.09.13
07:18
фсегда пожалуйста:)