# Установка и настройка ПО Abonement

# Установка серверной части



# Установка серверной части

*папка с дитрибутивом называется* **FullVersionVerXXX,** где XXX номер версии. *На данный момент актуальная версия 145.*

1\. Создайте папку C:\\\_UCS. Диск С: указан для примера, можно использовать любой.

2\. Создайте папку \_UCS\\FITNESS скопируйте в неё папки LIB, Licence, skins из папки \\fullVersionver…

3\. Папку LIB (например, C:\\\_UCS\\FITNESS\\LIB) нужно добавить в системную переменную переменную PATH - см. пункт 7.

**4.** Создайте папку **IBDATA** в папке **FITNESS** и из **\\fullVersionver...\\Empty** скопируйте в неё **fitness.fbk** (backup пустой базы) и файл **ibsh.errors.ru.**

5\. Из папки \\fullVersionver…\\Server\\INI.SERVER скопируйте файл shelter.IB.ini в системный каталог (папка C:\\Windows\\), предварительно настроив его (может не быть прав на изменение файла в системной папке). Параметры настройки файла:

```
[General]
Messages = "C:\FITNESS\IBDATA\ibsh.errors.ru"       ;путь до файла ibsh.errors.ru
skins    = "C:\FITNESS\skins\skins.ini"             ;путь до файла skins.ini
```

### Установка Firebird 2.5

<p class="callout warning">**!!!ВНИМАНИЕ!!! Для исключения возможности необоснованного роста базы данных и других неисправностей связанных с работой СУБД, необходимо использовать дистрибутив Firebird 2.5.3 из дистрибутива ПО "Абонемент" ( \\fullVersionver...\\FireBird\_2\_5\\)**</p>

**6.** Скопируйте содержимое папки **\\fullVersionver...\\FireBird\_2\_5** в **C:\\Program Files (x86)\\FireBird\\FireBird\_2\_5**

**7.** Папку **C:\\Program Files (x86)\\FireBird\\FireBird\_2\_5\\UDF\\** добавить в системную переменную PATH. Для этого необходимо:

Зайти в свойства компьютера → Дополнительные параметры системы → Переменные среды → в списке переменных найти «Path» и к ее значению в начале дописать путь до папки *(см. Рис. 1)*

