Введение

В системе R-Keeper 7 отчеты в менеджерской станции возможно просматривать только после лицензирования сервера справочников и настройки ему связи с внешней БД под управлением MS SQL Server 2012. Таким образом, сервер справочников может выступать как сервер для построения отчетов или "сервер отчетов".

По мере увеличения числа ресторанов в базе до нескольких десятков нагрузка на сервер справочников также возрастает. Поэтому в R-Keeper 7 предусмотрена возможность создавать промежуточные(транзитные, подчиненные) сервера, которые реализованы через сервер отчетов - rkReportServer.exe.

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

Примечание: Сервер отчетов (rkReportServer.exe) по набору своих функций и свойств идентичен Серверу справочников (RefSrv.exe), за исключением одного - невозможности редактирования справочников при подключении к нему менеджерской станции.

Исполняемый файл сервера отчетов - rkReportServer.exe, имя конфигурационного файла по умолчанию - repserv.ini.

При установки ПО из дистрибутива (архив на фтп в папке ftp://ftp.ucs.ru/rk7/versions/7_05_03/STANDALONES/) файл REPSERV.INI нужно скопировать из папки \bin\win\ini\ в рабочую папку \bin\win\, где лежит rkReportServer.exe.

При установки ПО из инсталлятора сервер с конфигурационным файлом лежат в папке [путь установки\имя экземпляра\Rk7Reports].

Примечание: названия сервера и конфигурационного файла могут быть произвольными, но при этом необходимо помнить, что по-умолчанию сервер, если ему не указать какой ини-файл использовать, будет искать конфигурационный файл REPSERV.ini. Про использование других конфигурационных файлов читайте ниже в пункте "Запуск".

Когда необходим Сервер отчетов?

  1. Сервер отчетов нужен в том случае, если необходимо отделить отчеты от справочной информации в отдельные задачи. 
  2. Сервер отчетов нужен для построения отчетов (с предварительным пересчетом кубов) и просмотра их в менеджерской станции (нужна лицензия, настраивается связь со своей базой SQL);

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

  1. Сервер отчетов нужен для разгрузки имеющихся серверов при быстро растущем числе ресторанов.
  2. Сервер отчетов может использоваться в качестве промежуточного/транзитного (без лицензии и настройки связи с SQL). Актуально, когда число ресторанов исчисляется сотнями. 

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

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

Важно: Лицензирование необходимо в том случае, если сервер отчетов будет использоваться для сбора данных и построения отчетов и кубов. Лицензия привязывается к полному коду объекта (9 цифр) и номеру ключа Guardant. 

Важно: Перед тем как лицензировать сервер отчетов его необходимо создать в менеджерской станции в справочнике "Настройки - OLAP отчеты - Серверы отчетов".

Процесс лицензирования сервера отчетов идентичен процессу лицензирования сервера справочников, описанному в статье http://support.ucs.ru/ru/node/5237#header-2.

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

  • Открыть справочник "Настройки - OLAP отчеты - Серверы отчетов";
  • Выбрать сервер;

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

  • Разорвать связь с внешней БД, если она есть (Настройки связи с внешней БД -> пусто, Источник данных кубов - переключить на пересчет через файл: БД UDB (обмен через файл); Сохранить; 
  • Выбрать ключ защиты в поле "Информация о лицензии -> Ключ защиты-Физический номер";
  • Сгенерировать запрос лицензии (пкм на значок сервера отчетов -> Действия -> Сгенерировать запрос лицензии);
  • Сгенерировать для данного запроса лицензию на сайте l.ucs.ru и внести в поле "Информация о лицензии -> Лицензионный ключ";
  • Сохранить
  • Настроить связь с внешней БД, если нужны отчёты на базе кубов.

Запуск

Для запуска сервера отчетов необходимо сделать следующее:

  1. Создать сервер в менеджерской станции в справочнике "Настройки - OLAP отчеты - Серверы отчетов", прописать ему уникальный сетевой ID, например REPSRV3001, перевести в статус Активный и сохранить;
  2. Пролицензировать сервер (см. пункт выше); Иначе не сможем подключиться к нему менеджерской станцией;
  3. В секции "Синхронизация" проверить, чтобы были выставлены все галочки. Синхронизация должна обязательно быть включена.
  4. Создать чистую базу в Management Studio. Настроить связь с этой БД, используя инструкции в статье http://support.ucs.ru/ru/node/7914.
  5. Прописать следующие параметры в repserv.ini в секции [Config]:
    • Client = "REPSRV3001"                           ;   сетевой ID сервера отчетов
    • RefServer     = "RK7SRV3001"                    ; сетевой ID сервера верхнего уровня (им может быть как сервер справочников, так и сервер отчетов)
    • RefsBasePath  = ".\BaseData\refsdata.udb"       ; путь относительный или абосолютный(рекомендуется) к БД справочников
    • CheckBasePath = ".\BaseData\check_db.udb"       ; путь относительный или абосолютный(рекомендуется) к БД чековой (накопительной)
    • WorkModsFile  = ".\BaseData\wmodules.udb"       ; путь относительный или абосолютный(рекомендуется) к БД рабочих модулей
    • ReceivedPath  = ".\Received\"                   ; путь относительный или абосолютный(рекомендуется) к каталогу с полученными закрытыми сменами
    • ErrorLog      = "repsserv.stk"                  ; путь относительный или абосолютный(рекомендуется) к лог-файлу
    • UseSql = 0                                      ; не подключаться к внешней БД под управлением SQL Server 2012
  6. Запустить сервер.
  7. Остановить сервер, в конфигурационном файле repserv.ini изменить значение параметра UseSql=1
  8. Запустить сервер.

Важно: первый запуск всегда выполнять в качестве приложения (с параметром /desktop). Также проверьте, чтобы запуск производился от имени администратора.

Примечание: По умолчанию, конфигурационный файл сервера - repserv.ini. Если необходимо запустить Сервер отчетов с другим ini-файлом, то используйте следующую команду: "rkReportServer.exe /ininame: newname.ini /desktop".

Сервер отчетов, так же как и сервер справочников можно запустить и как службу. Для этого используется параметр (/install).

После запуска сервера как приложения (rkReportsServer.exe/desktop)  в области уведомлений появится следующий значок 

Описание файла Repsserv.ini

Внимание!

  • Перед запуском сервера отчетов убедитесь, что в атрибутах его родительской папки снята галочка «только чтение» (иначе сервер отчетов не сможет создать свою базу данных).
  • Также убедитесь, что полный путь к папке с файлом RKREPORTSSERVER.EXE не содержит пробелов и общее количество символов пути не превышает 200 символов.

Скопируйте файл repserv.ini из папки RK7/BIN/WIN/ini, если вы этого еще не сделали и поместите его рядом с файлом RKREPORTSSERVER.EXE, т.е. в папку RK7/BIN/WIN/.

[CONFIG]

Client = "REPSRV3001"                                           ;; сетевое имя сервер отчетов, такое же как соответствующий сервер отчетов в менеджерской станции. Смотри ниже "Настройки в менеджерской станции")
RefServer = "RK7SRV_3001"                               ;; сетевое имя сервера справочников (или верхнего сервера отчетов)
RefsBasePath = ".\BaseData\refsdata.udb"         ;; полный путь к базе справочников, не путать с rk7.udb
CheckBasePath = ".\BaseData\check_db.udb"   ;; полный путь к базе чеков, не путать с check.udb
WorkModsFile = ".\BaseData\wmodules.udb"     ;; полный путь к база рабочих модулей
ReceivedPath = ".\Received\"                                   ;; путь к папке для получения данных
ErrorLog = "repsserv.stk"                                         ;; имя лог-файла (если необходимо – добавьте путь), по умолчанию лог-файл сохраняется в той же папке, где лежит RKREPORTSSERVER.exe
ErrorLogSize = 1048576                                          ;; размер журнала ошибок в байтах
OldRefsSyncMode = 0                                         ;; 1 - включить старый режим синхронизации, необходим при PollEvents=1
PollEvents = 0                                          ;; включить режим периодического опроса (полинга) сервера справочников (в .ini сервера справочников необходимо заполнить параметр EventCachePath=), также, надо выставить OldRefsSyncMode=1
RecalcAllCubesAt = 2015                                         ;; Время прописывается без двоеточия в формате "ЧЧММ". Пересчитывать все кубы, которые бы пересчитались по пункту меню "пересчитать все кубы" на менеджерской станции в 20:15. Для версий 7.4.20.60 и выше.
CubesRecalc = 0                                          ;; отключение пересчета кубов, 1- включение пересчета кубов, 2 - пересчет кубов только в ручном режиме  (Для версий 7.6.1.2 и выше!)
NoReports = 0                                         ;; отключение меню с отчетами в менеджерской станции  (Для версий 7.6.1.2 и выше!)
ServPingTimeout = 5000                                         ;; 7.4.17.78 и выше 
UseSql = 1                                         ;; 0 - если нет связи с базой в SQL, 1 - если используем связь с базой в SQL
LoadThreadsCount = 4                                         ;;  загружать данные закрытых смен в накопительную БД параллельно, "4" - число обрабатываемых параллельно файлов (рекомендуется при большом количестве одновременно поступающих файлов смен). Версия должна быть не ниже 7.5.2.328!
cubesBuildTool = "bldcubex.exe"                                   ;;  Включение утилиты bldcubex.exe для построения кубов на ПК с 2+ ГБ памяти (Для версий 7.6.2 и выше!)

[NETKERN]
Protocols = tcpsoc.dll   ;; список протоколов (разделенные запятой), обязательно убедитесь что эти DLL-файлы лежат в папке с файлом RKREPORTSSERVER.exe

[TCPSOC]
PORT=3639   ;; порт для сервера
 
[TCPDNS]
RK7SRV_3001=subway.rkeeper.com:3648
;;REP_CENTR4=subway.rkeeper.com:3644
;;RK7SRV=subway.rkeeper.com:3639
 
[UPDATE]
NoUpdate=0
 
; шедулер. только для 7.5.2.502+
[SYNCCONF]
; Включить использование синхронизации по расписанию
RefsSyncMode=1
; время выполнения синхронизации в формате CRON 50 10 * * * равнозначно "всегда в 10:50", 45 13 * * * равнозначно "всегда в 13:45". 
Формат следующий:
* * * * *
| | | | |
| | | | +----- Дни недели (диапазон: 1-7)
| | | +------- Месяцы     (диапазон: 1-12)
| | +--------- Дни месяца (диапазон: 1-31)
| +----------- Часы       (диапазон: 0-23)
+------------- Минуты     (диапазон: 0-59)
SyncSchedule=50 10 * * *       ; синхронизировать справочники при загрузке сервера отчетов
SyncOnReload=0

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

Если кликнуть правой клавишей мыши по значку, то свойства сервера отчетов откроются в браузере. Http порт по-умолчанию можно назначить в менеджерской станции, указав новый порт в свойствах сервера отчетов (группа HTTP Server -> HTTP Data Port).

Примечание: после запуска сервера отчетов проверьте его соединение с верхним сервером.

Обноление сервера отчетов аналогично обновлению сервера справочников (http://support.ucs.ru/ru/node/7019#header-4).

Важно: Обязательным условием является перезапуск сервера отчетов после обновления.

Подключение менеджерской станции к серверу отчетов

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

1. Создать отдельный экземпляр менеджерской станции с новым ини-файлом и там прописать Сетевой ID сервера отчетов в секции [REFEDIT]. 

  • Server=REPSRV3001                               ;; Имя вашего сервера отчетов
  • Client=MANST-%RANDOM%                  ;; сетевое имя менеджерской станции, которая будет цепляться к серверу отчетов

Таким образом, на рабочем столе будет два ярлыка для RK7MAN.exe - один для подключения к серверу отчетов и редактирования справочников, другой-для подключения в серверу отчетов и просмотра отчетов.

2. Запустить менеджерскую станцию повторно не меняя ини-файл. Во время появления окна логирования нажать на клавиатуре "Ctrl+Alt+S" и внести сетевой ID сервера отчетов в появившемся полле слева снизу.

Менеджерская сама внесет необходимые изменения в rk7man.ini и при следующем запуске необходимо будет выбирать сервер, нажимая "Ctrl+Alt+S".

Пересчет кубов

Кубы находятся в справочнике Настройки - OLAP отчеты - Кубы и отчеты

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

Можно в ручную пересчитать интересующий вас куб (пкм - действия - пересчитать). 

Начиная с версии 7.06.04.041: если на сервере больше 2-х ГБ оперативной памяти, вы можете использовать новую утилиту для построения кубов – bldcubex.exe. Для этого добавьте в repserv.ini настройку:

[CONFIG]
cubesBuildTool = "bldcubex.exe"
и перезапустите сервер отчётов. После этого у вас появится новый файл менеджерской станции rk7manex.exe. Используйте его для построения кубических отчётов.

Желательно создать нового пользователя (роль) с правами только для кубов и отчетов и скрыть все другие элементы в менеджерской станции для данного пользователя (роли). После создайте ярлык для такой менеджерской станции с названием типа «Отчёты».

Начиная с версии 7.4.20.60 и выше можно пересчитать все кубы, которые бы пересчитались по пункту меню "пересчитать все кубы" на менеджерской станции, автоматически в заданное время, прописав в INI-файле следующую команду:

RecalcAllCubesAt = "2015" (Время прописывается без двоеточия "ЧЧММ") Его значение легко проверяется через web интерфейс.

Настройка серверов отчетов для сети ресторанов

1. Пример связи серверов отчетов в сетевых ресторанах

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

При подключении менеджерской станции к серверу отчетов (за исключением центрального) будет ограничен ряд прав на редактирование словарей и свойств объектов!

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

Схематично связь показана на рисунке ниже.

 

Лицензировать в данном случае придется те сервера, которые будут использоваться для просмотра отчетов и обработки данных. Кол-во станций - число разных пользователей, которые могут одновременно строить отчеты.

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

2. Пример конфигурации для сети, состоящих из 2-ух ресторанов и «главного офиса»

 

 

Как это работает:

После закрытия общей смены на кассовом сервере1 (midserver1) ресторана №1, данные смены обрабатываются на сервере отчетов 1 и на сервере отчетов в «центральном офисе».

Аналогичная ситуация происходит и во 2-м ресторане. Закрытая общая смена обрабатывается "локальным" сервером отчетов 2 и далее в центральном офисе.

2.1. Структура

  • Центральный офис

    • главная база SQL
    • менеджерская станция
    • сервер справочников (= главный сервер отчетов)
  • Ресторан 1

    • сервер отчетов 1
    • локальная SQL-база 1
    • кассовый сервер 1 (midserver1)
  • Ресторан 2

    • кассовый сервер 2 (midserver2)
    • локальная SQL-база 2
    • сервер отчетов 2

2.2. Базы данных SQL

  • для Центрального офиса – ‘reports_HO’
  • для ресторана1 - ‘reports_rest1’
  • для ресторана2 - ‘reports_rest2’

2.3. Станции и устройства

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

2.4. Настройки внешних БД

Создать 3 настройки согласно описанию в статье http://support.ucs.ru/ru/node/7914 и настроить связь с соответствующими серверами отчетов (должны быть созданы дополнительно).

В результате должно получиться 3 конфигурации:

  1. для Центрального офиса (база данных ‘reports_HO’);
  2. для ресторана1 (база данных ‘reports_rest1’);
  3. для ресторана2 (база данных ‘reports_rest2’).

2.5. Свойства Серверов отчетов

Внимание! Не забудьте получить 3 лицензии для 3-х серверов отчетов

2.6. Ini-файлы

Для сервера отчетов 1:
[CONFIG]
Client = "repsrv_1"
RefServer = "RK7SRV_3001"
RefsBasePath = ".\BaseData1\refsdata.udb"
CheckBasePath = ".\BaseData1\check_db.udb"
ReceivedPath = ".\Received1\"
ErrorLog = "repsserv1.stk"

[NETKERN]
Protocols = tcpsoc.dll

Для сервера отчетов 2:
[CONFIG]
Client = "repsrv_2"
RefServer = "RK7SRV_3001"
RefsBasePath = ".\BaseData2\refsdata.udb"
CheckBasePath = ".\BaseData2\check_db.udb"
ReceivedPath = ".\Received2\"
ErrorLog = "repsserv2.stk"

[NETKERN]
Protocols = tcpsoc.dll

Менеджерская станция, связанная с сервером справочников (refserver):
[REFEDIT]
Server=RK7SRV_3001
Client=rk7man_ref
Менеджерская станция, связанная с сервером отчетов 1:
[REFEDIT]
Server=repsrv_1 //сетевое имя 1-го сервера отчетов
Client=rk7man_rep1

Менеджерская станция, связанная с сервером отчетов 2:
[REFEDIT]
Server=repsrv_2 //сетевое имя 1-го сервера отчетов
Client=rk7man_rep2

2.7. Работники и их права

Добавьте 2 группы работников:
* для сервера отчетов 1
* для сервера отчетов 2

Настройте в свойствах их права:
* дать все права для просмотра отчетов
* менеджерские ограничения --> Серверы отчетов  пометить соответствующий сервер отчетов

Установите в свойствах работников:
* основное --- текущий ресторан
* основное --- учетная запись --- логин и пароль

Использование валидных SSL-сертификатов для сервера отчетов в домене

Сертификат по умолчанию (для rk7.local) располагается в каталоге BaseData\httpKeys\ файл - default.pem.
Для использования собственного сертификата необходимо переименовать его (собственный сертификат) в mylocal.pem и положить в тот же каталог, затем перезапустить сервер отчетов.
 
Свойства сертификата:
  1. Subj name – DNS имя сервера ресторана
  2. Alternative name не нужны
  3. Сертификат должен поддерживать server authentication.
  4. Тип ключа – exchange или signature (по умолчанию идет всегда exchange). Exchange, это ключ для шифрования данных.
  5. Поддерживается размер ключа 2048.
  6. Поддерживается алгоритм sha256 алгоритм хэша sha256RSA.
  7. Возможно делать экспорт ключа. Сам сертификат должен быть в формате PEM. Там же должен быть ключ сервера. Для примера можно посмотреть файл default.pem.
  8. Нет ограничения при использовании криптографического провайдера.
 
Примечание: использовать wildcard сертификат для FQDN машины с кастомным портом и шаблоном *.DomainName.local:8080 не удалось. Заработал шаблон *.DomainName.local.

Возможные ошибки и их решение

1. При просмотре отчета выходит ошибка: "Can not load cube data (cube data is empty or corrupted): Cannot open file "D:\UCS\RK7_5_1_34\bin\win\Cubes\00000022.blb". Не удается найти указанный файл". (см.рис ниже)

Решение: Найти соответсвующий отчету куб и пересчитать его!

2. В ОС Windows 7 и старше в менеджерской станции при попытке построить отчет выходит ошибка "CubeDLL: Error reading Grid -> LICENSE_STR: Failed to set data for". При просмотре соответсвующего куба как отчета появляется ошибка "CubeDLL:".

Решение: Наделить пользователя Windows 7 административными правами или запускать менеджерскую от имени администратора.
Отключить UAC (подробнее см. http://support.ucs.ru/node/2951).

3. При построении отчета возникает ошибка "Item 0 was not found in external base config collection".

Причина: возникает, если у роли не настроена связь с SQL, а пользователь пытается выполнить существующий или создать новый отчет, который строится через FR4 напрямую из SQL.

4 Превышение лимита подключений

Причина - в RK7 пролицензирован предустановленный сервер отчетов и вы пытаетесь создать еще 1 сервер отчетов

Решение - сбросить данные о лицензии у ненужного сервера отчетов и сделать пустую строчку "Настройка связи с внешней БД" 

5. Если при развертывании своей или сторонней базы на своем компьютере у вас появляется такая ошибка :

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

Причина : При заполнении блока "Связь с внешней БД" автоматически заполняется блок "Логи справочников"

Решение проблемы : Имя пользователя базы SQL и его пароль должны совпадать в блоках "Связь с внешней БД" и "Логи справочников"