![]() |
|
Итератор для значения не определен | ☑ | ||
---|---|---|---|---|
0
Dmitryy1
24.06.24
✎
22:38
|
Задача заключается в том, чтобы для выделенных элементов дин. списка на форме по кнопке поменять значение реквизита ВАрхиве с типом булево с Истина на Ложь. Крч разархивировать выделанные элементы. Для это добавил кнопку на форме Разархивировать и вот такую логику для нее:
&НаСервере Процедура РасшФормы_РазархивироватьПослеНаСервере(КАрхивации) ЗапросДляПолученияДанных = Новый Запрос; ЗапросДляПолученияДанных.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка КАК Ссылка, | Номенклатура.РасшФормы_ВАрхиве КАК РасшФормы_ВАрхиве |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Ссылка В(&МассивСсылок)"; ЗапросДляПолученияДанных.УстановитьПараметр("МассивСсылок", КАрхивации); ВыборкаПоЗапросу = ЗапросДляПолученияДанных.Выполнить().Выбрать(); Для каждого Стр Из ВыборкаПоЗапросу Цикл ВыборкаПоЗапросу.РасшФормы_ВАрхиве = Ложь; КонецЦикла; КонецПроцедуры &НаКлиенте Процедура РасшФормы_РазархивироватьПосле(Команда) КАрхивации = Элементы.СписокРасширенныйПоискНоменклатура.ВыделенныеСтроки; РасшФормы_РазархивироватьПослеНаСервере(КАрхивации); КонецПроцедуры выдает ошибку: Итератор для значения не определен. |
|||
1
sapravka
24.06.24
✎
22:51
|
Ошибка "Итератор для значения не определен" возникает, когда вы пытаетесь итерироваться по значению, которое не является коллекцией объектов. В вашем случае, вы пытаетесь итерироваться по строке, которую возвращает метод ВыделенныеСтроки элемента формы.
Чтобы исправить эту ошибку, вам нужно убедиться, что вы итерируетесь по коллекции строк, а не по одной строке.Вместо использования цикла Для каждого Стр Из ВыборкаПоЗапросу Цикл , вы можете использовать метод Следующий для итерации по каждой выделенной строке. Вот исправленный код: &НаСервере Процедура РасшФормы_РазархивироватьПослеНаСервере(КАрхивации) ЗапросДляПолученияДанных = Новый Запрос; ЗапросДляПолученияДанных.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка КАК Ссылка, | Номенклатура.РасшФормы_ВАрхиве КАК РасшФормы_ВАрхиве |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Ссылка В(&МассивСсылок)"; ЗапросДляПолученияДанных.УстановитьПараметр("МассивСсылок", КАрхивации); ВыборкаПоЗапросу = ЗапросДляПолученияДанных.Выполнить().Выбрать(); Пока ВыборкаПоЗапросу.Следующий() Цикл ВыборкаПоЗапросу.РасшФормы_ВАрхиве = Ложь; КонецЦикла; КонецПроцедуры &НаКлиенте Процедура РасшФормы_РазархивироватьПосле(Команда) КАрхивации = Элементы.СписокРасширенныйПоискНоменклатура.ВыделенныеСтроки; РасшФормы_РазархивироватьПослеНаСервере(КАрхивации); КонецПроцедуры Теперь ваш код должен работать корректно, и вы сможете разархивировать выделенные элементы списка на форме. |
|||
2
Guk
24.06.24
✎
22:44
|
но ведь действительно не определен. итератор то по Стр...
|
|||
3
Dmitryy1
24.06.24
✎
22:50
|
(1) Пишет поле объекта недоступно для записи
|
|||
4
Dmitryy1
24.06.24
✎
22:53
|
(3) Загуглил, пишут надо обращаться к данным обьекта не по ссылка а надо Объект
|
|||
5
sapravka
24.06.24
✎
22:56
|
(3) Ошибка "Поле объекта недоступно для записи" указывает на то, что вы пытаетесь изменить свойство объекта, которое не предназначено для изменения или доступ к которому ограничен. Это может произойти, если свойство является свойством чтения или если доступ к нему ограничен.
В вашем коде, вы пытаетесь установить свойство РасшФормы_ВАрхиве в значение Ложь. Возможно, это свойство не предназначено для изменения или доступ к нему ограничен в контексте, в котором вы пытаетесь его изменить. Убедитесь, что свойство РасшФормы_ВАрхиве действительно предназначено для изменения и что вы имеете право изменять его в контексте, в котором вы работаете с объектом. Если это свойство чтения, то вы не сможете его изменить. Если это свойство записи , но доступ к нему ограничен, вам может потребоваться получить соответствующие права доступа или изменить контекст, в котором вы работаете с объектом. |
|||
6
Dmitryy1
24.06.24
✎
23:04
|
(5) Я сам создал этот реквизит в расширении, в котором, собственно, и работаю.
|
|||
7
unbred
25.06.24
✎
00:35
|
(6)
1. если ты вдруг не обратил внимания, то ты пытаешься изменить результат запроса, а не элемент справочника "Номенклатура". 2."Я сам создал этот реквизит" создать-создал. прав то себе насыпал?) |
|||
8
Волшебник
25.06.24
✎
09:13
|
(0) ЗапросДляПолученияДанных - плохое имя переменной
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |