Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Вечный цикл на управляемой форме.

Вечный цикл на управляемой форме.
Я
   SpellKeeper
 
16.02.18 - 12:55
Добрый день.
На управляемой форме есть заполненное дерево значений.
Мне нужно при активизации строки заполнить другую таблицу данными из базы.
Вот три процедуры, которые используются. В скобочках указаны номера двух строк. Это важно. Читайте до конца.
&НаКлиенте
Процедура ГруппыДеталейВходПриАктивизацииСтроки(Элемент)
(613)    СтрокаГруппыВход = Элемент.ТекущиеДанные;
    
    Объект.СписокДеталей.Очистить();
    Объект.ПараметрыДеталей.Очистить();
    Объект.ПричиныВыбраковки.Очистить();
    
    СформироватьОписаниеГруппы(СтрокаГруппыВход);
    
КонецПроцедуры

&НаКлиенте
Процедура СформироватьОписаниеГруппы(ТекДанные)
    ОписаниеГруппы.Очистить();
    Если ТекДанные = Неопределено Тогда
        Возврат;
    КонецЕсли; 
(753) СформироватьОписаниеГруппыНаСервере(Элементы.ГруппыДеталейВход.ТекущиеДанные.Владение, Элементы.ГруппыДеталейВход.ТекущиеДанные.ДокументПоступления, Элементы.ГруппыДеталейВход.ТекущиеДанные.ВагонПоступления);
    
КонецПроцедуры

&НаСервере
Процедура СформироватьОписаниеГруппыНаСервере(Владение, ДокументПоступления, Вагон)
    
    //тГруппы = РеквизитФормыВЗначение("ГруппыДеталей");

    тОписание = РеквизитФормыВЗначение("ОписаниеГруппы");
    Если Владение = Перечисления.твмВладениеДеталей.Переподкатка Тогда
        Если ЗначениеЗаполнено(Вагон) Тогда
            НовСтр = тОписание.Строки.Добавить();
            НовСтр.Параметр = "Вагон поступления";
            НовСтр.Значение = Вагон;
        Иначе
            НовСтр = тОписание.Строки.Добавить();
            НовСтр.Параметр = "Группа";
            НовСтр.Значение = "Группа деталей поступивщих под вагонами";
        КонецЕсли; 
    ИначеЕсли Владение = "Установка на вагон" Тогда
        Если ЗначениеЗаполнено(Вагон) Тогда
            НовСтр = тОписание.Строки.Добавить();
            НовСтр.Параметр = "Вагон установки";
            НовСтр.Значение = Вагон;
        Иначе
            НовСтр = тОписание.Строки.Добавить();
            НовСтр.Параметр = "Группа";
            НовСтр.Значение = "Группа установки деталей на вагон";
        КонецЕсли;
        
    ИначеЕсли ЗначениеЗаполнено(ДокументПоступления) Тогда
        НовСтр = тОписание.Строки.Добавить();
        НовСтр.Параметр = "Группа";
        НовСтр.Значение = "Группа деталей " + Владение + " " + Строка(ДокументПоступления);
        
    Иначе
        НовСтр = тОписание.Строки.Добавить();
        НовСтр.Параметр = "Группа";
        НовСтр.Значение = "Группа деталей " + Владение;
    КонецЕсли; 
    
    ЗначениеВРеквизитФормы(тОписание, "ОписаниеГруппы");
КонецПроцедуры// ПолучитьПараметрыГруппы()

 
И тут 1С выпадает в бесконечный цикл и зависает.
Не получается выгрузить лог вызовов в текст, но суть в следующем: бесконечные вызовы строк
613
753
613
753
......

Я решительно не понимаю что происходит.
Может просветите?
 
 
   SpellKeeper
 
1 - 16.02.18 - 12:58
Уточнение
Процедура ГруппыДеталейВходПриАктивизацииСтроки - это описание события таблицы отличной от той, которая заполняется на сервере.
   Dilgorp
 
2 - 16.02.18 - 13:01
Никогда и ни в коем случае при активизации строки нельзя использовать контекстные вызовы сервера.

Когда сервер возвращает форму обратно и "восстанавливает" ее состояние, событие при активизации строки снова срабатывает и (и так пока ресурсы не кончатся).
   SpellKeeper
 
3 - 16.02.18 - 13:03
О! как.
Спасибо. Запомню.
На стенке выштраблю.
   Tateossian
 
4 - 16.02.18 - 13:12
Это 1С по умолчанию борется с циклическими ссылками. Если вы включите контроль циклических ссылок - я вас уверяю - примерно через пять минут работы программы она упадет с грохотом:)
   Buster007
 
5 - 16.02.18 - 13:19
(3) в СП об этом написано.
   SpellKeeper
 
6 - 16.02.18 - 13:49
(5). Это хорошо, когда ты четко понимаешь в какой раздел лезть. Но такого уровня ты достигнешь, когда и так будешь знать большую часть из хелпа.
А когда ты даже не очень понимаешь как правильно вопрос задать, то перечитывать ВСЁ, в поиске ма-а-а-ленького вопроса, наверное, увлекательно, но слишком долго.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует