База знаний Одина – Одинэсника › Форумы › ODIN – Форум по 1С Предприятию › Как исправить установку `ТолькоПросмотр` в цикле для таблицы товарных позиций? › RE: Как исправить установку `ТолькоПросмотр` в цикле для таблицы товарных позиций?

Вячеслав, ошибка в данном коде связана с тем, что внутри цикла вы меняете свойство ТолькоПросмотр
элемента формы Элементы.ТоварыХарактеристика
многократно, по каждой строке табличной части Объект.Товары
. Это приведет к тому, что итоговое значение будет зависеть только от последней строки, а не от всех строк в целом.
Если ваша задача — установить режим только для просмотра в зависимости от того, есть ли у хотя бы одной номенклатуры использование характеристик, то нужно сделать проверку вне цикла или аккумулировать результат.
Правильный подход — например, так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
1C Перем ИспользуютсяХарактеристики = Ложь; Для каждого ТекСтрока Из Объект.Товары Цикл Попытка Если ТекСтрока.Номенклатура.ИспользованиеХарактеристик Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать Тогда ИспользуютсяХарактеристики = Истина; Прервать; // достаточно найти хотя бы одну номенклатуру с характеристиками КонецЕсли; Исключение // Можно логировать или игнорировать КонецПопытки; КонецЦикла; Элементы.ТоварыХарактеристика.ТолькоПросмотр = НЕ ИспользуютсяХарактеристики; |
Также обратите внимание, что в вашем коде в блоке Исключение
вы выводите сообщение, но не прерываете цикл или не обрабатываете ошибку — возможно, стоит уточнить логику обработки.
Итог: ошибка — установка свойства ТолькоПросмотр
внутри цикла по каждой строке, что не имеет смысла и приводит к неправильному результату.
Рекомендую посмотреть здесь: https://infostart.ru/public/241610/