Имя: Пароль:
1C
1С v8
Не присваивается родитель в цикле
0 strh
 
28.10.13
16:31
УТ 10
перенес номенклатуру из 7.7 через тестовый файл
часть элементов не распределилась по группам
прохожусь циклом по файлу получаю элемент(ИД) и группу(ИДр) в которой он должен находится, далее код
Спр=Справочники.Номенклатура.НайтиПоРеквизиту("ИД7",ИД).ПолучитьОбъект();
Род=Справочники.Номенклатура.НайтиПоРеквизиту("ИД7",ИДр);
Спр.Родитель=Род;
Спр.Записать();

родитель не меняется
Если же я добавляю условие, чтобы обработать один конкретные элемент
Если Наименование<>"Автолампа" Тогда
    Продолжить;
КонецЕсли;
Спр=Справочники.Номенклатура.НайтиПоРеквизиту("ИД7",ИД).ПолучитьОбъект();
Род=Справочники.Номенклатура.НайтиПоРеквизиту("ИД7",ИДр);
Спр.Родитель=Род;
Спр.Записать();
Если Наименование="Автолампа" Тогда
    Прервать;
КонецЕсли;
то элемент переносится в нужную группу, хотя когда обрабатывался в цикле без условия то переноса не происходило
в чем может быть причина
1 Господин ПЖ
 
28.10.13
16:33
>в чем может быть причина

руки с ж.пы - в это укладывается 99% случаев...
2 NcSteel
 
28.10.13
16:33
В цикле не меняется ИД или ИДр, поэтому постоянно мучается один и тот же элемент, а остальные не обрабатываются..

Смотри отладчик.
3 palpetrovich
 
28.10.13
16:35
в отладчике смотрел, элемент находится, объект получается?
зы: как-бы правильней было-бы так:
Ссылка = Справочники.Номенклатура.НайтиПоРеквизиту("ИД7",ИД) если Не Ссылка = неопределено  тогда
Объект = Ссылка.ПолучитьОбъект
...
4 NcSteel
 
28.10.13
16:38
Ссылка не может быть равна неопределено, так как если не найдет, то получим пустую ссылку.
5 strh
 
28.10.13
16:43
(2) (3) для этого и ставил условия, чтобы посмотреть отладчиком что происходит на тех элементах которые не переносятся, но как только ставлю условие все отрабатывается

(3) элементы все есть по этому  упростил уже до минимума выбросив все лишнее, все группы и все элементы находятся

ставил ословия с точками останова

Спр=Справочники.Номенклатура.НайтиПоРеквизиту("ИД7",ИД).ПолучитьОбъект();
Род=Справочники.Номенклатура.НайтиПоРеквизиту("ИД7",ИДр);
Спр.Родитель=Род;
Спр.Записать();
Если Спр.Родитель<>Род Тогда
    Сообщить(1);
КонецЕсли;
Если род=Справочники.Номенклатура.ПустаяСсылка() Тогда
    Сообщить(2);
Конецесли;
ничего не выдает, но элементы остаются в корне
6 NcSteel
 
28.10.13
16:46
Почему не хочешь посмотреть в отладчике? Без всяких условий в коде?
7 Wobland
 
28.10.13
16:47
(4) иногда может
8 strh
 
28.10.13
16:49
очень много элементов 90% перенеслись нормально, куда ставить точку останова так чтобы не щелкать продолжить пока дождешься "сбойного" элемента
9 strh
 
28.10.13
16:49
(8) к (6)
10 palpetrovich
 
28.10.13
16:50
(4) есичё в (3) - это не код, это направление :)
(5) чудес не бывает, давай весь код в студию
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.