Проблема с обработчиком ожидания после перехода с платформы 8.3.11 на 8.3.12
Добрый день! После перехода с платформы 8.3.11 на платформу 8.3.12 появилась следующая проблема.
Если кратко, то при открытии формы запускается обработчик ожидания с интервалом 5 секунд, вызывается процедура на клиенте, которая вызывает процедуру на сервере.
При обращении клиентской процедуры к серверной, происходит выделение текста текущего редактируемого текстового поля табличной части, и соответственно при нажатии следующей клавиши (при наборе текста), происходит замена выделенного блока на нажатый символ (очистка). Есть и другие проявления: закрытие выпадающих списков, ввод текста в не табличные текстовые реквизиты и т.д, но сейчас отловил только в таблице. Причем, при открытой форме с обработчиком ожидания, данная проблема распространяется на любую другую открытую форму (проверял на документах).
Для проверки накидал маленькую обработку с пустыми процедурами и таблицей значений на форме со следующим кодом:
Проблема проявляется, если между выполнениями обработчика (видно по курсору) войти в текстовое поле таблицы и начать набирать текст. Если находиться в поле в момент выполнения обработчика и потом набирать текст, второй раз выделения обычно не происходит (следите за курсором в ролике).
Если кратко, то при открытии формы запускается обработчик ожидания с интервалом 5 секунд, вызывается процедура на клиенте, которая вызывает процедуру на сервере.
При обращении клиентской процедуры к серверной, происходит выделение текста текущего редактируемого текстового поля табличной части, и соответственно при нажатии следующей клавиши (при наборе текста), происходит замена выделенного блока на нажатый символ (очистка). Есть и другие проявления: закрытие выпадающих списков, ввод текста в не табличные текстовые реквизиты и т.д, но сейчас отловил только в таблице. Причем, при открытой форме с обработчиком ожидания, данная проблема распространяется на любую другую открытую форму (проверял на документах).
Для проверки накидал маленькую обработку с пустыми процедурами и таблицей значений на форме со следующим кодом:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Стр = ТЗ.Добавить();
Стр.Номер = 1;
Стр.Описание = "ОдЫн";
Стр = ТЗ.Добавить();
Стр.Номер = 2;
Стр.Описание = "Два";
ПодключитьОбработчикОжидания("ОболочкаОбработчика",5);
КонецПроцедуры
&НаКлиенте
Процедура ОболочкаОбработчика()
а = ОбработатьОжидание();
КонецПроцедуры
&НаСервереБезКонтекста
Функция ОбработатьОжидание()
Возврат Истина;
КонецФункции
ПоказатьПроблема проявляется, если между выполнениями обработчика (видно по курсору) войти в текстовое поле таблицы и начать набирать текст. Если находиться в поле в момент выполнения обработчика и потом набирать текст, второй раз выделения обычно не происходит (следите за курсором в ролике).
Прикрепленные файлы:
ТестМигания.epf
IMG_9133.MOV
Найденные решения
Исправлено в релизе 8.3.13.1690:
"При исполнении обработчика ожидания, выполняющего серверный вызов, закрываются интерфейсные объекты - меню, диалоги выбора даты и т.д."
Затем в релизе 8.3.14.1565 ))
"Интерактивные действия пользователя (перетаскивание, нажатие кнопок) прерываются при срабатывании обработчика ожидания, если в обработчике выполняется серверный вызов."
"При исполнении обработчика ожидания, выполняющего серверный вызов, закрываются интерфейсные объекты - меню, диалоги выбора даты и т.д."
Затем в релизе 8.3.14.1565 ))
"Интерактивные действия пользователя (перетаскивание, нажатие кнопок) прерываются при срабатывании обработчика ожидания, если в обработчике выполняется серверный вызов."
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) это точно. например 3-я БП просто выбешивает своими обработчиками. ИМХО недопустимо запускать обработчик ожидания при активных элементах редактирования и (или хотябы) нужен идл-период, который есть во всех нормальных системах, но отсутствует в 1С как класс.
Это не баг, это фича.
Способы обхода:
- Если изменить тип поля "Текст" с "Поле ввода" на "Поле текстового документа" его состав перестает обнуляться, но сточки зрения пользователя, использование "Поля текстового документа" менее удобно, нежели использование "Поля ввода". (не вводятся +/-, открывается [вроде] отдельное окно для ввода)
- свойство поля ввода ОбновлениеТекстаРедактирования (но как-то нее стабильно что-ли. Советую ставить даже не Да, а НеИспользовать)
- а вообще подход не верен. Нужно делать обработку события из вк, или откуда там прилетают данные(даже если это эмуляция клавиатуры), гемора не будет. [т.е. в форме и спользовать процедуру ОбработкаОповещения, которая получает внешнее событие] - но ВК для весов нет, надо писать свою...
Способы обхода:
- Если изменить тип поля "Текст" с "Поле ввода" на "Поле текстового документа" его состав перестает обнуляться, но сточки зрения пользователя, использование "Поля текстового документа" менее удобно, нежели использование "Поля ввода". (не вводятся +/-, открывается [вроде] отдельное окно для ввода)
- свойство поля ввода ОбновлениеТекстаРедактирования (но как-то нее стабильно что-ли. Советую ставить даже не Да, а НеИспользовать)
- а вообще подход не верен. Нужно делать обработку события из вк, или откуда там прилетают данные(даже если это эмуляция клавиатуры), гемора не будет. [т.е. в форме и спользовать процедуру ОбработкаОповещения, которая получает внешнее событие] - но ВК для весов нет, надо писать свою...
Исправлено в релизе 8.3.13.1690:
"При исполнении обработчика ожидания, выполняющего серверный вызов, закрываются интерфейсные объекты - меню, диалоги выбора даты и т.д."
Затем в релизе 8.3.14.1565 ))
"Интерактивные действия пользователя (перетаскивание, нажатие кнопок) прерываются при срабатывании обработчика ожидания, если в обработчике выполняется серверный вызов."
"При исполнении обработчика ожидания, выполняющего серверный вызов, закрываются интерфейсные объекты - меню, диалоги выбора даты и т.д."
Затем в релизе 8.3.14.1565 ))
"Интерактивные действия пользователя (перетаскивание, нажатие кнопок) прерываются при срабатывании обработчика ожидания, если в обработчике выполняется серверный вызов."
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот