Введение

Порядок создания и внедрения собственного драйвера фискального регистратора нижнего уровня разделяется на несколько этапов:

  1. Заявка на sd.rkeeper.ru — заявка для выдачи FiscRegTypeID для драйвера который будет разработан
  2. Добавление разрабатываемого драйвера в r_keeper — проверка разрабатываемого драйвера, путем переименования уже имеющегося в системе 
  3. Загрузка разработанного драйвера — добавление разработанного драйвера под собственным именем, после выполнения заявки на sd

Заявка на добавление нового драйвера

Добавление своего драйвера в r_keeper происходит следующим образом:

  1. Разработчик создает заявку с указанием определенных параметров
  2. После обработки заявки, запись о новом драйвере добавляется дистрибутив поставки в r_keeper
  3. Компания r_keeper добавляет новый номер FiscRegTypeID и параметры из заявки в файл upgradedevices.abs, предоставляет номер FiscRegTypeID и файл upgradedevices разработчику
  4. Разработчик добавляет файл upgradedevices.abs в папку workmods сервера справочников и перезапускает сервер справочников и менеджерскую станцию. Сервер справочников обновляет записи в своей базе.
  5. Менеджерская станция, подключившись к серверу справочников позволяет выбрать новый драйвер в свойстве FiscRegTypeID драйвера UniFR.dll (universal driver for fiscal printer) и настроить кассовую станцию на его использование.

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

Структура заявки

В заявке на регистрацию нового ФР на sd.rkeeper.ru необходимо указать следующую информацию:

  • Наименование ФР латинскими буквами для имени свойства фискального индекса у валют и налогов

  • Диапазоны индексов платежей, например: 1..4 или 0..7 и индекс по умолчанию, если не настроен никакой.
    Пример: для Титан-Ф диапазон указан от1 до 2, поэтому при попытке указать индекс больше 2, система вернет ошибку:
  • Диапазоны индексов налоговых ставок, например: 1..4 и индекс по умолчанию, если не настроен никакой.
    Пример: для Титан-Ф диапазон от 1 до 4, при попытке указать другой индекс, возникает ошибка

  • Имя DLL. Желательно начинать с fp[Наименование страны]_Название драйвера. Например: fpRU_Atol или fpKZ_Strih.

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

Для поддержки редактора параметров в менеджерской станции необходимо создать схему параметров в формате XSD, прилинковать её в качестве ресурса с именем DEVICECONFIGV01XSD в DLL драйвера.

Для автоматического распространения DLL драйвера от сервера справочников до всех станций, DLL следует упаковать в формат udb — это делает компания r_keeper по отдельной заявке и добавить в папку workmods сервера справочников. В этом случае DLL драйвера автоматически скачается с сервера справочников и будет помещена в папку к rk7man.exe при запуске файла rk7man.bat.

На этапе разработки драйвера (до упаковки в формат udb) DLL драйвера следует копировать в папку к rk7man.exe вручную. Если файл DLL драйвера будет отсутствовать в папке с rk7man.exe, то при нажатии на ... в параметре LowDriverParams драйвера UniFR будет вызван не специальный редактор параметров драйвера по схеме XSD, а обычный текстовый редактор. Параметры драйвера будут переданы в функцию UFRInitXML при запуске станции обслуживания в том виде, как они были сохранены в менеджерской станции.

Добавление драйвера под другим именем

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

