1С:Предприятие 8.3. Странное поведение обработчика события ОкончаниеВводаТекста
Рубрика: 1С:Предприятие -> Программирование
Метки: 1С | 1С:Предприятие | примеры | программирование | советы
Просмотров: 8095
Вчера минут 30 не мог понять, почему обработчик события "ОкончаниеВводаТекста" ведет себя как-то странно. В нем я описал код для организации подбора элементов. Все работало корректно. Проблема проявлялась в случаях, когда введенный пользователем текст не соответствовал ни одному значению из базы. Если значение нет, то поле ввода почему-то самопроизвольно очищалось, хотя по задумке там должна оставаться введенная пользователем строка.
Я перепроверил весь код в надежде найти случайное затирание значений переменной с введенным текстом, но все бес толку. Никаких ошибок или хитрых манипуляций не было. Интерес решения проблемы стал набирать обороты, когда я решил поставить эксперимент – создал аналогичный обработчик для еще одного поля и повесил на него тот же самый код.
В результате я ожидал получить следующее – оба поля должны очищаться после ввода текста, который не соответствует ни одному результату поиска. Не тут-то было! Одно поле работало корректно, а второе нет. При этом, поля периодически менялись ролями. В одних случаях очищалось первое поле, в других – второе.
В итоге я успел перепробовать кучу различных вариантов, пока вновь не решил обратиться к синтаксису помощнику. Оказалось, что решение проблемы ждало меня именно там. Вроде не первый день работаю с "1С:Предприятие", а в этот раз не увидел маленького примечания (чертов скрол меня подвел):
В обработчике данного события нельзя использовать серверные методы формы с директивой компиляции &НаСервере.
Решением проблемы стал небольшой рефакторинг кода в модуле формы. После этого все встало на свои места. Мораль сей басни такова – @даже если трижды уверен в своей памяти, не ленись заглядывать в документацию@.