Книга: Разработка интерфейса прикладных решений на платформе "1С:Предприятие 8"
Назад: Метод «ПолучитьДанныеВыбора()»
Дальше: Событие «Начало выбора»

Событие «Обработка выбора»

Это событие хорошо тем, что оно вызывается после того, как пользователь выбрал какое-то значение из предложенного списка, но еще до того, как это значение будет помещено в поле ввода.

Поэтому в этом событии можно:

Первая ситуация может показаться на первый взгляд странной. Если пользователь может выбрать «что-то не то», то зачем тогда предлагать ему это выбирать? Нужно с самого начала предложить ему выбирать только из того, что «можно».

Такой подход имеет право на жизнь и, наверное, может применяться в целом ряде случаев. Однако он имеет два недостатка.

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

Поэтому логичнее поступать следующим образом: если пользователь хочет выбрать поставщика с таким наименованием, предоставить ему такую возможность. Но если по каким-то причинам этого поставщика нельзя использовать в этом документе, после выбора пользователя сообщить ему об этом и отказаться от выбора, сделанного пользователем.

Такой сценарий, конечно, не является догмой, но в целом ряде случаев, когда для пользователя не очевиден тот факт, что выбирать можно среди ограниченного множества элементов, этот сценарий вполне имеет право на жизнь.

Другой недостаток изначального ограничения списка выбора может быть чисто технологическим. Например, для того чтобы выяснить, можно использовать этого поставщика или нет, требуется выполнить целый ряд сложных и непростых расчетов.

Допустим, список выбора, формируемый для пользователя, будет содержать 49 элементов. Для всех них необходимо будет выполнить этот расчет. Это может занять значительное время. А в результате пользователь выберет один-единственный элемент из этих 49.

В такой ситуации гораздо производительнее будет, ничего не рассчитывая, предоставить ему для выбора 49 элементов. А после того как он выберет единственный элемент, только для него одного провести необходимые расчеты. И либо согласиться с выбором пользователя, либо отказаться от него.

Что касается помещения в поле ввода значения другого типа, такая ситуация может возникнуть при имитации ввода по строке, выполняемого платформой. Например, когда поле ввода имеет строковый тип, список выбора формируется из элементов справочника, на основании выбора пользователя заполняется какая-то служебная информация, а в поле ввода помещается не ссылка, выбранная пользователем, а ее представление.

Выполнить все эти действия как раз и можно в обработчике события Обработка выбора.

Назад: Метод «ПолучитьДанныеВыбора()»
Дальше: Событие «Начало выбора»