Для этого необходимо выполнить следующие шаги:

  1. Запустите кассовый сервер и кассу без разрабатываемого драйвера. Касса должна выгрузить все необходимые для работы драйвера. Например драйвера графических библиотек, клавиатуры и т.д.
  2. Отредактируйте файл wincash.bat, чтобы при следующем запуске кассы не перезаписать разработанный драйвер добавленный в r_keeper.
    Для этого:
    1. В папке станции обслуживания откройте файл wincash.bat с помощью текстового редактора
    2. После метки :now_run добавьте строку команды перехода к метке, например goto new_start
    3. В конце текстового файла, перед командой start doscash.exe укажите метку для перехода :new_start
    4. Сохраните изменения и выйдите из редактора. 
  3. Отключите проверку целостностей модулей:
    1. В менеджерской станции перейдите в меню Настройки > Параметры
    2. Нажмите на значок лупы и геометрические фигуры под меню Персонал
       
    3. В поисковой строке введите consis
    4. Выберите параметр Режим проверки целостности модулей
    5. В блоке Основное в строке Значение из выпадающего списка выберите Без Проверки
    6. Сохраните изменения.
  4. Переименуйте свою разрабатываемую DLL на имеющуюся в системе. Рекомендуем использовать fpTestBuild.dll — DLL с большим диапазоном платежных и налоговых индексов. 
    То есть в папке с кассовым севером, вы находите файл fpTestBuild.dll переименовываете его, например fpTestBuild_2.dll. Свою dll, которую хотите протестировать называете fpTestBuild.dll
  5. Свою переименованную DLL добавьте в папку станции обслуживания к doscash.exe. Если менеджерская станция установлена в другую папку, или на другой компьютер — добавьте DLL и к ней в папку.
  6. Перезапустите серверы и менеджерскую станцию.
  7. В менеджерской станции добавьте на кассу, на вкладке свойства драйвер universal driver for fiscal printer
  8. В разделе Опции в строке FiscRegTypeID из выпадающего списка выберете драйвер, в который переименовали свой разрабатываемый. У нас это fpTestBuild.
  9. В настройках валют и налогов настройте фискальные индексы для драйвера fpTestBuild таким образом, как их будет использовать разрабатываемый драйвер.
  10. Сохраните изменения.
  11. Запустите станцию обслуживания.
    Ваш драйвер готов к работе.

Добавление драйвера под своим именем

После того как заявка на sd будет выполнена вы получите файл upgradedevices.abs и номер FiscRegTypeID

  1. Поместите файл в папку с сервером справочников.
  2. В разделе Опции в строке FiscRegTypeID из выпадающего списка выберете драйвер, имя которого указали в заявке
  3. В настройках валют и налогов настройте фискальные индексы для разработанного драйвера. Сохраните изменения. Запустите станцию обслуживания. Ваш драйвер готов к работе.

После того, как вы разработали и проверили свою DLL, для того чтобы не подбрасывать DLL в ручную для каждой кассы, необходимо упаковать драйвер в формат в udb. Это делается соответствующей заявкой на sd.

Нумерация версий для упаковки в формат udb.

Для автоматического распространения драйвера от сервера справочников на все станции обслуживания и менеджерские станции — используется формат udb.

Формат udb кроме DLL драйвера содержит дополнительную информацию, среди которой есть контрольная сумма DLL и число номера версии: от 1 до 2147483648
При запуске станции, DLL драйвера скачивается с сервера справочников только в том случае если:

  • Не совпадает контрольная сумма,
  • Число номера версии на станции меньше числа на сервере справочников.

Для формирования числа номера версии драйвера, компания r_keeper использует атрибут FILEVERSION в ресурсе VERSIONINFO.

Атрибут FILEVERSION формируется по следующим правилам:

  1. 1-ое число: константа 7 — обозначает драйвер, разработанный командой r_keeper7
  2. 2-ое число: номер версии протокола, которую учитывал разработчик при разработке драйвера
  3. 3-е число: сквозной номер версии драйвера. Монотонно увеличивается при каждой релизной сборке.
  4. 4-ое число: константа 0. Ненулевые значения используются в тестовых целях и не должны попадать в дистрибутив поставки и к конечному пользователю.

Из четырёх чисел FILEVERSION формируется число номера версии udb по следующей формуле:
число_номера_версии = 1000 * 3-е число + 4-ое число.

Если разработчик придерживается схемы нумерации, совместимой с вышеуказанной, то в заявке на упаковку DLL драйвера в формат udb требуется указать UDBVERSION=STD. В противном случае разработчик должен сам указывать число номера версии udb в виде UDBVERSION=12345.

Полезные статьи

  1. Описание протокола универсального драйвера — во вложении исходный текст примера тестового драйвера.
  2. https://github.com/rkeeper/rkeeper_desktop_hardware_driversтестовая dll, выложенная на GitHub.