14 янв. 2014 г.

Интерактивный контроль заполнения полей

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

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


&НаКлиенте
Процедура ПриОткрытии(Отказ)
 
 НеобязательныеЭлементы.Добавить("Комментарий");
 ТекЭлемент = ТекущийЭлемент.Имя;
 ПодключитьОбработчикОжидания("ПроверитьТЭ", 0.1, Истина);
 
КонецПроцедуры

&НаКлиенте
Процедура ПроверитьТЭ()
 
 ПроверкаЗначенияЭлемента = НеобязательныеЭлементы.НайтиПоЗначению(ТекЭлемент) = Неопределено;
 Переход = НЕ ТекЭлемент = ТекущийЭлемент.Имя;
 
 Если Переход Тогда
  Если ПроверкаЗначенияЭлемента И НЕ ЗначениеЗаполнено(Объект[ТекЭлемент]) Тогда
   ТекущийЭлемент = Элементы[ТекЭлемент];
  Иначе
   ТекЭлемент  = ТекущийЭлемент.Имя;
  КонецЕсли;
 КонецЕсли;
 
 ПодключитьОбработчикОжидания("ПроверитьТЭ", 0.1, Истина); 
 
КонецПроцедуры // ПроверитьТЭ()
 

И конечно же, сама тестовая обработка.

1 комментарий:

  1. Не совсем понятно, что делает эта функция, и где ее можно применить?

    ОтветитьУдалить