Главная » Статьи » В помощь программисту » Примеры программ на 1С версии 7.7 |
Модальное окно на время работы внешней процедуры
И так, мне была поставлена задача, создать в текущей конфигурации процедуру для работы с банковским терминалом. Терминал, как известно, служит для приема платежей при помощи банковских пластиковых карт. Для работы с терминалом фирма изготовитель предлагает внешнюю библиотеку, содержащую все необходимые функции. Библиотеку без проблем я подключил к программе. Процедуру подключения библиотеки я вставил в глобальный модуль так, что бы терминал подключался и инициализировался при запуске программы. Теперь мне нужно окно, которое бы я мог в нужный момент открыть из программы. В системе 1С в распоряжении программиста есть системная функция: Предупреждение("Текст", Таймаут) Она выводит окно с надписью "Текст". Но это окно имеет кнопку "Ок", нажав которую пользователь может его закрыть в любую минуту. А нам это, как было сказано выше, не подходит. Но ничего не мешает нам создать такой элемент конфигурации, как, например, отчет, и выводить форму, содержащуюся в этом отчете при помощи команды "ОткрытьФормуМодально". При этом нужно учитывать, что мы должны сначала открыть форму, затем запустить нашу внешнюю функцию при помощи которой банковский терминал перейдет в режим осуществления платежа, по окончании работы внешней функции (платеж осуществлен или отвергнут на терминале) программа должна закрыть окно. Именно таким путем я и пошел. Создал отчет. Отчет не содержал ни каких кнопок, и запускается модально (ОткрытьФормуМодально), поэтому закрыть в ручную окно отчета невозможно. Назвал я этот псевтоотчет "ТранспарантОжидайтеБанк". Ниже показано, как выглядела Форма этого псевдоотчета: Команду, запускающую библиотечную процедуру работы с банковским терминалом я поместил в программный модуль отчета "ТранспарантОжидайтеБанк". А точнее в процедуру "ПриОткрытии()" этого модуля. К сожалению, такое решение не привело к нужному результату! Сразу после запуска модуля "ТранспарантОжидайтеБанк" программа запускала внешнюю процедуру банковского терминала. Окно же с надписями открыться не успевало. Терминал работает, а окна нет. Окно появлялось на мгновение после окончания операций с терминалом и сразу закрывалось. Пришлось применить нестандартное решение. Для этого сразу после открытия модуля отчета "ТранспарантОжидайтеБанк" я сразу же дал команду на его закрытие. А вот в стандартной процедуре "При закрытии()" я и вызываю процедуру работы с терминалом. И все заработало. Окно сначала открывалось. А вот закрыться по команде "Форма.Закрыть()" оно не успевало. Сначала отрабатывал терминал, а затем уж закрывалось окно. Что бы все было понятнее приведу тексты самих программных процедур. Как видно из примера мы работали с банком ПУМБ. И так, в глобальный модуль нужно добавить следующие строки и процедуры: (этот и другие фрагменты можно увеличивать простым нажатием мыши) Описание переменных добавляется, естественно, в самом начале модуля. Фрагмент "Инициализация терминалов ПУМБ" нужно добавить в тело процедуры "ПриНачалеРаботыСистемы()". Строки, озаглавленные "Закрытие терминала ПУМБ" нужно включить в тело процедуры "ПриОкончанииРаботыСистемы". Программный модуль отчета "ТранспарантОжидайтеБанк" выглядит следующим образом: Запускается форма при помощи следующего фрагмента программы: Переменная "ВидОперации" равна нулю в случае, если производится платежь и единице, если производится возврат. | |
Просмотров: 4350 | Комментарии: 16 | Рейтинг: 0.0/0 |
Всего комментариев: 1 | ||
| ||