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


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

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

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

P.S. (27.09.2024): Добавил версию компоненты 1.21

15 Comments

  1. ZLENKO

    Когда занимался внедрением «1С Розница» в супермаркетах мне эта тема была очень интересна.

    Reply
  2. Serge_ASB

    Добрый день.

    А, подскажите, пожалуйста, есть ли описание синтаксиса этих методов?

    Столкнулся с такой же задачей: под 8-ку «взлетело». А вот под 7.7 — голову ломал, почему параметры получает, а значений нет.

    Второй вопрос. Версии более ранние (мне предоставили posapi 1.25) также содержат недокументированные инструкции, или нужна более свежая?

    Reply
  3. Serge_ASB

    P.S. Хорошо, здесь:

    val = obj.pos_get_first2(param)

    я получу значение параметра.

    А как получить его «Имя»?

    Или можно задавать Имя параметра, и получать его значение, как в методе pos_get?

    Reply
  4. Serge_ASB

    Что делать, если при попытке регистрации WSC файла система (Windows 10) ругается «Не удается преобразовать текст в кодировку Юникод для обработки»?

    Reply
  5. Serge_ASB

    (4)

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

    Reply
  6. Serge_ASB

    А вот, возможно ли получать имя порта, к которому подключено оборудование? Чтоб не привязывать жестко в теле обработки «COM9», например?

    Reply
  7. simply1

    (7) Добрый день! Прошу прощения что не отвечал так долго. Не получал уведомлений об сообщениях. Ваши вопросы еще актуальны?

    Reply
  8. Serge_ASB

    Спасибо за отклик.

    Обработка обслуживания уже примерно полгода работает. Нареканий нет. Но, если у Вас есть ответы, буду рад ознакомиться и обсудить.

    Reply
  9. simply1

    (2) Добрый день!

    7.7 не понимает типы значений, возвращаемые компонентой, в отличии от 8-ки. Поэтому был вынужден сделать wsc-прослойку. В постскриптумах описания подробно описано.

    У меня версии выше 1.21 нет. Добавил ее в список файлов.

    Reply
  10. simply1

    (3) да, «param» и есть его имя

    Reply
  11. simply1

    (4) Вы искали эту проблему на форумах?

    У меня все ОС русскоязычные. От XP до Windows 10 Pro x64. Никогда такой ошибки не было.

    Нюанс регистрации под х64: нужно регистрировать дважды — первый, как обычно (для 32 бит), а второй (для 64 бит) — c:windowsSysWOW64
    egsvr32 …путьКфайлуфайл.wsc

    Reply
  12. simply1

    (7) имя храню в элементе справочника Терминала

    Reply
  13. Serge_ASB

    (9)Да, идея!

    Спасибо. Отмечу на будущее.

    Пока что, велел тех. поддержке устанавливать жестко по указанным «партией и правительством» параметрам.

    Reply
  14. z86

    добрый день. под 1с 8 не адаптировали ?

    Reply
  15. simply1

    (15) Добрый день! Есть в планах на этот год

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *