Введение

Интерактивные (ИА) отчеты — актуальная версия отчетов в r_keeper 7. При установке через инсталлятор, их можно настроить в процессе. 

Для работы требуется:

  • MS SQL Server 2012 и выше

    Обратите внимание: интерактивные отчеты работают только с MS SQL. С PostgreSQL отчеты не работают.

  • У сотрудника в r_keeper должен быть указан ресторан в поле Текущий ресторан

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

Установка интерактивных отчетов происходит через инсталлятор r_keeper 7. 

Принципиальная схема взаимодействия серверов для одного ресторана выглядит следующим образом:

Для работы ИА-отчетов:

  1. Установите и настройте CommonServer
  2. Установите и настройте Сервер функции отчетов IRReportsFSPrj.exe
  3. Настройте плагин для менеджерской станции. Для этого необходимо скопировать файлы FCLocalize.xml, SchRepPluginClient.xml, SchRepPluginClient.ini в папку RK7/bin/win/plugins
  4. Настроить ini-файлы.
Если на локальном ПК не установлен клиент для SQL Server — сервер функции отчетов будет недоступен для выбора в инсталляторе.

Feature Server не пересчитывал битые смены, пока не был добавлен параметр RecalcInvalidShifts, Теперь если смену вылечат, то при включении параметра RecalcInvalidShifts битые смены будут пересчитываться в течение времени, указанного в параметре FastControlDays.
Если после FastControlDays смена так и осталась битой, она больше не пересчитается.

Этапы установки

  1. Скачайте с FTP необходимую версию инсталлятора, например ftp://ftp.ucs.ru/rk7/versions/7_05_03/RK7_Setup_7.5.3.268.1.exe и запустите от имени администратора

  2. Следуйте подсказкам установщика — выберите язык, согласитесь с лицензионным соглашением и пр.

  3. Далее выберите пункт Установка нового экземпляра / добавление компонентов к существующему и нажмите кнопку Далее

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

  5. В открывшемся окне выберите необходимые компоненты. Обязательны к установке:
    1. UCS CommonServer 
    2. Сервер функции отчетов
    3. Менеджерская станция
      При выборе этого пункта будет создан новый экземпляр менеджерской станции с настроенным плагином. Если вам не нужна новая менеджерская станция, не выбирайте ее и переходите к п.8.
    4. Плагин отчетов
  6. Нажмите кнопку Далее
  7. Введите сетевое имя и порт сервера справочников. Нажмите кнопку Далее
  8. Введите IP-адрес Сервера функции отчетов, IRReportsFSPrj.exe, и порт, на котором физически будет работать служба. Нажмите кнопку Далее


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

  9. Далее введите внешний IP-адрес Сервера функции отчетов и внешний порт, по которому настраивается IRReportsFSPrj, он нужен для указания обратной связи. Нажмите кнопку Далее
  10. Введите IP-адрес и порт для нового CommonServer. Нажмите кнопку Далее
    Этот шаг настройки будет доступен только в том случае, если был выбран компонент CommonServer.
  11. При использовании SSL сертификатов, выберите их. Это необязательный шаг, его можно пропустить. Нажмите кнопку Далее
  12. Выберите уровень логирования. 
    Log-файл плагина создается автоматически в \bin\win\Logs\plugins\SchRepPluginClient\log\schRepPlugin.txt. Местоположение файла менять нельзя.
    Log-файл FS сервера создается автоматически в *Logs\ директории FS сервера. Местоположение файла менять нельзя.

    Нажмите кнопку Далее
  13. Выберите компоненты, которые будут работать как службы. Нажмите кнопку Далее

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

  14. Введите данные для соединения с MS SQL сервером. Нажмите кнопку Далее
  15. Введите имя накопительной SQL базы данных.
    Проверить имя БД можно в r_k 7. Для этого перейдите в меню Сервис > Экспорт данных > Настройки внешних БД.

    Нажмите кнопку Далее
  16. Выберите приложения, для которых необходимо создать ярлыки на рабочем столе. Нажмите кнопку Далее
  17. Нажмите кнопку Установить
  18. После установки нажмите кнопку Завершить, чтобы выйти из программы установки
  19. Запустите Common Server. 
    • Если Common Server был установлен в качестве службы, откройте стандартное приложение Службы на компьютере. Найдите Common Server в списке и убедитесь, что он находится в состоянии Работает
    • Если Common Server был установлен в качестве приложения, то появится окно с сообщением об успешном запуске и информацией о портах 

      При изменении версии Feature Server не всегда меняется версия агрегатов, поэтому при переходе на новую версию агрегаты могут не пересчитываться.

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

  20. Запустите Feature Server в качестве приложения. Появится окно, в котором будут отображаться действия, производимые Feature Server.
  21. Запустите файлы RK7_RefSrv и RK7_Manager, чтобы Feature Server создал необходимые базы
  22. Настройте менеджерскую станцию — создайте заведение, кассовый сервер, пролицензируйте кассовый сервер и сервер справочников. Настройте связь с SQL, чтобы Feature Server смог закончить установку
  23. Когда система закончит, вы увидите ряд сообщений, начинающихся с «[LOG]Agregate: Create». Для проверки настроек, запустите MS SQL Server Management Studio и убедитесь, что были созданы новые базы данных STAT_RK7_SHIFTS
  24. Перезапустите сервер справочников и менеджерскую станцию, чтобы изменения вступили в силу.

Запуск отчетов в rk7man.exe

Запустите и авторизуйтесь в менеджерской станции.

Если при входе появится ошибка You are not authorized, проверьте, что в базе данных SQL есть справочники r_keeper 7. Если их нет, проверьте настройки связи с SQL и повторите экспорт.

Если все настроено правильно, то в меню менеджерской станции появится пункт Интерактивные отчеты (ИО) со ссылками на отчеты. а в пункте Расширениядополнительные настройки по ИО.

Перед использованием интерактивных отчетов убедитесь, что Common Server и Feature Server были запущены. 

Описание ini-файлов

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

CS_Service.ini — конфигурационный файл Common Server

[CS_CONNECTION]
connect_timeout(s)=30
receive_timeout(s)=30
send_timeout(s)=30
compression=c_Base64_ZLib
def_port=7007
SSL_port=7007
db_path=C:\Program Files (x86)\UCS\CommonServerRK7IR\RK7_IR\UCS.csdb
[CS]
Name=CS_RK7_IR
loglevel=3
Log_level=3
i_guid={C7BB200D-C644-4743-BEA9-D93EB518EDFF}
certificate_path=C:\Program Files (x86)\UCS\CommonServerRK7IR\RK7_IR\
Root_Cert_File=ca.cer
Cert_File=work.cer
Key_File=work.key
CODE

Секция [CS_CONNECTION]

  • connect_timeout(s)=30           ;; тайм-аут соединения в секундах   
  • receive_timeout(s)=30            ;; тайм-аут ответа в секундах
  • send_timeout(s)=30                ;; тайм-аут отправки в секундах
    Для больших баз, от 10 Гб, рекомендуем выставлять во времени тайм-аутов большие значения: от 30000 до 50000.
  • def_port=7007                         ;; основной порт Common сервера

IRReportsFSPrj.ini — конфигурационный файл Feature Server сервера

[FS_CONNECTION]
ConnectTimeout=50000
ReceiveTimeout=50000
SendTimeout=50000
CommandTimeOut=50000
SessionTimeOut=50000
url=http://127.0.0.1:7777/soap/IStructuresInfo 
start_port=7777 
DB_Connect_Count=10 

[CS_CONNECTION] 
// адрес и порт машины с CS_Service 
url=http://127.0.0.1:7007/soap/UCSCommonWS 

[FS_TYPE] 
i_Guid={F4DED846-8913-4F1D-B5B5-5699CAC45DA9} 
instance_name=fsRK7_2 
MasterServer=1 
connection_string=Provider=SQLNCLI11.1;Persist Security Info=True;Initial Catalog=rk7_5_3_Z;Data Source=127.0.0.1,1433 
MainLang=FeatureServPrj.rus 

[FS_MAILING] 
Mailing=0 

[RPL_PARAM] 
url=http://121.10.10.111:8892/soap/IStructuresInfo 
start_port=8892 

[FS_AGREGATE] 
Agregate=1 
Count_shifts=10 
Time_between_recalc=0
Time_between_checking=10
WaitConnectionInterval=5  
CODE

Секция [FS_CONNECTION]
Тайм-ауты в секундах. Для больших баз (10 Гб и выше) рекомендуется выставлять большие значения значения (от 30000 до 50000)

  • ConnectTimeout=50000                                                         ;; тайм-аут ожидания соединения в секундах
  • ReceiveTimeout=50000                                                          ;; тайм-аут ожидания ответа в секундах
  • SendTimeout=50000                                                               ;; тайм-аут ожидания отправки в секундах
  • CommandTimeOut=50000                                                     ;; тайм-аут ожидания запроса в секундах
  • SessionTimeOut=50000                                                          ;; тайм-аут сессии в секундах
    Для больших баз, от 10 Гб, рекомендуем выставлять во времени тайм-аутов большие значения: от 30000 до 50000.
  • url=http://127.0.0.1:7777/soap/IStructuresInfo                 ;; собственный url Feature-сервера
  • start_port=7777                                                                      ;; собственный порт Feature-сервера

  • DB_Connect_Count=10 

Секция [CS_CONNECTION] 

  • url=http://127.0.0.1:7007/soap/UCSCommonWS              ;; адрес и порт машины с установленным Common-сервером 

Секция [FS_TYPE]

  • i_Guid=                         ;; уникальный код Feature-сервера (GUID FS сервера). Уникален для каждого экземпляра сервера
  • intrance_name=           ;; имя службы Feature-сервера. Указывается при установке и больше не меняется. В случае необходимости изменения имени службы, его необходимо будет изменить и в реестре
  • MasterServer=          ;; параметр, влияющий на запрет редактирования справочников: 0 — запрещено, 1 — разрешено

  • connection_string=     ;; строка подключения к базе SQL

  • MainLang=                   ;; настройка локализации. В том случае, если локализация не совпадает с локализацией RK7, файл необходимо заменить и прописать его в FeatureServPrj.ini.

Секция [FS_MAILING]

  • Mailing=                      ;; рассылка (1 — включена, 0 — отключена);

Секция [RPL_PARAM]

  • url=http://121.10.10.111:8892/soap/IStructuresInfo ;; внешний адрес, видимый для Common Server, где /soap/IStructuresInfo — одинаковая приставка для всех FS
  • start_port=8892                                                        ;; порт на физической машине, на которой стартует фича.

Url в настройках всех микросерверов, не только этой фичи, — это адрес обратной связи, по которому он будет виден Common Server. Любой фича-сервер регистрируется с этим адресом на Common Server.

Start_port — этот порт на машине, который занимает конкретная фича. Так как в сети может использоваться проброс портов, то start_port может отличаться от порта, указанного в параметре url.

Секция [FS_AGREGATE]

  • Agregate=1                                 ;; значение 1 — включить агрегаты, 0 — выключить
  • Count_shifts=10                          ;; задается число смен, которое будет пересчитано при очередной проверке
  • Time_between_recalc=0             ;; время между пересчетом агрегатов в минутах
  • Time_between_checking=10      ;; время проверки актуальности агрегатов после последнего успешного пересчета агрегатов в минутах
  • WaitConnectionInterval=5        ;; время ожидания соединения в минутах. Добавляется при необходимости, начиная с версии Feature Server 1.24.1.0.

    Начиная с версии Feature Server 1.24.1.0, появилась возможность восстановления разрыва соединения с базой данных. По умолчанию время, через которое будут происходить попытки соединения с базой данных, равно одной минуте. При необходимости увеличения этого времени в ini-файл Feature Server необходимо добавить параметр WaitConnectionInterval в секцию [FS_AGREGATE]. Параметр задает время в минутах, которое будет ожидать служба до попытки соединения с базой данных в случае обрыва соединения.

SchRepPluginClient.ini — конфигурационный файл плагина

Настроечный файл плагина — \\rk7_5_3_Z\bin\win\plugins\SchRepPluginClient\SchRepPluginClient.ini

[CS_CONNECTION]
url=http://127.0.0.1:7007/soap/UCSCommonW
fs_guid={F4DED846-8913-4F1D-B5B5-5699CAC45DA9}
ConnectTimeout=300000
ReceiveTimeout=300000
SendTimeout=300000

[CL_TYPE]
i_Guid={0DA2E90B-C4CA-46D1-80E0-E26A076B4042}
CODE

Секция [CS_CONNECTION]

  • url=http://127.0.0.1:7007/soap/UCSCommonWS   ;; url для подключения к Common-серверу
  • fs_guid=                                                                       ;; уникальный код, GUID, Feature Server.
    Указывается GUID того сервера, к которому подключается плагин. GUID Feature Server должен быть уникальным для каждого Feature Server. Несколько плагинов могут обращаться к одному FS: в этом случае у разных экземпляров плагина будет одинаковый fs_guid.
  • ConnectTimeout=300000                                           ;; тайм-аут ожидания соединения в секундах
  • ReceiveTimeout=300000                                            ;; тайм-аут ожидания ответа в секундах
  • SendTimeout=300000                                                ;; тайм-аут ожидания отправки в секундах
    Для больших баз, от 10 Гб, рекомендуем выставлять во времени тайм-аутов большие значения: от 30000 до 50000.

Секция [CL_TYPE]

  • i_Guid                                                                         ;; уникальный код плагина(GUID плагина). Уникален для каждого экземпляра плагина.

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

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

Для построения отчета Feature Server подключается к Базе Данных, связь с которой в FeatureServPrj.ini, и регистрирует свой GUID в Common Server. Поэтому для базы данных в SQL или для каждой точки, локальной или центральной, можно настроить свой Feature Server.
Функционал Feature Server достаточно большой: он может работать и без плагина, например в режиме рассылки отчетов.

Все Feature Server будут регистрироваться на одном Common Server. 

Плагин для r_keeper 7 подключается к Feature Server через Common Server.

Плагин может работать только с одним Feature Server.

