Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Отложенная обработка события элемента управления в форме          
Batchir Подменю пользователя
сообщение 11.02.09, 22:33
Сообщение #1

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1443 раз
Рейтинг: 0

При работе форм иногда возникает необходимость выполнить длительное действие в ответ на какое-либо событие, полученное от пользователя (например: отображение остатков товаров на складах при позиционировании в списке справочника Товары). Однако, длительная операция, выполняемая в ответ на часто возникающее событие (например: на событие ПриАктивизацииСтроки списка), может серьезно осложнить работу с формой или даже сделать ее невозможной.

Решением данной проблемы может служить перенос выполнения длительной операции в явно вызываемое действие (например: перенос действия в обработчик события Выбор). Это позволит избавиться от задержек, связанных со случайным инициированием события, однако, данное решение требует явного действия от пользователя, что может негативно сказаться на скорости работы с формой.

Альтернативным способом решения проблемы может служить отложенное выполнение длительного действия в обработчике ожидания.

Пример: обновление информации об остатках товаров на складах при позиционировании в списке справочника Товары.



Процедура ОбработкаОжидания() Экспорт
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| УчетНоменклатурыОстатки.Склад,
| УчетНоменклатурыОстатки.КоличествоОстаток
|ИЗ
| РегистрНакопления.УчетНоменклатуры.Остатки(, Номенклатура = &Ссылка) КАК УчетНоменклатурыОстатки";
Запрос.УстановитьПараметр("Ссылка", ЭлементыФормы.СправочникСписок.ТекущаяСтрока);
Результат = Запрос.Выполнить().Выгрузить();
ЭлементыФормы.Остатки.Значение = Результат;
ЭлементыФормы.Остатки.СоздатьКолонки();
КонецПроцедуры

Процедура СправочникСписокПриАктивизацииСтроки(Элемент)
ПодключитьОбработчикОжидания("ОбработкаОжидания", 0.5, Истина);
КонецПроцедуры


В данном примере в обработчике события ПриАктивизацииСтроки производится подключение обработчика ожидания ОбработкаОжидания(), в котором собственно и производится сбор информации об остатках товаров. Подключение обработчика выполняется таким образом, чтобы действие выполнилось приблизительно через 0.5 секунды после вхождения системы в состояние ожидания. Подключенный обработчик ожидания будет вызван один раз, а затем отключен до следующей обработки события ПриАктивизацииСтроки - это достигается установкой в значение Истина третьего параметра метода ПодключитьОбработчикОжидания().

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 20.06.25, 16:17
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!