Четверг, 23.11.2017, 06:22
Приветствую Вас, Гость
Главная » Статьи » В помощь программисту » Примеры программ на 1С версии 7.7

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

Теперь мне нужно окно, которое бы я мог в нужный момент открыть из программы. В системе 1С в распоряжении программиста есть системная функция: 
Предупреждение("Текст", Таймаут) 
Она выводит окно с надписью "Текст". Но это окно имеет кнопку "Ок", нажав которую пользователь может его закрыть в любую минуту. А нам это, как было сказано выше, не подходит. Но ничего не мешает нам создать такой элемент конфигурации, как, например, отчет, и выводить форму, содержащуюся в этом отчете при помощи команды "ОткрытьФормуМодально".  При этом нужно учитывать, что мы должны сначала открыть форму, затем запустить нашу внешнюю функцию при помощи которой банковский терминал перейдет в режим осуществления платежа, по окончании работы внешней функции (платеж осуществлен или отвергнут на терминале) программа должна закрыть окно. 

Именно таким путем я и пошел. Создал отчет. Отчет не содержал ни каких кнопок, и запускается модально (ОткрытьФормуМодально), поэтому закрыть в ручную окно отчета невозможно.  Назвал я этот псевтоотчет "ТранспарантОжидайтеБанк". Ниже показано, как выглядела Форма этого псевдоотчета:


Команду, запускающую библиотечную процедуру работы с банковским терминалом я поместил в программный модуль отчета   "ТранспарантОжидайтеБанк". А точнее в процедуру "ПриОткрытии()" этого модуля. К сожалению, такое решение не привело к нужному результату! Сразу после запуска модуля  "ТранспарантОжидайтеБанк" программа запускала внешнюю процедуру банковского терминала. Окно же с надписями открыться не успевало. Терминал работает, а окна нет.  Окно появлялось на мгновение после окончания операций с терминалом и сразу закрывалось.

Пришлось применить нестандартное решение. Для этого сразу после открытия модуля отчета "ТранспарантОжидайтеБанк" я сразу же дал команду на его закрытие. А вот в стандартной процедуре "При закрытии()" я и вызываю процедуру работы с терминалом. И все заработало. Окно сначала открывалось. А вот закрыться по команде "Форма.Закрыть()" оно не успевало. Сначала отрабатывал терминал, а затем уж закрывалось окно.

Что бы все было понятнее приведу тексты самих программных процедур. Как видно из примера мы работали с банком ПУМБ. И так, в глобальный модуль нужно добавить следующие строки и процедуры:

(этот и другие фрагменты можно увеличивать простым нажатием мыши)

Описание переменных добавляется, естественно, в самом начале модуля. Фрагмент "Инициализация терминалов ПУМБ" нужно добавить в тело процедуры "ПриНачалеРаботыСистемы()".  Строки, озаглавленные "Закрытие терминала ПУМБ" нужно включить в тело процедуры "ПриОкончанииРаботыСистемы".

Программный модуль отчета  "ТранспарантОжидайтеБанк" выглядит следующим образом:

 

Запускается форма при помощи следующего фрагмента программы:


Переменная "ВидОперации" равна нулю в случае, если производится платежь и единице, если производится возврат.

Категория: Примеры программ на 1С версии 7.7 | Добавил: bigman (02.10.2013)
Просмотров: 2252 | Комментарии: 3 | Рейтинг: 0.0/0
Всего комментариев: 1
1  
http://gruzpravka36.ru/

Имя *:
Email *:
Код *: