Использование одной ККМ для нескольких рабочих мест в терминальных сессиях 1С с применением механизма очереди печати в ДТО8

Для работы с оборудованием (в частности – ККМ) через сеть с использованием ДТО-8 есть два пути: использовать проброс портов с использованием технологии DCOM или используя сетевой транспорт, предоставляемый службой DtoSvc, являющейся неотъемлемой частью ДТО-8.

DCOM (Distributed Component Object Model) – протокол, позволяющий организовать вызов объекта, находящегося на удаленной машине, через сеть. Его включение и методики настройки широко освещены во многих публикациях, поэтому этот вопрос мы рассматривать не будем. Единственное, что нас здесь интересует – это проброс (mapping) портов, используемых для подключения оборудования.

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

В отличие от DCOM, разработанная нами служба DtoSvc лишена недостатка, связанного со скоростью работы механизма DCOM, а также значительно проще в настройке (вопросы настройки будут рассмотрены дальше).

Особенности лицензирования ДТО-8

В настоящее время существует две версии драйверов версии 8 – платные и бесплатные. Платные поддерживают работу со всем перечнем оборудования в полнофункциональном режиме (при наличии программной лицензии или аппаратного ключа); бесплатные – только с оборудованием производства АТОЛ. Дистрибутив позволяет установить оба варианта драйверов; переключение того или иного драйвера с платной версии на бесплатную (и наоборот) осуществляется через утилиту «Управление драйверами», также включенную в дистрибутив.

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

Программная лицензия. Дает возможность использовать платную версию драйвера на ПК, на который она приобреталась. Такая лицензия может генерироваться как для всего пакета драйверов целиком, так и для отдельных драйверов. Имеет ограничения: использование программной лицензии допускается только на том ПК, для которого она генерировалась; смена компонентов ПК приведет к изменению ID, на который лицензия генерировалась, и как следствие – к ее неработоспособности.

Аппаратные ключи. Есть два вида ключей – однопользовательские и многопользовательские. Однопользовательский ключ можно считать аналогом программной лицензии, но при этом, в отличие от программной лицензии:

  • его можно использовать на любой машине;
  • можно спокойно менять компоненты ПК.

С помощью многопользовательского ключа можно одновременно запустить драйвера на разных машинах, при этом должен быть соблюден ряд условий:

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

Более подробно настройки при использовании многопользовательского ключа будут описаны ниже.

Также наличие аппаратного ключа является обязательным условием, если планируется использовать платный вариант драйверов в терминальной сессии. При работе в терминальной сессии аппаратный ключ должен быть подключен к терминальному серверу. Локальные рабочие места могут использовать программные лицензии, однопользовательские ключи или многопользовательский ключ.

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

Программная лицензия НЕ ПОЗВОЛЯЕТ использовать платный вариант драйвера в терминальной сессии. Для работы бесплатной версии драйверов в терминальном режиме никаких ключей не требуется.

Итак, сделаем первые выводы. Для реализации схемы работы с одной ККМ с нескольких рабочих мест потребуется (это касается только платной версии драйвера):

  • при работе в локальной сети: наличие и правильная настройка многопользовательского ключа, либо наличие на каждом ПК, где установлены драйвера, однопользовательского ключа или программной лицензии;
  • при работе в терминальной сессии: наличие аппаратного ключа на терминальном сервере, а также наличие программных лицензий или аппаратных ключей на рабочих местах.

Схема работы в локальной сети и настройка драйвера.

На рис. 1 приведена обобщенная схема работы нескольких ПК с одной ККМ при работе в локальной сети без использования терминального сервера.

Настройка подключения к ККМ для того ПК, к которому ККМ подключена физически, никаких особенностей не имеет. Для остальных ПК необходимо настроить удаленное подключение.

Настройка подключения к ККМ осуществляется на странице свойств:

 

В открывшемся окне необходимо указать IP-адрес ПК, к которому физически подключена ККМ, а также порт, через который осуществляется взаимодействие (по умолчанию 6200).

 

Указываемый порт используется службой DtoSvc, и может быть изменен через программу «Управление драйверами» (вкладка «Служба»):

 

На всех ПК COM-порт указывается тот, к которому ККМ подключена физически.

