1. Tym1980 22.04.19 13:33 Сейчас в теме

Зацыкливание процедуры "ПриАктивизацииСтроки"

Есть Управляемая форма. На ней при открытии заполняется ТаблицаЗначений. В обработчике этой таблице "ПриАктивизацииСтроки" заполняется другая таблица значений по отбору строки первой таблицы значений.

&НаКлиенте
Процедура БАПриАктивизацииСтроки(Элемент)
	ТекДанные = Элемент.ТекущиеДанные.БА;
	ЗаполнитьНадои(ТекДанные);
КонецПроцедуры


Сейчас происходит зацыкливание, при открытии формы, срабатывает процедура "БАПриАктивизацииСтроки", которая запускает "ЗапонитьНадои", по завершении я попадаю снова в процедуру "БАПриАктивизацииСтроки" на первую строчку этой процедуры, и потом опять в "ЗапонитьНадои".

Как выйти из этой ситуации???
Найденные решения
5. dhurricane 22.04.19 14:39 Сейчас в теме
(3) Могу предложить 2 варианта:

1) Получить в процедуре с директивой "&НаСервереБезКонтекста" необходимую таблицу значений и вернуть ее на клиент в виде массив структур:
Результат = ОбщегоНазначения.ТаблицаЗначенийВМассив(Таблица);
А на основе уже полученных с сервера данных заполнить на клиенте нужную таблицу.

2) Заполнять таблицу формы с использованием контекстного вызова сервера, но не непосредственно при активизации строки, а с помощью обработчика ожидания (будет небольшая задержка):
&НаКлиенте
Процедура БАПриАктивизацииСтроки(Элемент)
    ПодключитьОбработчикОжидания("ЗаполнитьНадоиНаКлиенте", 0.1, Истина);
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьНадоиНаКлиенте()
    ТекДанные = Элементы.Список.ТекущиеДанные.БА;
    ЗаполнитьНадоиНаСервере(ТекДанные);
КонецПроцедуры
Показать
Остальные ответы
Избранное Подписка Сортировка: Древо
2. dhurricane 22.04.19 13:45 Сейчас в теме
(1) Отказаться от контекстного обращения к серверу. Во выдержка из синтакс-помощника:
Описание:
Вызывается при активизации строки таблицы.
Примечание:
В обработчике данного события нельзя использовать серверные методы формы с директивой компиляции &НаСервере.
3. Tym1980 22.04.19 14:10 Сейчас в теме
(2)
А если я вторую таблицу значений заполняю с регистра, как мне в таком случае обойтись только клиентом, не используя сервер???
4. Boneman 248 22.04.19 14:24 Сейчас в теме
(3) &НаСервере отличается от &НаСервереБезКонтекста тем,
что тащит на сервер весь контекст формы, поэтому все эти события заново срабатывают.
А без контекста - в чистом виде, пошла на сервер - взяла там данные и вернула на клиента, никакого обновления контекста формы при этом не произойдет. Вот ей и надо пользоваться.
5. dhurricane 22.04.19 14:39 Сейчас в теме
(3) Могу предложить 2 варианта:

1) Получить в процедуре с директивой "&НаСервереБезКонтекста" необходимую таблицу значений и вернуть ее на клиент в виде массив структур:
Результат = ОбщегоНазначения.ТаблицаЗначенийВМассив(Таблица);
А на основе уже полученных с сервера данных заполнить на клиенте нужную таблицу.

2) Заполнять таблицу формы с использованием контекстного вызова сервера, но не непосредственно при активизации строки, а с помощью обработчика ожидания (будет небольшая задержка):
&НаКлиенте
Процедура БАПриАктивизацииСтроки(Элемент)
    ПодключитьОбработчикОжидания("ЗаполнитьНадоиНаКлиенте", 0.1, Истина);
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьНадоиНаКлиенте()
    ТекДанные = Элементы.Список.ТекущиеДанные.БА;
    ЗаполнитьНадоиНаСервере(ТекДанные);
КонецПроцедуры
Показать
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Санкт-Петербург
зарплата от 110 000 руб. до 150 000 руб.
Полный день

Консультант-аналитик 1С
Москва
зарплата до 200 000 руб.
Полный день

Программист 1С
Тольятти
зарплата от 70 000 руб.
Полный день

Программист 1С
Москва
зарплата до 160 000 руб.
Полный день

Программист 1С
Воронеж
зарплата от 70 000 руб.
Полный день