Имя: Пароль:
1C
 
КД. Замена родителя элемента справочника
,
0 PCcomCat
 
06.07.15
18:07
Доброго времени, уважаемые!

При выгрузке табличной части документа необходимо значение реквизита Номенклатура менять на номенклатуру-аналог, но при этом родителем для аналога должен быть родитель реквизита Номенклатура. При выгрузке реквизита передаю структуру данных с родителем. При выгрузке элемента номенклатуры проверяю заполнение входящих данных и меняю родителя на значение из входящих данных. В результате в базе-приемнике получаю зацикливание уровней.
Не могу понять, как исправить косяк.

Подскажите, пожалуйста, умные способы замены родителя.
1 Cyberhawk
 
06.07.15
18:29
Шта? Объясни четче
2 PCcomCat
 
07.07.15
08:55
Чётче: нужно в выборочных случаях при выгрузке одного элемента справочника задать ему родителя другого элемента, и чтобы в приемнике не было зацикливания уровней.

Как это лучше сделать? Прошу совета.
3 Cyberhawk
 
07.07.15
08:56
Ну, раз "при выгрузке", то заходишь в карточку элемента, у которого надо задать другого родителя, и задаешь.
4 PCcomCat
 
07.07.15
09:01
(3) В некоторых случаях, только при выгрузке определенного документа нужно заимствовать родителя.

Я и передаю из документа входящие данные для элемента справочника. При выгрузке всё красиво, а при загрузке почему-то зацикливание уровней дает. Понимаю, что руки, но не могу понять в каком месте.
5 Cyberhawk
 
07.07.15
09:03
Что такое "зацикливание уровней"?
6 PCcomCat
 
07.07.15
09:04
(5) Ошибка такая выдается в приемнике при попытке просмотреть элемент.
7 Cyberhawk
 
07.07.15
09:05
(6) ну, и что у этого элемента в реквизите "Родитель"?
8 Cyberhawk
 
07.07.15
09:07
Навскидку - используй входящие данные _при загрузке_ только для элементов, а не для групп.
9 PCcomCat
 
07.07.15
09:08
(7)
Если ТипЗнч(ВходящиеДанные) = Тип("Структура") тогда
    Значение = ВходящиеДанные.Родитель;
    ВходящиеДанные = Неопределено;
Иначе
    Значение = Источник.Родитель;
КонецЕсли;
10 PCcomCat
 
07.07.15
09:10
+(9) А перед выгрузкой Элемента:
Если Источник.ЭтоГруппа тогда
    //НеЗамещатьОбъектПриЗагрузке = Истина;
    ВходящиеДанные = Неопределено;
    Отказ = Истина;
КонецЕсли;        

Если ТипЗнч(ВходящиеДанные)=Тип("Структура") тогда
    НеЗамещатьОбъектПриЗагрузке = Ложь;
    
    //Попытка
    СтруктураОбъекта = Новый Структура("Родитель");
    СтруктураОбъекта.Вставить("Родитель",ВходящиеДанные.Родитель);
    
    Сообщить("- 5 в номенклатуре источник - " + СокрЛП(Источник));
    Сообщить("- 6 в номенклатуре родитель - " + СокрЛП(ВходящиеДанные.Родитель));
    
    //ИсходящиеДанные = СтруктураОбъекта;
    
    //ВходящиеДанные = Неопределено;
    //Исключение
    //КонецПопытки;    
Иначе
    Сообщить("- 5, 6 не структура - " + СокрЛП(Источник));
    
    СтруктураОбъекта = Новый Структура("Родитель");
    СтруктураОбъекта.Вставить("Родитель",Источник.Родитель);
    
    ВходящиеДанные = СтруктураОбъекта;
КонецЕсли;
11 PCcomCat
 
07.07.15
09:11
Правда перед этим не было условия на группу - может из-за этого осталась абра-кадабра. Но как ее исправить?
12 PCcomCat
 
07.07.15
09:25
Спасибо за моральную поддержку - наверное, она мне была необходима! Обнаружила недостающую строчку в коде и разрешила замену групп - и всё исправилось. Ещё раз - спасибо.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.