Каждый плагин будет подключаться к Common Server и искать там нужный Feature Server по GUID. Common Server может быть один, но он может работать с несколькими Feature Server. 

Если необходимо в точке А просматривать интерактивные отчеты точки Б, то плагин в точке А нужно перенастроить в Feature Serverв на точку Б. На схеме ниже — линия H.
Либо необходимо перенастроить Feature Server в точке А на базу данных в точке Б. Для в файле ini Feature Server измените параметр связи с базой данных SQL.

Скрытие ресторана из фильтра отчета

Если вам необходимо скрыть ресторан из фильтра отчета, добавьте привилегию на объект. Для этого:

  1. Перейдите в меню Сервис > Станции и устройства
  2. Выберите нужный ресторан и перейдите во вкладку Свойства
  3. Раскройте раздел Ограничения и найдите поле Привилегия на объект
  4. Из раскрывающегося списка выберите ресторан, ограничения на которые вы настраиваете:
  5. Сохраните изменения
  6. Перейдите в меню Персонал > Работники
  7. Выберите нужный ресторан и роль, которой необходимо запретить доступ к ресторану
  8. Перейдите в Свойства роли и раскройте раздел Менеджерские ограничения
  9. Снимите галку с необходимого ресторана:
  10. Сохраните изменения.

Если все настройки сделаны правильно, то работники роли перестанут видеть рестораны, на которых у них нет привилегий. Обратите внимание, что этот способ распространяется только на предустановленные интерактивные и веб-отчеты.

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

  1. Перейдите в созданный вами отчет и перейдите во вкладку Параметры
  2. Выберите параметр Ресторан и в его свойствах раскройте раздел Основное
  3. Отредактируйте SQL-запрос — скопируйте запрос для такого же параметра из любого предустановленного отчета

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

    Этот список создается SQL-запросом в настройках параметра.

Решение проблем

Проблемы с подключением

Ошибка: Вы не авторизованы

19.12.2019 17:22:01.743> [LOG]Пользователь введен не верно
19.12.2019 17:22:02.080> [LOG]Вы не авторизованы
19.12.2019 17:22:12.893> [LOG]After registration: code 2, Перерегистрация сервера
19.12.2019 17:22:28.217> [LOG]After registration: code 2, Перерегистрация сервера
CODE

Причина: в настройках подключения Feature Server не указан пользователь базы данных.
Решение: Откройте файл IRReportsFSPrj.ini и укажите в поле connection_string правильную строку подключения с логином и паролем. Пример:

connection_string=Provider=SQLOLEDB.1;Password=1;Persist Security Info=True;User ID=sa;Initial Catalog=7171848;Data Source=127.0.0.1
CODE

Ошибка: Недопустимое имя объекта PLG_EMPLOYEEROLES

Причина: Feature Server не создал таблицу PLG_EMPLOYEEROLES
Решение: используйте скрипт, приложенный к статье. Обязательно укажите в скрипте имя своей базы данных.

Проблемы с SQL collation

При возникновении проблем, связанных с SQL collation, ошибка может звучать так: «Cannot resolve the collation conflict between «SQL_Latin1_General_CP1_CI_AS» and «Lithuanian_CI_AS» in the equal to operation». Из-за этой ошибки некоторые интерактивные отчеты могут не работать.

Решение: проверьте настройки сортировки у SQL сервера и самой Базы данных. Для этого:

  1. Запустите SQL 
  2. В обозревателе объектов нажмите правой кнопкой мыши на название сервера и выберите Свойства
  3. Затем нажмите правой кнопкой мыши на базу данных и выберите Свойства
  4. Убедитесь, что Параметры сортировки у сервера и базы данных совпадают

Затем пересоздайте агрегатные базы STAT. Для этого:

  1. Остановите Feature Server
  2. Выполните на основной базе данных скрипт:

    UPDATE [dbo].[DBInformation] set [DBVer]=0 where [Alias] = 'Agregates'
    CODE
  3. Удалите все агрегатные базы данных STAT
  4. Запустите Feature Server

Проблемы при импорте отчета из XML-файла

Ошибка: Could not find stored procedure 'RPL8_GET_CURRENT_DATABASE_GUID

Решение: Проблема связана с отсутствием некоторых таблиц и процедур. Выполните следующие скрипты:

USE [RK7]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[RPL8_TRANSACT](
[ID_INC] [int] IDENTITY(1,1) NOT NULL,
[GUID] [uniqueidentifier] NOT NULL,
[SERVER_GUID] [uniqueidentifier] NOT NULL,
[DTS] [datetime] NULL
) ON [PRIMARY]
GO
CREATE PROCEDURE [dbo].
[RPL8_GET_CURRENT_DATABASE_GUID]
(@SRVGUID uniqueidentifier OUTPUT )
AS BEGIN
SET @SRVGUID = NEWID()
END
GO
CODE