[РЕШЕНО] ПодобратьБубен()

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем ste4kin48455, 13 ноя 2015.

  1. TopicStarter Overlay
    ste4kin48455
    Offline

    ste4kin48455 Опытный в 1С

    Регистрация:
    15 дек 2014
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    Всем доброго.
    Код:
    н=0;
    пока выб.Следующий() цикл
        СтрВыб = выб.Получить(н);
        если СтрВыб.ПометкаУдаления = ложь тогда
            стрВыбОбъект = стрВыб.получитьОбъект();
            стрВыбОбъект.УстановитьПометкуУдаления(истина);
        КонецЕсли;
        н=н+1;      
    КонецЦикла;
    
    Первая итерация проходит нормально, всё отрабатывается, "н" увеличивается с 0 до 1. На второй итерации на строке СтрВыб = выб.Получить(н); вылетает с ошибкой "Значение индекса выходит за границы диапазона". То есть пока индекс 0 - всё ок. Индекс стал 1 - ошибка. СтрВыб - это СтрокаВыборкиРезультатаЗапроса. в результате запроса больше одной строки, проверял.

    Выгрузил результат запроса в таблицу значений, а не в выборку - всё заработало
    Код:
    для каждого стр из ТЗРЗ цикл
            если Стр.Товар.ПометкаУдаления = ложь тогда
                СтрОбъект = Стр.Товар.ПолучитьОбъект();
                стрОбъект.УстановитьПометкуУдаления(истина);
            КонецЕсли;       
        КонецЦикла;
    почему не работает обход по выборке?
  2. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Вы плохо прочитали СП и не поняли предназначение оператора Получить().

    После каждого выполнения выб.Следующий() у вас выборка и так будет спозиционирована на следующей записи. Никакие переменные цикла вам не нужны.
  3. TerANik
    Offline

    TerANik Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    997
    Симпатии:
    70
    Баллы:
    54
    Как вам посоветовали выше у вас в итоге должно получиться следующее
    Код:
    пока Выб.Следующий() цикл
         Если Выб.ПометкаУдаления = ложь тогда
            стрВыбОбъект = Выб.Ссылка.получитьОбъект();
            стрВыбОбъект.УстановитьПометкуУдаления(истина);
    
        КонецЕсли;
    КонецЦикла;
  4. TopicStarter Overlay
    ste4kin48455
    Offline

    ste4kin48455 Опытный в 1С

    Регистрация:
    15 дек 2014
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    да, проглядел. спс

Поделиться этой страницей