13.10.2010
Рассмотрим такую задачу. В процессе работы с формой нужно ввести некоторые дополнительные сложные данные. Для их ввода используется отдельная форма. Причем дальнейшая работа с программой должна быть невозможна до тех пор, пока пользователь не введет эти данные или пока он явно не откажется от ввода этих данных. Данные, введенные пользователем, необходимо вернуть в вызывающий код для дальнейшей обработки.
Для этих целей форма для ввода дополнительных данных открывается в модальном режиме. Это значит, что до тех пор, пока она не будет закрыта, дальнейшее выполнение кода на встроенном языке будет остановлено. В форме для ввода дополнительных данных создается команда, закрывающая форму и возвращающая данные, введенные пользователем.
В качестве примера рассмотрим некоторую абстрактную обработку. Кроме основной формы, - Форма, - создадим у нее форму ДобавлениеТекста. Эта форма будет открываться модально. И пользователь будет вводить в нее некоторый текст, предназначенный для дальнейшей обработки. Этот текст хранится в реквизите формы Текст.
Добавим в эту форму команду ЗакончитьВводТекста, по которой будем возвращать введенный пользователем текст:
Обработчик этой команды будет выглядеть просто:
Копировать в буфер обменаЗакрыть(Текст);
А в основной форме обработки выполним следующий код, открывающий форму ДобавлениеТекста модально и обрабатывающий возвращаемый текст:
Копировать в буфер обменаРезультат = ОткрытьФормуМодально("Обработка.ЗаполнениеДанных.Форма.ДобавлениеТекста"); // Действия, обрабатывающие текст, содержащийся в переменной Результат ...