В общем, на этом собственно настройка драйвера и заканчивается. То есть фактически,  она сводится только к указанию IP-адреса ПК, к которому физически подключена ККМ, а также порта, используемого службой DtoSvc и COM-порта подключения ККМ.

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

Часто складывается ситуация, когда рабочее место, к которому подключена ККМ, находится в сети за роутером. В этом случае требуется настроить проброс порта, который используется службой DtoSvc в роутере на это рабочее место (настройка зависит от модели используемого оборудования), а в настройках драйвера указывать IP роутера.

Настройка многопользовательского аппаратного ключа.

Для корректной работы многопользовательского ключа на рабочей станции, к которой он подключен, должен быть запущен сервер GUARDANT (входит в поставку ДТО-8):

 

Для старта сервера необходимо запустить программу GRDSRV.EXE, которая находится в папке:

Путь_установки_ДТО_8\NovexKey5

В этой же папки находятся драйвера для аппаратного ключа (для 32-х и 64-х разрядных систем),  а также руководство администратора по использованию и настройке GUARDANT.

Должна быть правильно настроена клиентская часть на каждой рабочей станции, где планируется использование многопользовательского ключа. Для этого необходимо внести корректные параметры в файл GNCLIENT.INI, который должен находиться в одной папке с зарегистрированным сервисом DtoSvc (путь по умолчанию Путь_установки_ДТО_8\Drivers8\Service).

Вот типичное содержимое файла конфигурации GNCLIENT.INI:

[PROTOCOLS]

TCP_IP=1

NETBIOS=2

[TIMEOUT]

TO_SEND=30

TO_RECEIVE=30

TO_SEARCH=5

[SERVER]

TCP_PORT=3182

UDP_PORT_CLIENT=3183

UDP_PORT_SERVER=3184

BC_ADDR=255.255.255.255

IP_NAME=127.0.0.1

NB_NAME=NVSK_SRVR

SEARCH=OFF

Нас интересуют всего два параметра: IP_NAME, в котором указывается IP-адрес машины, где установлен ключ и запущен сервер GUARDANT, а также SEARCH, который рекомендую устанавливать в OFF, чтобы не производился поиск ключа по всей сети. Также необходимо обратить внимание, чтобы порты, указанные в параметрах TCP_PORT, UDP_PORT_CLIENT и UDP_PORT_SERVER были доступны в системе и не использовались другими приложениями, а также не были заблокированы брандмауэром.

Организация очереди печати.

Механизм очереди печати является в настоящее время экспериментальным, и его описание в документации на драйвер отсутствует. Несмотря на это, уже несколько наших крупных партнеров используют его в своей работе при эксплуатации продуктов от 1С в течение достаточно длительного периода.

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

Типичным примеров такого программного обеспечения являются продукты 1С, используемые в терминальной сессии. При использовании проброса портов через DCOM первая запущенная сессия заблокирует COM-порт, который используется для связи с ККМ, и остальные сессии не смогут получить к нему доступ до завершения первой сессии.

Решение заключается в использовании заложенного в драйвер ККМ механизма очереди печати. К сожалению, доступные в настоящее время обработки 1С не поддерживают этот механизм, так как используют старый интерфейс драйвера. Чтобы использовать механизм очереди печати, обработку придется писать самим. Для упрощения этой задачи я подготовил костяк такой обработки. Ее можно использовать в неизменном виде для своих нужд, а можно переделать под себя. Какие свойства и методы драйвера используются для работы, видно из ее кода.

Физически очередь печати представляет собой последовательность запросов на доступ к ККМ. Все поступающее запросы обрабатываются последовательно по мере поступления, имея равные приоритеты. Поступивший запрос не может прервать выполнение текущего запроса, а также не может быть обработан до того, как будут выполнены запросы, пришедшие до него. Запрос может быть отменен (если он уже не начал выполнятся) тем клиентом, от которого поступил.

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

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

Основными недостатками реализации этого механизма на данный момент являются:

  • отсутствие возможности убрать «зависшие» запросы (например, когда связь с рабочим местом, создавшем запрос, потеряна);
  • необходимость значительной переработки или написания с нуля обработок для 1С.

Эти недостатки будут устранены в следующих релизах.

Рубрики База знаний · Таги,

Speak Your Mind

Tell us what you're thinking...
and oh, if you want a pic to show with your comment, go get a gravatar!

You must be logged in to post a comment.