Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Перебор подчиненного справочника - ошибка
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
chukhin
1С 7.7 для SQL - Комлексная для Украины

Такой прикол:
Идет перебор подчиненного справочника и на второй строке обработка вываливается с ошибкой, типа не могу спозиционироваться на элементе справочника (Не выбран элемент).
При этом если то же самое делать через отладчик и останавливаться на каждой итерации цикла, а потом продолжать – то все нормально.
Кто что подскажет?

Код:
    спрОК.ИспользоватьВладельца(текАвтоМ);//тек. элемент Справочника-Владельца
    спрОК.ВключатьПодчиненные(1);
    ЕстьВыборка = спрОК.ВыбратьЭлементы();

    Если ЕстьВыборка = 0 Тогда //нет подчиненных элементов - ТУТ ВСЕ НОРМАЛЬНО
        //новый подчиненный справочник ОК
        спрОК.Новый();
        спрОК.Код = КодОК; //из ДБФ
        спрОК.Записать();
        //запись Справочника-Владельца
        спрАвтоМ.Записать();
    ИначеЕсли ЕстьВыборка = 1 Тогда //уже есть подчиненные элементы - А ВОТ ЗДЕСЬ ПРОБЛЕМА
        Пока спрОК.ПолучитьЭлемент(1) = 1 Цикл //ОШИБКА - НЕ ВЫБРАН ЭЛЕМЕНТ!
          текОК = спрОК.ТекущийЭлемент();
          спрОК.НайтиЭлемент(текОК);
          Если спрОК.Код <> КодОК Тогда
           спрОК.Новый();
           спрОК.Код = КодОК;
           спрОК.Записать();
           //запись Справочника-Владельца
           спрАвтоМ.Записать();
          КонецЕсли;
         КонецЦикла;
    КонецЕсли;
Домовик
Непонятка у вас действительно с позиционированием:

         текОК = спрОК.ТекущийЭлемент();    //??????
          спрОК.НайтиЭлемент(текОК)                // ????? зачем



          Если спрОК.Код <> КодОК Тогда
           спрОК.Новый();
           спрОК.Код = КодОК;
           спрОК.Записать();
           спрАвтоМ.Записать();
в чем задача состоит? не понятно.

почему в выборке, по которой скачете, создаете новые элементы, но переменная выделена та же - спрОК?

Почему в создаваемых элементах справочника коду присваивается одно и то же значение?
Voha74
Хоть и мне тоже непонятен смысл данной выборки, но при создании нового эл-та справочника вы его никому не подчиняете!
ИспользоватьВладельца() надо до записи вроде как
chukhin
На ру-борде:

[q]
Код:
спрОК.НайтиЭлемент(текОК);

И выборка слетела. (при создании нового элемента случиться тоже самое)
Варианты: создать еще одну ссылку на справочник и  

новСпрОк.НайтиЭлемент(текОК); 
Если новСпрОк.Код <> КодОК Тогда
     новСпрОк.Код = КодОК;  
     новСпрОк.Записать();  
 
[/q]

А вот это сработало, СПС! :up:

Правда, непонятно остается, почему в отладчике такой проблемы не возикало :?
Он сам, что ли, создавал новый объект спрОК...
Прикольно)
______________________

Похоже, то, о чем писала Домовик:
Цитата
почему в выборке, по которой скачете, создаете новые элементы, но переменная выделена та же - спрОК?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.