Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

В режиме «1С:Предприятие». Как задать вопрос пользователю в обработчике события




В режиме «1С: Предприятие»

Запустим «1С: Предприятие» в режиме отладки.

Перейдем в раздел Учет материалов, откроем список приходных накладных и создадим новую приходную накладную. В командной панели списка материалов нажмем кнопку Подбор.

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

Как задать вопрос пользователю в обработчике события

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

Конечно, этот пример (как и предыдущий) вряд ли понадобится при разработке реальной конфигурации, но в целом оба примера хорошо демонстрируют общий подход отказа от использования модальных окон, описанный выше в теоретической части этого раздела.

Реализуем вариант одиночного подбора с использованием множе- ственного выбора. В форме документа ПриходнаяНакладная откроем палитру свойств команды Подбор и в строке Действие установим в качестве обработчика команды процедуру Подбор.

Изменим текст обработчика команды Подбор следующим образом (листинг 26. 8).

листинг 26. 8. Обработчик нажатия кнопки «Подбор»

 


Затем добавим в обработчик события ОбработкаВыбора таблицы Материалы открытие блокирующего окна с вопросом пользователю (листинг 26. 9).

листинг 26. 9. Обработчик события «ОбработкаВыбора» таблицы

«Материалы» с предварительным вопросом пользователю

 

Поясним этот код.

Используя переменную ОтветПередДобавлением, мы определяем, был ли получен ответ от пользователя.

Если нет, то отменяем стандартную обработку для события Обра- боткаВыбора и показываем блокирующее окно с вопросом поль- зователю. Если ответ от пользователя уже был получен, то список номенклатуры добавляется в табличную часть без вопросов.

Если значение переменной ОтветПередДобавлением не истинно, то сначала создается объект ОписаниеОповещения, в конструкторе которого первым параметром указывается имя процедуры – обработ- чика оповещения, которая будет выполнена после получения ответа пользователя. Во втором параметре указывается, в каком модуле расположена эта процедура (в нашем случае – в модуле формы). А в третьем параметре в качестве дополнительного параметра передается массив выбранных значений номенклатуры (Выбран- ноеЗначение).

После этого с помощью немодального метода ПоказатьВо- прос() отображается окно с вопросом пользователю. В этот метод


передается объект ОписаниеОповещения, указывающий на экспортную процедуру модуля (ДобавлениеЗавершение), которая будет выполнена после того, как пользователь сделает выбор в блоки- рующем окне.

В этой процедуре в параметре СписокНоменклатуры содержится массив выбранных значений номенклатуры. В параметре Результат содержится результат ответа пользователя. В случае положитель- ного ответа пользователя значение переменной ОтветПередДобав- лением становится истинным, и затем выполняется добавление выбранных элементов номенклатуры в табличную часть документа (листинг 26. 10).

листинг 26. 10. Процедура – обработчик оповещения

«ДобавлениеЗавершение()»

 

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

Остается только объявить эту переменную в самом начале модуля формы (листинг 26. 11).

листинг 26. 11. Объявление переменной в модуле формы

 


Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...