Серверные вызовы в событиях форм (ServerCallsInFormEvents)¶
| Тип | Поддерживаются языки |
Важность | Включена по умолчанию |
Время на исправление (мин) |
Теги |
|---|---|---|---|---|---|
Ошибка |
BSL |
Критичный |
Да |
15 |
design |
Описание диагностики¶
В событиях ПриАктивизацииСтроки и НачалоВыбора не должно быть вызовов контекстных серверных процедур. Эти события должны выполняться только на клиенте.
Диагностируются только серверные вызовы методов этой формы, выполняемые в контексте сервера (&НаСервере). Вызовы общих модулей (например, МойМодульСервер.МойСерверныйМетод) или внеконтекстные вызовы процедур самой формы (&НаСервереБезКонтекста) не будут ошибкой.
Согласно статье на Infostart, вызов серверных процедур из этих событий может привести к проблемам с производительностью и корректностью работы формы.
Примеры¶
Неправильно¶
&НаКлиенте
Процедура ПриАктивизацииСтроки(Элемент, ВыбраннаяСтрока, Поле, НовоеЗначение, СтандартнаяОбработка)
// Ошибка: вызов серверной процедуры из клиентского события
ТаблицаФормыПриАктивизацииСтрокиНаСервере();
СтандартнаяОбработка = Ложь;
КонецПроцедуры
&НаСервере
Процедура ТаблицаФормыПриАктивизацииСтрокиНаСервере()
ВызватьИсключение "тест";
КонецПроцедуры
Правильно¶
&НаКлиенте
Процедура ПриАктивизацииСтроки(Элемент, ВыбраннаяСтрока, Поле, НовоеЗначение, СтандартнаяОбработка)
// Правильно: внеконтекстный вызов разрешен
ТаблицаФормыПриАктивизацииСтрокиНаСервереБезКонтекста();
СтандартнаяОбработка = Ложь;
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ТаблицаФормыПриАктивизацииСтрокиНаСервереБезКонтекста()
// Логика, не требующая контекста формы
КонецПроцедуры
Источники¶
Сниппеты¶
Экранирование кода¶
// BSLLS:ServerCallsInFormEvents-off
// BSLLS:ServerCallsInFormEvents-on
Параметр конфигурационного файла¶
"ServerCallsInFormEvents": false