[![image-1634547824197.png](https://docs.shelter.ru/uploads/images/gallery/2021-10/scaled-1680-/image-1634547824197.png)](https://docs.shelter.ru/uploads/images/gallery/2021-10/image-1634547824197.png)

***Рис. 1 - Добавление в переменную Path путей до папок***

**8.** В файле **C:\\Program Files (x86)\\FireBird\\FireBird\_2\_5\\Firebird.conf** найти параметр **RemoteServicePort** и указать для него значение **3080**

**9.** Установить службу с помощью bat-файла **C:\\Program Files (x86)\\FireBird\\FireBird\_2\_5\\bin\\install\_classic.bat**  (выполнять от имени администратора).

**10.** Проверить, запущена ли служба FireBird. Если нет — запустить её вручную через "Службы" Windows.

**11.** Добавить пользователя UCS, запустив bat-файл **C:\\Program Files (x86)\\FireBird\\FireBird\_2\_5\\bin\\addUserUCS.bat**

**12.** Если на машине используется только одна версия Firebird, файл **fbclient.dll** нужно копировать, копию переименовать в **gds32.dll** и поместить в папку **C:\\Windows\\System32\\**

*Если версий Firebird несколько, необходимо разместить файл gds32.dll, взятый из необходимой версии Firebird, под .exe-файлами тех программ, которые в своей работе обращаются к БД (например, в папке Abonementmanager данный файл уже имеется изначально).*

**13.** В первый раз программы нужно запустить **от имени администратора,** иначе необходимо вручную зарегистрировать ***midas.dll*** из папки **\\LIB\\** и ***frDlgDef.dll*** в папке **\\Reports\\dll\\** с помощью следующей команды (прописать в консоли windows, запущенной от имени администратора):

```
regsvr32 C:\_UCS\FITNESS\LIB\midas.dll
regsvr32 С:\_UCS\FITNESS\REPORTS\DLL\frDlgDef.dll 
```

# Новая страница



# Приложение 1 - Настройка bat-файлов.

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

###  1 \_backup\_2\_5.bat - создание копии базы (.fdb -&gt; .fbk)

```
set EXE_gbak="C:\Program Files (x86)\Firebird\FireBird_2_5\bin\gbak.exe"  ;путь до файла gbak.exe в папке, куда устанавливался FireBird
set EXE_rar="D:\_2_Base\_FB25\Rar.exe"                                    ;путь до файла запуска архиватора winRar

set FDB="127.0.0.1/3080:D:\_2_Base\_FB25\fitness.FDB"                     ;путь до рабочей базы
set FBK="D:\_2_Base\_FB25\autobackup\fitness.FBK"                         ;путь до файла, в который будет делаться бэкап (все папки должны быть уже созданы)
set RAR="D:\_2_Base\_FB25\autobackup\FITNESS.RAR"                         ;путь до файла с архивом бэкапа (все папки должны быть уже созданы)

if exist %FBK% del %FBK%                                                  ;удаляем предыдущий бэкап, если он имеется
%EXE_gbak%  -user "ucs" -password "ucs"   -b  %FDB% %FBK%                 ;делаем бэкап
%EXE_rar%   a -ep -ag %RAR%  %FBK%                                        ;создаём архив

```

###  2 \_restore\_2\_5.bat - Восстановление базы из бэкапа (.fbk -&gt; .fdb)

Обратите внимание, что при использовании файла \_restore.bat он **не** перезаписывает конечный файл с БД, а дополняет его, поэтому перед использованием запуском данного bat-файла нужно переименовать, переместить (рекомендуется внутри папки IBDATA создать папку **OLD**, куда и помещать предыдущие восстановленные из бэкапа базы), либо удалить уже имеющуюся БД с таким именем.

```
set EXE_gbak="C:\Program Files (x86)\Firebird\FireBird_2_5\bin\gbak.exe"
set EXE_rar="D:\_2_Base\_FB25\Rar.exe"

set FDB="127.0.0.1/3080:D:\_2_Base\_FB25\FITNESS_TEST.FDB"
set FBK="D:\_2_Base\_FB25\autobackup\FITNESS.FBK"

set resout=resultrestore.txt
set charset=win1251

if exist %resout% del %resout%
%EXE_gbak% -c -k -p 8192 %FBK% %FDB% -user ucs -password ucs -v -y %resout%

```

### 3 \_backup\_2\_5\_EX.bat - создание архива базы в случае её повреждения.

Стоит отдельно обозначить данный вариант создания архива БД, так как он будет работать в том случае, если невозможно сделать бекап поврежденной БД обычным методом (\_backup.bat)

```
set EXE_Gbak="C:\Program Files (x86)\Firebird\FireBird_2_5\bin\gbak.exe"
set EXE_Rar="c:\Program Files\WinRAR\Rar.exe"

set server=127.0.0.1/3080
set FDB_Dir=D:\FITNESS\_IBDATA
set FDB_Name=FITNESS

set FBK_Dir=%FDB_Dir%\autobackup
set FDB_Path=%FDB_Dir%\%FDB_Name%.FDB
set FDB="%server%:%FDB_Path%"
set FBK="%FBK_Dir%\%FDB_Name%.FBK"
set FBK_RAR="%FBK_Dir%\%FDB_Name%.RAR"
set FDB_ER="%FBK_Dir%\%FDB_Name%_ERROR.FDB"
set FDB_ER_RAR="%FBK_Dir%\%FDB_Name%_ERROR.RAR"

if exist %FBK% del %FBK%
%EXE_Gbak% -user "ucs" -password "ucs"  -b  %FDB% %FBK%
%EXE_Rar% a -ep -ag %FBK_RAR%  %FBK%

if exist %FDB_ER% del %FDB_ER% 
if not exist %FBK%  copy %FDB_Path% %FDB_ER% 
if exist %FDB_ER%  %EXE_Rar% a -ep -ag %FDB_ER_RAR% %FDB_ER%

```

### 4 restore\_1\_5\_to\_2\_5.bat - используется для миграции с FireBird 1.5 на Firebird B 2.5

```
set backup=" C:\fitness\IBDATA\Empty\fitness.FBK"	             
set dbname="127.0.0.1/3080:C:\fitness\ IBDATA \fitness.FDB" 
set resout=resultrestore.txt
if exist %resout% del %resout%
"C:\Program Files\Firebird\FireBird_2_5\bin\gbak.exe" -c -k -p 8192 %backup% %dbname% -FIX_FSS_DATA win1251 -FIX_FSS_METADATA win1251 -user ucs -password ucs -v -y %resout%

;set backup – локальный путь к файлу fitness.FBK – backup базы;
;set dbname – путь до новой базы, начиная с IP-адреса (имени) сервера, если используем Firebird 2.5 не забываем указывать порт .
```

# Приложение 2 - Выполнение SQL-скриптов.

##### IBExpert. Регистрация базы.

 Рассмотрим выполнение скриптов в программе IBExpert. Вход в программу осуществляется путем запуска файла **\\fullVersionver…\\OS\\IBEXPERT\\IBExpert.exe** - следует скопировать его в папку "\_UCS\\UTILS\\" для будущего использования клиентом.

1\. Зарегистрировать базу (если она ещё не зарегистрирована). Для этого необходимо: нажать кнопку ![](https://support.shelter.ru/sites/files/upload/images/nodes/8732/icon_reg_db.jpg) **Register Database** (в разделе Database), ввести необходимые параметры подключения (см. рис.1) (**Remote** - IP-адрес машины, **127.0.0.1** - для локальной машины, используемый порт - **3080**), выбрать кодировку **Win1251**, установить логин **UCS** и пароль **ucs** для базы, выбрать версию Firebird (для всех актуальных установок используется версия **2.5**). Указать путь до файла **gds32.dll**, который по умолчанию находится в папке с установленной версией Firebird в каталоге **bin.** Рекомендуется для **Alias**'а (отображаемого названия) использовать WORK - для рабочей базы и TEST - для тестовой.

![](https://support.shelter.ru/sites/files/upload/images/nodes/8732/vylozhit_na_sapport.jpg)

***(Рис.1 - Заполненные регистрационные данные базы)***

2\. Создать подключение к ещё одной базе можно простым методом - Клонировать Регистрационные Данные (**Clone Registration Info**) - нажав правой кнопкой на БД в списке **Database Explorer** (см. рис. 2 - пункт 1). Подключиться к базе данных, дважды кликнув по ней в списке либо выбрав соответствующий пункт из выпадающего меню (см. рис. 2 - пункт 2).

![](https://support.shelter.ru/sites/files/upload/images/nodes/8732/screenshot_2.jpg)

***(Рис.2 - Клонирование данных базы и Подключение)***

## Выполнение скрипта.

3\. Зайти в меню ![](https://support.shelter.ru/sites/files/upload/images/nodes/8732/script_exe1.jpg) Tools\\Script Executive (**Ctrl+F12**), открыть ![](https://support.shelter.ru/sites/files/upload/images/nodes/8732/open.jpg) sql файл, содержащий нужный скрипт, установить галочку (checkbox) **"Use current connect"** (данная функция будет активна, если выполнено хотя бы одно подключение).

*При выполнении скриптов, базу регистрировать не обязательно - если подключение не выполнено, можно указать путь до базы в самом скрипте, например так:*

```
CONNECT '127.0.0.1/3080:c:\FITNESS\IBDATA\FITNESS.FDB' USER 'UCS' PASSWORD 'ucs';

```

4\. Нажать кнопку ![](https://support.shelter.ru/sites/files/upload/images/nodes/8732/run.jpg) Run Script (**F9**). Скрипт должен выполнится без ошибок. Выполните его на рабочей (пустой) и на тестовой базе.

5\. При обновлении базы данных программы abonementmanager, скрипты выполняются в возрастающем порядке (например, при переходе со 117 на 119 версию - сперва выполнить скрипт 118, а потом 119). Перед любыми обновлениями необходимо всё проверить на копии базы. Копия базы делается только через bat-файлы backup/restore.

6\. После обновления, необходимо сделать backup-restore базы.

## Пример выполнения скрипта перевода базы на английский язык

\*по аналогии, выполняется любой другой скрипт

<div id="bkmrk-%C2%A0-%D0%A0%D0%B8%D1%81.3.%C2%A0%D0%97%D0%B0%D1%85%D0%BE%D0%B4%D0%B8%D0%BC-%D0%B2-%D0%BF"><div><div>![](https://support.shelter.ru/sites/files/upload/images/nodes/8978/translate_register_db_ibexpert_1.png)</div><div> </div><div>***Рис.3.*** *Заходим в программу IBExpert (FullVersionVer129/OS/IBEXPERT/ibexpert.exe), нажимаем на кнопку "Register database".*</div><div> </div><div>*![](https://support.shelter.ru/sites/files/upload/images/nodes/8978/translate_register_db_ibexpert_2.png)*</div><div><div> </div><div>***Рис.4.** Прописываем путь к БД "Абонемент" (см. Регистрация базы).*</div><div> </div></div></div></div>![](https://support.shelter.ru/sites/files/upload/images/nodes/8978/translate_connect_db_ibexpert_3.png)

***Рис.5.*** *Нажимаем кнопку "Connect ot Database" **(1)** затем нажимаем кнопку"Script Executive" **(2).***

![](https://support.shelter.ru/sites/files/upload/images/nodes/8978/translate_execute_db_ibexpert_4.png)

***Рис.6.*** *В открывшемся окне ставим галку "Use current connect", далее нажимаем "Script"-&gt;"Run from file..." и в открывшемся окне выбираем наш скрипт (например: <u>Translate\_DB\_to\_English.sql</u>) и нажимаем кнопку "Открыть".*

*![](https://support.shelter.ru/sites/files/upload/images/nodes/8978/translate_execute_db_ibexpert_5.png)*

***Рис.7**.* *Выполнится скрипт, после чего появится информационное сообщение о его успешном выполнении.*

После выполнения перечисленных выше действий - закрываем IBExpert.

# Приложение 3 - Управление лицензиями.

<div id="bkmrk-_____-%D0%BE%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5-%D0%B2-%D1%80%D0%B0%D0%B7">_____ описание в разработке____</div>#### Работа с ключом защиты ПО Абонемент.

<div id="bkmrk-"></div><div id="bkmrk-%D0%9F%D0%BE%D1%81%D0%BB%D0%B5-%D1%82%D0%BE%D0%B3%D0%BE%2C-%D0%BA%D0%B0%D0%BA-%D1%83%D1%81%D1%82%D0%B0">После того, как установлены драйвера для ключа, и ключ вставлен в ПК, запустите файл **licence.exe** из **Абонемент** **Fullversion\\\_\_SERVER\\Licence\\** или скачайте его **[по этой ссылке.](ftp://ftp.shelter.ru/Abonement/FullVersion/Licence/)**</div><div id="bkmrk-%D0%95%D1%81%D0%BB%D0%B8-%D0%B2%D1%81%D1%91-%D0%B2-%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B5%2C-">Если всё в порядке, после нажатия кнопки «Получить код сессии» в поле «Код сессии» появится набор символов, по 4, разделенных «-». (см. Рис. 3)</div><div id="bkmrk-%D0%95%D1%81%D0%BB%D0%B8-%D0%BA%D0%BE%D0%B4-%D1%81%D0%B5%D1%81%D1%81%D0%B8%D0%B8-%D0%BD%D0%B5-%D0%BF">Если код сессии не появился, перед вами пустой не форматированный ключ. Нажмите кнопку Форматирование ключа. **Внимание! Убедитесь что в данном компьютере установлен только этот ключ.**</div><div id="bkmrk-%D0%94%D0%BB%D1%8F-%D0%B4%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F-%D0%BB%D0%B8%D1%86%D0%B5%D0%BD">Для добавления лицензии: запустить licence.exe, получить "код сессии", сообщить его в московский офис КБЦП Спектр (вместе с информацией о требуемой лицензии) на почтовый ящик **licenсe@shelter.ru** и **zakaz@game-keeper.com**</div><div id="bkmrk-%D0%92-%D0%BC%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%BE%D0%BC-%D0%BE%D1%84%D0%B8%D1%81%D0%B5%C2%A0-">В московском офисе сформируют "код лицензии" - его необходимо ввести в поле «Код для записи» (см. Рис.3).</div><div id="bkmrk-%C2%A0"> </div><div id="bkmrk-%C2%A0%D0%9F%D0%BE%D1%81%D1%82%D0%B0%D0%B2%D0%B8%D1%82%D1%8C-%D1%87%D0%B5%D0%BA%D0%B1%D0%BE%D0%BA%D1%81-%C2%AB"> Поставить чекбокс «Полная очистка перед записью»  
 Нажать «Прописать ключ»  
 Перезапустить ServerT1</div><div id="bkmrk--0"></div><div id="bkmrk-%D0%92%D0%BD%D0%B8%D0%BC%D0%B0%D0%BD%D0%B8%D0%B5%21-%D0%93%D0%BB%D0%BE%D0%B1%D1%83%D1%81%D0%BE%D0%BC%2C-">**Внимание! Глобусом, расположенным после ID ключа, не пользоваться!** </div><div id="bkmrk-%C2%A0-0"> </div><div id="bkmrk--1">![](https://support.shelter.ru/sites/files/upload/images/nodes/8728/licence.png)</div>[![image-1673345820045.png](https://docs.shelter.ru/uploads/images/gallery/2023-01/scaled-1680-/image-1673345820045.png)](https://docs.shelter.ru/uploads/images/gallery/2023-01/image-1673345820045.png)

<div id="bkmrk-%C2%A0-1"> </div><div id="bkmrk-%D0%A0%D0%B8%D1%81.3---%D0%92%D0%BD%D0%B5%D1%88%D0%BD%D0%B8%D0%B9-%D0%B2%D0%B8%D0%B4-">***Рис.3 - Внешний вид окна Licence.exe***</div>

# Приложение 4 - Отслеживание автоматического запуска приложений.

 Описание утилиты StarterA1.exe

Файлы программы лежат в папке **\\FullVersionVer...\\UTILS**

<div id="bkmrk-%D0%94%D0%B0%D0%BD%D0%BD%D0%B0%D1%8F-%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0-%D0%BE%D1%82%D1%81">Данная программа отслеживает, запущено ли приложение, и запускает его при необходимости. Имеется возможность использовать следующие параметры запуска:</div>- Инсталлировать: StarterA1.exe /install - для инсталляции службы, создать ярлык и прописать в нём после пути к файлу "-install"
- Деинсталлировать: StarterA1.exe /uninstall
- Запустить службу: StarterA1.exe /start
- Остановить службу: StarterA1.exe /stop

<div id="bkmrk-%D0%9E%D1%82%D1%81%D0%BB%D0%B5%D0%B6%D0%B8%D0%B2%D0%B0%D1%8E%D1%82%D1%81%D1%8F-%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6">Отслеживаются приложения, которые настраиваются в ini-файле, в секции [tasks.XXX] , где XXX - номер приложения от 0 до 100.</div>```
 [tasks.XXX]
   exename = C:\Projects\GKHC\GKHOSTCONNECT2\gkhostconnect.exe       ;Путь до исполняемого файла. Всегда следует использовать полный (абсолютный) путь. Именно этот файл служба ищет в процессах
   enabled=1                                                         ;0 - не отслеживать этот exe, 1 - отслеживать. По умолчанию enabled=0
   parameters=                                                       ;Параметры командной строки для запуска exe
   CommandLine=C:\Projects\GKHC\GKHOSTCONNECT2\gkhostconnect.exe dodo
   
```

## Порядок работы службы

<div id="bkmrk-%C2%A0-1.-%D0%A1%D0%BB%D1%83%D0%B6%D0%B1%D0%B0-%D0%BA%D0%B0%D0%B6%D0%B4%D1%83%D1%8E-%D1%81"> 1. Служба каждую секунду проверяет секции [tasks.XXX]</div><div id="bkmrk-%C2%A0-2.-%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D0%B8%D1%80%D1%83%D0%B5%D1%82-%D0%BF%D0%B0%D1%80"> 2. Анализирует параметр enabled. Если enabled=1, то см.п.3</div><div id="bkmrk-%C2%A0-3.-%D0%A1%D0%BB%D1%83%D0%B6%D0%B1%D0%B0-%D0%B8%D1%89%D0%B5%D1%82-%D0%B2-%D0%BF"> 3. Служба ищет в процессах процесс exename</div><div id="bkmrk-%C2%A0-4.-%D0%95%D1%81%D0%BB%D0%B8-%D0%9D%D0%95-%D0%BD%D0%B0%D1%85%D0%BE%D0%B4%D0%B8%D1%82"> 4. Если НЕ находит, то анализирует параметры CommandLine, exename и parameters.</div><div id="bkmrk-%C2%A0-5.-%D0%95%D1%81%D0%BB%D0%B8-commandlin"> 5. Если CommandLine НЕ пустой, то служба пытается запустить его. Если CommandLine пустой, то служба создаёт строку exename + parameters и пытается запустить её.</div><div id="bkmrk-%C2%A0-%C2%A0%C2%A0"> </div><div id="bkmrk-%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80-delayafters">Параметр DelayAfterStart в секции [tasks.XXX] - отвечает за задержку после успешного запуска (в миллисекундах). По умолчанию равен нулю.</div>```
[tasks.XXX]
  DelayAfterStart=3000

```

## Примеры использования

Рекомендуется создавать отдельную копию утилиты для контроля запуска каждой необходимой программы. Для удобства, внутри ini-файла следует изменять имя и описание Службы. Например:

```
[Main]
DisplayName = UCS Служба StarterA1           ;Имя сервиса - отображается в графе "Имя" в "Службах"
ServiceName = StarterA1_1                    ;Внутреннее имя сервиса (одно слово. Только латинские символы и цифры. Начинается с буквы)
Description = UCS StarterA1 - ServerT1       ;Описание сервиса - отображается в графе "описание" в "службах"

```

Неполный список утилит, которым требуется контроль автоматического запуска:

- ServerT1
- TcpCardReader
- gkhostconnect

# Приложение 5 - Настройка автоматического резервного копирования.

\_\_\_\_\_under construction \_\_\_\_

##### Настройка автоматического резервного копирования.

Необходимость настройки автоматического резервного копирования продиктована множеством причин и является <u>обязательным</u> элементом работы с БД. При установке ПО, необходимо заключить с клиентом соглашение о резервном копировании БД, которое оставляет дальнейшую ответственность за резервное копирование на заказчике (приложено к данной статье).

Чтобы настроить автоматический backup БД, необходимо создать **Простую Задачу** в Планировщике Задач Windows (**Task Scheduler**).

<u>**Триггер:**</u> ежедневно. Повторять каждый день или чаще/реже - по договорённости с заказчиком. Обычно бэкап делается в ночное время (никто не работает с базой, в ней сохранены все изменения за день). Установите галочку "

<u>**Действие:**</u> запустить программу. Указываем путь до bat-файла \_backup.bat, который находится в директории **\\FITNESS\\IBDATA\\** - *подробнее см*. [**Приложение 1. Настройка bat-файлов.**](https://docs.shelter.ru/books/ustanovka-po-abonement/page/nastroyka-bat-faylov-na-primerakh)

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

Рекомендуемой опцией резервного копирования является настройка копирования на внешний диск / диск удаленной машины / облачное хранилище данных (например <u>**Yandex Disk**</u>). Для этого необходимо установить Яндекс (или Google) Диск на локальную машину, настроить папку синхронизации и установить копирование архива бэкапа базы в эту папку, таким образом она будет синхронизироваться с облачным хранилищем, значительно уменьшая вероятность потери данных, необходимых для восстановления БД.

<table class="sticky-enabled sticky-table" id="bkmrk-%D0%92%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5-%D0%A0%D0%B0%D0%B7%D0%BC%D0%B5%D1%80-ucs_" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Roboto, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; font-size: 14px;"><thead class="tableHeader-processed"><tr><th>Вложение</th><th>Размер</th></tr></thead><tbody><tr class="odd"><td>[ucs\_soglashenie\_storon\_o\_rezervnom\_kopirovanii.doc](https://support.shelter.ru/ru/system/files/upload/nodes/8744/ucs_soglashenie_storon_o_rezervnom_kopirovanii.doc)</td><td>628.5 КБ</td></tr></tbody></table>

# Установка клиентской части

# Установка клиентской части программы Abonement Manager

<div id="bkmrk-%D0%94%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%B8%D1%8F-%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%BE%D0%B4%D1%8F%D1%82%D1%81">Действия производятся на компьютере, который будет являться рабочим местом. Обратите внимание, что количество рабочих мест ограничено количеством купленных лицензий. Машина, являющаяся сервером, одновременно может являться рабочим местом.</div><div id="bkmrk-%C2%A0"> </div><div id="bkmrk-1.-%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%B9%D1%82%D0%B5-%D0%BF%D0%B0%D0%BF%D0%BA%D1%83%C2%A0fi">1. Создайте папку **FITNESS** и скопируйте в неё папки **LIB, EXE , Report** из папки **\\fullVersionver…**</div><div id="bkmrk-2.-%D0%92-%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%BD%D1%83%D1%8E-%D0%BF%D0%B5%D1%80%D0%B5%D0%BC">2. В системную переменную PATH добавьте путь до папки LIB (например, **C:\\UCS\\FITNESS\\LIB**). </div><div id="bkmrk-3.-%D0%9F%D1%80%D0%BE%D0%BF%D0%B8%D1%88%D0%B8%D1%82%D0%B5-%D0%B2-%D1%84%D0%B0%D0%B9%D0%BB%D0%B5">3. Пропишите в файле **abonementmanager.ini**, находящийся в папке **\\FITNESS\\EXE** путь до используемой базы данных:</div><div id="bkmrk-"></div>```
[database]
dbname = сервер/3080:C:\UCS\FITNESS\IBDATA\fitness.FDB                  
;где сервер – это имя или ip адрес компьютера, где установлена серверная часть, например 127.0.0.1/3080:C:\FITNESS\IBDATA\FITNESS.FDB

```

<div id="bkmrk-4.-%D0%A3%D0%BA%D0%B0%D0%B6%D0%B8%D1%82%D0%B5-%D0%B2-%D1%84%D0%B0%D0%B9%D0%BB%D0%B5%C2%A0-">4. Укажите в файле abonementmanager.ini путь до пк, где запущен сервер блокировок (ServerT1.exe) в секции [LOCK.SERVER]. Проверьте, что номер порта совпадает с указанным в файле LockServer.ini</div><div id="bkmrk--0"></div>```
[LOCK.SERVER]
  TCPHost = 127.0.0.1 
  TCPPort = 1111

```

<div id="bkmrk-5.-%D0%95%D1%81%D0%BB%D0%B8-%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D1%83%D0%B5%D1%82%D1%81%D1%8F">5. Если используется считыватель карт (TcpCardReader), проверьте, что в файле abonementmanager.ini указано значение "1" в строке **UseTCPCardReader=1**.</div><div id="bkmrk-%D0%92-%D1%81%D0%B5%D0%BA%D1%86%D0%B8%D0%B8-%5Bhardware.r">В секции [HARDWARE.READER] Параметр "COMPORT" поставьте равным несуществующему порту, например, "99".</div><div id="bkmrk-%C2%A0-0"> </div><div id="bkmrk-6.%C2%A0-%D0%92%C2%A0abonementmanag"><div>6. В **abonementmanager.ini** в секции **\[Defaults\]** есть возможность настроить WEB-камеру (например, для получения изображений клиентов и сохранения их в карточке клиента):</div><div> </div><div>**usecamera=0** - использовать WEB-камеру. По умолчанию 0 - не использовать.</div><div>**usecamera=1** - при открытии карточки клиента будет видно на экране изображение с камеры. Кнопка **"Фотографировать"** в карточке клиента сделает снимок с камеры и сохранит его как фотографию клиента.</div><div>**DefaultCameraName=Eye 312** - Название WEB-камеры (из списка устройств Windows).</div><div> </div></div><div id="bkmrk-7.-%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D1%8C%D1%82%D0%B5-%D0%BD%D0%B0%D0%BB%D0%B8%D1%87%D0%B8%D0%B5">7. Проверьте наличие файла gds32.dll в папке **\\FITNESS\\EXE (**или **С:\\UCS\\FITNESS\\LIB\\).** Если файл отсутствует, скопируйте **fbClient.dll из папки \\fullVersionver…\\FireBird\_2\_5\\bin** в одну из этих папок и переименуйте новый файл в gds32.dll.</div><div id="bkmrk-%C2%A0-1"> </div><div id="bkmrk-8.%C2%A0-%D0%9F%D1%80%D0%B8-%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B8-"><div><div>8. При подключении ККТ должен быть прописан параметры:</div></div></div>```
[pos]
RunPosDllName=URunPos.dll
```

```
[defaults]
StdKioskCode= Код киоска в программе
```

**[Подключение ККТ](https://docs.shelter.ru/books/podklyucenie-kkt-k-abonement)**

9\. В первый раз программы нужно запустить **от имени администратора,** иначе необходимо вручную зарегистрировать ***midas.dll*** из папки **\\LIB\\** и ***frDlgDef.dll*** в папке **\\Reports\\dll\\** с помощью следующей команды (прописать в консоли windows, запущенной от имени администратора):

```
regsvr32 C:\UCS\FITNESS\LIB\midas.dll
```

<div id="bkmrk--1"></div>```
regsvr32 С:\UCS\FITNESS\REPORTS\DLL\frDlgDef.dll
```

<div id="bkmrk--2"></div><div id="bkmrk-9.-%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%B9%D1%82%D0%B5-%D0%BD%D0%B0-%D1%80%D0%B0%D0%B1%D0%BE%D1%87">10. Создайте на рабочем столе ярлыки для Abonementmanager.exe и FReports.exe.</div>

# Перезагрузка сервера блокировок Abonement

Инструкция по проведению процедуры сброса сервера блокировок:

Сервер блокировок работает как служба.

1. Для доступа к службам на сервере необходимо зайти в диспетчер задач (правая кнопка мыши на панели задач и нажать на Диспетчер задач):

[![image-1626781480626.png](https://docs.shelter.ru/uploads/images/gallery/2021-07/scaled-1680-/image-1626781480626.png)](https://docs.shelter.ru/uploads/images/gallery/2021-07/image-1626781480626.png)

2. В открывшемся окне выбрать вкладку Службы (пункт 2 на рисунке ниже).
3. Найти службу с именем: UCSServerT1Service
4. Нажать правой кнопкой мыши на самой службе (пункт 3 на рисунке ниже).

 В выпадающем списке выбрать "Остановить",

5. Нажать правой кнопкой мыши на самой службе (пункт 3 на рисунке ниже)

 В выпадающем списке выбрать "Запустить" (если служба не запуститься - то попробовать повторно Запустить).

[![image-1626781539618.png](https://docs.shelter.ru/uploads/images/gallery/2021-07/scaled-1680-/image-1626781539618.png)](https://docs.shelter.ru/uploads/images/gallery/2021-07/image-1626781539618.png)

Все подключения к базе обновятся принудительно.

# Интеграции Abonement



# Интеграция iiko и Абонемент / Shelter

**Описание интеграции iiko и Абонемент / Shelter.**

Структурная схема связки выглядит следующим образом:

[![image-1628232502640.png](https://docs.shelter.ru/uploads/images/gallery/2021-08/scaled-1680-/image-1628232502640.png)](https://docs.shelter.ru/uploads/images/gallery/2021-08/image-1628232502640.png)

**Структура взаимодействия модулей и программ.**

iiko при оплате на специальным платежом обращается к Connecter, который обращается к ShelterConnect.dll, которая работает с базой данных Абонемент/Shelter.

Используемые версии ПО:

- Версия ПО Абонемент: 1.134
- Версия Connecter: 1.64
- Версия iiko: 5.5

**Лицензирование.**

Команды для закрытия из iiko защищены ключом, необходимо иметь **проект 2** **модуль 12** в используемом ключе защиты. До момента доработки плагина от iiko - нужен **проект 1 модуль 2.**

**Необходимые файлы в папке с Connecter.exe.**

- SCRK6530.dll
- ShelterConnect.dll
- ShelterConnect.ini

Используются те же файлы, что и при интеграции с RKeeper 7, приложены к статье ([ShelterRK7.rar](https://docs.shelter.ru/attachments/10)) и есть с сборке FullVersion Абонемент.

**Настройки iiko.**

Выполняются специалистами, устанавливающими iiko ([https://ru.iiko.help/articles/#!special-iiko/ucsshelter](https://ru.iiko.help/articles/#!special-iiko/ucsshelter))

Плагин от iiko: [http://rapid.iiko.ru/plugins/Smart%20UCSShelter/V5/](http://rapid.iiko.ru/plugins/Smart%20UCSShelter/V5/)

**Настройки Connecter.**

1. Выполнить стандартные настройки Connecter.
2. Connecter Должен быть настроен на БД, в которую будет осуществляться закрытие.
3. В секции **\[Charset\]** необходимо установить параметр **UseUrlEncode=0.**

Настроить секцию **\[HotelInterface\]**

`[HotelInter face]`

`HotelInterFaceDllname=D:\connecter\SCRK6530.dll`

`enabled=1`

`FolioMask=0`

**Настройки ShelterConnect.**

`[Database]`

`<strong>dbname=%Путь до БД Абонемент/Shelter%</strong>`

`DBuser = UCS`

`DBpassword = oQKH8n0BFUE=`

`[ExternalClient]`

`  ClientID  = 1       <span style="background-color: #ffffff;">  - код shelterconnect'a, если используются несколько ShelterConnect.DLL</span>`

`  IdentPhysType = 200  <span style="background-color: #ffffff;"> - Тип устройства: 2-магнитные карты, 200-замок,ключ</span>`

`  ConvertOperationNeed = 1 <span style="background-color: #ffffff;"> -  0- не использовать секцию [TranslateOperation], 1- использовать секцию</span>`

`  ToOEM = 1`

`  NeverRestrictTransaction = 1 <span style="background-color: #ffffff;">  -   0- проверять баланс фолио перед совершением транзакции, 1- не проверять баланс перед совершением транзакции</span>`

`  FolioMask = $04  <span style="background-color: #ffffff;"> - Фиксированное значение. Устанавливается UCS. Не трогать!</span>`

`  ShowBalance = 1`

`  ShowBalanceFirst = 1 <span style="background-color: #ffffff;">  -   1 — при запросе разрешенной суммы оплаты добавлять к имени клиента текущий баланс, 0</span> <span style="background-color: #ffffff;">- не добавлять</span>`

`ShowPermissibleSumAsBalance = 1`

``

`[log]`

`  FileName   = ShelterConnect.log`

`  Level      =  40   `

`  DebugLevel =  40`

`[GarbageCollector]`

`  Enabled  = 0`

`  LifeTime = 120`

`[SCRK6]`

`  <strong>UseDetails = 0</strong>`

`  AlcoholicOperation =999;`

`  Messages =SCRK6.eng.msg`

`  UseScreenHeader0 =0`

`  UseScreenHeader1 =0`

`  UseScreenSequelCode =0`

`  ShowBalance = 1`

`  ShowBalanceFirst = 1`

`  ShowBalanceEverywhere = 1`

`  <strong>UseSuperDetails = 1</strong>`

`  RoomInfoMode = 3`

`[PARAMS]`

`  NoAutoDiscount = 1`

`  Section =0`

`  UseSection =1`

`[TranslateOperation]`

`<strong>; </strong><strong>ЧТО</strong><strong>_</strong><strong>ПРИХОДИТ</strong><strong>_</strong><strong>ИЗ</strong><strong>_iiko=</strong><strong>КОД</strong><strong>_</strong><strong>УСЛУГИ</strong><strong>_</strong><strong>В</strong><strong>_</strong><strong>АБОНЕМЕНТЕ</strong>`

`<strong>     </strong><strong>1=301</strong>`

`[TranslatePayment]`

`<strong>  1111 = 70996,НАЛ</strong>`

**Реализованный функционал:**

<table id="bkmrk-%D0%9A%D0%B5%D0%B9%D1%81-%D0%A0%D0%B5%D0%B7%D1%83%D0%BB%D1%8C%D1%82%D0%B0%D1%82-%D0%97%D0%B0%D0%BA%D1%80%D1%8B" style="width: 814px;" width="1000"><thead><tr><td class="align-center" style="width: 334px;">**Кейс**

</td><td class="align-center" style="width: 480px;">**Результат**

</td></tr></thead><tbody><tr><td style="width: 334px;">Закрытие по номеру ФОЛИО

</td><td style="width: 480px;">После ввода номера фолио в iiko отображается гость, администратор визуально идентифицирует его по фотографии и подтверждает. Заказ закрывается, на фолио гостя начисляется услуга. При просмотре внешнего чека можно увидеть подробную информацию о заказе.

</td></tr><tr><td style="width: 334px;">Закрытие на номер по номеру карты гостя

</td><td style="width: 480px;">После ввода номера карты гсотя/считывания карты гостя в iiko отображается гость, администратор визуально идентифицирует его по фотографии и подтверждает. Заказ закрывается, на фолио гостя начисляется услуга. При просмотре внешнего чека можно увидеть подробную информацию о заказе.

</td></tr><tr><td style="width: 334px;">Закрытие по номеру карты поселения

</td><td style="width: 480px;">После ввода номера карты поселения/считывания карты поселения в iiko отображается гость, администратор визуально идентифицирует его по фотографии и подтверждает. Заказ закрывается, на фолио гостя начисляется услуга. При просмотре внешнего чека можно увидеть подробную информацию о заказе.

</td></tr><tr><td style="width: 334px;">Закрытие по номеру комнаты

</td><td style="width: 480px;">После ввода номера комнаты в iiko отборажается проживающий в ней гость, администратор визуально идентифицирует его по фотографии и подтверждает. Заказ закрывается, на фолио поселения начисляется услуга. При просмотре внешнего чека можно увидеть подробную информацию о заказе.

</td></tr><tr><td style="width: 334px;">Закрытие на незаселенный номер

</td><td style="width: 480px;">После ввода номера в iiko отбражается соответствующая ошибка.

</td></tr><tr><td style="width: 334px;">Закрытие на номер комнаты с несколькими проживающими

</td><td style="width: 480px;">После ввода номера комнаты в iiko отборажаетсясписок проживающих в ней гостей. Если проживающие заселены местами и у каждого собственное фолио, то заказ будет закрыт на фолио поселения выбранного гостя, иначе - на общее фолио поселения.

</td></tr><tr><td style="width: 334px;">Закрытие с разными TRANSACTION\_ID

</td><td style="width: 480px;">В iiko есть возможность настроить передачу различных TRANSACTION\_ID для начисления разных услуг на фолио, например "Бар" и "Кухня". Как настроить необходимо уточнять у специалистов iiko.

</td></tr><tr><td style="width: 334px;">Отмена чека

</td><td style="width: 480px;">При отмене чека создается соответствующая корректирующая транзакция на целевом фолио.

</td></tr><tr><td style="width: 334px;">Закрытие на фолио с недостатком баланса

</td><td style="width: 480px;">При попытке закрыть заказ iiko сообщает об ошибке

</td></tr><tr><td style="width: 334px;">Закрытие со скидкой

</td><td style="width: 480px;">При закрытии чека со скидкой можно увидеть соответствующую информацию (полную стоимость, сумму и название примененной скидки) при просмотре внешнего чека.

</td></tr></tbody></table>

Недочеты, которые будут устранены в ближайшее время: при нехватке средств на фолио, ошибка не отображается в читабельном виде, вместо нее отображается "SCRK6/6.0.1: Ok".

**Просмотр внешнего чека (Shelter).**

Для просмотра внешнего чека используется rk6check.fr3 (включена в базовую поставку Shelter актуальных версий).  
Для корректного отображения содержимого чека iiko необходимо:  
1\. В ..\\Firebird\\udf\\ скопировать shrk6udf.dll и shrk6udf.ini (эти файлы можно найти в базовой поставке FullVersion актуальных версий)  
2\. В shrk6udf.ini настроить так:

`[heap]`

`oemtochar=1`

`[CheckXML]`

`decodeType=0`

3\. Перезапустить службы FireBird, выполнить закрытие на номер, проверить результат.

# Новая страница



# Новая страница



# Интеграция Абонемент и RK7 через Farcards

Интеграция RK7 с Абонементом представляет собой следующую структурную схему (рис.1)

<div drawio-diagram="842"><img src="https://docs.shelter.ru/uploads/images/drawio/2021-11/drawing-12-1636645139.png" alt=""/></div>

Рисунок 1

**RKeeper** при оплате на специальную валюту, например, "Закрытие на фолио Абонемента" в категории "платежные карты" обращается к **FarCards**, который вызывает подключенную к нему **sdmHTTPFarCard.dll**. Последняя dll обращается к ключу защиты и <span style="text-decoration: underline;">**если лицензия найдена (проект 2 модуль 11)**</span>, отправляется XML запрос на TCP/IP сервер - программу **HTTPRKtoSH**. Этот сервер обращается к базе данных через библиотеку **ShelterConnect.dll**

Интеграция проверялась на версии Абонемента 145+ с версией RK7 **7.6.5.475.**

- Версия FarCards 6.04
- Версия HttpToSH 1.5.0.1
- ShelterConnect 1.9.0.3
- sdmHTTPFarCard.dll 1.17.0.5

<p class="callout info">**Новая схема работы связки с продажами в кредит. Rkeeper v7.25.04.001 + Абонемент v148 по ссылке:**</p>

**[https://docs.shelter.ru/books/ustanovka-i-nastroyka-po-abonement/page/rkeeper-prodaza-v-kredit-oplata-kredita-v-abonemente](https://docs.shelter.ru/books/ustanovka-i-nastroyka-po-abonement/page/rkeeper-prodaza-v-kredit-oplata-kredita-v-abonemente)**

#### Подготовка утилит

##### 1. FarCards 

FarCards устанавливается на любом компьютере в одной сети с кассой и кассовым сервером. Если модуль лицензии прописан в одном ключе с Абонементом, то FarCards обязательно устанавливается на машину, где установлен этот ключ, как правило это сервер, в противном случае необходимо в настройках будет указать ip/port в секции \[LOCK.SERVER\] машины, где установлен сервер блокировок.

Настройка FARCARDS.INI

```
[FarServer]
Type = 1
 DLL = sdmHTTPFarCard.dll
Gate = 1
log = 30
XMLCP=1251

[LinkDLL]
1 = pds_netk
 
[pds_netk]
NetServerName=rk_first
ininame=netk.ini
DebugMessages=1

```

NetServerName - серверное имя. Оно понадобиться в настройках PDS интерфейса RK7.

##### 2. sdmHTTPFarCard.dll

<div id="bkmrk-farcards-%D0%BE%D0%B1%D1%80%D0%B0%D1%89%D0%B0%D0%B5%D1%82%D1%81%D1%8F-">**FarCards** обращается к **sdmHTTPFarCard.dll**, которая <span style="text-decoration: underline;">**должна находиться в папке с FarCards**</span>. **sdmHTTPFarCard.dll** **защищена ключом защиты Shelter/Абонемент**. </div><div id="bkmrk-%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B8-%D0%BE%D1%81%D1%83%D1%89%D0%B5%D1%81%D1%82%D0%B2%D0%BB%D1%8F">Настройки осуществляются в файле **HTTPFarCard.ini**. Ниже приведен его пример.</div><div id="bkmrk--0"></div>```
[PARAMS]
  ClientCode = HOTEL
  UserCode = UCS
  UserPwd = 12345
  LangCode = RU

[SERVER]
  Port =2277
  Host =127.0.0.1

[LOCK.SERVER]
  TCPHost = 81.94.140.196
  TCPPort = 1116
  Project = 2
  Module = 11   

[LOG]
  FileName=HTTPFarCards_AB.log
  Level = 100
  DebugLevel = 100

```

<div id="bkmrk-%D0%92-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0%D1%85-">В данных настройках sdmHTTPFarCard.dll обращается к TCP/IP серверу, который запущен локально на машине и слушает 2277 порт.</div><div id="bkmrk-%D0%92-%D1%81%D0%B5%D0%BA%D1%86%D0%B8%D0%B8-%5Bparams%5D-%D0%B7%D0%B0">В секции **\[PARAMS\]** задаются параметры, которыми обворачивается XML запрос. В Настройках TCP/IP сервера, могут использоваться аналогичные параметры, например для определения «свой/чужой».</div><div id="bkmrk-%D0%92-%D1%81%D0%B5%D0%BA%D1%86%D0%B8%D0%B8-%5Block.serve">В секции **\[LOCK.SERVER**] указывается ip/port машины, где установлен сервер блокировок Shelter/Абонемент. </div><div id="bkmrk-%D0%92-%D1%84%D0%B0%D0%B9%D0%BB%D0%B5-httpfarcards">В файле HTTPFarCards_AB.log ведется логирование XML команд.</div><div id="bkmrk-sdmhttpfarcard.dll-%D0%BF">SdmHTTPFarCard.dll передает данные на TCP/IP сервер/ Для интеграции с Абонементом используется HTTPRKtoSH.exe</div><div id="bkmrk--1"></div>##### 3. HTTPRKtoSH.exe

<div id="bkmrk-httprktosh.exe-%D1%8F%D0%B2%D0%BB%D1%8F%D0%B5"><div>HTTPRKtoSH.exe является сервером, который слушает TCP/IP и обрабатывает XML запрос от sdmHTTPFarCard.dll. HTTPRKtoSH.exe по умолчанию всегда вызывает функции ShelterConnect.dll, которая должна находить в одной директории с ним. Основные настройки осуществляются в файле HTTPRKtoSH.ini</div></div><div id="bkmrk-%5Bserver%5D">[SERVER]</div><div id="bkmrk--2"></div>```
[SERVER]
  Port = 2277
  RKInterfaceID=7
  AllCheckToHotel = 1                                      
  IdentPhysType = 2
  Autostart = 1
  Autohide =1

[LOG]
  FileName =  C:\UCS\AbRK7_Example\HTTPtoAB\LOG\HTTPRKtoSH.log
  Level = 30
  DebugLevel =30
  ByMonthes = 1
  ByDays = 1
  ByHours = 1

[MAIN]
messages=errors.msg

```

Секция \[SERVER\]

Port - порт, на который будут прилетать данные из sdmHTTPFarCard

RKInterfaceID - Код интерфейса в RK7

[![image-1636643932513.png](https://docs.shelter.ru/uploads/images/gallery/2021-11/scaled-1680-/image-1636643932513.png)](https://docs.shelter.ru/uploads/images/gallery/2021-11/image-1636643932513.png)

##### 4. ShelterConnect.dll

ShelterConnect.ini настроечный файл ShelterConnect.dll, который управляет тем, в каком формате данные будут переданы во внешнюю систему.

```
[Database]
  DBname    = 81.94.140.196/3080:D:\Base\Garbage\n.kamyshnikova\Vpark2\FITNESS145.FDB
  DBUser     = ucs
  DBPassword = oQKH8n0BFUE=

[ExternalClient]
  ClientID      = 1
  IdentPhysType = 2
  ConvertOperationNeed = 1
  ToOEM = 0
  NeverRestrictTransaction = 1
  FolioMask = 1
  ShowBalance = 0
  ShowBalanceFirst = 0
  RoomInfoMode =4
  TransSection =0
  ConvertOperationType=0  

[log]
  FileName   = ShelterConnect.log
  Level      =  100
  DebugLevel =  100

[GarbageCollector]
  Enabled  = 0
  LifeTime = 120

[SCRK6]
  AlcoholicOperation =999
  Messages =sc.msg
  UseScreenHeader0 =1
  UseScreenHeader1 =1
  UseScreenSequelCode =1
  ShowBalance = 1
  ShowBalanceFirst = 1
  ShowBalanceEverywhere = 1
  UseDetails = 1
  UseSuperDetails = 1
 
[TranslateOperation]
     1 = 888
     3 = 888

[TranslatePayment]
  1 = 1005,910
  1000632 = 1005,901
  8 = 1005,901
  3 = 1005,901
    
;[Abonement]
;AbonementIdentCheckResource =ID_RESOURCE

[params]
 Balance_ExtraParamStr = &USE_ABON_FREEBALANCE=1
  
```

Секция \[DataBase\] - параметры подключения к БД Абонемент

\[ExternalClient\]  
ClientID = 1  
IdentPhysType = 2 - тип физической карты в Абонементе   
ConvertOperationNeed = 1 - использовать секцию \[TranslateOperation\]  
ToOEM = 0 - настройка кодировки   
NeverRestrictTransaction = 1 - ( разрешить закрывать на фолио выше кредитного лимита клиента) (баланс в RK будет отображаться, как 99999999999)   
FolioMask = 1 - разрешить поиск по фолио ( в рк при оплате на фолио вместо карты можем ввести F#### ( #### - номер фолио))   
ShowBalance = 0 - отобразить баланс гостя   
ShowBalanceFirst = 0 - отобразить баланс гостя в начале   
RoomInfoMode =4 -   
TransSection =0

ConvertOperationType = 0 -сопоставление кода группы станций с кодом услуги в Абонементе  
=1 -сопоставление кода категории заказа с кодом услуги в Абонементе. (закрывать разные категории заказа на разные услуги, для случаев разных юр.лиц)

Секция \[SCRK6\] не работает при данной схеме связки. Некоторые аналогичные параметры можно использовать в \[ExternalClient\]

\[TranslateOperation\]  
;Таблица соответствия Кода кассовой станции r\_k и создаваемой в Абонемент услуги.

Код можно посмотреть в RK7

[![image-1636644913686.png](https://docs.shelter.ru/uploads/images/gallery/2021-11/scaled-1680-/image-1636644913686.png)](https://docs.shelter.ru/uploads/images/gallery/2021-11/image-1636644913686.png)

Код услуги в Абонементе.

[![image-1636644989178.png](https://docs.shelter.ru/uploads/images/gallery/2021-11/scaled-1680-/image-1636644989178.png)](https://docs.shelter.ru/uploads/images/gallery/2021-11/image-1636644989178.png)

#### Настройки на стороне RK7 

Все настройки производятся в станции менеджера.

##### 1. Настройка кассовой станции и устройства (Сервис - Станции и устройства) 

Добавляем в устройства PDS интерфейс.

[![image-1637145176907.png](https://docs.shelter.ru/uploads/images/gallery/2021-11/scaled-1680-/image-1637145176907.png)](https://docs.shelter.ru/uploads/images/gallery/2021-11/image-1637145176907.png)

<div id="bkmrk-%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80-pds-server-">Параметр **PDS Server Name = rk\_first** – имя сервера FarCard, через который будет обеспечиваться связь с системой Абонемент.</div><div id="bkmrk-%D0%92%D0%BD%D0%B8%D0%BC%D0%B0%D0%BD%D0%B8%D0%B5%21%C2%A0-lookupcar">Внимание! **LookupCardByMailAddr = YES**</div><div id="bkmrk-mail-addr-type-kind-">**Mail Addr Type Kind = 2**</div><div id="bkmrk-pass-all-receipts-xm">**Pass All Receipts XML = By script**</div><div id="bkmrk-%D0%95%D1%81%D0%BB%D0%B8-%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80-pass-a">Если параметр **Pass All Receipts XML data** установить **Yes, if possible** то при закрытии на любую валюту этот заказ будет передаваться в Абонемент. Для этого должны быть сделаны соответствующие настройки в ShelterConnect.ini и в настройках программы. Не рекомендуемая схема работы.</div><div id="bkmrk-%D0%95%D1%81%D0%BB%D0%B8%C2%A0pds-interface%231">Если PDS interface#1 уже есть, то рекомендуется его удалить и добавить новый.</div><div id="bkmrk--7"></div>##### 2. Настройка интерфейса (Сервис - Интерфейсы) 

<div id="bkmrk--8"></div>Добавить новый интерфейс. Назовем его RKtoAbonement. См рис. 3 В данном интерфейсе указываем , ранее заведенный PDS interface#1. Код интерфейса нужно запомнить и прописать в файле HTTPRKtoSH.ini. См. настройки HTTPRKtoSH.exe.

Для передачи ППР позиций меню в Абонемент (**с версии 136**) и последующей печати их в чеке, необходимо в параметр интерфейса **xml dish attributes** установить как: **2560.ItemKind <span style="text-decoration: underline;">(Начиная с версии 7.6.5 необходимо поставить *2560.ItemKind.ItemIdent*, иначе при передаче вместо значения ППР будет передаваться его GUID)!!!!</span>**

`<strong>xml dish attributes = 2560.ItemKind.ItemIdent</strong>`

[![image-1637145701448.png](https://docs.shelter.ru/uploads/images/gallery/2021-11/scaled-1680-/image-1637145701448.png)](https://docs.shelter.ru/uploads/images/gallery/2021-11/image-1637145701448.png)

**Общая информация по полю XML dish attributes**

> Для того, чтобы определить из какого справочника запрашивается информация:  
> для этого:  
> 1\. Из строки вида 2560.ItemKind выделяем первое число - 2560  
> 2\. Нацело делим число на 256:  
> 3\. 2560 mod 256 = 10 - это идентификатор справочника, в данном случае - это **MenuItems**. **(Идентификатор справочников можно посмотреть в таблице REFTABLES)**  
> В полученном справочнике ищем поле **ItemKind**. Если поле не является ссылочным, то править ничего не нужно, должны выводиться данные из указанного поля.  
> Если поле ссылочное (можно определить по таблице REFLINKS по комбинации *код таблицы+ название поля* - если такая комбинация есть в таблице REFLINKS, то поле ссылочное, иначе - нет), то через точку можно получить значения полей из таблицы, на которую ссылается поле.  
> В рассмотренном примере поле ItemKind ссылается на таблицу с кодом 41 - это ENUMSTYPESDATAS.  
> Поля, которые можно получить из этой таблицы можно посмотреть xml запросом:
> 
> <div><div><div><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td>&lt;?**xml** version="1.0" encoding="UTF-8"?&gt;</td></tr><tr><td>&lt;**RK7Query**&gt;</td></tr><tr><td>&lt;**RK7CMD** CMD="GetRefData" RefName="ENUMSTYPESDATAS" /&gt;</td></tr><tr><td>&lt;/**RK7Query**&gt;</td></tr></tbody></table>
> 
> </div></div></div>Если не задано выводимое поле, то выводится guidString (начиная с версии 7.6.5). Если нужно выводить какое-то другое поле, то его нужно указать через точку.  
> Например:  
> 2560.ItemKind.ItemIdent

<div id="bkmrk-%D0%94%D0%BE%D0%BF.-%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D1%8F-%D0%B8%D0%B7-h">**Доп. информация из** [https://docs.rkeeper.ru/pds/ru/tehnicheskaya-dokumentatsiya/podgotovka-xml-dlya-peredachi-v-getcardinfo-ili-transaction](https://docs.rkeeper.ru/pds/ru/tehnicheskaya-dokumentatsiya/podgotovka-xml-dlya-peredachi-v-getcardinfo-ili-transaction)</div><div id="bkmrk--10"></div>```XML
Подготовка XML для передачи в GetCardInfo или Transaction
Xml состоит из нескольких частей, формирующихся в разных модулях. Итоговый xml собирается конкатенацией строк отдельных тэгов в модуле MIDSERV\intfcash.pas->GetXMLText

CHECKDATALink to CHECKDATA
Тэг CHECKDATA со всем содержимым формируется в модуле MIDSERV\ReceiptXML.pas. В CHECKDATA попадают не удаленные строки с блюдами, оплатами/предоплатами и скидками заказа.
Информация делится на данные о блюдах (тэг CHECKLINES), кастомных свойствах заказа (тэг ORDER - в текущий момент закоментирован) и данных по актуальному чеку (все остальные тэги).
Блок может быть пустым: например при проверке баланса карты.

EXTINFO - INTERFACESLink to EXTINFO - INTERFACES
Тэг INTERFACES формируется в модуле MIDSERV\intfcash.pas. В этом тэге указывается карта, добавление которой вызвало операцию, и все карты, добавленные с использованием текущего интерфейса в заказ. При добавлении карты в заказ она не выводится в блоке всех карт, т.к. выполняется только проверка на ее добавление.

Настройки, влияющие на формирование xmlLink to Настройки, влияющие на формирование xml
Xml dish attributes
Формат заполнения:
[Код справочника].[Имя поля]
[Код справочника].[Название поля - ссылки на справочник].[Имя поля]
Можно указать сразу несколько значений, разделенных переносом каретки
где Код справочника - код справочника в Class Infos
Код справочника = RefNo*256+Num. Если Num не указан, то он считается нулевым
Например:
<Rec RefNo="10" Group="3" GUIDString="{E4D77859-5120-486E-A10D-EAB2650584BD}" ciNameOfClass="TRK7MenuItem" ciUserName="Menu Item" ciUserPlName="Menu Items" ciOptions="3" ciNamesUnique="1" ciParentPowCode="1">
10 * 256 + 0 = 2560 - TRK7MenuItem

При заполнении этого параметра в тэге CHECKDATA добавляется дочерний тэг ATTRS. В нем выводится:

type_id - гуид справочника (из ClassInfos)
type_name - Название справочника (из ClassInfos)
key_id - guid промежуточного справочника (из ClassInfos)
key_name - Название промежуточного справочника (из ClassInfos)
value - значение поля

Output mode of non-fiscal payment in xml
Этот параметр отвечает за формат вывода оплат валютами, которые должны печататься как скидки.
Если выбрано значение Write as discount, то такие оплаты будут выводиться, как скидки
Если выбрано значение Write as payment, то такие оплаты будут выводиться, как оплаты не смотря на настройки самой валюты
```

##### 3. Настройка обработки сигналов. (Сервис - Обработка сигналов и устройств - MCR алгоритм 

<div id="bkmrk--11"></div>[![image-1637147020912.png](https://docs.shelter.ru/uploads/images/gallery/2021-11/scaled-1680-/image-1637147020912.png)](https://docs.shelter.ru/uploads/images/gallery/2021-11/image-1637147020912.png)

Указываем тип «Интерфейс». Объект Интерфейс RKtoAbonement, заведенный в пункте 2.

Если указать тип «Валюта», то будет ошибка 232: "Не получается напечатать чек: Персональное ограничение для "" = 0.00."

Можно завести несколько интерфейсов для разных типов идентификаторов. Сделаем два интерфейса, один карт E-Marine и другой для Mifare. Они будут отличаться только названием и содержимым скрипта.

Пример скрипта под E-marine

```PASCAL
function MCR1000636(DeviceSignal: Integer; DeviceIdent: Integer; var Parameter: String): Boolean;
var RestCode: integer;
    i, j, t1, t2, S, res1: Integer;
    hex, resulttext: string;
begin
  Result := false;
  if pos('Em-Marine',Parameter)>0 then
  begin
    i := pos(']',Parameter);
    j := pos(',',Parameter);
    resulttext:=copy(Parameter,i+2,3);
    resulttext:=resulttext+copy(Parameter,j+1,5);
      Result := true;
      Parameter:=resulttext;
    end;
end;
```

Пример скрипта под Mifare

```PASCAL
function MCR1000637(DeviceSignal: Integer; DeviceIdent: Integer; var Parameter: String): Boolean;
var RestCode: integer;
    i, j, S: integer;
    res1, t1, t2: int64;
    hex, resulttext: string;
begin
  Result := false;
  if pos('Mifare[',Parameter)>0 then
  begin
    i := pos('[',Parameter);
    j := pos(']',Parameter);
    Parameter := copy(Parameter,i+1, j-i-1);
    if length(Parameter) > 0 then begin
      Result := true;
      res1:=strtoint64('$'+Parameter);
      Parameter:= Int64ToStr(Res1 and $FFFFFFFF );        
    end;
  end;    
end;
```

##### 4. Настройка валюты (Деньги - валюты)

<span style="text-decoration: underline;">Заводим валюту в платежных картах. В названии НЕ используем кавычки "".</span>

Так же можно установить наценку для чаевых и чаевые будут передаваться в Абонемент и отдельно там фиксироваться - **НЕ ТЕСТИРОВАЛОСЬ.**

<div id="bkmrk-%D0%92%D0%B0%D0%B6%D0%BD%D0%BE-%D0%BF%D1%80%D0%B8-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B8-%D0%B2">**Важно** при создании валюты **обратить внимание на заполнение полей:**</div><div id="bkmrk---%D0%91%D0%B5%D0%B7-%D1%81%D0%B4%D0%B0%D1%87%D0%B8-%E2%80%93-%D1%84%D0%BB%D0%B0%D0%B3-%D1%83">**- Без сдачи – флаг установлен**</div><div id="bkmrk---%D0%94%D0%BE%D0%BF-%D0%B8%D0%BD%D1%84%D0%BE-%D1%81-%D0%BA%D0%BB%D0%B0%D0%B2%D0%B8%D0%B0%D1%82">**- Доп инфо с клавиатуры – флаг установлен**</div><div id="bkmrk--%D0%90%D0%B2%D1%82%D0%BE%D0%B7%D0%B0%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5-%E2%80%93-%D0%92%D1%81">**-Автозаполнение – Вся сумма + подтверждение.**</div><div id="bkmrk-%D0%A4%D0%BE%D1%80%D0%BC%D0%B0%D1%82-%D0%B4%D0%BE%D0%BF-%D0%B8%D0%BD%D1%84%D0%BE---%D1%81%D0%B8">**Формат доп инфо - символ F и решетки.(F#########)**. (Указывается, если необходимо закрывать только на фолио) Символ F является ключевым, для определения типа идентификатора FOLIO.</div><div id="bkmrk---%D0%9D%D0%B5-%D1%83%D1%87%D0%B8%D1%82%D1%8B%D0%B2%D0%B0%D1%82%D1%8C-%D0%B2-%D0%BF%D0%BE%D1%82">**- Не учитывать в потратах ПДС – флаг должен быть снят**.</div><div id="bkmrk--13"></div>[![image-1637147394821.png](https://docs.shelter.ru/uploads/images/gallery/2021-11/scaled-1680-/image-1637147394821.png)](https://docs.shelter.ru/uploads/images/gallery/2021-11/image-1637147394821.png)

##### 5. Отображение кнопки оплата картой

Также для отображение кнопки оплаты в интерфейсе кассы необходимо будет настроить параметр оплата платежной картой, который находится в настройках менеджера. (Настройки - параметры - параметры работы станции - редактирование заказа - расчет/оплата заказа - оплата платежной картой, в свойствах поле "значение" установить "спрашивать" )

[![image-1637148196085.png](https://docs.shelter.ru/uploads/images/gallery/2021-11/scaled-1680-/image-1637148196085.png)](https://docs.shelter.ru/uploads/images/gallery/2021-11/image-1637148196085.png)

Настройки параметра отображения выглядит так:

[![image-1637148506333.png](https://docs.shelter.ru/uploads/images/gallery/2021-11/scaled-1680-/image-1637148506333.png)](https://docs.shelter.ru/uploads/images/gallery/2021-11/image-1637148506333.png)

#### Проверка настройки оплаты

Открываем кассовую станцию, создаем заказ и начисляем блюдо.

[![image-1637149024580.png](https://docs.shelter.ru/uploads/images/gallery/2021-11/scaled-1680-/image-1637149024580.png)](https://docs.shelter.ru/uploads/images/gallery/2021-11/image-1637149024580.png)

Нажимаем на оплатить.

[![image-1637149061435.png](https://docs.shelter.ru/uploads/images/gallery/2021-11/scaled-1680-/image-1637149061435.png)](https://docs.shelter.ru/uploads/images/gallery/2021-11/image-1637149061435.png)

Выбираем платежные карты

[![image-1637149362401.png](https://docs.shelter.ru/uploads/images/gallery/2021-11/scaled-1680-/image-1637149362401.png)](https://docs.shelter.ru/uploads/images/gallery/2021-11/image-1637149362401.png)

Нажимаем на созданную валюту, в нашем случае Abonement

[![image-1637149386546.png](https://docs.shelter.ru/uploads/images/gallery/2021-11/scaled-1680-/image-1637149386546.png)](https://docs.shelter.ru/uploads/images/gallery/2021-11/image-1637149386546.png)

Вводим идентификатор или номер фолио (рис А. идентификатор, рис. Б фолио)

[![image-1637149441791.png](https://docs.shelter.ru/uploads/images/gallery/2021-11/scaled-1680-/image-1637149441791.png)](https://docs.shelter.ru/uploads/images/gallery/2021-11/image-1637149441791.png)

Рисунок А.

[![image-1637149576875.png](https://docs.shelter.ru/uploads/images/gallery/2021-11/scaled-1680-/image-1637149576875.png)](https://docs.shelter.ru/uploads/images/gallery/2021-11/image-1637149576875.png)

Рисунок Б.

После ввода нажимаем на галочку и должны увидеть карточку клиента.

[![image-1637149603718.png](https://docs.shelter.ru/uploads/images/gallery/2021-11/scaled-1680-/image-1637149603718.png)](https://docs.shelter.ru/uploads/images/gallery/2021-11/image-1637149603718.png)

В нашем случае клиент с фолио номер 1598 это IIKO Maylo Maskovich. В зависимости от настройки утилит можно увидеть его реальный баланс. В нашем случае стоит параметр в утилитах на безлимит. Нажимаем на "оплата картой".

[![image-1637149750170.png](https://docs.shelter.ru/uploads/images/gallery/2021-11/scaled-1680-/image-1637149750170.png)](https://docs.shelter.ru/uploads/images/gallery/2021-11/image-1637149750170.png)

Подтверждаем наше действие. После успешной оплаты мы возвращаемся на стартовый экран. Либо мы должны увидеть ошибку в области обозначенной желтым цветом.

[![image-1637149869449.png](https://docs.shelter.ru/uploads/images/gallery/2021-11/scaled-1680-/image-1637149869449.png)](https://docs.shelter.ru/uploads/images/gallery/2021-11/image-1637149869449.png)

Проверить начисление мы можем, зайдя на фолио клиента в Абонементе.

[![image-1637149949357.png](https://docs.shelter.ru/uploads/images/gallery/2021-11/scaled-1680-/image-1637149949357.png)](https://docs.shelter.ru/uploads/images/gallery/2021-11/image-1637149949357.png)

На фолио должна появится услуга с указанным кодом в ShelterConnect.ini, которая заранее заведена в Абонементе.

# "Честный знак" и GTIN из RK7 в Абонемент

**Базовая настройка связки: [Интеграция Абонемент и RK7 через Farcards](https://docs.shelter.ru/books/ustanovka-i-nastroyka-po-abonement/page/integratsiya-abonement-i-rk7-cherez-farcards)**

**Инструкции ПО Абонемент для работы с "Честным знаком":**

- **<u>[Настройка кодов и сканера](https://docs.shelter.ru/books/ustanovka-i-nastroyka-po-abonement/page/nastroyka-kodov-chestnyy-znak)</u>**
- **<u>[Разрешительный режим](https://docs.shelter.ru/books/ustanovka-i-nastroyka-po-abonement/page/razresitelnyi-rezim-dlya-markirovannoi-produkcii)</u>**
- **<u>[АТОЛ. "Честный Знак"](https://docs.shelter.ru/books/podklyucenie-kkt-k-abonement/page/atol-rabota-s-markirovannoi-produkciei-cestnyi-znak)</u>**
- <span style="text-decoration: underline;">**[Модуль работы с маркированной продукцией "Честный Знак"](https://docs.shelter.ru/books/ustanovka-i-nastroyka-po-abonement/page/modul-raboty-s-markirovannoy-produktsiey-chestnyy-znak "Модуль работы с маркированной продукцией "Честный Знак"")**</span>

Появилась возможность проверки марки "Честный знак" в чеке, полученном из Rkeeper. Появилась возможность проверки GTIN и атрибутов объемно-сортового учета в чеке, полученном из RK.

В Режиме HoReCa при продаже пива к блюду будет добавляться модификатор Объемно сортового учета с GTIN марки кега. И будут использованы следующие отраслевые атрибуты:  
"tag1262": "030"  
"tag1263": "26.03.2022"  
"tag1264": "477"  
"tag1265": "mode=horeca"

Для тега 2108 [https://www.consultant.ru/](https://www.consultant.ru/document/cons_doc_LAW_362322/0060b1f1924347c03afbc57a8d4af63888f81c6c/)  
Заполняется тег 2108 (параметр QuantityUnitType).

**Постановка кега на кран и настройка связи r\_keeper с Честным знаком происходит при помощи сервиса [rkDExch](https://docs.rkeeper.ru/sh5/ustanovka-i-nastrojka-rkdexch-105873711.html).**

##### **Основные требования**

<span style="text-decoration: underline;">РЕГИСТРАЦИЯ, ПРОШИВКА И ПО ФИСКАЛЬНОГО РЕГИСТРАТОРА ДОЛЖНЫ СООТВЕТСТВОВАТЬ ДАННОМУ РЕЖИМУ РАБОТЫ!</span>

<p class="callout warning">ФР должен быть зарегистрирован для продажи подакцизных и маркированных товаров и работы с объемно-сортовым учётом.</p>

<table border="1" id="bkmrk-%D0%9F%D0%9E-%D0%90%D0%B1%D0%BE%D0%BD%D0%B5%D0%BC%D0%B5%D0%BD%D1%82-147-%D0%B2%D0%B5%D1%80" style="border-collapse: collapse; width: 47.284%; height: 342.062px;"><colgroup><col style="width: 40.7963%;"></col><col style="width: 59.1863%;"></col></colgroup><tbody><tr style="height: 29.7017px;"><td style="height: 29.7017px;">ПО Абонемент</td><td style="height: 29.7017px;">147 версия</td></tr><tr style="height: 63.3097px;"><td style="height: 63.3097px;">Лицензия</td><td style="height: 63.3097px;"> 5-9 Абонемент модуль Продажа маркированной продукции "Честный Знак"</td></tr><tr style="height: 29.7017px;"><td style="height: 29.7017px;">ПО Rkeeper</td><td style="height: 29.7017px;">7.07.00.339</td></tr><tr style="height: 29.7017px;"><td style="height: 29.7017px;">URunPos.dll</td><td style="height: 29.7017px;">2.13.0.6</td></tr><tr style="height: 29.7017px;"><td style="height: 29.7017px;">fpRU\_AtolDTO.dll</td><td style="height: 29.7017px;">7.72.122</td></tr><tr style="height: 29.7017px;"><td style="height: 29.7017px;">fpShtr54.dll</td><td style="height: 29.7017px;">7.72.184</td></tr><tr style="height: 29.7017px;"><td style="height: 29.7017px;">HTTPRKtoSH.exe</td><td style="height: 29.7017px;">1.6.0.1</td></tr><tr style="height: 29.7017px;"><td style="height: 29.7017px;">sdmHTTPFarCard.exe</td><td style="height: 29.7017px;">1.17.1.5</td></tr><tr style="height: 29.7017px;"><td style="height: 29.7017px;">ServerT1</td><td style="height: 29.7017px;">2.3.20.3</td></tr><tr style="height: 41.1392px;"><td style="height: 41.1392px;">Актуальные драйвера ККТ

</td><td style="height: 41.1392px;">Атол или Штрих. (x32)</td></tr></tbody></table>

##### **Настройки**

##### URunPos.ini

`[Main]  `  
`VolumeQuantityUnitType=41`

##### Abonementmanager.ini 

(добавить регулярное выражение)


` [TrueMark.RegExp]`  
`;Регулярные выражения на проверку соответствия трека Честному знаку`  
`; Если список не пустой, то он используется в первую очередь. Смотри также RegExpListFillMode`

`0=(0(\d{13}))(){1,14}$`

В общих настройках на вкладке "Услуги и платежи" установить параметр "Использовать детализацию внешнего чека".

![image.png](https://docs.shelter.ru/uploads/images/gallery/2024-08/scaled-1680-/73Kimage.png)

В Абонементе у услуги, на которую передается чек из RK не должно быть никакого ППР.

[![image.png](https://docs.shelter.ru/uploads/images/gallery/2025-11/scaled-1680-/iyKimage.png)](https://docs.shelter.ru/uploads/images/gallery/2025-11/iyKimage.png)

В режиме RK Horeca Абонемент с целыми литрами пива не работает совсем. Решение - продавать не целыми литрами, а по 100 мл, 200 мл, 300 мл, 500 мл, 1500 мл и т.п.

От RK требуется, чтобы в настройках все объемно-весовые товары были только в литрах  
У них в инструкции это четко сказано. [https://docs.rkeeper.ru/rk7/latest/ru/realizatsiya-v-rozliv-piva-i-slaboalkogol-nyh-napitkov-v-r\_keeper-100335925.html](https://docs.rkeeper.ru/rk7/latest/ru/realizatsiya-v-rozliv-piva-i-slaboalkogol-nyh-napitkov-v-r_keeper-100335925.html)

Инструкция RK по ссылке, это настройки для реализации разливного пива непосредственно в самом RK для общего ознакомления.

![image.png](https://docs.shelter.ru/uploads/images/gallery/2024-08/scaled-1680-/bRSimage.png)

**ВАРИАНТЫ НАСТРОЙКИ КАРТОЧКИ ТОВАРА В RK**

GTIN должен быть продублирован в поле "Штрих-код". Именно его значение RK передает в FARCARDS в data=  
НО использовать один Штрих код в разных карточках пива с одинаковым GTIN и разным обьемом нельзя.  
В меню должно быть только одно наименование конкретного сорта пива, с указанием объема непосредственно при продаже на кассе. (кнопка количество)

<p class="callout warning">Для Абонемента требуется, чтобы объем литров в переданном из RK чеке не был целочисленным (1, 2 и т.д),иначе этот товар будет учтен как штучный, а не объемно-сортовой и в ЧЗ не будет передан объем израсходованного пива. Поэтому, чтобы избежать продажи целого литра например при продаже 2 х 0.5 л, требуется, чтобы настройки в карточке товара в RK были именно такие:</p>

В карточке товара RK необходимо в свойстве Режим цены выставить значение **Порционное за вес**, в свойстве Точность для количеств укажите "3".  
Далее два варианта, как вам удобнее:  
1\. В свойстве Объем (мл) укажите объем 999  
В свойстве Вес порции укажите 0.100 (т.е. порция 100мл)

2\. В свойстве Объем (мл) укажите объем 1000  
В свойстве Вес порции укажите 0.099 (т.е. порция 99мл)

<p class="callout warning">**НЕЛЬЗЯ! Ставить Объем (мл) 1000 и Вес порции 0.100**</p>

[![image.png](https://docs.shelter.ru/uploads/images/gallery/2025-11/scaled-1680-/fzEimage.png)](https://docs.shelter.ru/uploads/images/gallery/2025-11/fzEimage.png)

#### **Результат**

Пример корректно переданного чека

[![GTIN.jpg](https://docs.shelter.ru/uploads/images/gallery/2024-08/scaled-1680-/gtin.jpg)](https://docs.shelter.ru/uploads/images/gallery/2024-08/gtin.jpg)

#### ВОЗВРАТЫ

Делаем аннулирование или удаление чека через RKeeper.  
Таким образом на фолио в Абонемент падает корректирующая транзакция услуги. Проверка марки не производится.  
Платеж становится нецелевым.  
В Абонементе производим возврат только платежа.

# Rkeeper - Продажа в кредит. Оплата кредита в Абонементе.

### **Правила оформления чеков при продаже в кредит**

Изменения в порядок применения контрольно-кассовой техники внесены Федеральным законом 54-ФЗ ст. 1.2 п.5.11.  
Работа с чеками намерения поддержана с версии r\_keeper 7.25.02.2+

Правило оформления чеков при продаже в кредит: Кредитор в момент оплаты заказа формирует на кассе чек с операцией «Приход» и признаком способа расчета (ПСР) «Кредит»/«Частичный расчет и кредит» и суммой приобретенного права требования долга. Обращаем ваше внимание, что чек формируется именно на сумму задолженности покупателя. После погашения долга (кредита) покупателем (оговоренным ранее способом) кредитор формирует на кассе чек с признаком способа расчета «Оплата кредита».

[![image.png](https://docs.shelter.ru/uploads/images/gallery/2025-05/scaled-1680-/dnDimage.png)](https://docs.shelter.ru/uploads/images/gallery/2025-05/dnDimage.png) Закрытие чека происходит на стороне ПО Абонемент. Инструкция настройки связки:

**[Интеграция Абонемент и RK7 через Farcards](https://docs.shelter.ru/books/ustanovka-i-nastroyka-po-abonement/page/integratsiya-abonement-i-rk7-cherez-farcards)**

**[![image.png](https://docs.shelter.ru/uploads/images/gallery/2025-05/scaled-1680-/MfLimage.png)](https://docs.shelter.ru/uploads/images/gallery/2025-05/MfLimage.png) Rkeeper настраивается в соответствии с инструкциями:**  
**[Продажа в кредит](https://docs.rkeeper.ru/rk7/latest/ru/prodayoa-v-kredit-4043603.html)**  
**[Чек намерения (Чек до оплаты с 1.03.2025)](https://docs.rkeeper.ru/rk7/latest/ru/chek-namereniya-chek-do-oplaty-s-1-03-2025-140050709.html)**

Для работы с маркированной продукцией валюты также необходимо настроить, как продажу в кредит. То есть на валюте закрытия на фолио в свойстве Налоговая льгота выбрать значение Кредит, а в разделе Фискальные типы для фискального регистратора выставить значение, соответствующее продаже в кредит. Это позволит формировать фискальный чек на стороне r\_keeper, следовательно, передавать все необходимые данные по маркированной продукции.

**Требования:**

- Фискальный регистратор на кассе Rkeeper и на кассе Абонемента.
- ПО Абонемент v148
- Rkeeper v7.25.04.001 +
- Farcards v6.05
- ShelterConnect.dll 1.9.0.3
- sdmHTTPFarCard.dll 1.17.1.5

**Новые настройки ПО Абонемент**

<p class="callout success">Настройки -&gt; Общие параметры -&gt; Вкладка "Услуги и платежи"   
В группе 'Форматы фискальных данных (ФФД)' появилась подгруппа 'Внешний чек'.  
Новый параметр "Внешний чек фискализируется во внешней системе".  
По умолчанию не установлен. Следует устанавливать, если в RK при закрытии на фолио гостя выдается фискальный чек. </p>

- Если параметр установлен, то при оплате услуги из внешней системы (RKeeper) признак способа расчета устанавливается "Оплата кредита". - **Новая схема, соответствующая 54-ФЗ ст. 1.2 п.5.11.**
- Если параметр не установлен, то при оплате услуги из внешней системы (RKeeper) признак способа расчета устанавливается "Полный расчет". - Старая схема. На кассе RK не используется ФР.

#### Новая схема. Rkeeper - Продажа в кредит. Абонемент - Оплата кредита.

Включить новый параметр:

[![image.png](https://docs.shelter.ru/uploads/images/gallery/2025-05/scaled-1680-/image.png)](https://docs.shelter.ru/uploads/images/gallery/2025-05/image.png)

В карточке услуги в Абонементе, на которую происходит закрытие чека прописывается  
**"Код налога ФР"** соответствующий ставке "Без НДС" вашего ФР. Штрих = 4. Атол = 0.  
**"СНО (Система налогообложения)"**  
**"Признак предмета расчета" = ПЛАТЕЖ**

[![image.png](https://docs.shelter.ru/uploads/images/gallery/2025-05/scaled-1680-/2Tjimage.png)](https://docs.shelter.ru/uploads/images/gallery/2025-05/2Tjimage.png)

#####   


##### Результат.

- Rkeeper: фискальный чек с ПСР - "Последующая оплата (Кредит)" и ваш НДС.
- Абонемент: фискальный чек с **ПСР - "ОПЛАТА КРЕДИТА"**, **ППР - "ПЛАТЕЖ"** и ставкой **"БЕЗ НДС"**. Именно такие реквизиты фискального чека установлены налоговой для "Оплаты кредита".

[![RK credit.png](https://docs.shelter.ru/uploads/images/gallery/2025-05/scaled-1680-/rk-credit.png)](https://docs.shelter.ru/uploads/images/gallery/2025-05/rk-credit.png)[ ![AB oplata credita avansom.png](https://docs.shelter.ru/uploads/images/gallery/2025-05/scaled-1680-/ab-oplata-credita-avansom.png)](https://docs.shelter.ru/uploads/images/gallery/2025-05/ab-oplata-credita-avansom.png)

Абонемент работает с чеком RK, как с фискальным чеком. При оплате кредита Абонемент берет ППР из карточки услуги (ППР должен быть "Платеж").

<p class="callout warning">**Марка ЧЗ в этом режиме Абонементом игнорируется и никак не проверяется и не обрабатывается. Считается, что все проверки сделаны на стороне RK.**</p>

[![RK credit mark.png](https://docs.shelter.ru/uploads/images/gallery/2025-05/scaled-1680-/rk-credit-mark.png)](https://docs.shelter.ru/uploads/images/gallery/2025-05/rk-credit-mark.png) [![AB oplata credita mark.png](https://docs.shelter.ru/uploads/images/gallery/2025-05/scaled-1680-/ab-oplata-credita-mark.png)](https://docs.shelter.ru/uploads/images/gallery/2025-05/ab-oplata-credita-mark.png)

#### Старая схема. Rkeeper без фискального регистратора.

При работе связки RKeeper c Абонементом 148 версии по старой схеме:  
В карточке услуги **в Абонементе "Признак предмета расчета" НЕ указывается, остается пустым.**

При оплате услуг RKeeper`а Маркировка проверяется на стороне Абонемента. Параметр ППР будет браться из XML RKeeper`а, а не из карточки услуги. Важно для работы с маркированной продукцией, где ППР - (33) ТМ.

<p class="callout danger">Если ППР в карточке услуги будет указан - Товар, то при оплате маркированного товара выходит ошибка</p>

[![image.png](https://docs.shelter.ru/uploads/images/gallery/2025-05/scaled-1680-/YDZimage.png)](https://docs.shelter.ru/uploads/images/gallery/2025-05/YDZimage.png)

##### В обоих схемах марка Честного Знака сканируется только на стороне Rkeeper!

# Обновление Серверной части

#### краткая версия:

1. Остановить Сервер блокировок
2. Сбросить все соединения с БД
3. Сделать Backup
4. Stop fb
5. Stop service ab
6. Обновить Udf
7. Start fb
8. Накатить scripts необходимых версий.

**Обновление БД и ПО.**

**!!!ВНИМАНИЕ!!!**

Перед проведением обновления у Заказчика, рекомендуем сначала проверить все у себя в офисе на сборке клиента. Во избежание возникновения сбоев в работе ПО Абонемент, а так же безвозвратного повреждения рабочей версии программы и базы данных, необходимо сделать **резервную копию БД и ПО.**  В случае сбоя при обновлении уже на объекте, развернуть резервную копию, тем самым восстанавливая работоспособность объекта, после чего все проверить на копии.

**0.Подготовка.**

Проверяем текущую версию ПО и БД Абонемент. Сделать это можно при загрузке ПО, во время появления окна ввода логина и пароля пользователя:

[![image-1649064078063.png](https://docs.shelter.ru/uploads/images/gallery/2022-04/scaled-1680-/image-1649064078063.png)](https://docs.shelter.ru/uploads/images/gallery/2022-04/image-1649064078063.png)

Проверить версию ПО можно, выбрав пункт меню "Сервис" -&gt; "О программе":

[![image-1649064117130.png](https://docs.shelter.ru/uploads/images/gallery/2022-04/scaled-1680-/image-1649064117130.png)](https://docs.shelter.ru/uploads/images/gallery/2022-04/image-1649064117130.png)

Существует второй метод уточнить версию БД, но использовать его рекомендуется только в случае отсутствия данных об установленной версии ПО и БД, и невозможности произвести запуск ПО Абонемент. Запускаем **IBEXPERT.exe** и подключаемся к БД объекта ([см. инструкцию](http://support.ucs.ru/ru/node/8732)), открываем **procedures,** там находим в самом низу **SYS$VERSION\_FITNESS,** открываем данный параметр, и смотрим установленную версию БД.

Заходим в разархивированную папку актуальной версии **FullVersion…** , и находим там файл **version.txt,** в нём находится вся необходимая информация для обновления. Находим рекомендации по обновлению поиском в файле по номеру версии программы, которая установлена на данный момент.

**1. Обновление базы.**

1.1 Запускаем **IBEXPERT.exe** и подключаемся к БД объекта ([см. инструкцию](http://support.ucs.ru/ru/node/8732)). Запускаем окно выполнения скриптов сочетанием **Ctrl+F12. Проверяем,** чтобы в верхней строке стояла галочка "**Use current connect**". В файле **version.txt** находим рекомендации по обновлению - поиск можно произвести по номеру версии программы.

Встречаются как **\*.sql** файлы типа **1.115.sql**, так и файлы **developer.sql &amp; housekeeping2.sql** - разберем последние два.

**Housekeeping2.sql** из папки **updatesql** нужно выполнить после обновления на 114-ую версию, после 116-ой - выполнить \\HouseKeeping\\SQL\\HouseKeeping2.sql

**developer.sql** в идеальном случае (при обновлениях на одну-две версии) должен устанавливаться только один раз, самым последним по списку. Но на практике, при обновлениях со старых версий, его нужно выполнять несколько раз, так как иначе Вы увидите ошибки при выполнении остальных скриптов. По ссылке вы можете найти архив со всеми developer.sql от всех версий - для безошибочного обновления, нужно выполнять developer, соотвествующий каждой версии (как указано в version.txt).

Вы можете увидеть типовые проблемы, возникающие при неправильном использовании developer, в следующих задачах: [\#](http://tracker.ucs.ru/issues/100605)[100605](http://tracker.ucs.ru/issues/100605) или [\#100535](http://tracker.ucs.ru/issues/100535).

**ВНИМАНИЕ! В** Файле developer.sql не должно быть следующих строк, если они есть и в обновляемой базе работает только ПО Абонмент, то их нужно удалить:

> <div>**update RDB$RELATION\_FIELDS set RDB$FIELD\_SOURCE = 'D\_1KMEMO' where (RDB$FIELD\_NAME = 'STRVALUE') and (RDB$RELATION\_NAME = 'DEFAULT\_VALUES');**</div><div>**commit;**</div><div>**select \* from sp\_create\_object('&amp;Object=DROP\_CONSTRAINT&amp;Table=DEFAULT\_VALUES&amp;Name=IX\_DEFAULT\_VALUES\_NAME');**</div><div>**commit;**</div><div>**select \* from sp\_create\_object('&amp;Object=CONSTRAINT&amp;Table=DEFAULT\_VALUES&amp;Name=IX\_DEFAULT\_VALUES\_REF\_NAME&amp;Params=REFTYPE,REF,NAME');**</div><div>**select \* from sp\_create\_object('&amp;Object=INDEX&amp;Table=DEFAULT\_VALUES&amp;Name=IX\_DEFAULT\_VALUES\_OLD\_NAME&amp;Params=NAME');**</div><div>**commit;**</div>

1.2 Возвращаемся к рекомендациям по обновлению начиная с текущей версии БД, открываем папку **updatesql**, и устанавливаем поочерёдно все **\*.sql** файлы включая **developer.sql &amp; housekeeping2.sql**, в том порядке, который мы определили на предыдущем шаге. **ОШИБОК быть не должно!!! ВНИМАТЕЛЬНО отнеситесь к файлам developer.sql &amp; housekeeping2.sql, установите их вовремя!!!**

1.3 При обновлении на некоторые версии, требуются обновления FireBird

1.4. Если позволяет время, то рекомендуем после обновления провести backup-restore базы данных абонмент. Восстановленную после restore базу установить как рабочую. [Более подробно о этой процедуре см тут.](http://support.ucs.ru/ru/node/8728)

1.5. При возникновении ошибки вида "*This operation is not defined for system tables. unsuccessful metadata update. cannot delete. COLUMN DIARY.CALC\_STARTTIME. there are 1 dependencies.*" отключите на время обновления логирование таблицы, указанной в ошибке (в данном случае - **DIARY**)

**2. Обновление программы**

2.1 Выписываем поочередно, какие файлы, программы, DLL`ки и настройки необходимо менять при каждом переходе. Все одинаковые замены сводим до самой актуальной, и проводим обновление файлов, программ, DLL`ок и настроек. (***Пример:** обновляясь с версии 1.115 до 1.121, видим, что в рекомендациях к переходу на каждую из версий вверх требуется обновлять файл **abonementmanager.exe,** нам необходимо поменять его только один раз на версию 1.121.*

2.2 Если требуется, выполните обновления служебных утилит gkhostconnect, TcpCardReader и д.р. которые заявлены при обновлении.

**3. Проверка работоспособности обновлённой версии ПО и БД.**

3.1 Замените ПО и БД на рабочих местах на обновлённую версию, и произведите запуск ПО. В случае сбоя разверните на рабочем месте резервную копию для восстановления работоспособности, и повторите действия данной инструкции.

# Web-Интерфейс для Сервера блокировок

Начиная с версии 145 появилась возможность просмотра получения списка занятых лицензий.

Для этого необходимо установить коннектор и настроить его.

В connector.ini указать проект 4 модуль 3 и установить UseUrlEncode=0

```
[LOCK.SERVER]
  TCPHost=192.168.10.10
  TCPPort=1119
  Project = 4
  Module = 3
  
[charset]
encoding=UTF-8
dbencoding=windows-1251
UseUrlEncode=0
```

В папке **wwwroot** в коннектор'е в файле settings.js прописать ip-адрес и порт коннектор'а

```
let globalSettings = {
    "connecterUrl__": "http://127.0.0.1:7766",
  }
let localSettings = {
  }
```

В адресной строке набираем ip-адрес машины на которой запущен коннектор ( возможно нужно будет открыть порт - в примере 7766 ).

```
http://127.0.0.1:7766/licenceInfo.html
```

Результат:

[![image-1647854902123.png](https://docs.shelter.ru/uploads/images/gallery/2022-03/scaled-1680-/image-1647854902123.png)](https://docs.shelter.ru/uploads/images/gallery/2022-03/image-1647854902123.png)

# Модули EFT (автоматический процессинг)



# Модуль EFT - автоматический процессинг

### Описание

<div id="bkmrk-%D0%9C%D0%B5%D1%85%D0%B0%D0%BD%D0%B8%D0%B7%D0%BC-eft-%D1%81%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8">**Механизм EFT списаний** – это механизм для списания денежных средств с банковской карты клиента, согласно установленному графику списаний.</div><div id="bkmrk-%D0%A1%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%BE%D0%B4%D0%B8%D1%82%D1%81"><div>Списание производится через процессинг.</div><div> </div><div>**Поддерживаемые процессинги:** ucscards.ru (UnitedCardServices)</div><div> </div><div>**В ПО Абонемент** </div><div>1) Создается клиент</div><div>2) Присваивается банковская карта с пометкой "основная"</div><div>3) Продается абонемент с типом "EFT", у которого имеется график платежей и график автоначислений услуг.</div><div> </div><div> <u>Например</u>: </div><div> Тип абонемента "EFT2" </div><div> списывать платеж на сумму "1000" ежемесячно каждого 11-го числа, </div><div> начислять услугу на сумму "1000" ежемесячно каждого 12-го числа </div><div> </div><div>Т.е. первая попытка списания 11-го, если списать деньги не удалось, то 12-го у клиента начислится ежемесячная услуга </div><div>у клиента будет отрицательный баланс, как следствие по настройкам типа абонемента, клиенту будет доступ запрещен.</div><div>Обычно настраивают 10 попыток (дней) списаний.</div><div> </div></div><div id="bkmrk-%D0%9C%D0%B5%D1%85%D0%B0%D0%BD%D0%B8%D0%B7%D0%BC-%D1%81%D0%BE%D1%81%D1%82%D0%BE%D0%B8%D1%82-%D0%B8%D0%B7-">Механизм состоит из 3-х последовательных звеньев: EventsService.exe, EFT.exe, Банк</div><div id="bkmrk-"></div>[![image-1652966475103.png](https://docs.shelter.ru/uploads/images/gallery/2022-05/scaled-1680-/image-1652966475103.png)](https://docs.shelter.ru/uploads/images/gallery/2022-05/image-1652966475103.png)

<div id="bkmrk-%5B%D0%97%D0%B2%D0%B5%D0%BD%D0%BE-1%5D%C2%A0-eventsser">**\[Звено 1\] EventsService.exe** </div><div id="bkmrk-1%29-%D0%A4%D0%BE%D1%80%D0%BC%D0%B8%D1%80%D1%83%D0%B5%D1%82-xml-%D1%84%D0%B0%D0%B9">1) Формирует XML файл для списания. </div><div id="bkmrk-%D0%98%D0%BC%D0%B5%D0%B5%D1%82-%D0%BD%D0%B0%D0%B1%D0%BE%D1%80-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85%3A%C2%A0">Имеет набор данных: </div><div id="bkmrk-%D0%9A%D0%B0%D1%80%D1%82%D0%B0-%D0%BF%D0%BB%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%89%D0%B8%D0%BA%D0%B0%2C-%D0%B4">Карта плательщика, дата окончания, сумма списания и прочие доп. поля</div><div id="bkmrk-2%29-%D0%A4%D0%B8%D0%BA%D1%81%D0%B8%D1%80%D1%83%D0%B5%D1%82-%D0%BE%D1%82%D0%B2%D0%B5%D1%82-%D0%BE">2) Фиксирует ответ от банка в БД</div><div id="bkmrk-%C2%A0-0"> </div><div id="bkmrk-%5B%D0%97%D0%B2%D0%B5%D0%BD%D0%BE-2%5D%C2%A0-eft.exe">**\[Звено 2\] EFT.exe**</div><div id="bkmrk-1%29-%D0%9F%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D1%83%D0%B5%D1%82-%D1%84%D0%B0%D0%B9%D0%BB-">1) Преобразует файл XML в файл формата банка </div><div id="bkmrk-2%29-%D0%A4%D0%BE%D1%80%D0%BC%D0%B8%D1%80%D1%83%D0%B5%D1%82-%D1%84%D0%B0%D0%B9%D0%BB%2C-%D0%B7">2) Формирует файл, закодированный ключом PGP. Сохраняет в отдельную папку.</div><div id="bkmrk-3%29-%D0%9E%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D1%8F%D0%B5%D1%82-%D0%BF%D0%B8%D1%81%D1%8C%D0%BC%D0%BE">3) Отправляет письмо по адресу с определенным текстом и прикрепленным файлом</div><div id="bkmrk-4%29-%D0%9C%D0%BE%D0%BD%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D1%82-%D0%BF%D0%BE%D1%87%D1%82%D1%83-%28">4) Мониторит почту (может отличаться от отправляемой) для выявления ответа от банка </div><div id="bkmrk-%D0%B8-%D1%81%D0%BA%D0%B0%D1%87%D0%B8%D0%B2%D0%B0%D0%B5%D1%82-%D0%B2%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%BD%D1%8B">и скачивает вложенный файл. Ожидается один файл. Сохраняет в отдельную папку.</div><div id="bkmrk-5%29-%D0%94%D0%B5%D0%BA%D0%BE%D0%B4%D0%B8%D1%80%D1%83%D0%B5%D1%82-%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B5">5) Декодирует полученный файл и заполняет файл XML ответами из банка. </div><div id="bkmrk-%C2%A0-1"> </div><div id="bkmrk-%5B%D0%97%D0%B2%D0%B5%D0%BD%D0%BE-3%5D%C2%A0-%D0%91%D0%B0%D0%BD%D0%BA">**\[Звено 3\] Банк**</div><div id="bkmrk-1%29-%D0%9F%D1%80%D0%B8%D0%BD%D0%B8%D0%BC%D0%B0%D0%B5%D1%82-%D0%B7%D0%B0%D0%BA%D0%BE%D0%B4%D0%B8%D1%80">1) Принимает закодированный файл для списания</div><div id="bkmrk-2%29-%D0%A1%D0%BF%D0%B8%D1%81%D1%8B%D0%B2%D0%B0%D0%B5%D1%82-%D1%81-%D0%B1%D0%B0%D0%BD%D0%BA%D0%BE">2) Списывает с банковских карт средства</div><div id="bkmrk-3%29-%D0%92%D0%BE%D0%B7%D0%B2%D1%80%D0%B0%D1%89%D0%B0%D0%B5%D1%82-%D0%B7%D0%B0%D0%BA%D0%BE%D0%B4%D0%B8">3) Возвращает закодированный файл с результатами списаний</div><div id="bkmrk--1"></div>### Настройки EventsService.ini специализированные

<div id="bkmrk-%5Bapplication%5D-%C2%A0-%C2%A0-us"><div><div><div><div><div>**\[application\]**</div><div> UseManualEft=0 /* 0 - по умолчанию (автоматическое); 1 - ручное, пошаговое EFT-списание */</div><div> </div></div></div></div></div></div>**\[CreditCard\]**

<div id="bkmrk-%C2%A0%C2%A0needregccpayment%3D1"><div><div><div><div></div><div> NeedRegCCPayment=1 /*1-включить автоматическую оплату абонементов. Всегда = 1*/</div><div> useeft=1 /* включить механизм EFT списаний */</div><div> PKCode = EFT,EFT2,EFT3 /* список кодов типов абонементов, учавствующие в атоматических списаниях */</div><div> </div><div> filename=ChangeEFT.xml /* файл набора данных */ </div><div> paycode=Visa /* код платежа создаваемого, в случае успешного списания*/ </div><div> </div><div></div></div></div></div></div>### Настройки EFT.ini

<div id="bkmrk-%5Bmain%5D-manualmode-%3D-"><div><div><div><div><div><div>**\[Main\]**</div><div>ManualMode = 1 /*Ручной режим формирования и импортирования пакетов (0 -- нет, 1 -- да)*/</div><div>Timer = 5000 /*Время повтора Eft списания (в миллисекундах)*/</div><div> </div><div>LockFile =D:\FITNESS\UTILS\EventService\ChangeEFT.lock /* Управляющий файл взаимодействия EventService и EFT*/</div><div>XMLFile = D:\_1_JOB\03_EFT\EventService\ChangeEFT.XML /* XML файл данных от Event Service*/</div><div> </div><div>WorkDir = D:\FITNESS\UTILS\EFTWorkDir\ /* Рабочая директория */</div><div>FileToBankPack=D:\_1_JOB\03_EFT\WorkDir\09999_20170926_00.asc /* Техническое поле. Файл для банка Eft списания*/</div><div>FileFromBankPack =D:\_1_JOB\03_EFT\WorkDir\ans-09999_20170926_00.zip.asc /* Техническое поле. Файл ответа от банка Eft списания*/  
 </div><div> </div><div>Pack = D:\FITNESS\UTILS\EFT\pack.bat /*Командный файл для упаковки (шифрования)*/</div><div>UnPack = D:\FITNESS\UTILS\EFT\unpack.bat /*Командный файл для распаковки (дешифрования)*/</div><div> </div><div>Status =0 /* Состояние:*/</div><div> ;0 -- начальное состояние (формирование файла для банка);</div><div> ;1 -- отправление данных Eft в банк;</div><div> ;2 -- получение ответа от банка по Eft;</div><div> ;3 -- импортирование данных в Event Service</div><div> </div><div>LastDate=43011 /*Дата последнего отправления в банк, в формате числа*/</div><div>IDDoc=3 /* ;ID документа для банка (увеличивается на 1 после ответа от банка) */</div><div> </div><div>FromDay = 1 /*День месяца периода. Период, отправки данные в банк*/</div><div>Days = 30 /*Кол-во дней от дня месяца периода . Период, отправки данные в банк*/ </div><div>FromTime = 10:00 /*Время, с которого отпралять данные в банк*/</div><div> </div><div>**\[7Zip\]**</div><div>FileExe = "C:\Program Files\7-Zip\7z.exe" /* путь до файла архивирования */</div><div> </div><div> </div><div>**\[GPG\]**</div><div>FileExe = "C:\Program Files (x86)\GNU\GnuPG\gpg2.exe" /*Приложение для шифрования и расшифровывания (PGP)*/</div><div>Password = *Password* /*Пароль для расшифровывания*/ </div><div>LocalUser = *User* /*Имя пользователя ключа*/ </div><div> </div><div>**\[Bank\]**</div><div> ContractNumber = 09999 /*Номер договора. Получить у банка*/</div><div> MerchantID = 9909999771 /*Код клиента. Получить у банка*/ </div><div> </div><div>**\[SMTP\]** </div><div> Host = smtp.yandex.ru /*Адрес сервера SMTP*/</div><div> Port = 465 /*Порт сервера SMTP*/</div><div> </div><div> Username =Username@mail.ru /*Имя пользователя*/</div><div> Password =*Password* /*Пароль*/</div><div> Subject = complex auth from %n% /*Темя сообщения*/</div><div> </div><div> FromAddress =Username@mail.ru /*Адрес отправителя*/</div><div> ToAddress = monitor@abgcard.ru,admin@my.ru /*Адрес банка*/ </div><div> AdminAddress = admin@my.ru /*Адрес администратора*/</div><div> </div><div> TimeOut = 10000 /*Тайм-аут подключения*/</div><div> SSLType = 1 /*Тип SSL (0 -- 3)*/</div><div> </div><div>**\[POP3\]**</div><div>Host = pop.yandex.ru /*Адрес сервера POP3*/</div><div>Port = 995 /*Порт сервера POP3*/</div><div>Username =Username@mail.ru /*Имя пользователя*/</div><div>Password =*Password* /*Пароль*/</div><div>FromAddress =monitor@abgcard.ru /*Адрес отправителя (банка)*/</div><div>TimeOut = 10000 /*Тайм-аут подключения*/</div><div>SSLType = 1 /*Тип SSL (0 -- 3)*/</div><div> </div><div>ValidationFileName = 0 /*Проверка имени файла от банка (0 -- нет, 1 -- да)*/ </div><div> </div><div>**\[HTTP\]**</div><div>Host = 127.0.0.1 /*Хост. Для подтверждения отправки*/</div><div>Port = 8089 /*Порт. Для подтверждения отправки*/</div><div> </div></div></div><div></div></div></div></div></div>### Взаимодействие 

<div id="bkmrk-%D0%92%D0%B7%D0%B0%D0%B8%D0%BC%D0%BE%D0%B4%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%B8%D0%B5-%D0%BC%D0%B5%D0%B6%D0%B4%D1%83"><div><div><div><div><div>Взаимодействие между EFT.exe и EventsService.exe – файловый.</div><div>Файл 1: EventsService\ChangeEFT.lock – управляющий файл</div><div>Файл 2: EventsService\ChangeEFT.XML– набор обрабатываемых данных</div><div> </div><div>Файл ChangeEFT.lock имеет несколько значений</div><div>0 – Файл ChangeEFT.XML не сформирован</div><div>1 – Файл ChangeEFT.XML начал формироваться</div><div>2 – Файл ChangeEFT.XML сформирован</div><div>3 – Файл ChangeEFT.XML занят обработкой в EFT.exe</div><div>4 – Файл ChangeEFT.XML обработан EFT.exe</div><div>5 – Файл ChangeEFT.XML фиксируется в БД. По окончанию удаляется.</div><div> </div><div></div></div></div></div></div></div>### Общие данные поведения утилиты EFT.exe

<div id="bkmrk-1%29%C2%A0-%D0%A6%D0%B8%D0%BA%D0%BB-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D0%BF%D1%80%D0%B8-"><div><div><div><div><div><div>1) Цикл работы при стабильном функционировании: </div><div> 1 раз в день , с 8 числа в течении 12 дней (параметры)</div><div>2) Признак начала работы: Состояние управляющего файла = 3</div><div>3) Признак окончания работы: Состояние управляющего файла = 4</div><div> </div></div></div></div></div></div></div>### Общий цикл EFT списания

<div id="bkmrk-1%29-%D0%A1%D1%82%D0%B0%D1%80%D1%82%D0%BE%D0%B2%D0%BE%D0%B5-%D1%81%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD"><div><div><div><div>1) Стартовое состояние: </div><div>ChangeEFT.lock = 0 (либо отсутствует файл), ChangeEFT.XML пустой (либо отсутствует файл).</div><div>2) ChangeEFT.lock = 1, ChangeEFT.XML начинает формироваться XML.</div><div>3) ChangeEFT.lock = 2, ChangeEFT.XML завершилось формироваться XML.</div><div>4) EFT.exe выставляет значение ChangeEFT.lock = 3, копирует ChangeEFT.XML во временную директорию .\WORK. </div><div>5) EFT.exe кодирует ключом PGP формирует зашифрованный файл для банка.</div><div>Сохраняет .\Archive\to\20170130_143548\09999_20170926_00.asc</div><div>6) EFT.exe отправляет сформированный файл на почту </div><div>7) EFT.exe мониторит наличие ответа из банка раз в 5 минут (параметр)</div><div>8) EFT.exe скачивает ответ банка. </div><div>Сохраняет во временную директорию.</div><div>Сохраняет .\Archive\from\20170130_153548\ans-09999_20170926_00.zip.asc</div><div>9) EFT.exe декодирует файл</div><div>Получает из файла банка ответы и к каждой записи ChangeEFT.XML добавляет значения </div><div>&lt;ERRORCODE&gt;&lt;/ERRORCODE&gt;</div><div>&lt;ERRORTEXT&gt;&lt;/ ERRORTEXT &gt;</div><div>10) EFT.exe копирует с заменой в директорию EventsService\ChangeEFT.XML </div><div>cохраняет .\Archive\from\20170130_153552\ChangeEFT.XML </div><div>11) EFT.exe выставляет значение ChangeEFT.lock = 4</div><div>12) EFT.exe фиксирует, что сегодня файл уже был один раз обработан и не работает не зависимо от того какое состояние файла ChangeEFT.lock. и ожидает следующий цикл обработки.</div><div>13) EventsService.exe выставляет значение ChangeEFT.lock = 5 </div><div>Обрабатывает файл ChangeEFT.XML .</div><div>14) EventsService.exe выставляет значение ChangeEFT.lock = 0 </div><div>Удаляет файл ChangeEFT.XML .</div><div>15) Цикл EFT списания завершен</div><div></div></div></div></div></div><div id="bkmrk--2"></div><div id="bkmrk--3"></div>

# Списание EFT в ручном режиме

##### EFT.ini (пример)

[![image-1654769319876.png](https://docs.shelter.ru/uploads/images/gallery/2022-06/scaled-1680-/image-1654769319876.png)](https://docs.shelter.ru/uploads/images/gallery/2022-06/image-1654769319876.png)

[![image-1654770043512.png](https://docs.shelter.ru/uploads/images/gallery/2022-06/scaled-1680-/image-1654770043512.png)](https://docs.shelter.ru/uploads/images/gallery/2022-06/image-1654770043512.png)

```
[SMTP]
ToAddress = ... вставить все адресаты в письмо
AdminAddress = ... вставить все адресаты в письмо
FromAddress = ... ОТПРАВЛЯТЬ С ЭТОГО E-MAIL
```

**1**. В EFT.ini выставить <span style="background-color: #ccffcc;">ManualMode = 1</span>  
**2**. Запустить EFT.exe и нажать Выполнить

[![image-1654869884625.png](https://docs.shelter.ru/uploads/images/gallery/2022-06/scaled-1680-/image-1654869884625.png)?](https://docs.shelter.ru/uploads/images/gallery/2022-06/image-1654869884625.png)

  
**3**. Получаем ответ вида "<span style="background-color: #ccffcc;">Файл для банка \[MOSKVA\] \[11111\] \[C:\\\_UCS\\UTILS\\EFT2\\WorkDir\\11111\_20220609\_1400.asc\]: количество записей: 45; сумма: 174730</span>"

**4**. Создать письмо **с e-mail указанного в EFT.ini** (FromAddress = ... ) :

От кого: (п.4)

Кому: (адресаты **из EFT.ini** ToAddress= ... и AdminAddress=... )

[![image-1654769876023.png](https://docs.shelter.ru/uploads/images/gallery/2022-06/scaled-1680-/image-1654769876023.png)](https://docs.shelter.ru/uploads/images/gallery/2022-06/image-1654769876023.png)

Тема: complex auth from <span style="background-color: #ccffcc;">11111</span> (первые 5 цифр названия файла .asc)

Содержание письма: Строка, полученная в EFT.exe вида:  
<span style="background-color: #ccffcc;">Файл для банка \[MOSKVA\] \[11111\] \[C:\\\_UCS\\UTILS\\EFT2\\WorkDir\\11111\_20220609\_1400.asc\]: количество записей: 45; сумма: 174730</span>  
  
**5**. Прикрепить актуальный файл **\*.asc** из **...\\EFT2\\WorkDir\\** к письму

**6**. (необязательно (?) для ручного режима)  
Создать в письме две ссылки вида  
"Подтвердить" - **http://<span style="background-color: #ffff99;">192.168.0.10:8189</span>/?ok&amp;file=<span style="background-color: #ffff99;">11111\_20220609\_1400.asc</span>&amp;ucs**  
"Отменить и переоформить" - **http://<span style="background-color: #ffff99;">192.168.0.10:8189</span>/?cancel&amp;file=<span style="background-color: #ffff99;">11111\_20220609\_1400.asc</span>&amp;ucs**

IP-адрес и порт указаны в EFT.ini \[HTTP\]  
file= \*.asc&amp;ucs - соответстующее название вашего файла.

**7**. Отправить письмо - Получить ответ:

Complex\_AUTH\_Answer  
Файл вида - <span style="background-color: #ccffcc;">ANS-11111\_20220609\_1400.asc</span>

**8**. Полученный файл поместить в **...EFT2\\WorkDir\\**  
**9**. В EFT.exe нажать "Конвертировать файл от банка"

[![image-1654769422507.png](https://docs.shelter.ru/uploads/images/gallery/2022-06/scaled-1680-/image-1654769422507.png)](https://docs.shelter.ru/uploads/images/gallery/2022-06/image-1654769422507.png)  
**10**. ГОТОВО! Вы великолепны! (При необходимости вернуть авто-режим ManualMode = 0 )

# Модуль работы  с маркированной продукцией "Честный Знак"

#### **<u>Честный знак. Поддержка маркированной продукции. Пользовательская документация.</u>**

- **<u>[Настройка кодов и сканера](https://docs.shelter.ru/books/ustanovka-i-nastroyka-po-abonement/page/nastroyka-kodov-chestnyy-znak)</u>**
- **<u>[Разрешительный режим](https://docs.shelter.ru/books/ustanovka-i-nastroyka-po-abonement/page/razresitelnyi-rezim-dlya-markirovannoi-produkcii)</u>**
- **<u>[АТОЛ. "Честный Знак"](https://docs.shelter.ru/books/podklyucenie-kkt-k-abonement/page/atol-rabota-s-markirovannoi-produkciei-cestnyi-znak)</u>**
- **<u>["Честный знак" и GTIN из RK7 в Абонемент](https://docs.shelter.ru/books/ustanovka-i-nastroyka-po-abonement/page/cestnyi-znak-i-gtin-iz-rk7-v-abonement)</u>**

**<u>Модели сканеров штрих-кода, протестированные и рекомендованные для использования с ПО Абонемент:</u>**

**<u>Honeywell 1952g  
Honeywell HH400  
Datalogic QuickScan QW2520  
Mertech CL-2310  
ATOL SB2108 Plus  
PayTor FL-1007 </u>**

В 146 версии поддержана работа Честный Знак в формате ФФД 1.2. и поддержка продажи маркированной упакованной воды.  
Продажа маркированной продукции «Честный Знак» лицензируется отдельно, Лицензия на ключе: 5-9.

**<u>В программе, в разделе "Форматы фискальных данных" добавлен справочник   
 «Тип маркируемой продукции ("Честный знак")»:  
</u>**По умолчанию справочник заполнен типами продукции, подлежащей обязательной маркировки.  
Внимание!!! Справочник НЕ редактируемый. Дополняется разработчиками по мере ввода в действие новых типов маркируемых товаров.

[![image.png](https://docs.shelter.ru/uploads/images/gallery/2025-06/scaled-1680-/image.png)](https://docs.shelter.ru/uploads/images/gallery/2025-06/image.png)

Далее необходимо добавить соответствующий вашему маркированному товару признак предмета расчета с кодом ''**33**'' - **ТМ** Добавить можно вручную.

Перечень существующих ППР: **[Таблица 101. Значения реквизита "признак предмета расчета" (тег 1212)](https://www.consultant.ru/document/cons_doc_LAW_362322/cc1e361ee41688e67fe65c4740a242a10c265c86/)**

[![image.png](https://docs.shelter.ru/uploads/images/gallery/2025-06/scaled-1680-/P5Eimage.png)](https://docs.shelter.ru/uploads/images/gallery/2025-06/P5Eimage.png)

***Шаг 1. Добавление номенклатуры в справочник.  
Справочник услуг:***

Создаем номенклатурную позицию в справочнике услуг:

Все доп. товары справочника, подлежащие маркировке, должны ссылаться на тип маркируемой продукции. Для этого, в карточке услуги, в параметре «Тип маркируемой продукции» нужно выбрать тип из соответствующего справочника.

Пример для воды:

[![image.png](https://docs.shelter.ru/uploads/images/gallery/2025-12/scaled-1680-/image.png)](https://docs.shelter.ru/uploads/images/gallery/2025-12/image.png)

После добавления товара (карточки услуги) в справочник Абонемента, номенклатурной позиции нужно присвоить штрих-код партии.

[![image-1653645880148.png](https://docs.shelter.ru/uploads/images/gallery/2022-05/scaled-1680-/image-1653645880148.png)](https://docs.shelter.ru/uploads/images/gallery/2022-05/image-1653645880148.png)

Рис. 3

Добавление происходит путем считывания штрих-кода Data Мatrix каждой новой партии товара. Подтвердить добавление штриха в справочник, и последующее добавление в чек путем сканирования Data Мatrix кода.

  
Если штрих-код уже ранее был прикреплен и существует в справочнике, то добавление не происходит. Поднимается информационное сообщение (Рис. 4):

[![image-1653645937360.png](https://docs.shelter.ru/uploads/images/gallery/2022-05/scaled-1680-/image-1653645937360.png)](https://docs.shelter.ru/uploads/images/gallery/2022-05/image-1653645937360.png)

Рис. 4

***Шаг 2. Продажа маркируемой продукции***   
Пользователь в быстрой продаже/быстром чеке сканирует марку (Data Matrix код) с товара:  
1\. Система находит и добавляет в чек товарную позицию (Рис. 5).  
2\. Система передает код в ФР, ФР печатает код на чеке и передает в ОФД.

[![image-1653645980145.png](https://docs.shelter.ru/uploads/images/gallery/2022-05/scaled-1680-/image-1653645980145.png)](https://docs.shelter.ru/uploads/images/gallery/2022-05/image-1653645980145.png)

 Рис. 5

После того как кассир пробьёт маркированный товар, касса отправит данные в «Честный знак» и при печати на чеке появится одно из следующих обозначений:

- **\[М+\]** — товар проверен и успешно отправлен в «Честный знак».
- **\[М-\]** — товар не прошёл проверку в системе «Честный знак» и его нельзя продать.
- **\[М\]** — товар не прошёл проверку и не был передан в «Честный знак», необходимо пробить товар повторно (возможно, не было связи с интернетом или касса работала в автономном режиме)

3. Если штрих-код в БД не найден, поднимается информационное сообщение (Рис. 6):

[![image-1653646082403.png](https://docs.shelter.ru/uploads/images/gallery/2022-05/scaled-1680-/image-1653646082403.png)](https://docs.shelter.ru/uploads/images/gallery/2022-05/image-1653646082403.png)

Рис. 6

***Важные моменты:***

При сканировании марки на ключе защиты проверяется лицензия: проект-модуль: 5-9. Если модуль на ключе отсутствует, то поднимается информационное сообщение "Нет лицензии на "Честный знак".

Внимание!!!

1. Каждый товар маркируемой продукции добавляется в чек отдельной позицией.
2. Повторная продажа уникального кода Data Matrix запрещена.   
    Поднимается информационное сообщение (Рис. 7):

[![image-1653646153647.png](https://docs.shelter.ru/uploads/images/gallery/2022-05/scaled-1680-/image-1653646153647.png)](https://docs.shelter.ru/uploads/images/gallery/2022-05/image-1653646153647.png)

Рис. 7

***Шаг 3. Возврат маркируемой продукции***

Возврат маркировочной продукции осуществляется по кнопки - Возврат.

Поднимается функция «Возврат платежа, услуг и абонементов», т.е. полный возврат чека.

1. В окне возврата необходимо заполнить поле «Причина возврата»
2. Подтверждение возврата маркировочной продукции происходит путем считывания штрих-кода Data Мatrix товара (Рис. 8):

[![image-1653646210815.png](https://docs.shelter.ru/uploads/images/gallery/2022-05/scaled-1680-/image-1653646210815.png)](https://docs.shelter.ru/uploads/images/gallery/2022-05/image-1653646210815.png)

Рис. 8

Признак отправки данных о возврате маркируемой продукции в ОФД – это наличие в чеке фискального регистратора метки маркировки **\[М\].**

 3. Если не происходит подтверждение возврата маркировочной продукции поднимается информационное сообщение (Рис.9):

[![image-1653646360167.png](https://docs.shelter.ru/uploads/images/gallery/2022-05/scaled-1680-/image-1653646360167.png)](https://docs.shelter.ru/uploads/images/gallery/2022-05/image-1653646360167.png)

Рис. 9

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

Внимание!!!

Товар подлежит возврату, только в случае если код Data Matrix товара не поврежден.  
Если Data Matrix товара поврежден, то ПО не позволит вернуть товар, т.к. это нарушает правила оборота товара и открывает путь к мошенничеству. Если товар был возвращен, то возврат товара в оборот необходимо решать через личный кабинет участника товарооборота: [https://честныйзнак.рф/](https://%D1%87%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B9%D0%B7%D0%BD%D0%B0%D0%BA.%D1%80%D1%84/). Возврат товара в оборот подлежит обязательной перемаркировке.

# Настройка кодов "Честный Знак"

### Проверка DataMatrix-кода

- **<u><span style="text-decoration: underline;">[Модуль работы с маркированной продукцией "Честный Знак"](https://docs.shelter.ru/books/ustanovka-i-nastroyka-po-abonement/page/modul-raboty-s-markirovannoy-produktsiey-chestnyy-znak "Модуль работы с маркированной продукцией "Честный Знак"")</span></u>
- **<u>[Разрешительный режим](https://docs.shelter.ru/books/ustanovka-i-nastroyka-po-abonement/page/razresitelnyi-rezim-dlya-markirovannoi-produkcii)</u>**
- **<u>[АТОЛ. "Честный Знак"](https://docs.shelter.ru/books/podklyucenie-kkt-k-abonement/page/atol-rabota-s-markirovannoi-produkciei-cestnyi-znak)</u>**
- **<u>["Честный знак" и GTIN из RK7 в Абонемент](https://docs.shelter.ru/books/ustanovka-i-nastroyka-po-abonement/page/cestnyi-znak-i-gtin-iz-rk7-v-abonement)</u><u>  
    </u>**

https://честныйзнак.рф/upload/Структура DataMatrix.pdf или [Структура DataMatrix\_ЧЗ.pdf](https://docs.shelter.ru/attachments/91).  
В файле находится описание кодов Датаматрикс. Обновляется примерно раз в 6 мес.

<div id="bkmrk-%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0-%D1%81%D0%BA%D0%B0%D0%BD%D0%B5%D1%80%D0%B0-%D0%BD%D0%B0-">**Проверка сканера на готовность к работе с маркированной продукцией и корректность его конфигурации:**</div><div id="bkmrk-%D0%A1%D0%BA%D0%B0%D1%87%D0%B8%D0%B2%D0%B0%D0%B5%D1%82%D0%B5-putty%C2%A0htt">Скачиваете PuTTY [https://www.putty.org/](https://www.putty.org/)</div><div id="bkmrk-tcpcardreader-%D0%B4%D0%BE%D0%BB%D0%B6%D0%B5%D0%BD">TcpCardReader должен быть выключен, чтобы не перехватывать сканер.</div><div id="bkmrk-connection-type%3A-ser">Connection type: Serial</div><div id="bkmrk-com-%D0%BF%D0%BE%D1%80%D1%82-%D1%81%D0%BA%D0%B0%D0%BD%D0%B5%D1%80%D0%B0%C2%A0-%E2%80%94%C2%A0">COM-порт сканера — Open.</div>[![image.png](https://docs.shelter.ru/uploads/images/gallery/2025-05/scaled-1680-/u1jimage.png)](https://docs.shelter.ru/uploads/images/gallery/2025-05/u1jimage.png)

<div id="bkmrk-%C2%A0"> </div><div id="bkmrk-%D0%94%D0%B0%D0%BB%D0%B5%D0%B5-%D1%81%D0%BA%D0%B0%D0%BD%D0%B8%D1%80%D1%83%D0%B5%D1%82%D0%B5-%D1%82%D0%B5%D1%81">Далее сканируете тестовую марку.</div><div id="bkmrk--0"></div>[![image.png](https://docs.shelter.ru/uploads/images/gallery/2025-05/scaled-1680-/gHgimage.png)](https://docs.shelter.ru/uploads/images/gallery/2025-05/gHgimage.png)

<div id="bkmrk-%C2%A0-0"> </div><div id="bkmrk-%D0%94%D0%BE%D0%BB%D0%B6%D0%B5%D0%BD-%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B8%D1%82%D1%8C%D1%81%D1%8F-%D1%80%D0%B5">Должен получиться результат, как на скриншоте:</div><div id="bkmrk-%C2%A00102900000632271215"> 0102900000632271215(oFsnlUM&amp;GJ%93dGVz</div>[![image.png](https://docs.shelter.ru/uploads/images/gallery/2025-05/scaled-1680-/a0yimage.png)](https://docs.shelter.ru/uploads/images/gallery/2025-05/a0yimage.png)

####  

#### **Абонемент**

Проверка DataMatrix-кода на соответствие стандарту проверяется регулярными выражениями  
Новые настройки в файле **abonementmanager.ini**

```
[TrueMark]
RegExpListFillMode=1
```

Порядок формирования списка для проверки соответствия трека Честному знаку  
0 - Если \[TrueMark.RegExp\] не пустая, то используется только содержимое \[TrueMark.RegExp\], в противном случае используются только встроенные регулярки  
1 - Если \[TrueMark.RegExp\] не пустая, то используется только содержимое \[TrueMark.RegExp\] и этот список дополняется встроенными регулярками

Нижеперечисленные регулярные выражения являются встроенными:

```
[TrueMark.RegExp]
0=^01(0(\d{13}))21(.{13}).*$
1=^\(01\)(0(\d{13}))\(21\)(.{13}).*$
2=(^0(\d{13}))(.{7}).{4}.{4}$
3=(^0(\d{13}))(.{13}).{4}$
4=(^0(\d{13}))(.?.?.?.?.?.?.?.?.?.?.?.?.?)$
```

Для GTIN

`0=(0(\d{13}))(){1,14}$`

Регулярные выражения на проверку соответствия трека Честному знаку  
Если список не пустой, то он используется в первую очередь. Смотри также RegExpListFillMode  
У регулярных выражений должно быть минимум 3 группы (3 блока круглых скобок)  
Группа 1: 14 символов - код группы товара ()  
Группа 2: 13 символов - Бар-код товара (Обычно это 1 группа без первого символа "0", если первый символ - это "0")  
Группа 3: 13 символов или меньше - Индивидуальный серийный номер единицы товара  
Группа 4: Дополнительная - Цена единицы измерения товара. Если в считанной последовательности по стандарту GS1 содержится дополнительный идентификатор применения «8005», то эта группа также участвует в формировании тега 1162  
Тег 1162 формируется конкатенацией Группа 1 + Группа 3 + Группа 4  
Группа 2 служит для быстрого поиска товара по его Бар-коду в справочнике услуг Абонемента  
При задании регулярных выражений в ini-файле следует использовать следующий формат: НазваниеПараметра=РегулярноеВыражение

### Пример настройки сканера

**abonementmanager.ini**

```
[TCPCardReader]
UseTCPCardReader=1
UseAnySymbolsInBarCode=1
PORT=7760
HOST=127.0.0.1
StartTermChars=;
FinishTermChars=]#13;#10;#0;
BarCodePrefix=Bar
PrefixMaskForProhibitDecode =Bar*
```

**TCPCardReader.ini**

```
[READER1]
;Честный знак
COMPORT=8
COMPORTPARAMS=baud=9600 data=8 parity=N stop=1
Prefix=;Bar
Postfix=]

useDecodeCards=0

TrackLogFile=
ConvertTrackLog=0
IncludeTypeStartTermChar=0
IncludeStartTermChar=0
NeedCheckAndReopenCom=1
```

# Лицензирование на виртуальном ключе. Установка и настройка.

**Для всех версий ПО Абонемент, с 01.05.2023 года доступно лицензирование на виртуальном ключе.**

**В случае необходимости запуска объекта на физическом ключе защиты -**

**стоимость физического ключа составляет 2 000 руб. без НДС.**

**Описание:**

Лицензирование по виртуальным ключам в системе ПО Абонемент построено по клиент-серверной архитектуре. Серверный компонент – это служба Сервера блокировок **ServerT1**, она запрашивает информацию о лицензиях соответствующего объекта с облачного сервера лицензий и транслирует её клиентским компонентам или рабочим местам.

Все прочие лицензируемые модули ПО Абонемент получают информацию о лицензиях через кассовый сервер.

**Установка:**

Скопировать папку ServerT1 в папку с ПО Абонемент на сервере. Соответствующая папка есть в сборке нужной Вам версии ПО Абонемент, а так же **доступна по ссылке: [ServerT1\_2\_3\_20\_3\_21.10.2025.rar](https://docs.shelter.ru/attachments/143) и на FTP: [ftp://ftp.shelter.ru/Abonement/FullVersion/Licence/](ftp://ftp.shelter.ru/Abonement/FullVersion/Licence/)**

В конфигурационном файле ServerT1.ini настройки можно оставить по умолчанию.

> \[HTTPServer\]  
> ;настройки для HTTP-сервера  
> ;IP-адрес сетевого интерфейса для HTTP-сервера. По умолчанию 0.0.0.0  
> BindingIp=0.0.0.0  
> ;порт, который программа "слушает" на выбранном сетевом интерфейсе. По умолчанию 7711  
> BindingPort=7711
> 
> \[SERVER\]  
>  UseOnline =1

В конфигурационном файле LicenceOnline.ini необходимо проставить параметры, полученные Вами после обработки заявки:

**CustomerID=00000** (полученный Вами код объекта)

**DongleID= 00000000000000000** (полученный Вами код объекта)

[![image.png](https://docs.shelter.ru/uploads/images/gallery/2023-05/scaled-1680-/image.png)](https://docs.shelter.ru/uploads/images/gallery/2023-05/image.png)

**Код объекта можно узнать в тех. поддержке ПО Абонемент или в отделе по работе с дилерами/клиентами.**

Проинсталлировать службу запустив исполняемый файл с параметром: –install,

Для удобства в папке уже есть ярлык с нужным параметром, нужно предварительно в свойствах ярлыка выставить нужные пути и запустить его «от имени Администратора»:

[![image.png](https://docs.shelter.ru/uploads/images/gallery/2023-05/scaled-1680-/nHzimage.png)](https://docs.shelter.ru/uploads/images/gallery/2023-05/nHzimage.png)

В службах Windows должна появится соответствующая служба, которая прописана в ServerT1.ini:

[![image.png](https://docs.shelter.ru/uploads/images/gallery/2023-05/scaled-1680-/qY0image.png)](https://docs.shelter.ru/uploads/images/gallery/2023-05/qY0image.png)

**Запустить службу и проверить информацию о лицензиях можно по ссылке в браузере:**

[http://127.0.0.1:7711](http://127.0.0.1:7711/)

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

<span class="confluence-embedded-file-wrapper confluence-embedded-manual-size">![](https://conf.game-keeper.com/download/attachments/48563080/image2022-11-21_17-45-38.png?version=1&modificationDate=1669041932877&api=v2)</span>

На остальных рабочих местах адрес сервера блокировок указывается по стандартной схеме - IP адрес и порт службы ServerT1 на Вашем сервере.

В случае запуска сервера блокировок в десктопном режиме необходимо:

запустить исполняемый exe.ru. нажать кнопку "**Setting Licence online**":

[![image.png](https://docs.shelter.ru/uploads/images/gallery/2023-05/scaled-1680-/5zJimage.png)](https://docs.shelter.ru/uploads/images/gallery/2023-05/5zJimage.png)

После появления информационного окна с данными **CustomerID=00000 и DongleID=**

\- нажать ОК:

[![image.png](https://docs.shelter.ru/uploads/images/gallery/2023-05/scaled-1680-/Axcimage.png)](https://docs.shelter.ru/uploads/images/gallery/2023-05/Axcimage.png)

Далее в следующих окнах так же нажать **ОК**:

[![image.png](https://docs.shelter.ru/uploads/images/gallery/2023-05/scaled-1680-/U6Oimage.png)](https://docs.shelter.ru/uploads/images/gallery/2023-05/U6Oimage.png)

[![image.png](https://docs.shelter.ru/uploads/images/gallery/2023-05/scaled-1680-/26Eimage.png)](https://docs.shelter.ru/uploads/images/gallery/2023-05/26Eimage.png)

Запросить информацию об имеющихся на виртуальном ключе лицензиях, можно нажав на кнопку "**Key Info**". результатом будет окно с имеющимися лицензиями и сроками действия:

[![image.png](https://docs.shelter.ru/uploads/images/gallery/2023-05/scaled-1680-/nwTimage.png)](https://docs.shelter.ru/uploads/images/gallery/2023-05/nwTimage.png)

На этом настройка сервиса лицензирования, работающего на виртуальном ключе, закончена.

<div id="bkmrk--9" style="position: absolute; left: 588px; top: 399.844px;"><div class="gtx-trans-icon">  
</div></div>

# Установка киоска (терминала, инфотерминала) самообслуживания

Краткий вариант инструкции (будет расширяться):

1. Ставим Denwer
2. Распаковываем Connecter в Fitness
3. Закидываем туда же LIB
4. LIB прописываем в переменные среды (системные)
5. Закидываем в каталог установленного Denwer C:\\WebServers\\home\\localhost\\www нужный Вам модуль киоска/инфотерминала
6. Настраиваем connecter.ini: доступ к базе; приватный ключ; useURLEncode; по желанию настраиваем работу с ФР (URunPos.ini) - <ins>**настройка такая же, как и в Абонементе**</ins>. Боремся с купюроприемником, используя библиотеку MoneyAcceptor из поставки (протокол CashCode). Настраиваем карт ридер, если есть.
7. Идем в модуль инфокиоска, расположенном в каталоге Denwer и... делаем настройку в config.php

```
    define('SCHEDULE_XML_PATH', 'http://IP:PORT'); // TCPHost и TCPPort
    define('USE_URL_DECODE', 0); // значение параметра UseURLEncode в файле connecter.ini
    define('PRIVATEKEY', 'ТУТ ВАШ ПРИВАТНОЕ СЛОВО'); // указывается в файле connecter.ini    
```

Запускаем Connecter, запускаем Denwer и радуемся..

Рекомендовано использовать Denwer версии 5.3.

# Установка киоска (терминала, инфотерминала) самообслуживания_ВЕРСИЯ 2

Краткий вариант следующий:

1. Необходимо определить, достаточно ли производителен конечный ПК (планшет/моноблок) для Chrome+Connecter+Denwer+TCPCardReader (в порядке убывания требуемых ресурсов)
2. Разместить на конечном ПК Chrome + TCPCardReader
3. Разместить Denwer и Connecter либо на конечном ПК либо на сервере (В зависимости от результатов пункта 1)

Настройки

- TCPCarderader и decodecards под ним и Connecter настроить аналогично рабочим местам Абонемент. В секции TCPCardReader в connecter.ini может быть неверно указан адрес на котором запущен TCPCardReader. Подключиться на адрес 0.0.0.0 невозможно. Вероятно, имелось ввиду 127.0.0.1
    
    ```
    HOST=0.0.0.0
    ```
    
    Также в секции devices использование ридера отключено:
    
    ```
    [DEVICES]
      UseCardReader=0
    ```
    
      
    Настройте виртуальный ФР под Connecter. Убедитесь, что оплата в настройках инфокиоска отключена, если нет соответствующей лицензии.
- В Denwer добавить веб-часть модуля инфокиоск, так, чтобы он был доступен с конечного ПК (в случае если Denwer установлен на конечном ПК, то используются настройки Denwer по умолчанию)
- Развернуть Connecter. По запуску Connecter на сервере - убедитесь что порт, на котором запущен TCPCardReader на планшете доступен с сервера. Как правило, настройки брандмауера по умолчанию блокируют подключения с удалённых ПК.
    
    По запуску Connecter на планшете - судя по всему запуск успешен, но каких-либо запросов в него не поступало.  
    При настройке:
    
    ```
    [HTTPServer]
      BindingIp=192.168.0.20
    ```
    
    Connecter будет доступен только при обращении по адресу 192.168.0.20 и не доступен по 127.0.0.1  
    Также не рекомендуем указывать DBConnectCount менее 3.
- Connecter должен быть настроен на БД объекта
- Connecter должен быть доступен с ПК на котором развёрнут Denwer.
- Connecter должен быть настроен на работу с TCPCardReader (Настраивается точно так же как и для abonementmanager.exe)
- Connecter должен быть настроен на работу с сервером блокировок, и в данной секции необходимо указать проект и модуль согласно таблице (https://support.shelter.ru/ru/node/8922.html) чтобы модуль имел доступ ко всем требуемым функциям.
- После запуска и проверки доступности и работоспособности Connecter переходите к настройкам веб-части переходя на конечном ПК по ссылке http://&lt;адрес\_денвер&gt;/info/settings
- В первую очередь настраиваете данные для подключения к Connecter. Проверяете их с помощью страницы check\_server. Сохраняете.
- Проверяете, что модуль доступен по предполагаемой ссылке, что функционал отрабатывает.
- Настраиваете bat-файл, в котором производится выгрузка explorer, запуск необходимых служб/приложений, и запуск Chrome с требуемыми ключами.

Далее донастраиваете веб-часть согласно требуемому функционалу.

# Подключение Банковского терминала



# Подключение банковского терминала. Протокол INPAS. Версия DC - 1.xx

**Необходимые файлы в папке EXE (из сборки):**

- amCC\_Inpas.dll
- amCC\_Inpas.ini
- Установленный и проверенный сотрудником банка DualConnector 1.\*

**Секция \[CC\] в abonementmanager.ini:**

\[CC\]  
 RunCCDllName=amCC\_Inpas.dll

Пример содержимого amCC\_Inpas.ini

> \[DLL.CreditCard-Inpas\]  
>  CurrencyCode=643  
>  OperationCode=1  
>  TerminalID=00000003 (из log'a DualConnector'a в строке с тегом \[27\])  
>  isShowResult=1  
>  **VoidAsRefund=0   
> Если VoidAsRefund = 1, то все команды Void (отмена в текущую смену будут подменяться командой Refund - возврат)  
> Если VoidAsRefund = 0 (по умолчанию) - то подмены команд не будет**

TerminalID можно получить из log'a DualConnector'a в строке с тегом \[27\]

Для выполнения возврата при оплате по QR необходима информация идентифицирующая транзакцию с банковского слипа.

# Подключение Банковского терминала SberBank

Необходимые файлы:

- *amCC\_Sberbank.dll*
- *amCC\_Sberbank.ini*

*скопировать файлы в папку exe.*

<div id="bkmrk-%D0%9F%D1%80%D0%BE%D0%BF%D0%B8%D1%81%D1%8B%D0%B2%D0%B0%D0%B5%D0%BC-%D0%B2-abonem">Прописываем в *abonementmanager.ini* секцию **\[CC\]** следующим образом:</div>```
[CC]
RunCCDllName=amCC_Sberbank.dll
```

<div id="bkmrk-3%29-%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0%C2%A0amcc_sb">Настройка *amCC\_Sberbank.ini* Пример файла:</div>```
[DLL.CreditCard-Sberbank]

; В случае работы с несколькими ююр.лицами в Абонемент, и несколькими отделами в терминале раскомментировать и заполнить для каждого рабочего места
;[DLL.CreditCard-Sberbank.Department]
;ID киоска = ID отдела в терминале
;  1 = 0
;  2 = 1

[DLL.CreditCard-Sberbank.ESC]
  CUT = #1#27U

[DLL.CreditCard-Sberbank.ErrorMsg]
12=Необходимо Обратиться к персоналу Сбербанка, который устанавливал терминал.
36=Необходимо Обратиться к персоналу Сбербанка, который устанавливал терминал.
99=Необходимо Проверить кабели, идущие к пинпаду. Если все на месте, обратиться к персоналу Сбербанка, который устанавливал терминал.
...
```

Прописать путь к папке с файлом Pilot\_NT в переменную окружения Path.  
Обычно это либо папка sc552 или папка win. Создается сотрудниками sber'а.  
В этой же папке должна находиться утилита LoadParm.exe с помощью которой можно проверить работоспособность терминала: LoadParm.exe 7 // сверка итогов - за большей детализацией к сотрудникам Сбербанка.

<div id="bkmrk-%D0%9B%D0%B8%D1%86%D0%B5%D0%BD%D0%B7%D0%B8%D1%8F%3A-%D0%94%D0%BE%D0%BB%D0%B6%D0%B5%D0%BD-%D0%B1%D1%8B%D1%82">**Лицензия:** Должен быть приобретен модуль Банковский протокол</div><div id="bkmrk-%C2%A0-2"> </div><div id="bkmrk-%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B8%2C-%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%B5-%D0%B2">Настройки, которые выполняются **сотрудником банка**:</div><div id="bkmrk-%C2%A0-3"> </div><div id="bkmrk-1%29-%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D1%8C-%D0%B4%D1%80%D0%B0%D0%B9%D0%B2%D0%B5">1) Установить драйвер для подключения к системе терминала Verifone.</div><div id="bkmrk-%D0%94%D1%80%D0%B0%D0%B9%D0%B2%D0%B5%D1%80-%D0%BF%D1%80%D0%B5%D0%B4%D0%BE%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D1%8F%D0%B5">Драйвер предоставляется Сбербанком (Пример: WinXP-Win7-VeriFone-USB-UARTDriver_Vx_1.0.0.30_Build-2).</div><div id="bkmrk-%C2%A0-4"> </div><div id="bkmrk-2%29-%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D1%8C-%D0%BD%D0%B5%D0%BE%D0%B1%D1%85%D0%BE">2) Установить необходимое программное обеспечение банка для интеграции с кассовым ПО. (pilot_nt.dll версии не ранее 27.0.30.0)</div><div id="bkmrk-%C2%A0-5"> </div><div id="bkmrk-3%29-%D0%A1%D0%BA%D0%BE%D0%BD%D1%84%D0%B8%D0%B3%D1%83%D1%80%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D1%82%D1%8C-">3) Сконфигурировать устройство. Проверить его работу при помощи утилиты LoadParm.exe.</div><div id="bkmrk-%C2%A0-6"> </div><div id="bkmrk-4%29-%D0%9E%D1%81%D0%BE%D0%B1%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8-%D0%BA%D0%BE%D0%BD%D1%84%D0%B8">4) Особенности конфигурации прошивки терминала.</div><div class="rteindent1" id="bkmrk-4.1.-%D0%9E%D0%B1%D1%89%D0%B8%D0%B5-%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B">4.1. Общие параметры / Параметры для терминалов на базе PC / Последовательность в конце чека (**PrinterEnd** в *pinpad.ini*) указать *010D0A011B55*</div><div class="rteindent1" id="bkmrk-4.2.-%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5-">4.2. Дополнительные опции / Число копий чека указать = 2</div>

# Подключение банковского терминала. Протокол ARCUS2.

<div id="bkmrk-%28%D0%A3%D1%81%D0%BF%D0%B5%D1%88%D0%BD%D0%BE-%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B0">(Успешно произведена интеграция с эквайрингом банка ВТБ 24 и банка МКБ (Московский Кредитный Банк))</div><div id="bkmrk-%C2%A0"> </div><div id="bkmrk-%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D1%83%D0%B5%D0%BC%D0%BE%D0%B5-%D0%BE%D0%B1%D0%BE%D1%80%D1%83%D0%B4%D0%BE">**Используемое оборудование:** Терминал для оплаты банковской картой, подключённый специалистами банка эквайера.</div><div id="bkmrk-%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D1%83%D0%B5%D0%BC%D0%BE%D0%B5-%D0%9F%D0%9E%3A%C2%A0%D0%BF%D1%80%D0%BE">**Используемое ПО:** программа «Abonement-manager» **версии 1.129** и выше, ПО Arcus2 **версии 2.1.0.7** и выше</div><div id="bkmrk-%D0%9B%D0%B8%D1%86%D0%B5%D0%BD%D0%B7%D0%B8%D1%8F%3A%C2%A0%D0%94%D0%BE%D0%BB%D0%B6%D0%B5%D0%BD-%D0%B1%D1%8B%D1%82">**Лицензия:** Должен быть приобретен модуль Банковский протокол</div><div id="bkmrk-%C2%A0-0"> </div><div id="bkmrk-%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B8%2C-%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%B5-%D0%B2">Настройки, которые выполняются **сотрудником банка**:</div><div id="bkmrk-1%29-%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D1%8C-%D0%B4%D1%80%D0%B0%D0%B9%D0%B2%D0%B5">1) Установить драйвер для подключения к системе терминала для оплаты банковской картой.</div><div id="bkmrk-2%29-%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B8-%D0%BD%D0%B0%D1%81%D1%82%D1%80">2) Установка и настройка ПО Arcus. (**версии 2.1.0.7** или выше) (версию 2.1.0.9 можно [скачать с ftp](ftp://ftpint.ucs.ru/Abonement/Interface/Arcus2/arcus_2.1.0.9-setup.rar))</div><div id="bkmrk-3%29-%D0%A1%D0%BA%D0%BE%D0%BD%D1%84%D0%B8%D0%B3%D1%83%D1%80%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D1%82%D1%8C-">3) Сконфигурировать устройство. Проверить его работоспособность.</div><div id="bkmrk-%C2%A0-1"> </div><div id="bkmrk-%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B8%2C-%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%B5-%D0%B2-0">Настройки, которые выполняются **техническим специалистом Абонемент**:</div><div id="bkmrk-1%29-%D0%92-%D0%BF%D0%B0%D0%BF%D0%BA%D1%83-exe-%D1%81%D0%BA%D0%BE%D0%BF%D0%B8">1) В папку exe скопировать файлы: *runcc.ini, runcc.dll, Arcus.dll*. Файлы можно взять из дистрибутива Абонемент версии 129 и выше.</div><div id="bkmrk-2%29-%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-runcc.i">2) Настройка runcc.ini. Пример файла:</div>```
[Main]
TerminalDLL = Arcus.dll
BufSize = 5000000

[Cmd]
; Комманда закрытия дня - справа значение из ops.ini
5 = 11
; Комманда отмены чека с передачей параметров - справа значение из ops.ini
2 = 4
; Комманда полного отчёта - справа значение из ops.ini
20 = 7
; Комманда краткого отчёта - справа значение из ops.ini
2000=8
 
[LOCK.SERVER]
; IP Адрес сервера блокировок
TCPHost = 172.22.10.41
; Порт сервера болкировок
TCPPort = 1116
; Текст ошибки в случае отсутствия незанятой валидной лицензии на модуль "Банковский протокол"
LicErrorText = "Ошибка лицензии интерфейса платёжных карт, оплата картами будет недоступна"8
```

<div id="bkmrk-%D0%B3%D0%B4%D0%B5%3A">где:</div><div id="bkmrk-bufsize%C2%A0--%D1%80%D0%B0%D0%B7%D0%BC%D0%B5%D1%80-%D0%B1%D1%83%D1%84">**BufSize** - размер буфера для документов;</div><div id="bkmrk-%5Bcmd%5D%C2%A0--%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D0%B0-%D0%BF%D1%80%D0%B5%D0%BE">**\[Cmd\]** - правила преобразования команд согласно ops.ini.</div><div id="bkmrk-%C2%A0-2"> </div><div id="bkmrk-3%29-%D0%92-%D1%84%D0%B0%D0%B9%D0%BB%D0%B5%C2%A0abonement">3) В файле *abonementmanager.ini* в секцию **\[pos\]** добавить **useposterminal=1**</div><div id="bkmrk-4%29-%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-%D1%84%D0%B8%D1%81%D0%BA%D0%B0">4) Подключение фискального аппарата производится через универсальный драйвер ФР соответствующей модели.</div><div id="bkmrk-%C2%A0-3"> </div><div id="bkmrk-%D0%92%D0%90%D0%96%D0%9D%D0%9E%21">**ВАЖНО!**</div><div id="bkmrk-%D0%9F%D1%80%D0%B8-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B5-%D1%81-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%BC-">При работе с данным эквайрингом не поддерживается оплата несколькими платёжными картами в рамках одного чека.</div><div id="bkmrk-%D0%9F%D1%80%D0%B8-%D0%BF%D0%BE%D0%BF%D1%8B%D1%82%D0%BA%D0%B5-%D0%B4%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD">При попытке добавления второй карты в список оплат, будет выдано сообщение с кодом 9999 "Оплата несколькими картами не поддерживается"</div><div id="bkmrk-%C2%A0-4"> </div><div id="bkmrk-%D0%9A%D0%BE%D1%80%D1%80%D0%B5%D0%BA%D1%82%D0%BD%D0%BE%D1%81%D1%82%D1%8C-%D0%BF%D0%B5%D1%87%D0%B0%D1%82%D0%B8-">Корректность печати слипов проверена на следующих ФР: Атол, Штрих (ПосЦентр).</div><div id="bkmrk-"></div><div id="bkmrk-%D0%A1%D0%BF%D0%BE%D1%81%D0%BE%D0%B1%D1%8B-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B8%D1%80%D0%BE%D0%B2"><div>**Способы функционирования** (и методика их тестирования) **терминала платёжных карт в Абонемент**:</div>- <div>**Оплата. Печать слипов на фискальном регистраторе. Вид успешных слипов**</div><div>**Сценарий теста:** С использованием тестовой карты выполнить оплату на произвольную сумму.</div><div>**Результат:** Успешная печать слипов. Образ слипов, переданный терминалом, распечатан полностью, без пропусков и искажений.</div>

- <div>**Отказ терминала**</div><div>Для создания сбоя, при оплате вводятся невалидная карта или же производится отмена выполнения текущей операции по кнопке.</div><div>**Сценарий теста:** С использованием тестовой карты выполняется попытка платёжа на произвольную сумму. Терминал вернёт кассе отказ.</div><div>**Результат:** На экране кассы появится сообщение с заголовком “Отказ терминала”. В тексте сообщения указан код ошибки и текст сообщения.</div>

- <div>**Отказ в создании фискального чека после успешного выполнения запроса на оплату по пластиковой карте**</div><div>Для создания реального сбоя, на фискальном регистраторе не делается Z-отчёт более 24 часов к моменту выполнения тестов.</div><div>**Сценарий теста:** На кассе создать чек на произвольную сумму. Выполнить оплату по пластиковой карте. После успешного получения кода авторизации, терминал передаст на кассу положительный ответ и образ двух успешных слипов. При попытке создания фискального чека, фискальный регистратор выдаст сбой: “Прошло более 24 часов с момента последнего Z-отчёта.</div><div>**Результат:** Касса автоматически выполняет отмену платежа по пластиковой карте. Кассовый чек открыт, не оплачен. После выполнения Z-отчёта касса готова к работе.</div>

- <div>**Сбой печати на фискальном регистраторе при печати успешного слипа**  
    Для создания реального сбоя, на фискальном регистраторе убирается рулон бумаги, вместо него оставляют кусок чековой ленты длиной 6…8 сантиметров.  
    **Сценарий теста:** На кассе создать чек на произвольную сумму. Выполнить оплату по пластиковой карте. После успешного получения кода авторизации, терминал передаст на кассу положительный ответ и образ двух успешных слипов. Печатается фискальный чек. Касса делает запрос на печать слипов. При печати слипов заканчивается бумага.  
    **Результат:** В Абонемент фиксируется транзакция. Фискальный принтер останавливает печать. Устанавливается новый рулон бумаги. После чего, для получения слипов, кассир переходит на вкладку "Ночной Аудит" и успешно печатает слипы по кнопке "Печать последнего чека терминала платёжных карт"</div>

- <div>**Смешанная оплата. Успешный результат**</div><div>**Сценарий теста:** С использованием тестовой карты и наличных выполняется оплата одного чека на произвольную сумму.</div><div>**Результат:** После успешного выполнения запросов печатаются слипы и фискальный чек.</div>

- <div>**Смешанная оплата. Положительный результат оплаты наличными, отрицательный результат оплаты по пластиковой карте**</div><div>Сценарий выполняется, если в кассовом ПО возможна следующая последовательность оплаты смешанного чека: оплата наличными, далее – пластиковой картой.</div><div>**Сценарий теста:** Оплаты наличными успешны. Оплата отрицательной пластиковой картой не успешна.</div><div>**Результат:** Успешная отмена платежа наличными.</div>

- <div>**Возврат**</div><div>**Сценарий теста:** С использованием тестовой карты выполняется возврат транзакции, проведённой в одну из предыдущих кассовых смен.</div><div>**Результат:** После успешного выполнения запроса печатаются слипы и фискальный чек.</div>

- <div>**Отмена закрытого чека.** </div><div>**Сценарий теста:** С использованием тестовой карты в рамках одной кассовой смены создаётся и закрывается чек оплаты на произвольную сумму. Делается отмена чека. Терминал запрашивает номер чека указанный на слипе полученном при регистрации платежа. Требуется ввести номер чека.</div><div>**Результат:** После успешного выполнения запроса печатаются слип и фискальный чек.</div>

- <div>**Отчёт краткий**</div><div>**Сценарий теста:** Выполняется запрос “отчёт краткий”.</div><div>**Результат:** Успешная печать краткого отчёта.</div>

- <div>**Отчёт полный**</div><div>До выполнения отчёта на терминале выполнено несколько оплат.</div><div>**Сценарий теста:** Выполняется запрос “отчёт полный”.</div><div>**Результат:** Успешная печать полного отчёта. Текст отчёта полон. Чек отчёта завершён корректно.</div>

- <div>**Закрытие дня терминала, сверка итогов. Автоматический запуск по “Z” -отчёту**</div><div>**Сценарий теста:** Выполняется запрос “Z” -отчёта.**Примечание:** данная операция разграничивается правами пользователей и недоступна при закрытой кассовой смене или кассиру отличному от кассира открывшего смену.</div><div>**Результат:** При запуске “Z” -отчёта автоматически выполняется запрос на закрытие смены терминала. Закрытие смены выполняется успешно. Печатается слип сверки итогов.</div>

- <div>**Закрытие дня терминала, сверка итогов. Ручной запуск**</div><div>**Сценарий теста:** Выполняется запрос на закрытие смены терминала, путём использования меню "Ночной Аудит", вкладку "Фискальный регистратор". **Примечание:** данная операция разграничивается правами пользователей и недоступна при закрытой кассовой смене или кассиру отличному от кассира открывшего смену.</div><div>**Результат:** Закрытие смены выполняется успешно. Печатается слип сверки итогов. </div>

</div>

# "Разрешительный режим" для маркированной продукции.

**С 1 сентября 2024 года режим онлайн проверки становится обязательным для молочной продукции и упакованной воды для всех продавцов!   
С 1 ноября 2024 года режим онлайн проверки становится обязательным для пива и слабоалкогольных напитков в потребительских упаковках, антисептиков, БАД, обуви, фотоаппаратов, шин, одежды, духов.**  
**Заранее обновите кассовое ПО!**

<div class="post-partner__img" id="bkmrk-%D0%A1%D1%82%D0%B0%D1%82%D1%8C%D1%8F-%D0%A7%D0%B5%D1%81%D1%82%D0%BD%D0%BE%D0%B3%D0%BE-%D0%97%D0%9D%D0%90%D0%9A">![Статья Честного ЗНАКа](https://markirovka.ru/local/templates/community/assets/img/ico-premium-check.svg)[**<span class="post-partner__name">Статья Честного ЗНАКа</span>**](https://markirovka.ru/community/rezhim-proverok-na-kassakh/rezhim-proverok-na-kassakh)</div>![Статья Честного ЗНАКа](https://markirovka.ru/local/templates/community/assets/img/ico-premium-check.svg)**[Локальный модуль Честный Знак (ЛМ ЧЗ) ](https://xn--80ajghhoc2aj1c8b.xn--p1ai/local-module/)**[![Статья Честного ЗНАКа](https://markirovka.ru/local/templates/community/assets/img/ico-premium-check.svg)**Что такое ПО «Локальный модуль Честный ЗНАК»**](https://markirovka.ru/knowledge/tovarnye-gruppy/obschie-voprosy-gis/chto-takoe-po-lokalnyy-modul-chestnyy-znak-)

<div class="post-partner__img" id="bkmrk-"></div>- **<u>[Настройка кодов и сканера](https://docs.shelter.ru/books/ustanovka-i-nastroyka-po-abonement/page/nastroyka-kodov-chestnyy-znak)</u>
- **<u>[АТОЛ. "Честный Знак"](https://docs.shelter.ru/books/podklyucenie-kkt-k-abonement/page/atol-rabota-s-markirovannoi-produkciei-cestnyi-znak)</u>**
- **<u>["Честный знак" и GTIN из RK7 в Абонемент](https://docs.shelter.ru/books/ustanovka-i-nastroyka-po-abonement/page/cestnyi-znak-i-gtin-iz-rk7-v-abonement)</u>**
- **<u><span style="text-decoration: underline;">[Модуль работы с маркированной продукцией "Честный Знак"](https://docs.shelter.ru/books/ustanovka-i-nastroyka-po-abonement/page/modul-raboty-s-markirovannoy-produktsiey-chestnyy-znak "Модуль работы с маркированной продукцией "Честный Знак"")</span></u>**
- <span style="text-decoration: underline;">**[Локальный модуль Честный Знак (ЛМ ЧЗ)](https://docs.shelter.ru/books/ustanovka-i-nastroyka-po-abonement/page/lokalnyi-modul-cestnyi-znak-lm-cz)**</span>



<p class="callout info">ВНИМАНИЕ! Все актуальные dll для Фискальных регистраторов в основных мануалах  
**[АТОЛ](https://docs.shelter.ru/books/podklyucenie-kkt-k-abonement/page/fr-atol-osobennosti-podklyuceniya-k-po-abonement)**  
**[ШТРИХ](https://docs.shelter.ru/books/podklyucenie-kkt-k-abonement/page/strix-podklyucenie-k-po-abonement)**  
</p>

Предварительно должны быть произведены стандартные настройки для работы ККТ с ЧЗ **[Например Атол](https://docs.shelter.ru/books/podklyucenie-kkt-k-abonement/page/atol-rabota-s-markirovannoi-produkciei-cestnyi-znak)**

#### Включение Разрешительного режима на кассах ПО Абонемент

Необходимые файлы в папке ...\\FITNESS\\EXE

Штрих fpShtr54.dll v7.72.184.0 или Атол fpRU\_AtolDTO.dll v7.72.122

Драйвер ККТ и прошивка должны быть актуальными **[Штрих (ставить x32)](https://doc.shtrih-m.ru/)** **[Атол (ставить x32)](https://fs.atol.ru/SitePages/%D0%A6%D0%B5%D0%BD%D1%82%D1%80%20%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B8.aspx)**

TrueMarkCheckAccessMode.dll v1.2.0.2  
borlndmm.dll  
URunPos.dll v2.14.0.3  
ssleay32.dll v1.02.17 (q) x32  
libeay32.dll v1.02.17 (q) x32

Разные версии SSL библиотек, если на приложенных ошибка [Could not load SSL library - dll not found](https://stackoverflow.com/questions/63510064/could-not-load-ssl-library-dll-not-found)

[https://indy.fulgan.com/SSL/](https://indy.fulgan.com/SSL/)

В TrueMarkCheckAccessMode.ini вставляете **только свой токен** авторизации и **серийный номер ФН** вашего фискального регистратора. Пример ниже:

```
[AccessMode]
;токен авторизации
token=0134ab06-f0b6-4b4a-9227-502355552453
;идентификатор  ФР
fiscalDriveNumber=1234567890123456
```

##### **[Настройки офлайн-проверки для локального модуля ЧЗ по ссылке](https://docs.shelter.ru/books/ustanovka-i-nastroyka-po-abonement/page/lokalnyi-modul-cestnyi-znak-lm-cz)**

В настройках ПО Абонемент необходимо добавить новый код ППР. **33 ТМ**

![image.png](https://docs.shelter.ru/uploads/images/gallery/2024-09/scaled-1680-/image.png)

В карточке услуги маркированной продукции установить этот код

[![image.png](https://docs.shelter.ru/uploads/images/gallery/2024-09/scaled-1680-/zswimage.png)](https://docs.shelter.ru/uploads/images/gallery/2024-09/zswimage.png)

#### Как получить ключ (токен) для работы с разрешительным режимом?

Для получения ключа доступа (токен) для проверок товаров с маркировкой на контрольно-кассовой технике перед продажей необходимо выполнить следующие действия:

1. Авторизоваться в личном кабинете Системы маркировки с использованием усиленной квалифицированной электронной подписи (УКЭП).
2. Нажать на имя пользователя в правом верхнем углу и выберите пункт «Профиль».  
      
    ![photo_2024-04-04 11.18.46.jpeg](https://markirovka.ru/upload/medialibrary/a34/i2g9gnxw6vll5a9c2ptkoy3ffvivqvtd.jpeg "photo_2024-04-04 11.18.46.jpeg")
3. На вкладке «Данные участника» в блоке «Участие в системе» нажать кнопку «Сгенерировать токен».  
      
    ![photo_2024-04-04 11.18.49.jpeg](https://markirovka.ru/upload/medialibrary/8c1/znbqdb365u7vp7n8o1n2nk99le2clhjm.jpeg "photo_2024-04-04 11.18.49.jpeg")
4. Токен для контрольно-кассовой техники сгенерирован. Полученный токен можно скопировать в буфер обмена, нажав иконку.  
      
    ![photo_2024-04-04 11.18.42.jpeg](https://markirovka.ru/upload/medialibrary/0b3/d4sal1ra2mzih1x1nsnld7o6hxi2cdw6.jpeg "photo_2024-04-04 11.18.42.jpeg")

**Коды ошибок при проверке разрешительного режима:**

errorCode= "1" "Ошибка валидации КМ в ГИС МТ."  
errorCode= "2" "КМ не содержит GTIN."  
errorCode= "3" "КМ не содержит серийный номер."  
errorCode= "4" "КМ содержит недопустимые символы."  
errorCode= "5" "Ошибка верификации крипто-подписи КМ в ГИС МТ (формат крипто-подписи не соответствует типу КМ)."  
errorCode= "6" "Ошибка верификации крипто-подписи КМ в ГИС МТ (крипто-подпись не валидная)."  
errorCode= "7" "Ошибка верификации крипто-подписи КМ в ГИС МТ (крипто-ключ не валиден)."  
errorCode= "8" "КМ не прошел верификацию в стране эмитента/ошибка разбора КМ."  
errorCode= "9" "Найденные AI в КМ не поддерживаются."  
errorCode= "10" "КМ не найден в ГИС МТ."  
ELSE "Неклассифицированная ошибка отправки запроса по КМ в ГИС МТ: "+КодОшибки+"."

\[v1.1\]  
Обновления  
1\. Поддерживается Локальный модуль честного знака (ЛМЧЗ).   
Используется POST-метод проверки КИ в ЛМ ЧЗ. Метод предназначен для проверки одного или нескольких кодов идентификации по «чёрным  
спискам». URL метода: /api/v1/cis/check  
Параметры подключения к ЛМЧЗ настраиваются в секции \[OffLine\] в файле TrueMarkCheckAccessMode.ini

\[v1.2\]  
Обновления  
1\. Параметр IdSSLVersion игнорируется. Для http/https-запросов используется встроенный в windows ActiveX-компонент Microsoft.XMLHTTP  
2\. Расширено логирование  
3\. Используются встроенные в windows libeay32.dll и ssleay32.dll.  
4\. TrueMarkCheckAccessMode.dll требует наличия только одной dll, не входящей в windows - это borlndmm.dll.   
 Эта borlndmm.dll входит в пакет LIB для Абонемент'а и GK

# Исправление ошибки отображения кириллических шрифтов

Данная ошибка является ошибкой ОС, а не конкретного ПО, поэтому наблюдается одновременно в интерфейсе разлиных программ (Abonementmanager, Freports и многих других): вместо русских символов мы видим множество знаков "?" или нечитаемые иероглифы. Вероятнее всего, это значит, что система операционная установлена криво, либо же устанавливалась изначально не русифицированная версия.

Десктопный Абонемент написан на неюникодной Delphi7. Перехода на юникодную версию не будет.  
За корректное отображение шрифтов отвечает Windows-параметр "Текущий язык программ, не поддерживающих Юникод" (Параметры\\Время и язык\\Язык и регион).

1. Ветка реестра **HKEY\_LOCAL\_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Nls\\CodePage**  
    Какое значение параметра ACP? Должно стоять 1251. Если Не так, то установите 1251 и **перезагрузите комп**
2. В системе должны быть установлены шрифты MS Sans Serif, Tahoma, Segoe UI с кириллической кодировкой. Добавить в "HKEY\_LOCAL\_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Fonts" параметр "MS Sans Serif" со значением "sserifer.fon"

Либо

 3. Подменить/добавить MS Sans Serif на установленный шрифт по вкусу (например Microsoft Sans Serif или Tahoma) в HKEY\_LOCAL\_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\FontSubstitutes

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

# Локальный модуль Честный Знак (ЛМ ЧЗ)

<div class="post-partner__img" id="bkmrk-%D0%A1%D1%82%D0%B0%D1%82%D1%8C%D1%8F-%D0%A7%D0%B5%D1%81%D1%82%D0%BD%D0%BE%D0%B3%D0%BE-%D0%97%D0%9D%D0%90%D0%9A">![Статья Честного ЗНАКа](https://markirovka.ru/local/templates/community/assets/img/ico-premium-check.svg)[**<span class="post-partner__name">Статья Честного ЗНАКа </span>**](https://markirovka.ru/community/rezhim-proverok-na-kassakh/rezhim-proverok-na-kassakh)</div>![Статья Честного ЗНАКа](https://markirovka.ru/local/templates/community/assets/img/ico-premium-check.svg)**[Локальный модуль Честный Знак (ЛМ ЧЗ) ](https://xn--80ajghhoc2aj1c8b.xn--p1ai/local-module/)**

[![Статья Честного ЗНАКа](https://markirovka.ru/local/templates/community/assets/img/ico-premium-check.svg)**Что такое ПО «Локальный модуль Честный ЗНАК»**](https://markirovka.ru/knowledge/tovarnye-gruppy/obschie-voprosy-gis/chto-takoe-po-lokalnyy-modul-chestnyy-znak-)

**[![Статья Честного ЗНАКа](https://markirovka.ru/local/templates/community/assets/img/ico-premium-check.svg)](https://markirovka.ru/knowledge/tovarnye-gruppy/obschie-voprosy-gis/chto-takoe-po-lokalnyy-modul-chestnyy-znak-)[Инструкция\_по\_установке\_ЛМ\_ЧЗ](https://xn--80ajghhoc2aj1c8b.xn--p1ai/upload/%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%8F_%D0%BF%D0%BE_%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B5_%D0%9B%D0%9C_%D0%A7%D0%97_RU_17221426_37140_03_91_15112024.pdf)**

<div class="post-partner__img" id="bkmrk-"></div>- **<u>[Настройка кодов и сканера](https://docs.shelter.ru/books/ustanovka-i-nastroyka-po-abonement/page/nastroyka-kodov-chestnyy-znak)</u>
- **<u>[АТОЛ. "Честный Знак"](https://docs.shelter.ru/books/podklyucenie-kkt-k-abonement/page/atol-rabota-s-markirovannoi-produkciei-cestnyi-znak)</u>**
- **<u>["Честный знак" и GTIN из RK7 в Абонемент](https://docs.shelter.ru/books/ustanovka-i-nastroyka-po-abonement/page/cestnyi-znak-i-gtin-iz-rk7-v-abonement)</u>**
- **<u><span style="text-decoration: underline;">[Модуль работы с маркированной продукцией "Честный Знак"](https://docs.shelter.ru/books/ustanovka-i-nastroyka-po-abonement/page/modul-raboty-s-markirovannoy-produktsiey-chestnyy-znak "Модуль работы с маркированной продукцией "Честный Знак"")</span></u>**
- <span style="text-decoration: underline;">**["Разрешительный режим" для маркированной продукции](https://docs.shelter.ru/books/ustanovka-i-nastroyka-po-abonement/page/razresitelnyi-rezim-dlya-markirovannoi-produkcii)**</span>


[![image.png](https://docs.shelter.ru/uploads/images/gallery/2025-03/scaled-1680-/y9Timage.png)](https://docs.shelter.ru/uploads/images/gallery/2025-03/y9Timage.png)

TrueMarkCheckAccessMode v1.2.0.2

1. Поддерживается Локальный модуль честного знака (ЛМЧЗ).   
    Используется POST-метод проверки КИ в ЛМ ЧЗ. Метод предназначен для проверки одного или нескольких кодов идентификации по «чёрным спискам». URL метода: /api/v1/cis/check  
    Параметры подключения к ЛМЧЗ настраиваются в секции \[OffLine\] в файле TrueMarkCheckAccessMode.ini

```
[OffLine]
;логин для Локального модуля Честного знака
Login=admin
;пароль для Локального модуля Честного знака
Password=admin
;URL для подключению к Локальному модулю Честного знака
url=http://127.0.0.1:5995
```

<p class="callout info">В секции \[AccessMode\] необходимо прописать **серийный номер ФН** вашего фискального регистратора. Узнать его можно на любом чеке внизу строка "ФН" или в тест-драйвере в разделе ФН.</p>

Пример:

```
[AccessMode]
;идентификатор  ФР
fiscalDriveNumber= 1234567890123456
```

Инициализация и проверка ЛМЧЗ

<details id="bkmrk-%D0%98%D0%BD%D0%B8%D1%86%D0%B8%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F-%D0%B8-%D0%BF%D1%80%D0%BE%D0%B2-0"><summary>Инициализация и проверка ЛМЧЗ</summary>

Метод инициализации ЛМЧЗ в PowerShell (вставить свои ФН "X-ClientId"="ВАШ\_ФН" и token="ТОКЕН" )

```
$IP="127.0.0.1"; $Port="5995"; $Auth=[Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("admin:admin")); $h=@{Authorization="Basic $Auth";"Content-Type"="application/json";"X-ClientId"="ВАШ_ФН"}; $b=@{token="ТОКЕН"}|ConvertTo-Json; Invoke-RestMethod -Uri "http://$($IP):$($Port)/api/v2/init" -Method Post -Body $b -Headers $h
```

Проверка общего статуса (готовность модуля)

```
$IP="127.0.0.1"; $Port="5995"; $Auth=[Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("admin:admin")); Invoke-RestMethod -Uri "http://$($IP):$($Port)/api/v2/status" -Headers @{Authorization="Basic $Auth"}
```

Детальная проверка загрузки базы (счётчик кодов)

```
$IP="127.0.0.1"; $Port="5995"; $Auth=[Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("admin:admin")); (Invoke-RestMethod -Uri "http://$($IP):$($Port)/api/v2/status" -Headers @{Authorization="Basic $Auth"}).dbState
```

</details>Примечание:  
• при возникновении ошибок при инициализации нужно убедиться, что TLS-сертификат для  
установления соединения не подменяется антивирусом и есть доступ до серверной части  
ЛМ ЧЗ (91.230.251.206, порт 443 и 194.0.209.18, порт 443)  
• чтобы разобраться в причинах проблемы надо смотреть логи:  
o Windows 32 бит: C:\\Program Files (x86)\\Regime\\var\\log  
o Windows 64 бит: C:\\Program Files\\Regime\\var\\log

<p class="callout danger">**При первой попытке продажи маркированной продукции после установки локального модуля начнется инициализация модуля, если вы не сделали это командами выше - Абонемент зависнет. Необходимо дождаться сообщения об ошибке, перезапустить программу и произвести оплату заново.**</p>