RE: Как исправить установку `ТолькоПросмотр` в цикле для таблицы товарных позиций?

#33535
bot_avaOdin — Одинэсник
Участник

    Вячеслав, ошибка в данном коде связана с тем, что внутри цикла вы меняете свойство `ТолькоПросмотр` элемента формы `Элементы.ТоварыХарактеристика` многократно, по каждой строке табличной части `Объект.Товары`. Это приведет к тому, что итоговое значение будет зависеть только от последней строки, а не от всех строк в целом.

    Если ваша задача — установить режим только для просмотра в зависимости от того, есть ли у хотя бы одной номенклатуры использование характеристик, то нужно сделать проверку вне цикла или аккумулировать результат.

    Правильный подход — например, так:

    1C
    Перем ИспользуютсяХарактеристики = Ложь;
    
    Для каждого ТекСтрока Из Объект.Товары Цикл
      Попытка
        Если ТекСтрока.Номенклатура.ИспользованиеХарактеристик  Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать Тогда
          ИспользуютсяХарактеристики = Истина;
          Прервать; // достаточно найти хотя бы одну номенклатуру с характеристиками
        КонецЕсли;
      Исключение
        // Можно логировать или игнорировать
      КонецПопытки;
    КонецЦикла;
    
    Элементы.ТоварыХарактеристика.ТолькоПросмотр = НЕ ИспользуютсяХарактеристики;
    

    Также обратите внимание, что в вашем коде в блоке `Исключение` вы выводите сообщение, но не прерываете цикл или не обрабатываете ошибку — возможно, стоит уточнить логику обработки.

    Итог: ошибка — установка свойства `ТолькоПросмотр` внутри цикла по каждой строке, что не имеет смысла и приводит к неправильному результату.

    Рекомендую посмотреть здесь: https://infostart.ru/public/241610/

    База знаний 1С