Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Итератор для значения не определен

Итератор для значения не определен
Я
   sidalexsandr
 
21.08.21 - 19:13
{ВнешняяОбработка.ДеревоУровень.Форма.Форма.Форма(19)}: Итератор для значения не определен
    Для Каждого стрДерева из ДеревоЗн Цикл

Вот текст обработки
&НаКлиенте
Процедура ПодсчитатьУровни(Команда)
    
    КоличествоУровней = 0;
    СтрокиДер = 0;
    
    
    ПодсчитатьУровниНаСервере(СтрокиДер,СтрокиДер );
    
    Сообщить("Максимальное количество уровней = " + КоличествоУровней);
    
    
КонецПроцедуры

&НаСервере
Процедура ПодсчитатьУровниНаСервере(СтрДер, К)
    
    Для Каждого стрДерева из ДеревоЗн Цикл
        
        Если стрДерева.Строки.Количество() <> 0 Тогда
            ПодсчитатьУровниНаСервере(стрДерева.Строки, К);
            К = стрДерева.Уровень();
        КонецЕсли;
        
    КонецЦикла;
    
КонецПроцедуры
   youalex
 
1 - 21.08.21 - 19:14
ДеревоЗн.Строки
   sidalexsandr
 
2 - 21.08.21 - 19:17
(1) {ВнешняяОбработка.ДеревоУровень.Форма.Форма.Форма(19)}: Поле объекта не обнаружено (Строки)
    Для Каждого стрДерева из ДеревоЗн.Строки Цикл
   МихаилМ
 
3 - 21.08.21 - 19:29
   Andreyyy
 
4 - 21.08.21 - 19:30
(1) РеквизитФормыВЗначение
   sidalexsandr
 
5 - 21.08.21 - 19:31
(4) Напиши пожалуйста где это написать
   youalex
 
6 - 21.08.21 - 19:33
тогда ПолучитьЭлементы()
   sidalexsandr
 
7 - 21.08.21 - 19:41
(6) Для Каждого стрДерева из ДеревоЗн.ПолучитьЭлементы() Цикл 

{ВнешняяОбработка.ДеревоУровень.Форма.Форма.Форма(21)}: Поле объекта не обнаружено (Строки)
        Если стрДерева.Строки.Количество() <> 0 Тогда
   hhhh
 
8 - 21.08.21 - 20:18
(7) вот тут фигня какая-то
СтрокиДер = 0;
    
    
    ПодсчитатьУровниНаСервере(СтрокиДер,СтрокиДер );


получается берете потом СтрДер.Строки от 0. А у числа 0 нет поля Строки
   серый КТУЛХУ
 
9 - 21.08.21 - 20:26
&НаСервере
Процедура ПодсчитатьУровниНаСервере(СтрДер, К)
    ДеревоОбъект = РеквизитФормыВЗначение("ДеревоЗн");
    Для Каждого стрДерева из ДеревоОбъект Цикл
   sidalexsandr
 
10 - 21.08.21 - 22:16
(9) {ВнешняяОбработка.ДеревоУровень.Форма.Форма.Форма(21)}: Итератор для значения не определен
    Для Каждого стрДерева из ДеревоОбъект Цикл
   hhhh
 
11 - 21.08.21 - 22:34
(10) из ДеревоОбъект.Строки
   sidalexsandr
 
12 - 21.08.21 - 22:36
(11) Написал
&НаСервере
Процедура ПодсчитатьУровниНаСервере(СтрДер, К)
    
    ДеревоОбъект = РеквизитФормыВЗначение("ДеревоЗн");
    
    Для Каждого стрДерева из ДеревоОбъект.Строки Цикл 
        
        Если стрДерева.Строки.Количество() <> 0 Тогда 
            ПодсчитатьУровниНаСервере(стрДерева.Строки, К);
            К = стрДерева.Уровень();                 
        КонецЕсли;
        
    КонецЦикла;
    
КонецПроцедуры


Когда создаю второй уровень вложенности на форме 1с вылетает
   Andreyyy
 
13 - 21.08.21 - 23:02
(12) Зацикливание, потому и вылетает.
   youalex
 
14 - 21.08.21 - 23:03
(12)просто не твоё
   hhhh
 
15 - 21.08.21 - 23:19
(12) СтрДер у тебя вообще не используется, зачем ты ее передаешь?
   серый КТУЛХУ
 
16 - 22.08.21 - 00:19
не дорос до рекурсии ишшо...
   серый КТУЛХУ
 
17 - 22.08.21 - 00:42
&НаСервере
Процедура ПодсчитатьУровниНаСервере()
    ДеревоОбъект = РеквизитФормыВЗначение("ДеревоЗн");
    КвоУровней = 0;
    КолвоУровнейДерева(ДеревоОбъект,КвоУровней);
КонецПроцедуры
&НаСервере
Процедура КолвоУровнейДерева(СтрДер, К)
    Для Каждого стрДерева из СтрДер.Строки Цикл
        К = Макс(К, СтрДер.Уровень());
        Если стрДерева.Строки.Количество() <> 0 Тогда
            КолвоУровнейДерева(стрДерева, К);
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры
   sidalexsandr
 
18 - 22.08.21 - 01:01
(17) Спасибо за помощь. Мне надо вывести с помощью Сообщить максимальный уровень вложенности, а у тебя обе функции с директивой компиляции НаСервере. Где вставить процедуру с директивой компиляции НаКлиенте и вывести макс уровень вложенности с помощью Сообщить?
   sidalexsandr
 
19 - 22.08.21 - 01:05
{ВнешняяОбработка.ДеревоУровень.Форма.Форма.Форма(21)}: Метод объекта не обнаружен (Уровень)
        К = Макс(К, СтрДер.Уровень());
   sidalexsandr
 
20 - 22.08.21 - 01:14
(17) Ошибку нашел вот
 К = Макс(К, стрДерева.Уровень());

Всё теперь работает огромное спасибо

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.