Введение
В системе 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. Про использование других конфигурационных файлов читайте ниже в пункте "Запуск".
Когда необходим Сервер отчетов?
- Сервер отчетов нужен в том случае, если необходимо отделить отчеты от справочной информации в отдельные задачи.
- Сервер отчетов нужен для построения отчетов (с предварительным пересчетом кубов) и просмотра их в менеджерской станции (нужна лицензия, настраивается связь со своей базой SQL);
В данной реализации может быть "Центральный сервер отчетов", который собирает данные со всех ресторанов (или локальных Серверов отчетов), и "Локальный Сервер отчетов", который получает данные напрямую с определенных кассовых серверов (когда у клиента есть несколько ресторанов с кассовыми серверами).
- Сервер отчетов нужен для разгрузки имеющихся серверов при быстро растущем числе ресторанов.
- Сервер отчетов может использоваться в качестве промежуточного/транзитного (без лицензии и настройки связи с SQL). Актуально, когда число ресторанов исчисляется сотнями.
В данном описании, если для каких то параметров указаны значения, то это значения по умолчанию, которые можно не задавать.
Лицензирование
Важно: Лицензирование необходимо в том случае, если сервер отчетов будет использоваться для сбора данных и построения отчетов и кубов. Лицензия привязывается к полному коду объекта (9 цифр) и номеру ключа Guardant.
Важно: Перед тем как лицензировать сервер отчетов его необходимо создать в менеджерской станции в справочнике "Настройки - OLAP отчеты - Серверы отчетов".
Процесс лицензирования сервера отчетов идентичен процессу лицензирования сервера справочников, описанному в статье http://support.ucs.ru/ru/node/5237#header-2.
Кратко порядок действий следующий:
- Открыть справочник "Настройки - OLAP отчеты - Серверы отчетов";
- Выбрать сервер;
Примечание: выполнения пункта ниже необходимо, если сервер был уже пролицензирован, т.е. необходимо внести изменения существующей лицензии (продление, увеличение числа станций, смена железа или другое)
- Разорвать связь с внешней БД, если она есть (Настройки связи с внешней БД -> пусто, Источник данных кубов - переключить на пересчет через файл: БД UDB (обмен через файл); Сохранить;
- Выбрать ключ защиты в поле "Информация о лицензии -> Ключ защиты-Физический номер";
- Сгенерировать запрос лицензии (пкм на значок сервера отчетов -> Действия -> Сгенерировать запрос лицензии);
- Сгенерировать для данного запроса лицензию на сайте l.ucs.ru и внести в поле "Информация о лицензии -> Лицензионный ключ";
- Сохранить
- Настроить связь с внешней БД, если нужны отчёты на базе кубов.
Запуск
Для запуска сервера отчетов необходимо сделать следующее:
- Создать сервер в менеджерской станции в справочнике "Настройки - OLAP отчеты - Серверы отчетов", прописать ему уникальный сетевой ID, например REPSRV3001, перевести в статус Активный и сохранить;
- Пролицензировать сервер (см. пункт выше); Иначе не сможем подключиться к нему менеджерской станцией;
- В секции "Синхронизация" проверить, чтобы были выставлены все галочки. Синхронизация должна обязательно быть включена.
- Создать чистую базу в Management Studio. Настроить связь с этой БД, используя инструкции в статье http://support.ucs.ru/ru/node/7914.
- Прописать следующие параметры в 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
-
- Запустить сервер.
- Остановить сервер, в конфигурационном файле repserv.ini изменить значение параметра UseSql=1
- Запустить сервер.
Важно: первый запуск всегда выполнять в качестве приложения (с параметром /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
* * * * * | | | | | | | | | +----- Дни недели (диапазон: 1-7) | | | +------- Месяцы (диапазон: 1-12) | | +--------- Дни месяца (диапазон: 1-31) | +----------- Часы (диапазон: 0-23) +------------- Минуты (диапазон: 0-59)
Обновление сервера отчетов
Если кликнуть правой клавишей мыши по значку, то свойства сервера отчетов откроются в браузере. 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"
Желательно создать нового пользователя (роль) с правами только для кубов и отчетов и скрыть все другие элементы в менеджерской станции для данного пользователя (роли). После создайте ярлык для такой менеджерской станции с названием типа «Отчёты».
Начиная с версии 7.4.20.60 и выше можно пересчитать все кубы, которые бы пересчитались по пункту меню "пересчитать все кубы" на менеджерской станции, автоматически в заданное время, прописав в INI-файле следующую команду:
RecalcAllCubesAt = "2015" (Время прописывается без двоеточия "ЧЧММ") Его значение легко проверяется через web интерфейс.
Настройка серверов отчетов для сети ресторанов
1. Пример связи серверов отчетов в сетевых ресторанах
Крупные торговые сети (например SUBWAY, BURGERKING) используют достаточно обширную сеть, состоящую из многоуровневого дерева связей серверов отчетов с центральным сервером отчетов (порой их количество исчисляется сотнями). Так как данные (блюда, цены, состав) в пределах одной сети одинаковы, то достаточно внести изменения на менеджерской станции, работающей с сервером верхнего уровня (сервером справочников) и данные автоматически синхронизируются с серверами более низких уровней (промежуточными), а те в свою очередь с локальными (в ресторане).
При подключении менеджерской станции к серверу отчетов (за исключением центрального) будет ограничен ряд прав на редактирование словарей и свойств объектов!
Настраивать связь с внешней БД для сервера отчетов нужно, если при подключении менеджерской к этому серверу отчетов необходимо строить и просматривать отчеты.
Схематично связь показана на рисунке ниже.
Лицензировать в данном случае придется те сервера, которые будут использоваться для просмотра отчетов и обработки данных. Кол-во станций - число разных пользователей, которые могут одновременно строить отчеты.
Предупреждение: при отсутствии в базе активных лицензий (случай с одним сервером справочников без лицензии и несколькими пролицензированными серверами отчетов), число подключений с менеджерской станции к серверу справочников ограничивается до 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 конфигурации:
- для Центрального офиса (база данных ‘reports_HO’);
- для ресторана1 (база данных ‘reports_rest1’);
- для ресторана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-сертификатов для сервера отчетов в домене
- Subj name – DNS имя сервера ресторана
- Alternative name не нужны
- Сертификат должен поддерживать server authentication.
- Тип ключа – exchange или signature (по умолчанию идет всегда exchange). Exchange, это ключ для шифрования данных.
- Поддерживается размер ключа 2048.
- Поддерживается алгоритм sha256 алгоритм хэша sha256RSA.
- Возможно делать экспорт ключа. Сам сертификат должен быть в формате PEM. Там же должен быть ключ сервера. Для примера можно посмотреть файл default.pem.
- Нет ограничения при использовании криптографического провайдера.
Возможные ошибки и их решение
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 и его пароль должны совпадать в блоках "Связь с внешней БД" и "Логи справочников"