Работа с POS терминалом банка "Аваль" через компоненту POSAPI v 1.8 (7.7)

Программирование - Внешние компоненты

4
При работе с COM-объектом POS терминала важно получать информацию о его состоянии для отображения пользователю и/или принятия решений. Но 1С 7.7 не воспринимает тип данных "С-строка". Выход был найден через компоненту-посредника (обертку) WSC.

В комплект поставки входят:

1) Архив с полным комплектом поставки компоненты "CARDPAY POSAPI – Версия 1.8" для windows x32,
    с примерами, справкой и описанием

2) Компонента-обертка posapi2wsc.wsc

3) Тестовая внешняя обработка в качестве примера работы с posapi через компоненту-обертку wsc.
     Информация выводится на форму обработки и полностью дублируется в окне сообщений.
     Обработка предназначена для теститрования и отладки, и на законченность не претендует.
     Может пригодится кому-нибудь в качестве примера.
     В ближайшем будущем функционал данной обработки будет оформлен в виде отдельного класса 1cpp
     и добавлен в эту публикацию для скачивания. В комментариях к его методам и свойствам будет подробное описание
     всех известных мне аспектов и нюансов.

     Все отладочные работы проводились на тестовом ПОС терминале банка "Аваль" (Украина). Для других банков - не тестировалось. Предполагаю, что существенных отличий не будет.

Особенности установки:

Для установки необходимо зарегистрировать (regsvr32) в системе файлы:
 - posapi2.dll и
 - posapi2wsc.wsc

Ни какие другие внешние компоненты (1cpp, formex) для тестирования - не требуется.

P.S.: Для работы из 1С v8.x данная компонента-посредник не нужна, т.к. 8.х с С-строкой работает корректно, как и с типами данных SQL. ИМХО, наконец то!

Цель данной публикации - просто поделиться.

P.S. (13.08.2016): Проблема, из-за которой я был вынужден написать WSC-обертку: - 1С 7.7 не понимает строковое значение, возвращаемое методами pos_get*(). DLL-ка возвращает значение типа VARIANAGR. Только что получил от разроботчиков информацию, что у COM-объекта есть недокументированные методы, специально для старых версий 1С - pos_get2(), pos_get_first2() и pos_get_next2()!

Пользоваться ими нужно по такому принципу: val = obj.pos_get_first2(param)

Эмоции: сколько времени потеряно в пустую ...

4

Скачать файлы

Наименование Файл Версия Размер
posapi2wsc.wsc
.wsc 5,94Kb
13.08.16
6
.wsc 5,94Kb 6 Скачать
posapi-win32-1.8.zip
.zip 1,93Mb
13.08.16
6
.zip 1,93Mb 6 Скачать
Тест_БанкТерминалАваль.ert
.ert 29,50Kb
13.08.16
10
.ert 29,50Kb 10 Скачать

См. также

Комментарии
Избранное Подписка Сортировка: Древо
1. ZLENKO 17.07.13 10:06 Сейчас в теме
Когда занимался внедрением "1С Розница" в супермаркетах мне эта тема была очень интересна.
2. Serge_ASB 04.10.18 18:35 Сейчас в теме
Добрый день.
А, подскажите, пожалуйста, есть ли описание синтаксиса этих методов?
Столкнулся с такой же задачей: под 8-ку "взлетело". А вот под 7.7 - голову ломал, почему параметры получает, а значений нет.
Второй вопрос. Версии более ранние (мне предоставили posapi 1.25) также содержат недокументированные инструкции, или нужна более свежая?
3. Serge_ASB 04.10.18 18:49 Сейчас в теме
P.S. Хорошо, здесь:
val = obj.pos_get_first2(param)
я получу значение параметра.
А как получить его "Имя"?
Или можно задавать Имя параметра, и получать его значение, как в методе pos_get?
4. Serge_ASB 05.10.18 09:59 Сейчас в теме
Что делать, если при попытке регистрации WSC файла система (Windows 10) ругается "Не удается преобразовать текст в кодировку Юникод для обработки"?
6. Serge_ASB 05.10.18 15:07 Сейчас в теме
(4)
А делать следующее: посмотреть внутрь файла на предмет наличия незакрытых тегов и (возможно) символов кириллицы, которые неадекватно понимаются при регистрации этой компоненты.
5. Serge_ASB 05.10.18 15:05 Сейчас в теме
После переписки с разработчиками получил информацию, что, по мере развития (совершенствования ПО терминала), применение недокументированных команд будет ограничиваться (скорее всего, их будут исключать). Потому, строить интерфейс на них - определенная доля риска (либо - ориентация на, возможную, в дальнейшем доработку интерфейса под 1С 7.7).
7. Serge_ASB 05.10.18 15:14 Сейчас в теме
А вот, возможно ли получать имя порта, к которому подключено оборудование? Чтоб не привязывать жестко в теле обработки "COM9", например?
Оставьте свое сообщение