В режиме «1С:Предприятие». Как задать вопрос пользователю в обработчике события
В режиме «1С: Предприятие» Запустим «1С: Предприятие» в режиме отладки. Перейдем в раздел Учет материалов, откроем список приходных накладных и создадим новую приходную накладную. В командной панели списка материалов нажмем кнопку Подбор. Перед тем как выполнять подбор, всплывает блокирующее окно с вопросом пользователю о необходимости подбора. Это окно блокирует интерфейс, но не останавливает выполнение приклад- ного решения. Подбор номенклатуры в документ выполняется только в случае положительного ответа пользователя. Как задать вопрос пользователю в обработчике события Рассмотрим теперь более сложный пример, когда вопрос пользо- вателю требуется задать в обработчике события. Например, перед добавлением номенклатуры в табличную часть приходной накладной нужно спросить, добавлять ли выбранные элементы номенклатуры в документ. Причем подтверждение о добавлении номенклатуры в документ у пользователя нужно спрашивать только один раз. Конечно, этот пример (как и предыдущий) вряд ли понадобится при разработке реальной конфигурации, но в целом оба примера хорошо демонстрируют общий подход отказа от использования модальных окон, описанный выше в теоретической части этого раздела. Реализуем вариант одиночного подбора с использованием множе- ственного выбора. В форме документа ПриходнаяНакладная откроем палитру свойств команды Подбор и в строке Действие установим в качестве обработчика команды процедуру Подбор. Изменим текст обработчика команды Подбор следующим образом (листинг 26. 8). листинг 26. 8. Обработчик нажатия кнопки «Подбор» Затем добавим в обработчик события ОбработкаВыбора таблицы Материалы открытие блокирующего окна с вопросом пользователю (листинг 26. 9).
листинг 26. 9. Обработчик события «ОбработкаВыбора» таблицы «Материалы» с предварительным вопросом пользователю Поясним этот код. Используя переменную ОтветПередДобавлением, мы определяем, был ли получен ответ от пользователя. Если нет, то отменяем стандартную обработку для события Обра- боткаВыбора и показываем блокирующее окно с вопросом поль- зователю. Если ответ от пользователя уже был получен, то список номенклатуры добавляется в табличную часть без вопросов. Если значение переменной ОтветПередДобавлением не истинно, то сначала создается объект ОписаниеОповещения, в конструкторе которого первым параметром указывается имя процедуры – обработ- чика оповещения, которая будет выполнена после получения ответа пользователя. Во втором параметре указывается, в каком модуле расположена эта процедура (в нашем случае – в модуле формы). А в третьем параметре в качестве дополнительного параметра передается массив выбранных значений номенклатуры (Выбран- ноеЗначение). После этого с помощью немодального метода ПоказатьВо- прос() отображается окно с вопросом пользователю. В этот метод передается объект ОписаниеОповещения, указывающий на экспортную процедуру модуля (ДобавлениеЗавершение), которая будет выполнена после того, как пользователь сделает выбор в блоки- рующем окне. В этой процедуре в параметре СписокНоменклатуры содержится массив выбранных значений номенклатуры. В параметре Результат содержится результат ответа пользователя. В случае положитель- ного ответа пользователя значение переменной ОтветПередДобав- лением становится истинным, и затем выполняется добавление выбранных элементов номенклатуры в табличную часть документа (листинг 26. 10). листинг 26. 10. Процедура – обработчик оповещения
«ДобавлениеЗавершение()» Причем если пользователь уже подтвердил, что он хочет добавить номенклатуру в документ, то больше это вопрос не задается, так как значение переменной ОтветПередДобавлением становится истинным. Остается только объявить эту переменную в самом начале модуля формы (листинг 26. 11). листинг 26. 11. Объявление переменной в модуле формы
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|