Интерактивные отчеты

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

Введение

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

Для работы требуется MS SQL Server 2012 и выше. 

Для работы ИА-отчётов у вашего пользователя должен быть указан ресторан в поле Текущий ресторан

Принципиальная схема взаимодействия серверов

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

Для работы ИА-отчетов необходимо:

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

Важно: если на локальном ПК не установлен клиент для SQL Server - сервер функции отчетов будет недоступен для выбора в инсталляторе!

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

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

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

  2. Выбор языка, приветствие и условия лицензионного соглашения не описываются из-за нецелесообразности.

  3. Далее выбираем "Установка нового экземпляра" (в том случае, если инсталлятор используется для удаления, выбираем "Удаление одного из уже установленных экземпляров"), нажимаем кнопку "Далее" (см. рис. 1).

Рис.1  Выбор между установкой и удалением ранее установленных компонентов

  1. В открывшемся окне выбираем каталог, в который будет установлен экземпляр, вводим имя экземпляра и нажимаем кнопку "Далее". Месторасположение может быть любым (см. рис. 2).

Рис.2  Выбор каталога для установки и ввод имени экземпляра

  1. В открывшемся окне выбираем необходимые компоненты и нажимаем кнопку "Далее" (см. рис. 3).

Примечание: в обязательном порядке выбираем "UCS CommonServer", "Сервер функции отчетов" и "Плагин отчетов". Если на машине уже установлен CommonServer, то можно использовать его.

Так же обратите внимание на пункт "Менеджерская станция". При выборе данного пункта будет создан новый экземпляр менеджерской станции с настроенным плагином.

Если вы выбрали данный пункт, то переходите к пункту 6, если не выбирали - к пункту 7.

Рис.3  Выбор компонент для установки

  1. В открывшемся окне вводим сетевое имя и порт сервера справочников и нажимаем кнопку "Далее" (см. рис. 4).

Рис.4  Ввод сетевого имени сервера справочников

  1. В открывшемся окне вводим IP- адрес Сервера функции отчетов (IRReportsFSPrj.exe) и порт, на котором физически будет работать служба и нажимаем кнопку "Далее" (см. рис. 5).

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

Рис.5 Ввод адреса и портов сервера функции отчетов

  1. В открывшемся окне вводим внешний IP- адрес Сервера функции отчетов (IRReportsFSPrj.exe) и внешний порт, по которому настраивается IRReportsFSPrj (нужен для указания обратной связи), нажимаем кнопку "Далее" (см. рис. 6).

Рис.6 Ввод внешнего адреса и портов сервера функции отчетов

9. В открывшемся окне вводим IP и порт для нового CS(CommonServer), нажимаем кнопку "Далее" (см. рис. 7).

Примечание: данное событие происходит, если при установке был выбран пункт UCS CommonServer.

Рис.7 Адрес и порт создаваемого CommonServer

10. При использовании сертификатов выберите их (не обязательно) и нажмите кнопку "Далее" (см. рис.8).

Рис.8 Выбор сертификата

11. Выберите уровень логирования и нажмите кнопку "Далее" (см. рис.9).

Log-файл плагина создается автоматически в \bin\win\Logs\plugins\SchRepPluginClient\log\schRepPlugin.txt. Местоположение файла менять нельзя.

Log-файл FS сервера создается автоматически в *Logs\ директории FS сервера. Местоположение файла менять нельзя.

Рис.9 Выбор уровня логирования

12. Выберите компоненты, которые будут работать как службы и нажмите кнопку "Далее" (см.рис.10).

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

Рис.10 Выбор компонент, которые будут установлены в качестве службы

13. Введите данные для соединения с MS SQL сервером и нажмите кнопку "Далее" (см.рис.11).

Рис.11 Соединение с MS SQL сервером

14. Введите имя накопительной SQL базы данных и нажмите кнопку "Далее" (см.рис.12).
Проверить имя БД можно в справочнике "Настройки внешних БД".

Рис.12 Имя SQL базы данных

15 Выберите приложения, для которых необходимо создать ярлыки на рабочем столе и нажмите кнопку "Далее" (см.рис.13).

Рис.13 Выбор приложений, для которых будут созданы ярлыки на рабочем столе

16. Нажмите кнопку "Установить" для начала процесса установки (см.рис.14).

Рис.14 Запуск процесса установки

17. Нажмите кнопку "Завершить", чтобы выйти из программы установки (см.рис.15).

Рис.15 Завершение установки

18. После запуска CS отобразится в службах в состоянии "Работает" (см. рис. 16). Если CS был установлен в качестве приложения, то появится  окно с сообщением об успешном запуске и информацией о портах (см. рис. 16а).

Рис.16  CS запущен в качестве службы

  

Рис.16а  CS запущен в качестве приложения

Важно: при изменении версии FS не всегда меняется версия агрегатов, поэтому при переходе на новую версию фичи агрегаты могут не пересчитываться. Так же не рекомендуется удалять агрегатные БД. Если БД переносится на другой сервер, то необходимо так же переносить и агрегатные БД или же понизить версию агрегатов в БД (только на тестовых БД)

19. Если установить Feature Server в качестве приложения, то после запуска увидим следующее окошко:

Рис.17  IR Report Server

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

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

CS_Service.ini - конфигурационный файл CommonServer

[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
Описание основных параметров
 
Секция [CS_CONNECTION]
Тайм-ауты в секундах. Для больших баз (10 Гб и выше) рекомендуется выставлять большие значения значения (от 30000 до 50000)
  • connect_timeout(s)=30   
  • receive_timeout(s)=30
  • send_timeout(s)=30
  • def_port=7007                         ;; основной порт Common сервера

FeatureServPrj.ini - конфигурационный файл FS сервера

Конфигурационный файл FS сервера

[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  
Описание параметров
 
Секция [FS_CONNECTION]
 
Тайм-ауты в секундах. Для больших баз (10 Гб и выше) рекомендуется выставлять большие значения значения (от 30000 до 50000)
  • ConnectTimeout=50000
  • ReceiveTimeout=50000
  • SendTimeout=50000
  • CommandTimeOut=50000
  • SessionTimeOut=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 - уникальный код FS сервера (GUID FS сервера). Уникален для каждого экземпляра сервера;
  • intrance_name - имя службы FS сервера (указывается при установке, далее не меняется. В случае необходимости изменения имени службы, его необходимо будет изменить и в реестре);
  • MasterServer=1  - параметр, влияющий на запрет редактирования справочников (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 - внешний адрес, видимый для CS, где "/soap/IStructuresInfo"- одинаковая приставка для всех FS
  • start_port = 8892 - порт на физической машине, на которой стартует фича.
Примечание: url в настройках всех микросерверов (не только этой фичи) - это адрес обратной связи, по которому он будет виден с Common Server. Любой фича-сервер регистрируется с этим адресом на CS.
start_port - этот порт на машине который занимает конкретная фича. Т.к. в сети может использоваться проброс портов, то startport может отличаться от порта указанного в параметре url.
 
Секция [FS_AGREGATE]

Agregate=1  //  1 - включить агрегаты, 0 - выключить

Count_shifts=10  // число смен, которое будет пересчитано при очередной проверке

Time_between_recalc=0  // время между пересчетом агрегатов, в минутах

Time_between_checking=10  // время проверки актальности агрегатов после последнего успешного пересчета агрегатов

WaitConnectionInterval=5 // время ожидания соединения, в минутах (добавляется при необходимости, начиная с FS 1.24.1.0).

Примечание: Начиная с FS 1.24.1.0 появилась возможность восстановления разрыва соединения с базой данных. По умолчанию время, через которое будут происходить попытки соединения с базой данных, равно 1 минуте. При необходимости увеличения этого времени в ini- файл FS надо добавить параметр 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}

Описание параметров

Секция [CS_CONNECTION]

  • url=http://127.0.0.1:7007/soap/UCSCommonWS    -   url для подключения к Common-серверу
  • fs_guid - уникальный код(GUID) FS сервера. Указывается GUID того сервера, к которому подключается плагин. GUID FS сервера должен быть уникальным для каждого экземпляра FS сервера. Однако несколько плагинов могут обращаться к одному FS серверу, в этом случае у разных экземпляров плагина будет одинаковый fs_guid
  • ConnectTimeout=300000     ;; в зависисмости от размера БД SQL может принимать значения 300000...500000000
  • ReceiveTimeout=300000     ;; в зависисмости от размера БД SQL может принимать значения 300000...500000000
  • SendTimeout=300000           ;; в зависисмости от размера БД SQL может принимать значения 300000...500000000

Секция [CL_TYPE]

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

Запуск отчетов в RK7MAN

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

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

В верхнем меню появиться пункт "IR reports" с сылками на отчеты, а в пункте "Расширения" дополнительные настройки по ИА отчетам.

Рис.32 Справочник ИА отчетов

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

Ниже приведена схема реализации отчетов через плагин для нескольких ресторанов.

 

 

 

Рис.33 Конфигурация для сети ресторанов

FS подключается к БД (связь с SQL прописывается в FeatureServPrj.ini) и регистрирует свой GUID на CS. Соответственно, для каждой БД SQL(или для каждой точки, будь то локальная или центральная) можно настроить свой FS. Функционал FS достаточно большой, он может работать и без плагина, например в режиме рассылки отчетов. Все FS будут регистрироваться на одном CS.  

Плагин для РК7 подключается к FS через CS. Плагин может работать только с одним FS. Каждый плагин будет подключаться к CS и искать там нужный FS по GUID. CS может быть один и он будет работать с несколькими FS. 

Если есть необходимость в точке А просматривать данные (ИА отчеты) точки Б, то плагин в точке А нужно перенастроить на FS в точке Б (линия H на рисунке 34). Либо возможен вариант перенастройки FS в точке А на БД в точке Б (в ини-файле FS изменить параметр связи с БД SQL).

Рис.34 Варианты подключений плагина ИА отчетов

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

  1. Защитите ресторан предустановленной привилегией на объект.
  2. Отключите у роли те привилегии, к ресторанам которых необходимо запретить доступ
  3. В результате пользователи роли перестанут видеть рестораны, на которые у них нет привилегий. Способ работает на все предустановленные интерактивные и веб-отчеты.
  4. Для самодельных отчетов этот способ может не работать. В этом случае необходимо у параметра Ресторан скорректировать запрос, выбирающий значения — просто скопировать запрос для такого же параметра из любого предустановленного отчета. Чтобы это сделать, откройте параметры отчёта и отредактируйте SQL-запрос.
  5. Для параметра можно создать список значений, из которого пользователь будет выбирать нужные постановкой галочек в фильтре:

    Этот список создается SQL-запросом в настройках параметра.
  6. В настройках параметров набора данных созданного отчета, для параметра Ресторан задайте точно такой же запрос, как и в наборах данных у предустановленных отчетов для того же параметра. Запрос для параметра Ресторан у предустановленных отчетов как раз и сделан так, чтобы учитывать доступность ресторанов пользователю согласно привилегиям.

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

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

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

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, Перерегистрация сервера

Причина:, в настройках подключения 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

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

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

Проблемы связанные с SQL collation

При возникновении проблем такого рода, ошибка может звучать так: "Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Lithuanian_CI_AS" in the equal to operation".

В результате такого некоторые ИА отчеты могут не работать. Для решения необходимо проверить настройки сортировки у SQL сервера и самой БД (рис.34). После этого необходимо пересоздать агрегатные базы STAT.

Для пересоздания агрегатных БД необходимо:
1. Остановить FS.
2. Выполнить на основной БД скрипт: UPDATE [dbo].[DBInformation] set [DBVer]=0 where [Alias] = 'Agregates'
3. Удалить все агрегатные БД (STAT)
4. Запустить FS

Рис.35 Свойства базы данных - параметры сортировки

Проблемы при импорте отчета из 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
ВложениеРазмер
rk7_create_db_tables.sql6.16 КБ

Понятие интерактивных отчётов

Агрегаты изнутри

В 7.5.2 в структуре SQL добавлены таблицы STAT_ со статистическими данными агрегатов. За актуальность данных и работу ИА отчетов отвечал argegate_install.exe. В менеджерской станции по-умолчанию был пункт меню "ИА-отчеты".

В 7.5.3 эти таблицы вынесены в отдельные базы. Вместо argegate_install.exe теперь необходимо использовать связку (CommonServer + FeatureServer + PluginRK7) и установка данных компонентов возможна только с помощью инсталлятора (подробнее в статье http://support.ucs.ru/ru/node/7800).

При закачке смены (операция "закрытия общей смены" на кассе) помимо основных таблиц, данные закачиваются и в дополнительные таблицы дополнительных баз. Потом данные суммируются и выставляется флаг RECALC, т.е. таблица добавлена и пересчитана. В дальнейшем из этого пересчитанного массива через view будут показываться данные в отчетах. Пересчет смен реализован через планировщик, который проверяет флаг RECALC. Если есть смена для пересчета, то каждую минуту будет стартовать пересчет, если смен для пересчета нет, то каждые 10 минут будет стартовать пересчет. При кардинальном обновлении RK7 добавляются в SQL новые таблицы и ранее пересчитанные агрегаты будут пересчитаны с нуля.

Особенности агрегатов:

  • Агрегаты пересчитываются только после закачки смены. Если производится перезакачка смены, агрегаты необходимо пересчитать вручную.

  • При использовании агрегатов, происходит достаточно серьезное разрастание базы SQL , поэтому после пересчета нужно сжимать лог журнала базы SQL;

  • Для проверки актуальности данных агрегатов можно воспользоваться отчетом "ИА Отчеты -  Отчеты по безопасности - Системные операции - Отчет об актуальности агрегатов";

  • Для того чтобы узнать, что при подсчёте/пересчёте агрегатов не произошла ошибка, необходимо просмотреть лог feature server;

  • Для принудительного пересчёта всех агрегатов можно воспользоваться одним из вариантов:

1) В менеджерской РК7 в пункте "ИА Отчеты - Отчеты по безопасности - Системные операции" нажать "Принудительный пересчет агрегатов";

2) Если п.1 нет, то выполнить ИА отчет "Пересчитать агрегаты для всех смен" в справочнике "Расширения -> ИА отчеты -> Отчеты по безопасности -> Системные операции";

  • Рекомендуется использовать MS OLE DB Provider (рекомендация разработчиков);

  • Агрегаты пересчитываются с таймаутом 1-10 минут. Если же после 20 минут ничего не происходит - значит произошел какой-то сбой;

[FS_AGREGATE]
Agregate=1
Count_shifts=10
Time_between_recalc=0
Time_between_checking=10
  • Если производится обновление версий RK7 ниже 7.5.3 или версий установленных не из инсталятора и/или не использовавших ИА-отчета, то необходимо установить из инсталятора Сервер функции отчетов, плагин для менеджерской станции и CommonServer(если не установлен).

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

1. Общее описание

В новых версиях (7.5.2) применяется механизм агрегатов для хранения заранее рассчитанных и подготовленных для использования данных. Агрегаты - это специальный механизм, позволяющий значительно сократить время формирования отчетов. Каждый отчет состоит из фильтра, интерактивного графика и таблицы с данными. Использование агрегатов позволяет менеджерам анализировать имеющуюся информацию, переключаясь между различными разрезами просмотра с небольшим временем отклика системы. При этом система с одной стороны использует накопленные агрегированные данные, а с другой стороны всегда обеспечивает актуальность получаемых отчетов.

Пример: Для просмотра балансового отчета необходимо воспользоваться справочником  "IR Reports"  – "Выручка" –" Сводный отчет". Для выбора отчетного периода в фильтре (см. рис.1) необходимо выбрать ресторан, дату начала и дату окончания периода из календаря.  

 

Рис. 1 - Путь к справочнику "Сводный отчет"

Рис. 2-  Фильтр справочника "Сводный отчет"

В открывшемся отчете имеется несколько таблиц: по валютам, по скидкам, по категориям, по удалениям, по налогам и себестоимости (см. рис.3).  

 

Рис. 3 - Пример сводного отчета

Из таблиц есть возможность открывать новые отчеты по конкретным данным с помощью ссылок, например в таблице - по валютам, суммы выделены нижним подчеркиванием. Кликнув два раза по одной из них, откроется новый "Отчет по выручке" (см. рис. 3). Также в таблице по скидкам, кликнув два раза по одной из сумм скидок, откроется новый "Отчет по скидкам и наценкам".

 

Рис. 4 - Пример нового отчета, открытого из Сводного отчета

В табличном режиме можно воспользоваться фильтром и просматривать отчет по дополнительным условиям. При нажатии на кнопку   в названии столбца таблицы, откроется фильтр условий выбора отображаемых компонентов (см. рис. 4.)

Рис. - Фильтр условий выбора отображаемых компонентов

Все - для вывода всех значений;

Условие - выбрать по условию.

 

Настройка условия для фильтра осуществляется в окне, представленном на рис. 5. В поле выбора операции, необходимо выбрать одну из следующих операций:

- равно;

- не равно;

- меньше чем;

- меньше чем или равно;

- больше чем;

- больше чем или равно.

Рис. 5 - Настройка условия

- как - выбор значений «подобных маске». Внизу окна при выборе этой операции появляется подсказка (см. рис. 6): символ «_» - заменит в окне ввода значения операции любой одиночный символ, символ «%» - заменит в окне ввода значения операции произвольное количество любых символов;

Рис. 6 - Подсказка для условия "как"

- не как - выбор значений «не подобных маске». Внизу окна при выборе этой операции появляется подсказка см. рис. 6;

- пусто - пустое значение (при выборе этой операции поле значения операции не заполняется);

- не пусто - не пустое значение (при выборе этой операции поле значения операции не заполняется).

При назначении двух условий, следует установить переключатель «И»/ «ИЛИ» в нужное положение.

Необходимо нажать кнопку «ОК», чтобы установить фильтр, или кнопку «Отмена», чтобы отменить установку фильтра.

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

Чтобы снять фильтр, необходимо выбрать установку "Все" в списке выбора установок фильтра  или нажать кнопку   внизу окна (см. рис. 7). Чтобы вывести общий список элементов без отмены установок фильтра, необходимо снять флаг внизу окна (см. рис. 7).

Рис. 7 - Редактирование фильтра

Для создания сложного фильтра (см. рис. 8) необходимо нажать кнопку «Настроить» (см. рис. 7)  

Рис. 8 - Создание сложного фильтра

В этом окне можно создавать фильтры с многоуровневыми условиями. Верхний уровень условий начинается из вершины «Фильтр». Все условия и группы условий этого уровня объединены логической операцией рядом с вершиной «Фильтр». Слово «корень» указывает на верхний уровень дерева условий.

Кнопка   выводится рядом с условиями и группами условий. Нажатие на нее позволяет выполнить одно из нижеописанных действий (см. рис. 9):

- Добавить на уровень, на котором находится кнопка, условие. Команда «Добавить условие».

- Добавить на уровень, на котором находится кнопка, группу условий. Команда «Добавить Группу».

- Удалить соответствующее условие или группу условий. Команда «Remove Row».

 

Рис. 9 - Редактирование фильтра

Фильтры можно сохранять в виде файлов с расширением .flt, и открывать ранее созданные фильтры.

После создания фильтра, нажмите кнопку «ОК» - для применения фильтра с закрытием окна, или кнопку «Применить» - для применения фильтра без закрытия окна.

Чтобы сохранить созданный фильтр, необходимо нажать кнопку «Сохранить как…». Чтобы открыть ранее созданный фильтр, необходимо воспользоваться  кнопкой «Открыть…». Чтобы закрыть окно без применения фильтра, нажмите кнопку «Отменить».

2. Группы отчетов

2.1 Группа отчетов "Аналитические отчеты"

 

2.1 Группа отчетов "Выручка"

В группе отчетов "Выручка" можно увидеть отчеты:

- "Выручка по группам" (отчет показывает информацию по выручке за выбранный период по группам валют),

- "Выручка по дням" (отчет показывает информацию по выручке за конкретную дату из выбранного периода), 

- "Выручка по дням недели" ( отчет показывает информацию по выручке по дням недели за зыбранный период),

- "Выручка по часам"  - (отчет показывает информацию по выручке ресторана по часам за выбранный период)(Печатная форма см. Рис. 11),

- "Выручка станций по дням" - (отчет показывает информацию по выручке для каждой кассовой станции отдельно по дням) ,

-"Общая выручка" -  (отчет показывает информацию по выручке за выбранный период по группам валют,

- "Отчет по выручке" - (отчет содержит информацию по суммам валют по ресторанам, по суммам валют по персоналу, по суммам валют и категориям, по суммам по категориям и ресторанам),

- "Отчет по официантам 2" - (отчет содержит информацию по  сумме выручки на официанта за выбранный период);

- "По кассирам" - (отчет содержит информацию по сумме выручки на кассира  с конкретизацией по валютам за выбранный период);

-"По официантам" - (отчет содержит информацию по сумме выручки на официанта с конкретизацией по валютам за выбранный период);

- "По ресторанам" - отчет содержит информацию по выручке ресторана за дату в выбранный период

, "По станциям" - отчет содержит информацию по выручке кассовой станции за выбранный период с детализацией по валютам

"По счет-фактурам" - отчет содержит информацию о выданных счет-фактурах за выбранный период

"Сводный отчет" - отчет содержит ниформацию по валютам, налогам, категориям, скидкам, удалениям и себестоимости за выбранный период времени

"Сводный по типам валют" -   и Выручка по официантам (Таблица см. Рис. 10). Поля отчетов и их значения:

Типы валют -  типы валют, использованные в ресторане (например:безналичный расчет, наличные, кредитные карты и пр.);

Валюта - валюты, использованные в ресторане (например:рубли, евро, франки и пр.);

Базовая сумма - сумма стоимости заказов ресторана в выбранной валюте, одинаковой для всех ресторанов сети;

Внесенная сумма - сумма стоимости заказов ресторана, внесенная в любой валюте;

Оригинальная сумма

Дата - дата, за которую представлена информация в строке;

Чеков – количество чеков за указанный период времени;

Гостей – количество гостей за указанный период времени;

Сумма по прайсу - сумма стоимости заказов по меню;

Скидка - сумма скидок/наценок за указанный период времени;

НДС - сумма налога на добавочную стоимость за указанный период времни;

Оплачено - сумма по прайсу + скидка/наценка

Национальная сумма - сумма стоимости заказов в национальной государственной валюте;

Сумма/гость –  средняя сумма заказа на гостя;

Станция - наименование станции, по которой показан отчет по выручке;

Ресторан – наименование ресторана;

Официант – наименование официанта;

Сумма – сумма с учетом всех скидок;

Сумма/чек –  средняя сумма чека;

Сумма/гость –  средняя сумма на гостя;

Сумма/гость/час – средняя сумма на гостя за час;

Гость/чек – среднее количество гостей в одном чеке;

Сумма по прайсу – ценовая сумма (сумма без учета скидок/наценок);

Оплачено  – сумма платежа;

НДС – сумма налога;

Дата печати - дата вывода счет фактуры/чека

 

Рис. 10

 

Рис. 11

2.2 Группа отчетов Журнал открытия ящика

В группе содержится отчет по денежному ящику. Поля отчета и его значение:

Ящик – Наименование кассового ящика;

Работник – Наименование работника;

Время открытия – Время открытия кассового ящика;

Время закрытия – Время закрытия (распечатан в);

Причина – Причина открытия ящика;

Операция – Наименование выполняемой операции;

2.3 Группа отчетов Модификаторы

В группе содержится отчет по модификаторам (см. Рис. 12). Поля отчета и его значение:

Блюдо – Наименование блюда (с которым был продан модификатор);

Модификатор – Наименование модификатора;

Количество – Количество проданных модификаторов;

Сумма – Сумма проданных модификаторов;

 

Рис. 12

2.4 Группа отчетов Платежи

В группе отчетов выручка содержится отчеты: Выручка по группам (по группам валют); Выручка станций по дням; Общая выручка; Выручка по кассирам (см. Рис. 14);  Выручка по официантам; Выручка по ресторанам; Выручка по станциям; Выручка по счет – фактуре (см. Рис. 13); Сводный отчет (см. Рис. 2); Сводный по типам валют.

Поля отчетов и его значение:

Тип валют – Тип валюты платежа;

Валюта – Наименование валюты платежа;

Базовая сумма – Сумма в базовой валюте;

Национальная сумма – Сумма в национальной валюте;

Дата – Логическая дата;

Станция – Наименование кассовой станции;

Оплачено – Сумма оплаты с учетом скидок / наценок;

Чеков – Количество чеков;

Скидка – Сумма скидки;

Сумма – Ценовая сумма (сумма без учета скидок/наценок);

Средний чек – Среднее количество чеков;

Средний чек на гостя – Среднее количество чеков на гостя;

Гостей – Количество гостей;

Кассир – Наименование кассира;

Официант – Наименование официанта;

Ресторан – Наименование ресторана;

Сервер – Наименование кассового сервера;

Номер – Номер счет – фактуры;

Клиент – Наименование клиента (счет - фактура);

Категория – Категория блюд (классификация);

Категория заказа – Наименование категории заказа.

 

Рис. 13

 

Рис. 14

2.5 Группа отчетов Продажи

В группе отчетов Продажи содержатся отчеты по расходу блюд: Категории по официантам; Отчет по выручке содержит четыре таблицы: по типам валют и ресторанам, типам валют и сотрудникам, типам валют и категориям, по ресторанам и категориям (см. Рис. 15);  По группам блюд; По группам меню;  По категориям (см. Рис. 16);  Расход блюд. Поля отчетов и его значение:

Категория – Категория блюд (классификация)

Официант – Наименование официанта;

Сумма – Ценовая сумма (сумма без учета скидок/наценок);

Оплачено – Сумма оплаты с учетом скидок / наценок;

Ресторан – Наименование ресторана;

Валюта – Наименование валюты;

Сотрудник – Наименование работника;

Скидка – Сумма скидки;

Путь по группе – Путь по группам меню;

Блюдо – Наименование блюда;

Количество – Количество проданных блюд;

Средняя цена – Средняя цена блюда;

Группа меню – Наименование группы меню;

Код группы меню – Код группы меню.

 

Рис. 15

 

Рис. 16

2.6 Группа отчетов Системные операции

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

Ресторан – Наименование ресторана;

Сервер – Наименование кассового сервера;

Даты смен – Логическая дата закрытия смены;

Номер смены – Порядковый номер закрытой смены;

Актуальность – Актуальность данных.

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

 

Рис. 17

2.7 Группа отчетов Скидки

В группе содержится два отчета Скидки и наценки (см. Рис. 19), детализированный по официантам (см. Рис.18).

Поля отчета и его значения:

Ресторан – Наименование ресторана;

Официант – Наименование официанта;

Скидка – Наименование скидки / наценки;

Сумма – Суммовое значение скидки наценки.

 

Рис. 18

 

Рис. 19

2.8 Группа отчетов Справочники

В группе можно увидеть отчеты по активным элементам справочников: Валюты (см. Рис. 21), Персонал, Меню (см. Рис.20). 

 

Рис. 20

 

Рис. 21

2.9 Группа отчетов Удаления

В группе можно увидеть отчеты по Отказы (видеонаблюдение) см. Рис. 22, Список отказов см. Рис. 23, Отчет по отказам см. Рис. 24. Поля отчета и его значения:

Кассовый сервер – Наименование кассового сервера;

Дата смены – Логическая дата смены;

Заказ – Порядковый номер заказа;

Причина – Наименование  причины удаления;

Дата отказа – Логическая дата, в которой было удаление;

Время отказа – Время удаления;

Блюдо – Наименование удаленного блюда;

Количество – Количество удаленных блюд;

Цена – Цена удаленного блюда;

Сумма – Сумма удаленных блюд;

Кассир – Наименование кассира;

Официант – Наименование официанта заказа;

 

Рис. 22

 

Рис. 23

 

Рис. 24

2.10 Группа отчетов Чеки

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

Кассовый сервер – Наименование кассового сервера;

Дата смены – Логическая дата смены;

Номер чека – Порядковый номер чека;

Базовая сумма – Сумма в базовой валюте;

Национальная сумма – Сумма в национальной валюте;

Количество гостей  - Количество гостей в заказе;

Время открытия – Время открытия заказа;

Время закрытия – время закрытия заказа;

Официант – Официант заказа;

Дата закрытия – Дата закрытия заказа.

Рис. 25

Изменение отображения отчетов группы "Dashboard"

Изменение отображения отчетов группы «Dashboard»

За интервал времени обновления данных на экране (в миллисекундах) ответчает тег <OBJECTtype="IR_REFRESH_TIMER">, параметр <INTERVAL>10000</INTERVAL> (см. рис. 1).

Рис. 1 – Интервал времени обновления данных на экране

Рис. 2 – Указатель 1

Рис. 3 – Указатель 2

Для изменения фона отчета необходимо в макете визуализации в теге «IR_FORM» в значении параметра «color» указать код цвета (см. рис.)

Рис. 4 – Визуализация – Макет

Рис. 5 – Изменение цвета фона

 

Рис. 6 - Фон было

Рис. 7 – Фон стало

Коды цветов можно определить с помощью программы Цвет.exe (файл приложен в задании http://tracker.ucs.ru/issues/61138)

Для изменения размера и цвета Шрифта 1 (см. рис. 3) необходимо в теге «FONT» в параметрах «fontcolor» и «fontsize» указать код цвета и размер шрифта соответственно.

Рис. 8 - Изменение Шрифта1

При изменении размера шрифта необходимо менять и высоту 1 (см. рис. 3, рис. 9) .

Рис. 9 – Изменение размера 1

Изменение зоны 1

За изменение Зоны  1 (см. рис. 3) отвечает <OBJECT type="IR_DS_CARD" guid="{8D24DB1D-9D40-480F-9D92-F58037C85C14}" borderwidth="0" name="grid2" order="6">

 

Рис. 10 – Блок, отвечающий за параметры Зоны 1

За высоту, ширину и отступ от панели названия отчета Зоны 1 отвечают параметры «IHEIGHT», «IWIDTH» и «ITOP» соответственно см. рис. 11

Рис. 11 – Изменение размеров Зоны 1

За толщину и цвет Рамки 1 (см. рис. 2) отвечают параметры «CARD_BORDER_WIDTH» и «CARD_BORDER_WIDTH» соответственно (см. рис. 12)

Рис. 12 – Изменение цвета и толщины Рамки 1

За цвет и толщину Разделителя 1 (см. рис. 3) отвечают параметры «SEPARATOR_COLOR» и «SEPARATOR_COLOR» соответственно (см. рис. 13)

Рис. 13 – Изменение цвета и толщины Разделителя 1

За изменение Размера 3 (см. рис. 2) отвечает параметр «CARDWIDTH» (см. рис. 14).

Рис. 14 – Изменение Размера 3

Размер 7 (см. рис. 2) регулируется количеством строк в теге POSITION в параметре «line_count» (см. рис. 15).

Рис. 15 - Изменение Размера 7

За изменение размера и цвета Шрифта 2 (см. рис. 3) отвечает тег «FIELD sysname="VALUES" параметры «fontsize» и «fontcolor» соответственно (см. рис. 16).

Рис. 16 – Изменение размера и цвета Шрифта 2

За изменение размера и цвета Шрифта 3 (см. рис. 3)отвечает тег «FIELD sysname = "UNIT"параметры «fontsize» и «fontcolor» соответственно (см. рис. 17).

Рис. 17 - Изменение размера и цвета Шрифта 3

За изменение размера и цвета Шрифта 4 (см. рис. 3)отвечает тег «FIELD sysname = "PARAM" параметры «fontsize» и «fontcolor» соответственно (см. рис. 18).

Рис. 18 - Изменение размера и цвета Шрифта 4

За изменение размера и цвета Шрифта 5 (см. рис. 3)отвечает тег «FIELD cap_alignment_horz="taCenterJustify" cap_alignment_vert="vaCenter" caption="Rankings» параметры «fontsize» и «fontcolor» соответственно (см. рис. 19).

 

Рис. 19 - Изменение размера и цвета Шрифта 5

За изменение размера и цвета Шрифта 7 (см. рис. 3) отвечает тег <FIELD cap_alignment_horz="taLeftJustify" cap_alignment_vert="vaCenter" caption="Site:"> параметры «fontsize» и «fontcolor» соответственно (см. рис. 20).

Рис. 20 - Изменение размера и цвета Шрифта 7

За изменение размера и цвета Шрифта 6 (рис. 3) отвечает тег <FIELD sysname="SITE" FORMAT="%FLOAT%" alignment="taRightJustify" format="%INTEGER%"> параметры «fontsize» и «fontcolor» соответственно (см. рис. 21).

Рис. 21 - Изменение размера и цвета Шрифта 6

За изменение размера и цвета Шрифта 9 (рис. 3) отвечает тег <FIELD cap_alignment_horz="taLeftJustify" cap_alignment_vert="vaCenter" caption="Region:" > параметры «fontsize» и «fontcolor» соответственно (см. рис. 22).

Рис. 22 - Изменение размера и цвета Шрифта 9

За изменение размера и цвета Шрифта 8 (рис. 3) отвечает тег <FIELD sysname="REGION" FORMAT="%FLOAT%" alignment="taRightJustify" format="%INTEGER%"> параметры «fontsize» и «fontcolor» соответственно (см. рис. 23).

Рис. 23 - Изменение размера и цвета Шрифта 8

За изменение размера и цвета Шрифта 10 (рис. 3) отвечает тег <FIELD cap_alignment_horz="taCenterJustify" cap_alignment_vert="vaCenter" caption="Leaders:">

параметры«fontsize» и «fontcolor» соответственно (см. рис. 26).

Рис. 24 - Изменение размера и цвета Шрифта 10

За изменение размера и цвета Шрифта 11 (рис. 3) отвечает тег FIELD sysname="LIDER1" FORMAT="%FLOAT%" alignment="taLeftJustify" format="%FLOAT%"> параметры«fontsize» и «fontcolor» соответственно (см. рис. 25).

Рис. 25 - Изменение размера и цвета Шрифта 11

После изменения размера Шрифта 11 необходимо изменение количества строк под шрифт 10 (параметр «line_count») (см. рис. 26).

Рис. 26 – Изменение количества строк под Шрифт 11

В отчете отображаются три лидирующих ресторана. За изменение отображения оставшихся двух ресторанов отвечают теги FIELD sysname="LIDER2" FORMAT="%FLOAT%" alignment="taLeftJustify" format="%FLOAT%"> и FIELD sysname="LIDER3" FORMAT="%FLOAT%" alignment="taLeftJustify" format="%FLOAT%"> соответственно.

За изменение размера и цвета Шрифта 12 (рис. 3) отвечает тег <FIELD cap_alignment_horz="taCenterJustify" cap_alignment_vert="vaCenter" caption="Laggers:"> параметры«fontsize» и «fontcolor» соответственно (см. рис. 27).

Рис. 27 – Изменение размера и цвета Шрифта 12

За изменение размера и цвета Шрифта 13 (рис. 3) отвечает тег <FIELD sysname="LAGGER1" FORMAT="%FLOAT%" alignment="taLeftJustify" format="%FLOAT%"> параметры«fontsize» и «fontcolor» соответственно (см. рис. 28).

Рис. 28 – Изменение размера и цвета Шрифта 13

В отчете отображаются три отстающих ресторана. За изменение отображения оставшихся двух ресторанов отвечают теги <FIELD sysname="LAGGER2" FORMAT="%FLOAT%" alignment="taLeftJustify" format="%FLOAT%"> и <FIELD sysname="LAGGER3" FORMAT="%FLOAT%" alignment="taLeftJustify" format="%FLOAT%"> соответственно.

Изменение зоны 2

За изменение Зоны  2 (см. рис. 3) отвечает <OBJECT type="IR_DS_CARD" guid="{A621C19C-B34B-4DD2-8316-D3CBFF1D7777}" borderwidth="0" name="grid4" order="6"> (см. рис. 29).

Рис.  29 – Изменение зоны 2

За высоту, ширину Зоны 2 отвечают параметры <IHEIGHT>, <IWIDTH> соответственно. За изменение Размера 7 (см. рис. 2) отвечает параметр <CARDWIDTH>. За изменение цвета Рамки 2, Рамки 3 (см. рис. 2) отвечает параметр <SEPARATOR_COLOR> (см. рис. 30).

Рис. 30 – Изменение параметров Зоны 2

За изменение размера и цвета Шрифта 14, Шрифта 25 (рис. 3) отвечает тег <FIELD sysname="PARAM" FORMAT="%FLOAT%" alignment="taLeft"  alignment_vert="vaCenter" > параметры«fontsize» и «fontcolor» соответственно (см. рис. 31).

Рис. 31 - Изменение размера и цвета Шрифта 14, Шрифта 25

За изменение размера и цвета Шрифта 15, Шрифта 26 (рис. 3) отвечает тег <FIELD sysname="VALUE" alignment="taRightJustify" alignment_vert="vaCenter"> параметры«fontsize» и «fontcolor» соответственно (см. рис. 32).

Рис. 32 - Изменение размера и цвета Шрифта 15, Шрифта 26

За изменение размера и цвета Шрифта 16, Шрифта 27 (рис. 3) отвечает тег <FIELD cap_alignment_horz="taCenterJustify" cap_alignment_vert="vaCenter" caption="Rankings:"> параметры«fontsize» и «fontcolor» соответственно (см. рис. 33).

Рис. 33 - Изменение размера и цвета Шрифта 16, Шрифта 27

За изменение размера и цвета Шрифта 17, Шрифт 28 (рис. 3) отвечает тег <FIELD cap_alignment_horz="taLeftJustify" cap_alignment_vert="vaCenter" caption="Site:"> параметры«fontsize» и «fontcolor» соответственно (см. рис. 34).

Рис. 34 - Изменение размера и цвета Шрифта 17, Шрифт 28

За изменение размера и цвета Шрифта 18, Шрифта 29 (рис. 3) отвечает тег <FIELD sysname="SITE" FORMAT="%FLOAT%" alignment="taRightJustify" format="%INTEGER%"> параметры«fontsize» и «fontcolor» соответственно (см. рис. 35).

Рис. 35 - Изменение размера и цвета Шрифта 18, Шрифта 29

За изменение размера и цвета Шрифта 20, Шрифта 31 (рис. 3) отвечает тег <FIELD cap_alignment_horz="taLeftJustify" cap_alignment_vert="vaCenter" caption="Region:" > параметры«fontsize» и «fontcolor» соответственно (см. рис. 36).

Рис. 36 - Изменение размера и цвета Шрифта 20, Шрифта 31

За изменение размера и цвета Шрифта 19, Шрифта 30 (рис. 3) отвечает тег <FIELD sysname="REGION" FORMAT="%FLOAT%" alignment="taRightJustify" format="%INTEGER%"> параметры«fontsize» и «fontcolor» соответственно (см. рис. 37).

Рис. 37 - Изменение размера и цвета Шрифта 19, Шрифта 30

За изменение размера и цвета Шрифта 21 (рис. 3) отвечает тег <FIELD cap_alignment_horz="taCenterJustify" cap_alignment_vert="vaCenter" caption="Leaders:"> параметры«fontsize» и «fontcolor» соответственно (см. рис. 38).

Рис. 38 - Изменение размера и цвета Шрифта 21, Шрифта 32

За изменение размера и цвета Шрифта 22, Шрифта 33 (рис. 3) отвечает тег <FIELD sysname="LIDER1" FORMAT="%FLOAT%" alignment="taLeftJustify" format="%FLOAT%"> параметры«fontsize» и «fontcolor» соответственно (см. рис. 39).

Рис. 39 - Изменение размера и цвета Шрифта 22, Шрифта 33

В отчете отображаются три лидирующих ресторана. За изменение отображения оставшихся двух ресторанов отвечают теги <FIELD sysname="LIDER2" FORMAT="%FLOAT%" alignment="taLeftJustify" format="%FLOAT%"> и <FIELD sysname="LIDER3" FORMAT="%FLOAT%" alignment="taLeftJustify" format="%FLOAT%"> соответственно.

За изменение размера и цвета Шрифта 23, Шрифта 34 (рис. 3) отвечает тег <FIELD cap_alignment_horz="taCenterJustify" cap_alignment_vert="vaCenter" caption="Laggers:"> параметры«fontsize» и «fontcolor» соответственно (см. рис. 40).

Рис. 40 - Изменение размера и цвета Шрифта 23, Шрифта 34

За изменение размера и цвета Шрифта 24, Шрифта 35 (рис. 3) отвечает тег <FIELD sysname="LAGGER1" FORMAT="%FLOAT%" alignment="taLeftJustify" format="%FLOAT%"> параметры«fontsize» и «fontcolor» соответственно (см. рис. 41).

Рис. 41 - Изменение размера и цвета Шрифта 24, Шрифта 35

В отчете отображаются три отстающих ресторана. За изменение отображения оставшихся двух ресторанов отвечают теги <FIELD sysname="LAGGER2" FORMAT="%FLOAT%" alignment="taLeftJustify" format="%FLOAT%"> и <FIELD sysname="LAGGER3" FORMAT="%FLOAT%" alignment="taLeftJustify" format="%FLOAT%"> соответственно.

Изменение зоны 3

За изменение Зоны  3 (см. рис. 3) отвечает <OBJECT type="IR_DS_CARD" guid="{24994DB6-15BA-4CBA-9674-B5DDAF44CDB9}" name="grid3" order="8">.

За изменение Размера 8 Зоны 3 отвечает параметр <CARDWIDTH>. За изменение цвета Рамки 4 (см. рис. 2) отвечает параметр <CARD_BORDER_COLOR> (см. рис. 42).

Рис. 42 – Изменение параметров Зоны 3

За изменение размера и цвета Шрифта 36 (рис. 3) отвечает тег <FIELD sysname="RESTAURANT" alignment="taCenterJustify"> параметры«fontsize» и «fontcolor» соответственно (см. рис. 43).

Рис. 43- Изменение размера и цвета Шрифта 36

За изменение размера и цвета Шрифта 37 (рис. 3) отвечает тег <FIELD cap_alignment_horz="taLeftJustify" cap_alignment_vert="taLeftJustify" caption="Приготовление:">  параметры«fontsize» и «fontcolor» соответственно (см. рис. 44).

Рис. 44 - Изменение размера и цвета Шрифта 37

За изменение размера и цвета Шрифта 40 (рис. 3) отвечает тег <FIELD sysname="AVGCOOK" FORMAT="%FLOAT%" alignment="taRightJustify" format="%FLOAT%">  параметры«fontsize» и «fontcolor» соответственно (см. рис. 45).

Рис. 45 - Изменение размера и цвета Шрифта 40

За изменение размера и цвета Шрифта 38 (рис. 3) отвечает тег <FIELD cap_alignment_horz="taLeftJustify" cap_alignment_vert="taLeftJustify" caption="ВЗД:"> отвечают параметры «fontsize» и «fontcolor» соответственно (см. рис. 46).

Рис. 46 - Изменение размера и цвета Шрифта 38

За изменение размера и цвета Шрифта 41 (рис. 3) отвечает тег <FIELD sysname="TIMEDOOR" FORMAT="%FLOAT%" alignment="taRightJustify" format="%FLOAT%"> отвечают параметры «fontsize» и «fontcolor» соответственно (см. рис. 47).

Рис. 47 - Изменение размера и цвета Шрифта 41

За изменение размера и цвета Шрифта 39 (рис. 3) отвечает тег <FIELD cap_alignment_horz="taLeftJustify" cap_alignment_vert="taLeftJustify" caption="СрЧек:"> отвечают параметры «fontsize» и «fontcolor» соответственно (см. рис. 48).

Рис. 48 - Изменение размера и цвета Шрифта 39

За изменение размера и цвета Шрифта 42 (рис. 3) отвечает тег <FIELD color="65535" sysname="AVGRECEIPT" FORMAT="%FLOAT%" alignment="taRightJustify" format="%FLOAT%"> отвечают параметры «fontsize» и «fontcolor» соответственно (см. рис. 49).

Рис. 49 - Изменение размера и цвета Шрифта 43

Просмотр отчётов с большим количеством данных

Введение

В данной статье описан процесс просмотра отчетов с большим количеством данных (от нескольких сотен тысяч) при помощи внешней службы FRVCLGenerate.

Просмотр отчетов с большим количеством данных реализован в версии плагина 1.22.5 и выше.

Формирование отчетов с большим количеством данных (от нескольких сотен тысяч) реализовано посредством внешнего приложения FRVCLGenerate (оно является 64-разрядным).

Для корректной работы приложения необходима 64-разрядная ОС Windows. Приложение может быть установлено и запущено в режиме службы.

Просмотр отчетов с большим количеством данных возможен для Desktop (включая FastCube) -  отчетов (в формате .csv ) и для FR4 - отчетов (в формате .pdf).

Порядок настройки

Для просмотра отчетов с большим количеством данных необходимо:

  1. Установить FRVCLGenerate.
  1. В меню «Расширения»-«Интерактивные отчеты»:
  • Для Desktop (включая FastCube) отчетов (в формате .csv) зайти в нужную группу отчетов;
  • Для FR4 отчетов (в формате .pdf) зайти в нужную группу отчетов и открыть группу «Печатные формы».
  1. Выбрать необходимый отчет, правой кнопкой мыши вызвать контекстное меню, выбрать пункт «Выполнить отчет во внешнем приложении» (см. рис.1). В открывшемся окне выбрать параметры отчета, нажать «ОК» (см. рис.2). Отобразится сообщение о формировании отчета, нажать  «ОК» (см. рис.3). 

Рис.1

Рис.2

Рис.3

  1.  В меню «Расширения»-«Интерактивные отчеты»-«Отчеты по безопасности»-«Системные операции»-«Статус отчета(внешняя служба)» отследить статусы выполнения отчетов (см. рис.4, рис.5).

Рис.4

Рис.5

  1. Если статус выполнения отчета «ОК», в меню «Расширения»-«Интерактивные отчеты» выбрать необходимый отчет, правой кнопкой мыши вызвать контекстное меню, выбрать пункт «Получить отчет из внешнего приложения» (см. рис.6). В появившемся окне указать путь к папке, в которой необходимо сохранить отчет (см. рис.7, рис.8). 

Рис.6

Рис.7

Рис.8

 

                  В том случае, если отчет еще не сформировался, отобразится ошибка (см. рис.9).

Рис.9

                 После этого отчет сохранится в файл в указанной папке.

  1. Для просмотра отчета необходимо зайти в указанную в п.5 папку, открыть нужный файл.
  2. Если запущенный во внешней службе отчет выдал ошибку и не построился (отчет со статусом «Ошибка», рис. 5), по команде «Получить отчет из внешнего приложения» возвращается файл, соответствующий последнему корректному выполнению этого отчета (см. отчет со статусом «Ок»,  рис. 5).

Настройка репликации Feature Server

 Служба репликации  входит в состав сервера функции отчетов RK7 и устанавливается вместе с ним: непосредственно служба репликации RPL8_Lib.dll и файл мэппинга репликации DB_RPL8.ucs (создается для каждого продукта UCS, формируется  (создаётся) разработчиком соответствующего продукта). 

 
Для настройки репликации должно быть:
 
- установлен и настроен RK7 + БД  SQL;
- установлен и настроен Common  Server;
- установлен и настроен сервер функции отчетов;
- скачана утилита настройки узлов репликации RPL_Manager.exe (http://tracker.ucs.ru:8080/redmine/attachments/download/371291/RPL_Manager1.8.1.42.rar). При отсутствии доступа утилиту можно взять из вложенного файла.
 
Внимание! Работающая служба репликации не равно работающей репликации. Служба - это механизм, а команда на старт процесса репликации подается вручную. Однажды получив такую команду, служба репликации будет постоянно поддерживать процесс репликации запущенным, и остановит его только в случае возникновения критических ошибок, отражаемых в логе службы. В дальнейшем, программа настройки репликации должна быть запущена в единственном экземпляре, т.е. если она уже запущена на машине главного узла, то недопустимо запускать еще одну копию этой программы на машинах с локальными узлами.

1 Настройка репликации на главном узле

Настройки всех узлов репликации делаются с одной машины, на которой запущена программа настройки.

1 Запустить RPL_Manager.exe (см. рис. 1).

Рис. 1 - RPL_Manager.exe

2. После подключения к Common Server развернуть список служб, зарегистрированных на сервере, открыть службу репликации главного узла, перейти на вкладку «Settings», нажав кнопку «Load settings from file» загрузить мэппинг из файла DB_RPL8.ucs (см. рис. 2).
Рис. 2 - Загрузка мэппинга
3. После загрузки мэппинга перейти на вкладку «Install» и настроить свойства узла репликации и доступ к БД (см. рис. 3). 
Рис. 3 - Настройки свойств главного узла репликации и доступ к БД
Тип узла - "MASTER", имя узла - заданное имя для данного узла, хост  - IP адрес, по которому служба будет доступна (для главного узла репликации рекомендуется задать 0.0.0.0, чтобы служба была доступна на всех сетевых интерфейсах машины), порт, протокол и прочее в этом блоке оставить по-умолчанию.
Параметр "Количество отправляемых транзакций" (Count transaction sending) позволяет регулировать размер пакет с данными. По-умолчанию - 1000 транзакций. Если скорость передачи данных в сети позволяет быстро (1-5 сек) передавать файлы большого (от 3 до 10 Мб) размера, то можно увеличить это значение. На простых БД, не содержащих в таблицах большие бинарные данные (BLOB-поля), можно поднять этот параметр до 2000-3000 транзакций. При медленной скорости передачи данных в сети или наличии в БД заполненных BLOB-полей это значение лучше уменьшить до 100-200 транзакций.
В блоке настроек соединения с БД задается соединение с БД главного узла репликации. Указываем произвольное уникальное название соединения, реквизиты доступа к серверу БД и настраиваем строку подключения к базе. При этом удобнее всего воспользоваться кнопкой «Generate» и сформировать строку визуально выбрав необходимый сервер и БД. Если с машины, на которой проводится настройка, невозможно соединится с сервером БД, рекомендуется создать на сервере БД UDL файл с подключением к нужной базе, и скопировать из него получившуюся строку подключения.
Настройки пула подключений на чтение/запись в этом блоке задают максимальное количество потоков обращения к БД в службе репликации. Менее 10 указывать не следует, т.к. некоторое количество потоков из этого лимита расходуется на внутренние нужды, а остаток — на создание подключений к БД, непосредственно загружающих пакеты.
На главном узле следует указать количество потоков по формуле 10+([количество локальных узлов]*2). Меньшие значения приведут к образованию очереди пакетов на главном узле, сервер не будет успевать их загружать. В системах с большим количеством локальных узлов количество потоков на запись можно увеличить в 2-3 раза от значения, полученного по указанной выше формуле. При достаточном быстродействии оборудования это поможет поднять скорость загрузки пакетов. Слишком больших значений тоже следует избегать, т.к. излишнее количество потоков приводит большой загрузке ресурсов ПК сервером БД. Пример корректных настроек главного узла см. рис. 3.
4. По завершению настроек нажать кнопку «Install», сохраняем настройки,  запускаем репликацию. В окне лога событий в нижней части экрана должна появится надпись об успешном запуске механизма репликации для этого узла (см. рис. 4).
Рис. 4 - Запись об успешном запуске механизма репликации
После запуска репликации на главном узле с помощью кнопки "Extract pure mapping" (см. рис. 5) необходимо сохранить в файл (откроется стандартный диалог с возможностью выбрать папку назначения и имя файла) настройки данного главного узла. Эти настройки уникальны для главного узла и будут использоваться для загрузки настроек главного узла на каждый новый локальный узел.
 
Рис. 5 - Extract pure mapping
            Теперь настройка главного узла репликации завершена, можно переходить к настройкам локальных узлов.

2 Настройка репликации на локальном узле    

Настройка в RPL_Manager локального узла репликации аналогична главному, за исключением нескольких моментов.
Настройка осуществляется из  программы RPL_Manager, запущенной на машине главного узла репликации.
Для настройки:
1. Открыть необходимый локальный узел. Если он зарегистрирован на другом CS, то необходимо его добавить аналогично с главным узлом (см. рис.1), при этом загрузить из файла не «Оригинал мэппинга», который получили от разработчика, а из файла с настройками главного узла репликации, сохраненного кнопкой "Extract pure mapping" после запуска главного узла репликации (см.рис.6).
После загрузки настроек так же переходим на вкладку «Install» и настраиваем свойства узла репликации и доступ к БД.
Тип узла - "SLAVE", имя узла = заданному в п. 1 имени для данного узла, "Мaster server name" = имя главного узла репликации, настроенного в п. 1, хост = IP адрес главного узла репликации, порт, протокол и прочее в этом блоке оставить по-умолчанию, при необходимости указав количество транзакций в пакете, адаптированное к условиям сети. Так же при необходимости - явно указать №№ стартовой транзакции в случае использования на локальном узле архива БД главного узла.
2. В блоке "Настройка соединения с БД" задать соединение с БД локального узла репликации. Указать произвольное уникальное название соединения, реквизиты доступа к серверу БД, настроить строку подключения к базе. Пул на чтение и запись БД — в большинстве случаев достаточно по 10 соединений.
Пример корректных настроек см. рис. 6.
Рис. 6 - Настройки свойтв главного узла репликации и доступ к БД
3. По завершению настроек нажать кнопку «Install», сохранить настройки,  запускаем репликацию.
4. В окне лога событий в нижней части экрана должна появится надпись об успешном запуске механизма репликации для этого узла (см. рис. 4).
На этом настройка локального узла репликации завершена, можно переходить к следующему локальному узлу.

3 Перезапуск и повторный запуск репликации, контроль активности репликации

Для повторного запуска уже настроенной на узлах репликации нет необходимости загружать настройки  из файла мэппинга или файла настроек главного узла репликации.
Все настройки сохраняются в БД узла репликации, и могут быть загружены нажатием кнопки «Load Settings from server» (см. рис. 7).
Рис. 7 - Загрузка настроек
После загрузки настроек необходимо нажать кнопку «Start» в верхней части окна настроек узла репликации.
Внимание!  Первым запускается главный узел репликации, затем в любой последовательности — локальные узлы.
При сбое и перезапуске службы RPL8_SERVICE (например, при перезагрузке ПК узла репликации) процесс репликации запускается автоматически.
В RPL_Manager предусмотрена возможность группового запуска и останова репликации. Для этого нужно в панели кнопок приложения необходимо выбрать «Group settings», в открывшемся окне выбрать нужные узлы, и нажать кнопку «Start» или «Stop».
 
Контролировать активность репликации можно с помощью встроенных в Common Server и службу репликации web-серверов.
Для контроля CS необходимо зайти браузером по адресу:
http:\\[IP адрес Common Server]:[порт Common Server]/?info
Здесь, для просмотра узлов репликации, среди списка узлов выбрать любое по порядку вхождение нужного узла репликации, и перейти по ссылке на web-сервер службы репликации узла (см. рис. 8)
Рис. 8 - Контроль активности репликации
На рис. 9 отображена страница состояния службы репликации:
Рис. 9 - Страница состояния службы репликации
Если репликация запущена, отображается зеленая надпись «State - This server is running», если остановлена — красная «State - This server is stopped».
Параметр «Time watchdog» отображает самодиагностику службы, в нормальном состоянии текст тоже зеленый, при зависаниях потоков службы показывает время, оставшееся до перезапуска службы, красным цветом. Таймаут, в течении которого не ответивший поток считается зависшим, и служба перезапускается, устанавливается в минутах параметром AlarmTime(m) в секции [FS_TYPE] ini-файла службы, по умолчанию — 15 минут.
На web-сервере службы репликации главного узла отображаются номера последнего переданного пакета и дата/время последней операции, по которым так же можно установить, работает ли репликация (см. рис. 9)
Анализируем каждую пару «главный узел (MASTER)-локальный узел (SLAVE)».
В данном примере текущий номер пакета и время последней операции для локального узла позволяют понимать, какое количество пакетов передано (и записано в БД) с главного на локальный узел к указанному моменту времени.
Текущий номер пакета и время последней операции для главного узла позволяют понять,  какое количество пакетов передано (и записано в БД) с локального на главный узел к указанному моменту времени.
Так же в папке установки службы репликации, в подпапке LOGS находятся протоколы работы службы репликации. Если номер пакета и дата изменений в web-сервере главного узла репликации не появляется или не изменяется, то следует проверить последний по дате создания файл в этой папке.
ВложениеРазмер
rpl_manager1.8.1.42.rar3.25 МБ

Редактирование учётных данных MS SQL для Feature Server

В данной статье описана утилита для смены логина/пароля к SQL серверу для FS интерактивных отчетов.

Эти данные при установке пишутся в шифрованном виде в реестр, поэтому при смене учетки на SQL сервере эти данные надо перепрописать!

Лежит на фтп в папке /rk7/INSTALL/FsSQLLoginChanger/. 

Версия 1.0 для экземпляров FS-сервера, которые были установлены с помощью инсталлятора.

Запускаем утилиту, заполняем параметры, проверяем коннект и выполняем смену (кнопка "Готово").

Рис.1 Версия 1.0

Вторая версия (1.1) отличается тем, что пользователь вводит имя экземпляра сервера вручную, поэтому позволяет менять учетные данные для тех экземпляров FS, которые были установлены вручную, а не с помощью инсталлятора.

В этом случае указываемое имя экземпляра сервера должно точно совпадать с параметром instance_name ини файла FS.

Рис.2 Версия 1.1

 

Создание нового интерактивного отчёта


1. Создание отчёта для FastReport

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

Создание ИА отчета возможно только в том случае, если при установке инсталлятором сервера функции отчетов была включена настройка "Разрешить редактирование словарей". В противном случае, в файле "IRReportsFSP.ini" указать "MasterServer=1".

Итак, начнём с формирования набора данных. Заходим в менеджерской программе в «Настройки --- Интерактивные отчёты --- ИА наборы данных» (см. рис. 1).

Рис. 1 - ИА Наборы данных

В открывшемся окне создадим новый датасет («New IR Data Set») в группе «Прочие наборы для отчётов» (см. рис. 2).


Рис. 2 - Создание нового датасета

Задаём «Название» и «Сист. имя» созданному набору данных (см. рис.3).


Рис. 3 - Задание названия и системного имени

Содержимое свойства «SQL запрос» (рис.4):

Рис. 4 - Содержимое свойства  «SQL запрос»

SELECT

      r.NAME AS "NAME" 

       ,ol.DATETIME AS "DATETIME"

      ,ol.PARAMETER AS "PARAMETER"

      ,e.NAME AS "OPERATOR"

      ,e2.NAME AS "MANAGER"

      ,COUNT(ORDERS00.ORDERNAME) as "CNTORDERS"

      ,r.SIFR AS "SIFR"                             

      ,r.GUIDSTRING AS "GUIDSTRING" 

  FROM OPERATIONLOG ol                 

left join VISITS v on v.SIFR=ol.VISIT and v.MIDSERVER=ol.MIDSERVER and v.ISTARTCOMMONSHIFT=ol.ICOMMONSHIFT

left join EMPLOYEES e on e.SIFR = ol.OPERATOR

left join EMPLOYEES e2 on e2.SIFR = ol.MANAGER

left join CASHES c on c.SIFR = ol.STATION

left join CASHGROUPS cg on cg.SIFR = c.CASHGROUP

left join RESTAURANTS r on r.SIFR = cg.RESTAURANT

left join ORDERS ORDERS00

  ON ORDERS00.VISIT=ol.VISIT AND ORDERS00.MIDSERVER=ol.MIDSERVER AND ORDERS00.ICOMMONSHIFT=ol.ICOMMONSHIFT AND ORDERS00.STARTSERVICE<=ol.DATETIME and ORDERS00.ENDSERVICE>=ol.DATETIME

WHERE (r.GUIDSTRING IN (:RESTAURANT2)) AND (ol.DATETIME >= :date1) AND (ol.DATETIME <= :date2) and

 OPERATION=833

group by

       ol.DATETIME

      ,ol.PARAMETER

      ,e.NAME

      ,e2.NAME

      ,r.NAME

      ,r.SIFR

      ,r.GUIDSTRING

order by ol.DATETIME

Параметры в запросе помечаются двоеточием и последующим слитным написанием имени параметра на латинице. Например:     :RESTAURANT2

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

После корректного указания SQL-запроса в наборе датасета создадутся соответствующие поля. В свойствах полей можно поменять отображаемое название, включить/отключить сортировку и группировку данных (см. рис. 5).

Рис. 5 - Поля ИА набора данных

Свойства созданных параметров доступны на вкладке «Параметры ИА Набора данных». Во вкладке "Параметры ИА набора данных" с версии плагина 1.17.1 можно вносить подсказки для параметров, отображаемых в фильтре отчета. Для этого в поле "Описание" необходимо внести описание параметра (см. рис. 6).

Рис. 6 - Внесение описания параметров ИА набора данных

Начиная с версии плагина 1.23.1, для параметров: дата, дата и время, строка-  используется свойство Обязательный параметр (см. рис.6а).

Рис.6а - Свойство Обязательный параметр

Если свойство Обязательный параметр не заполнено, то при выполнении отчета появляется предупреждение (см. Рис. 6б).

Рис.6б - Предупреждение

Далее описание будет отображаться в фильтре отчета при выборе параметра (см. рис.7).

Рис. 7 - Отображение описания параметров в фильтре отчета

 

В примере для параметра RESTAURANT2 включено свойство TypeListFromSql , что означает выбор значений из набора данных полученного с помощью SQL-запроса указанного в свойстве «SQL запрос» (см. рис. 8).

 

Рис. 8 - Параметры ИА набора данных

 

Сам SQL-запрос для параметра RESTAURANT2 (см. рис. 9)

Рис. 9 - SQL-запрос для параметра RESTAURANT2


2. Создание макета печатной формы отчёта

Для создания макета печатной формы отчета необходимо выбрать меню "Расширения"-"ИА отчеты" (см. рис. 10)

Рис. 10 - "Расширения"-"ИА отчеты"

 

Для созданного отчёта необходимо указать тип вывода. Для печатной формы свойству RepType указать значение Fast Report (см. рис. 11)

Рис. 11 - Указание свойства печатной формы

После перехода в свойство "Макет", откроется окно с запросом значений параметров  имеющихся в отчёте (см. рис. 12):

Рис. 12 - Параметры, имеющиеся в отчете

После ввода параметров откроется окно редактирования печатной формы отчёта (см. рис. 13). Если не понятно как работать в этом окне, то следует обратиться к инструкции по дизайнеру отчётов FastReport 4.

Рис. 13 - Окно редактирования печатной формы отчёта

После завершения редактирования макета, можно открыть отчёт уже через пользовательский интерфейс (см. рис. 14).

Рис. 14 - Просмотр отчета через пользовательский интерфейс

 

Рис. 15 - Печатная форма отчета


3. Создание интерактивного отчёта для экранной формы

3.0. Описание действий

3.0.1. Воспользуемся ранее созданным датасетом. Т.к. датасет есть, то остаётся красиво вывести подготовленные данные на экран. Создаём новый отчёт и, дав ему название, указываем в свойстве «RepType» значение DesktopGrids (см. рис.16).

Рис. 16 - Выбор свойства отчета

3.0.2. Далее, открываем макет этого отчёта и видим абсолютно пустое текстовое поле, которое предстоит заполнить.

3.0.2.1. Описание макета придётся писать в ручную. Но для облегчения задачи можно взять за основу любой из доступных макетов экранного отчёта (см. рис. 17).

рис. 17 - Пример описания макета

3.0.2.2. Вот, что примерно должно получиться в макете:

<IR_FORM borderwidth="10"> <OBJECT type="IR_SQL" guid="{CFEACC30-A18E-4071-A0AA-69290DD6789F}" order="0"> </OBJECT>
<OBJECT type="IR_PANEL" borderwidth="10" order="0">
                <OBJECT type="IR_PANEL" order="0">                           
                               <OBJECT type="IR_BUTTON" guid="{BEE1200A-A95D-4DDB-BD28-003A1D96A286}" order="0">
                                               <TEXT>Остановка ресторана</TEXT>
                                               <ANCHORS>akLeft, akTop</ANCHORS>
                                               <IHEIGHT>35</IHEIGHT>
                                               <IHEIGHT>195</IHEIGHT>
                                               <ALIGNMENT>alRight</ALIGNMENT>
                               </OBJECT>                              
                               <ANCHORS>akLeft, akTop</ANCHORS>
                               <ALIGNMENT>alTop</ALIGNMENT>
                               <IHEIGHT>35</IHEIGHT>
                </OBJECT>               
                <OBJECT type="IR_REPORTTITLE"  order="1">
                               <TEXT>%REP_NAME%</TEXT>
                               <ANCHORS>akLeft, akTop</ANCHORS>
                               <ALIGNMENT>alTop</ALIGNMENT>
                               <IHEIGHT>30</IHEIGHT>
                               <IWIDTH>100</IWIDTH>
                </OBJECT>                
                <OBJECT type="IR_REPORTFILTER"  order="2">
                               <TEXT>Ресторан: %RESTAURANT2%
Дата: %date1% - %date2%</TEXT>
                               <ANCHORS>akLeft, akTop</ANCHORS>
                               <ALIGNMENT>alTop</ALIGNMENT>
                               <IHEIGHT>60</IHEIGHT>
                               <IWIDTH>100</IWIDTH>
                </OBJECT>          
                <ANCHORS>akRight, akTop</ANCHORS>
                <ALIGNMENT>alTop</ALIGNMENT>
                <IHEIGHT>130</IHEIGHT>
                <IWIDTH>1000</IWIDTH>
</OBJECT>
<OBJECT type="IR_PANEL" autosize="1" order="1">
  <OBJECT type="IR_DS" guid="{48B8FE07-3EAE-4D48-B8A5-6D05623F6307}" order="5">
    <ANCHORS>akLeft, akTop</ANCHORS>
    <ALIGNMENT>alTop</ALIGNMENT>
    <IHEIGHT>100</IHEIGHT>
    <IWIDTH>1000</IWIDTH>
    <COLMOVING>0</COLMOVING>
    <AUTOSIZE>1</AUTOSIZE>
    <EXPANDLEVEL>-1</EXPANDLEVEL>
                <FIELDS>
                               <FIELD sysname="NAME" alignment="taLeftJustify">
          <IMINWIDTH>150</IMINWIDTH>
                      </FIELD>
                    <FIELD sysname="DATETIME" alignment="taCenter">
          <IMINWIDTH>80</IMINWIDTH>
        </FIELD>
                    <FIELD sysname="PARAMETER" alignment="taRightJustify" allagregate="sum" format="%INTEGER%">
          <IMINWIDTH>100</IMINWIDTH>
        </FIELD>
                    <FIELD sysname="OPERATOR" alignment="taLeftJustify">
          <IMINWIDTH>150</IMINWIDTH>
        </FIELD>
                    <FIELD sysname="MANAGER" alignment="taLeftJustify">
          <IMINWIDTH>150</IMINWIDTH>
        </FIELD>
        <FIELD sysname="CNTORDERS" alignment="taRightJustify" allagregate="sum" format="%INTEGER%">
          <IMINWIDTH>100</IMINWIDTH>
        </FIELD>
                               <FIELD sysname="SIFR" colvisible="0">
          <IMINWIDTH>150</IMINWIDTH>
        </FIELD>
                               <FIELD sysname="GUIDSTRING" colvisible="0">
          <IMINWIDTH>150</IMINWIDTH>
        </FIELD>
     </FIELDS>
    <FOOTER>1</FOOTER>
  </OBJECT>
<ANCHORS>akRight, akTop</ANCHORS>
<ALIGNMENT>alTop</ALIGNMENT>
<IHEIGHT>130</IHEIGHT>
<IWIDTH>1000</IWIDTH>
<AUTOSIZE>1</AUTOSIZE>
</OBJECT>
</IR_FORM>

3.0.2.3. А теперь важное пояснение к содержанию описания макета.

В строке

<IR_FORM borderwidth="10"> <OBJECT type="IR_SQL" guid="{CFEACC30-A18E-4071-A0AA-69290DD6789F}" order="0"> </OBJECT>

оставляем всё как есть, т.к. здесь происходит технический вызов пересчёта агрегатов для отчёта.

Строка ниже описывает кнопку, при нажатии которой откроется печатная форма отчёта.

<OBJECT type="IR_BUTTON" guid="{BEE1200A-A95D-4DDB-BD28-003A1D96A286}" order="0">

значение свойства guid берём из SQL-таблицы [IR_REPORTS] для нашего отчёта «Отчёт по приостановке работы ресторана»

Далее, в строке

  <OBJECT type="IR_DS" guid="{48B8FE07-3EAE-4D48-B8A5-6D05623F6307}" order="5">

значение свойства guid берём из SQL-таблицы [IR_DATASETS] для нашего отчёта «Приостановка работы ресторана 2»

3.1. Пример создания экранной формы

Допустим необходимо сделать копию отчета "Продажи официантов" и удалить в макете поле "НСП".

Порядок действий будет следующий:

  1. В справочнике "Расширения - ИА Наборы данных" создаем новый датасет как копию предустановленного (см. рис. 18).

Рис. 18 - Копирование Датасета

  1. В свойстве "SQL запрос" меняем запрос, в результате чего будут пересозданы все поля и параметры.
SELECT
(case :USE_ALT_LANG when 0 then RESTAURANTS00.NAME else 
(case RESTAURANTS00.ALTNAME when '' then RESTAURANTS00.NAME 
else isnull(RESTAURANTS00.ALTNAME,RESTAURANTS00.NAME) 
end) 
end) AS "RESTAURANT",
(case :USE_ALT_LANG when 0 then EMPLOYEES00.NAME else 
(case EMPLOYEES00.ALTNAME when '' then EMPLOYEES00.NAME 
else isnull(EMPLOYEES00.ALTNAME,EMPLOYEES00.NAME) 
end) 
end) AS "WAITER",
CASE WHEN MENUITEMS00.CODE IS NULL THEN DISCOUNTS00.CODE ELSE MENUITEMS00.CODE END AS "CODE",
(case :USE_ALT_LANG when 0 then MENUITEMS00.NAME else 
(case MENUITEMS00.ALTNAME when '' then MENUITEMS00.NAME 
else isnull(MENUITEMS00.ALTNAME,MENUITEMS00.NAME) 
end) 
end) AS "DISH",
SUM(STAT_RK7_SHIFTS_COMPARISON.QUANTITY) AS "QUANTITY",
SUM(STAT_RK7_SHIFTS_COMPARISON.PAIDSUM) AS "PAIDSUM",
SUM(STAT_RK7_SHIFTS_COMPARISON.TAXSUM-STAT_RK7_SHIFTS_COMPARISON.TAXESADDED) AS "TAXSUM"
,SUM(STAT_RK7_SHIFTS_COMPARISON.TAXESADDED) AS "nsp"
FROM STAT_RK7_SHIFTS_COMPARISON
LEFT JOIN RESTAURANTS RESTAURANTS00
  ON (RESTAURANTS00.GUIDSTRING = STAT_RK7_SHIFTS_COMPARISON.RESTAURANTGUID)
LEFT JOIN MENUITEMS MENUITEMS00 ON MENUITEMS00.GUIDSTRING=STAT_RK7_SHIFTS_COMPARISON.DISHGUID
LEFT JOIN DISCOUNTS DISCOUNTS00 ON STAT_RK7_SHIFTS_COMPARISON.DISHGUID=DISCOUNTS00.GUIDSTRING
LEFT JOIN EMPLOYEES EMPLOYEES00 ON EMPLOYEES00.GUIDSTRING=STAT_RK7_SHIFTS_COMPARISON.WAITERGUID
WHERE (STAT_RK7_SHIFTS_COMPARISON.VOID IS NULL) AND (STAT_RK7_SHIFTS_COMPARISON.RESTAURANTGUID IN (:RESTAURANT)) AND (STAT_RK7_SHIFTS_COMPARISON.SHIFTDATE >= :date1) AND (STAT_RK7_SHIFTS_COMPARISON.SHIFTDATE <= :date2)
... и так далее

Появится окно с подтверждением. Соглашаемся ( см. рис. 19) и сохраняем изменения. В результате поле "НСП" исчезнет из структуры Датасета.

Рис. 19 -  Сохранение изменений

  1. Создаем копию ИА отчета, переименовываем его и добавляем датасет, созданный в п.1. Старый датасет удаляем.

Рис.  20 - Привязка Датасета к отчету

  1. Создаем копию Печатной формы, переименовываем её и добавляем датасет, созданный в п.1(см.рис.выше). Старый датасет удаляем. Редактируем макет - удаляем мемо-поля с сылкой на несуществующий параметр, иначе в предварительном просмотре увидим предупреждение (см. рис. 21).

Рис. 21 - Предупреждение

Рис. 22 - Редактирование макета

  1. В свойсвах печатной формы копируем гуид (guid)

Рис. 23 - Свойства печатной формы

  1. В свойстве "Макет" отчета прописываем для тега <OBJECT type="IR_BUTTON" guid="{289E795E-05B4-49A8-93F3-BB8C123BA47C}" order="0"> гуид печатной формы:

Рис.  24 - Вызов контекстного меню интерактивного отчета

Рис. 25 - Свойство Макет отчета

7. В свойстве "Макет" отчета прописываем также аналогично для тега <OBJECT type="IR_DS" guid="{48B8FE07-3EAE-4D48-B8A5-6D05623F6307}" order="5"> значение свойства guid

которое берём (копируем) из свойств ИА набора данных для этого отчёта.

3.2. Механизм ссылок в ИА отчетах

Существует возможность вызывать экранную форму связанного отчета из уже открытого ИА отчета, с автозаполнением параметров (см. рис. 26).

 

Рис. 26 – Вызов экранной формы связанного ИА отчета

Для создания экранной формы необходимо:

1. В датасете исходного отчета выбрать поле, из которого необходимо получить связанный отчет. По нажатию правой кнопки мыши вызвать выпадающее меню. Выбрать пункт «Создать новую ИА связь» (см. рис. 27).

 

Рис. 27 - Создание новой ИА связи

2. В свойстве созданной ИА связи «ИА отчет» выбрать отчет, который необходимо вызывать (см. рис. 28).

 

Рис. 28 – Выбор связанного ИА отчета

3. Для ограничения запуска связанного отчета необходимо воспользоваться свойством «Vaiue». Запуск вызываемого отчета будет выполняться только в том случае, если значение в вызывающем поле (не котором кликнули для запуска отчета) равно значению «Value». Этот механизм предназначен для возможности вызова разных связанных отчетов из одного и того же поля исходного отчета.

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

В настройках детализации ИА связи необходимо заполнить следующие свойства: «Параметр грида», «Поле источник», «Параметр источник».

«Параметр грида» - системное имя параметра фильтра, в который нужно передать значение из поля исходного отчета (см. рис. 29);

 

Рис. 29 – Системное имя параметра фильтра

«Поле источник» - это GUID поля в исходном отчете, значение из которого (поля) нужно передать в фильтр вызываемого отчета (см. рис. 30);

 

Рис. 30 - GUID поля в исходном отчете

«Параметр источник» - это системное имя параметра в исходном отчете, по аналогии с «Параметром грида» (поле, не обязательное к заполнению). Это поле, позволяющее передать значение какого-либо параметра из фильтра исходного отчета в фильтр вызываемого отчета.


4. Использование скриптов для изменения внешнего вида интерактивных отчетов (Desktop/FastCube)

Скрипт позволяет управлять форматированием как отдельной ячейки, так и всей строки. Для форматирования отдельной ячейки скрипт задается у ячейки. Для форматирования строки, скрипт задается у датасета. Список переменных, которые используются для форматирования:
 
Для обычной ячейки:
 
FONT_COLOR - цвет текста;
FONT_NAME - шрифт;
FONT_SIZE - размер шрифта;
FONT_STYLE - стиль текста;
FIELD_COLOR - цвет ячейки.
 
Для промежуточного итога:
 
FONT_COLOR_GR_SUM - цвет текста;
FONT_NAME_GR_SUM - шрифт;
FONT_SIZE_GR_SUM - размер шрифта;
FONT_STYLE_GR_SUM - стиль текста;
FIELD_COLOR_GR_SUM - цвет ячейки.
 
Для итога:
 
FONT_COLOR_SUM - цвет текста;
FONT_NAME_SUM - шрифт;
FONT_SIZE_SUM - размер шрифта;
FONT_STYLE_SUM - стиль текста;
FIELD_COLOR_SUM - цвет ячейки.
 
Для получения значения ячейки в скрипте необходимо использовать:
 
FIELD_VALUE - обычная чейка;
FIELD_VALUE_GR_SUM - промежуточный итог;
FIELD_VALUE_SUM - итог.
 
Пример простого скрипта для ячейки (см. рис. 31):
Рис. 31 - Пример скрипта для изменения параметров ячейки
 
BEGIN
  FONT_COLOR:=0;
  FONT_NAME:='Verdana';
  FONT_SIZE:=8;
  IF (FIELD_VALUE > 20) THEN BEGIN
    FONT_SIZE:=18;
    FONT_COLOR:=10485760;
    FONT_NAME:='Vijaya';
  END;
END.
где
 
FONT_COLOR - цвет шрифта;
FONT_SIZE - размер шрифта;
FONT_NAME - шрифт;
FIELD_VALUE - значние ячейки.
 
Так же в скрипте (только для простой ячейки) можно использовать значения всех полей отчета. Для этого к системному имени поля необходимо дописать "FIELD_". Аналогичным образом можно создавать скрипты для форматирования строки (обычной строки отчета).
 
Важно: в скрипте для строки нельзя использовать "FIELD_VALUE" (значение текущей ячейки), только обращение к полям отчета (см. рис. 32).
 
Рис. 32 - Использование значений другого поля отчета.
 
Так же есть возможность задавать форматирование в FastCube, используя внешние параметры. Для этого скрипт задается у датасета, но в скрипте указывается, какое поле необходимо форматировать.
 
Пример скрипта:
 
BEGIN
  IF (FIELD_NAME = 'IBASICCURRENCY') THEN BEGIN
    IF (FIELD_VALUE > FIELD_SCRPARAM) THEN BEGIN
      FIELD_COLOR := 64000;
    END;
  END;
END.
Где SCRPARAM - имя поля, которое выступает в качестве параметра скрипта,
FIELD_NAME - имя поля на котором необходимо выполнить скрипт
 
Список полей, которые передаются в виде параметров в скрипт, задаются в макете отчета. Пример макета:
 
<IR_FORM borderwidth="5">
    <OBJECT type="IR_FASTCUBE" name="IR_FASTCUBE2" guid="{642EC34D-D8E0-428D-92E2-FBBD333D280E}" order="0">
        <ANCHORS>akLeft, akTop</ANCHORS>
        <ALIGNMENT>alClient</ALIGNMENT>
        <AUTOSIZE>0</AUTOSIZE>
          <SCRIPTPARAMS>
            <PARAM name = "SCRPARAM"/>
          </SCRIPTPARAMS>
    </OBJECT>
</IR_FORM>

5. Использование скриптов для функционального изменения фильтров отчета

Изменения доступны с версии плагина 1.22.3.

Изменения не доступны для отчетов для рассылки.

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

 - изменение видимости параметра фильтра;

- включение свойства парметра "только для чтения";

- изменение цвета текста параметра.

Для вышеуказанных изменений необходимо в свойствах отчета в зоне "Основное" - "Скрипт фильтра" в стандартном редакторе Fast script ввести соответствующую информацию (см. рис. 33).

Рис. 33 - Свойство "Скрипт фильтра"

 В скрипте доступны переменные:

[ИМЯ_ПАРАМЕТРА]_VALUE - значение параметров из фильтра:

- значения для списков представлены в виде значений выбранных пунктов, записанных через запятую;
- значения логических параметров представлены в виде значений 0 и 1, где 0 - это false, 1 - true;
- значение параметров формата дата/время представлены в виде "yyyy-mm-ddThh:nn:ss".

[ИМЯ_ПАРАМЕТРА]_VISIBLE - видимость параметра в фильтре.

[ИМЯ_ПАРАМЕТРА]_READ_ONLY - свойство параметра "только для чтения".

[ИМЯ_ПАРАМЕТРА]_FONT_COLOR - цвет текста, задается в виде числа.

[ИМЯ_ПАРАМЕТРА] - системное имя параметра в фильтре.

Пример скрипта представлен на рис. 34.

Рис. 34 - Пример скрипта для изменения фильтра отчета

BEGIN
  if((Pos('{FB5F2F0F-C65C-45EB-8858-22037ABC2B85}',RESTAURANT_VALUE))>0) then
    DATE1_VISIBLE := true
  else DATE1_VISIBLE := false;

  if not(DATE1_VISIBLE) then
    DATE2_FONT_COLOR := 700
  else  DATE2_FONT_COLOR := 0;

  if(DATE2_FONT_COLOR = 700) then
    STATION_READ_ONLY := false
  else STATION_READ_ONLY := true;
END.

Настройка плагина рассылки отчётов

1 Настройка связи Plugin <-> Сервер функции отчетов <-> Common server

Плагин служит для формирования, отображения и рассылки отчетов (web-отчетов).

Плагин запрашивает информацию, необходимую для отчетов, у сервера функции отчетов через Common Server.

 

Рис. 1 – Схема взаимодействия Plugin и сервера функции отчетов

Плагин должен находиться в папке «Plugins». Для его работы необходимо, чтобы Common Server и сервер функции отчетов были настроены и запущены.

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

Примечание: плагин хранит всю информацию в БД SQL, и если создается новая БД, то остаются только предустановленные элементы. Настройки рассылки, календарь рассылки, отчеты для рассылки, получатели рассылки и внешние хранилища, расписания придется создавать заново.

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

Для настройки работы плагина в файле SchRepPluginClient.ini делаем следующее (см. рис. 2):

Рис. 2 – Настройки SchRepPluginClient.ini

- в строке «Url» - указываем адрес Common server;

- в строке «fs_guid» - указываем i_guid Feature Server;

- в строке «ConnectTimeout» - указываем таймаут на установленные соединения;

- в строке «ReceiveTimeout» - указываем таймаут, в течение которого объект будет ожидать получение данных;

- в строке «SendTimeout» - указываем таймаут, в течение которого объект будет ожидать успешного завершения отправки данных. Информация по таймаутам не является обязательной для заполнения.

2 Настройка рассылки отчетов

Для создания новой рассылки на электронную почту делаем следующее:

- Для активации рассылки в ini-файле FS в секции [FS_Mailing ]установить параметр Mailing=1 (см. рис. 2а);

- Задаем настройки рассылки (задаем почтовый ящик отправителя);

- Создаем календарь рассылки (расписание, по которому будет осуществляться рассылка);

- Создаем новый отчет для рассылки (указываем пользователя, которому будет направлен отчет, календарь рассылки, и непосредственно отчет, который будет получать пользователь).

Для создания новой рассылки на электронное хранилище WebDav делаем следующее:

 - Для активации рассылки в ini-файле FS в секции [FS_Mailing ]установить параметр Mailing=1 (см. рис. 2а);

Задаем настройки рассылки (задаем почтовый ящик отправителя);

- Создаем календарь рассылки (расписание, по которому будет осуществляться рассылка);

- Создаем новую группу внешних хранилищ;

- Создаем новый отчет для рассылки (указываем пользователя, которому будет направлен отчет, календарь рассылки, и непосредственно отчет, который будет получать пользователь).

Рис. 2а - Пример настройки ini-файла FS

3 Настройка рассылки на электронную почту

3.1 Настройка рассылки

Для настройки рассылки входим в меню «Расширения»-«Настройка рассылки» (см. рис. 3). Вводим хост, порт, почту отправителя, пароль и имя отправителя, от которого будут отправляться отчеты (см. рис. 4).

Рис. 3 – Путь к справочнику «Настройка рассылки»

Рис. 4 – Настройка рассылки

3.2 Создание календаря рассылки

Для создания календаря рассылки входим в меню «Расширения»-«Календарь рассылки» (см. рис. 5). В левой части окна правой кнопкой мыши вызываем контекстное меню, выбираем пункт «Создать новый календарь рассылки» (см. рис. 6).

Рис. 5 – Путь к справочнику «Календарь рассылки»

Рис. 6 – Создание нового календаря рассылки

Правой кнопкой мыши на созданном календаре рассылки вызываем контекстное меню, выбираем пункт «Свойства». Вводим название, альтернативное название календаря, делаем статус «Активный», сохраняем (см. рис. 7). Строки «Код» и «GUID» заполнятся автоматически.

Рис. 7 – Свойства календаря рассылки

В поле «Детализация календаря рассылки» правой кнопкой мыши вызываем контекстное меню, выбираем «Создать новую детализацию рассылки» (см. рис. 8). 

Рис.  8 - Создание новой детализации календаря рассылки

В свойствах детализации рассылки, в зоне «Главное» указываем название и, если требуется, альтернативное название детализации, устанавливаем статус «Активный» (см. рис. 9).В зоне «Настройки» вводим дату начала и окончания рассылки (ежедневно в этот период будет совершаться рассылка). Устанавливаем, по каким дням недели необходима рассылка (в том случае, если дни недели не будут указаны, рассылка будет производиться ежедневно). В строке «Событие» выбираем событие, которое будет являться стартом для рассылки. В строке «Количество» указываем, сколько отчетов ежедневно хотим получать. В строке «Интервал» указываем промежуток времени (в минутах), через который хотим получать отчеты (нужно помнить, что на формирование отчета требуется определенное время, поэтому сообщение с отчетом может задержаться на несколько минут от назначенного времени). В том случае, если интервал равен нулю, в строке «Количество» автоматически будет установлена единица. Для получения рассылки в последний день месяца устанавливаем галочку "Последний день месяца". Для получения рассылки в конкретное число месяца -указываем число в строке "День месяца" (см. рис. 9).

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

 

Рис. 9 – Настройка детализации

При внесении изменений в ранее созданный календарь рассылки (увеличение количества отчетов, изменение дней недели рассылки и пр.) пользователи получат все отчеты по новому расписанию, которые не были отправлены с даты начала по текущий период. В связи с этим рекомендуется вводить изменения в каледарь рассылки с изменением "Даты начала" на текущую.

3.3 Создание нового отчета для рассылки

Для создания нового отчета для рассылки входим в меню «Расширения»-«Отчеты для рассылки» (см. рис. 10). В левой части окна правой кнопкой мыши вызываем контекстное меню, выбираем пункт «Создать новую рассылку» (см. рис. 11).

Рис. 10 – Путь к справочнику «Отчеты для рассылки»

 

Рис. 11 – Создание новой рассылки

Правой кнопкой мыши на созданной новой рассылке вызываем контекстное меню, выбираем пункт «Свойства» (см. рис. 12). В открывшемся окне в строке "Название" вводим название, в строке «ИА отчет» из выпадающего списка выбираем отчет, который необходимо рассылать, в строке «Тип экспорта» выбираем тип формата файла рассылки (при выборе "PDF", "TXT", "CSV", "RTF", "XLS" будут отправлены файлы в соответствующих форматах; при выборе "PLAN TEXT" (с версии плагина 1.17.1) текст отчета будет отображен в теле письма), в строке «Календарь рассылки» - календарь рассылки, созданный в п. 2.2, в строке "Пароль" указываем пароль, который необходимо будет ввести при получении рассылки с отчетом (необязательное действие)(см. рис. 13). 

Рис. 12 - Вызов окна свойств рассылки

Рис. 13 - Свойства рассылки

Далее выбираем строку "Фильтр", в разделе "Ресторан" выбираем рестораны, о которых необходим отчет (см. рис. 14). 

 

Рис. 14 – Свойства отчета рассылки

Для того, чтобы отчет формировался на актуальные даты (сегодня-на сегодня, завтра-на завтра и т.д.), необходимо в строке "Начальная дата" ввести информацию согласно рис. 15, в строке "Конечная дата"-согласно рис. 16. При таких параметрах пропущенные отчеты будут приходить с данными на текщую дату, а не на дату в плане рассылки.

Рис. 15 - Начальная дата

Рис. 16- Конечная дата

В случае, если рассылка по-какой то причине была пропущена и необходимы отчеты с данными на момент плана рассылки, в строке "Начальная дата" необходимо внести информацию согласно рис.17, в строке "Конечная дата" согласно рис. 18 (реализовано в версии плагина 1.14.8 и старше).

Рис. 17 - Начальная дата

Рис. 18 - Конечная дата

В том случае, если необходим отчет за прошедший месяц, в строке "Начальная дата" необходимо внести информацию согласно рис. 19, в строке "Конечная дата" согласно рис. 20. При таких параметрах отчет сформируется за количество дней текущего месяца.

Рис. 19 - Начальная дата

Рис. 20 - Конечная дата

Также для определения начальной и конечной даты формирования отчета можно воспользоваться предустановленными скриптами. Для этого необходимо вызвать контекстное меню и выбрать подходящий вариант (см. рис. 21).

Рис. 21 - Предустановленные скрипты

Для того, чтобы формировать отчет не только на дату, но и на время рассылки, необходимл использовать параметр %TASK_DATETIME% (см. рис. 21а).

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

Рис. 21а - Использование даты и времени рассылки

Далее необходимо добавить получателя отчета. Для этого в поле «Работники» правой кнопкой мыши вызвать контекстное меню, выбрать пункт «Добавить получателя» (см. рис. 22), после чего появится список с ресторанами и сотрудниками ресторанов. Из списка выбрать требующегося сотрудника, нажать кнопку «Добавить» (см. рис.23). Перед добавлением получателя необходимо убедиться, что в свойствах получателя рассылки указана электронная почта (см. рис. 24).

Рис. 22 - Добавление получателя рассылки

Рис. 23 – Выбор получателя рассылки

Рис. 24 - Указание эелектронной почты получателя рассылки

В свойствах получателя рассылки устанавливаем статус «Активный», в строке "Тип отправления" в выпадающем меню указываем способ отправления отчета "Отправить по почте"(см. рис. 25).

Рис. 25 – Свойства получателя рассылки

4 Рассылка на внешнее электронное хранилище

Возможна рассылка отчетов на следующие внешние хранилища: Яндекс Диск, GoogleDocs, DropBox, любая папка на диске.

4.1 Порядок настройки рассылки на внешние электронные хранилища

4.1.1 Настройка рассылки

См. п. 3.1

4.1.2 Создание календаря рассылки

См. п. 3.2

4.1.3 Создание новой группы внешних хранилищ

Для создания новой группы внешних хранилищ входим в меню "Расширения"-"Внешние хранилища". В левой части окна правой кнопкой мыши вызываем контекстное меню, выбираем пункт "Создать новую группу внешних хранилищ" (см. рис. 26).

Рис. 26 - Создание новой группы внешних хранилищ

В зоне "Внешнее хранилище"в контекстном меню выбираем пункт "Создать новое внешнее внешнее хранилище" (см. рис. 27).

Рис. 27 - Создание нового внешнего хранилища

В зоне "Главное" указываем название, альтернативное название, устанавливаем статус "Активный". В зоне "Основное" указываем хост (для ЯндексДиск - "webdav.yandex.ru"; для Google Docs - "docs.google.com"; для Drop Box - "dropbox.com", для сохранения на диск - "local"), порт (для для ЯндексДиск - 443, либо 80; для Google Docs - 0; для Drop Box -  0, для сохранения на диск - не заполняется), имя пользователя (для ЯндексДиск - учетная запись на Яндекс Диске, для Google Docs - почтовый адрес Google; для Drop Box - не указывается, для сохранения на диск - не заполняется), пароль для доступа к хранилищу (для ЯндексДиск - пароль от аккаунта на Яндекс Диске, для Google Docs - пароль от аккаунта Google; для Drop Box - ключ доступа к аккаунту для стороннего приложения (см. п. 4.2.2), для сохранения на диск - не заполняется), путь к файлу в хранилище (для для ЯндексДиск - указывается директория на ЯндексДиск, если путь не указан или директория отсутствует, то файл будет располагаться в корне аккаунта; для Google Docs - не заполняется; для Drop Box - например FS/TEST/. Путь должен начинаться с имени папки и заканчиваться символом /. Если путь не указан, то файл будет выложен в корень аккаунта; для сохранения на диск - указать путь вида: D:\TEST_local\). (см. рис. 28).

Рис. 28 - Настройки внешнего хранилища

4.1.4 Создание нового отчета для рассылки

Для создания нового отчета для рассылки повторяем все действия, описанные в п. 3.3. Только в свойствах получателя (см. рис. 20) в строке "Тип отправления" выбираем "Отправить на Webdav ресурс" (см. рис. 29), в строке "Внешнее хранилище" выбираем одно из созданных внешних хранилищ на ресурсах Яндекс Диск, Google Docs или Drop Box. При выборе типа экспорта "PLAN TEXT" отчеты будут отправлены в файле формата .txt (по остальным типам экспорта см. п. 3.3).

Рис. 29 - Свойства получателя рассылки

4.2 Порядок настройки аккаунтов внешних хранилищ

4.2.1 Настройка аккаунта Google Docs

Для отправки отчетов на Google docs необходимо в настройках аккаунта на вкладке "Безопасность" Google разрешить доступ сторонним приложениям (см. рис. 30).

Рис. 30 - Настройки безопасности аккаунта Google Docs

Синхронизация Google docs (в том числе и web интерфейса) может длится достаточно долго. Поэтому отчеты могут приходить (и отображаться при подключении через web интерфейс) с задержкой в 10-20 минут.

Перечень полученных отчетов на Google Docs пердставлен на рис. 31.

Рис. 31 - Перечень отчетов, полученных на Google Docs

4.2.2 Настройка аккаунта DropBox

 Для настройки аккаунта DropBox необходимо: 

- Перейти по ссылке https://www.dropbox.com

- Войти в систему (ввести имя и пароль);

- Нажать кнопку "Create app" (см. рис. 32.)


Рис. 32 - Create app

- В открывшемся окне (см. рис. 33) выбрать "Dropbox API app";

Рис. 33 -Dropbox API app

- В открывшемся окне (см. рис. 34):

  • В разделе What type of data does your app need to store on Dropbox? выбрать Files and datastores
  • В разделе Can your app be limited to its own folder? выбрать No My app needs access to files already on Dropbox.
  • В разделе What type of files does your app need access to? выбрать All file types My app needs access to a user's full Dropbox. Only supported via the Core API.
  • В разделе Provide an app name, and you're on your way. указать уникальное имя (рекомендуется имя вида FS_CompanyName_1, где CompanyName - Наименование организации, 1 - порядковый номер, если будет несколько аккаунтов. Имя должно быть уникальным).
  • Нажать кнопку "Create App".

Рис. 34 - Выбор параметров

​- В появившемся окне свойств приложения (см. рис. 35), в разделе "Generated access token" нажать кнопку "Generate", при этом будет сгенерирован ключ доступа к аккаунту для стороннего приложения (см. п. 4.1.3).

Рис. 35 - Ключ доступа к аккаунту для стороннего приложения

5 Экспорт отчётов во внешние базы данных

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

5.1 Создание набора данных

Создаем набор данных для отчета обычным способом

5.2 Создание отчёта

Создаем отчет обычным способом. В поле "Тип отчета" выбираем "Export report"( см. рис.36).

 

Рис. 36 - Выбор типа отчета для экспортного отчета

Для создаия макета в строке "Макет" вводим sql-запрос (см. рис. 37).

Рис. 37 - Макет отчета

5.3 Создание календаря рассылки

См. п. 3.2

5.4 Создание подключения к БД

Для создания нового подключения к внешней БД необходимо в меню "Расширения"-"Внешние хранилища" в поле "Подключение к БД" создать новое подключение к БД (см. рис. 38)

РИс. 38 - Создание нового подключения к БД

В свойствах подключения в строке "Название" вводим название подключения.В строке "Имя пользователя" - имя пользователя лоя БД, в которую будет экспортироваться отчет, в строке "Пароль"-пароль к БД, в которую будет экспортироваться отчет. В строке "Строка соединения" вписываем строку соединения с БД, в которую будет экспортироваться отчет (см. рис. 39).

Рис. 39 - Свойства подключения к БД

5.5 Создание экспорта по расписанию

Для создания нового экспорта по расписанию необходимо в меню "Расштирения"-"Экспорт по расписанию" в поле "Экспорт по расписанию" создать новый экспорт по расписанию (см. рис. 40)

Рис. 40 - Сщздание нового экспорта по расписанию

В свойствах экспорта в строке "Название" указываем название, в строке "ИА отчет" выбрать необходимый отчет из выпадающего списка, в строке "Календарь рассылки" выбираем календарь рассылки, в строке "Внешние хранилище" выбираем созданное в п. 5.4 подключение к БД (см. рис. 41).

Рис. 41 - Свойства экспорта

6 Рассылка через Telegram

Для рассылки отчетов на Telegram необходимо зарегистрировать bot и получить его уникальный id.

6.1 Регистрация бота

Новый бот создается при помощи @BotFather. Необходимо найти этот контакт, нажать кнопку "Start" (см. рис. 42).

Рис. 42 - @BotFather

После отправки сообщения "/start" появится список команд для бота (см. рис. 43).

Рис. 43 - Перечень команд для бота

Для создания нового бота необходимо отправить сообщение "/newbot" (см. рис.44).

Рис. 44 - Создание нового бота

Далее необходимо отправить выбрать имя новго бота и отправить его. Имя бота должно оканчиваться на "bot" (см. рис. 45). Если имя бота свободно, то система выдаст сообщение с ссылкой для быстрого добавления бота в список контактов и токен бота.

Рис. 45 - Токен и ссылка для добавления бота в список контактов

При переходе по ссылке откроется диалоговое окно с созданным ботом (см. рис. 46). А токен необходимо будет прописать в ini-файле FS.

Рис. 46 - Бот создан

При первом сообщении бот попроситлогин/пароль. “Введите почту и пароль в виде <UCS_LOGIN почта> <UCS_PASSWORD пароль>”

Пример ввода: <UCS_LOGIN m.ivanov@ucs.ru> <UCS_PASSWORD 1> (см. рис.47).

Логин - это почта работника, на которого настроена рассылка, пароль - пароль для входа в RK7.

Рис. 47 - Авторизация для получения рассылки

Для отметы авторизации необходимо ввести команду <LOGOUT> (см. рис.48).

Рис. 48 - Отказ от рассылки

6.2 Настройка ini-файла

Токен бота необходимо прописать в настройках ini-файла FS (см. рис. 49).

[FS_MAILING]
Mailing = 1
Telegram_token=151970178:AAGIVcjt5feEm4oy-Fahl6Pii8nyOPQUScY
Рис. 49 - Пример настройки ini-файла FS

6.3 Настройка рассылки

См. п. 3.1

6.4 Календарь рассылки

См. п. 3.2

6.5 Создание нового отчета для рассылки

Все действия аналогичны п. 3.3. В Только в свойствах получателя в строке "Тип отправления" выбираем "Send on Telegram"

7 Удаление рассылки в менеджерской станции

Предположим, что была настроена рассылка (каждые 100 писем через 10 минут). После этого фича-сервер создал задания на рассылку, сформировал их и записал в БД SQL (таблица TEMP_TASK).

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

Чтобы проанализировать данную ситуацию необходимо:
1. Проверить таблицу TEMP_TASK (рис. 50) на наличие записей со статусом 0,1,2 (еще не отправленные письма). Если таковые имеются, то необходимо просто дождаться окончания отработки всех заданий и в будущем создавать задания на рассылку(или не создавать вообще) с меньшим количеством писем.
2. Если в таблице все записи со статусом 3 или -1 и -2, а письма все равно отправляются, то необходимо создать задание в трекере и прикрепить к заданию БД SQL.

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

Примечание: при создании рассылки задается интервал, например 10 минут, это значит что каждые 10 минут FS будет формировать новое задание на рассылку. Однако если FS была отключена, то после включения она рассчитывает все пропущенные задания (сразу), потом они формируются и отправляются (интервал между оправками нужен чтобы рассылка не была принята за спам).

Важно: таблицу TEMP_TASK удалять нельзя. Только для тестовой базы можно изменить запросом статус у записей в этой таблице на -2 (STATUS). На рабочей БД этого делать нельзя! Нужно дожидаться окончания отправки.

Рис. 50 - Таблица TEMP_TASK базы SQL сервера справочников/отчетов

Настройка прав доступа ИА-отчётов

Чтобы настроить раздельный доступ для ролей r_keeper_7 для просмотр отчетов, чтобы каждая роль могла смотреть отчеты только разрешенных ресторанов и наоборот не смогла смотреть отчеты других необходимо: :

(указанный способ будет работать только для предустановленных ИА отчетов. Если отчет самодельный, или дорабатывался UCS отдельно от предустановки - то может и не работать, тогда надо будет у параметра "Ресторан" скорректировать запрос, выбирающий значения - просто скопировать запрос для такого же параметра из любого предустановленного отчета.)

1. Защищаем ресторан предустановленной привилегией на объект.

2. Отбираем у работников привилегии на ресторан, к которым надо запретить доступ

3. И в результате работники не видят рестораны, на которые у них нет привилегии.

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

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

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

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

Настройка фильтра ИА-отчёта с большим количеством параметров

Начиная с версии плагина 1.20.1 при больших количествах значений параметра отчета (больше 100) их варианты не отображаются при первом запуске отчета, отображается пустая строка с названием параметра. 

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

Также необходимые параметры можно найти через поиск, вписывая необходимое наименование в строку значения, и все подходящие значения отфильтруются 

 

При нажатии кнопки [+] справа в строке с названием параметра, отобразятся и будут отмечены все значения параметра 

При нажатии кнопки [-] справа в строке с названием параметра будут сняты отметки со всех значений параметра.

Если ранее отчет уже запускался с какими-то выбранными значениями из списка, то параметр будет раскрыт и выбраны эти значения параметра.

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

BEGIN
YEARS_FONT_COLOR := 0;
  TRY
    IF((YEARS_VALUE < 1980) or (YEARS_VALUE > 2099)) THEN
      YEARS_FONT_COLOR := 255;
  EXCEPT
    YEARS_FONT_COLOR := 255;
  END;
END. 

Ускорение построения интерактивных отчётов

1 Рекомендации по обслуживанию БД SQL

Выбирать время для проведения профилактик необходимо таким образом, чтобы не создавать дополнительной нагрузки на сервер во время работы с R-Keeper. Т.е. в ночное время, либо в моменты минимальной загрузки сервера или в нерабочее время. Проделывать профилактику рекомендуется хотя бы раз в месяц, т.к. частое использование этих рекомендаций, как и редкое, ведет к замедлению работы с базой.

Все скрипты запускаются из-под базы, на которой производится обслуживание.

1.1 Порядок работ

1. Отключить автоматическое сжатие (если не отключено):

ALTER DATABASE [Имя_базы] SET AUTO_SHRINK OFF

2. Запустить реиндексацию таблиц базы (раз в месяц):

------------------реиндексация таблиц

  DECLARE reindex_cursor CURSOR

  FOR

  SELECT name FROM sysobjects WHERE type = 'U'

  OPEN reindex_cursor

  DECLARE tablename sysname

  FETCH NEXT FROM reindex_cursor INTO @tablename

  WHILE (@FETCH_STATUS <> -1)

  BEGIN

  EXECUTE ('DBCC DBREINDEX(['+@tablename+'])')                    


                

  FETCH NEXT FROM reindex_cursor INTO @tablename

  END

  CLOSE reindex_cursor

  DEALLOCATE reindex_cursor

--либо

exec sp_msforeachtable N'DBCC DBREINDEX (''?'')'

3. Дефрагментация базы раз в месяц:

-------------дефрагментация базы

  exec sp_msforeachtable N'DBCC INDEXDEFRAG ([Имя_базы], ''?'')'

4. Очистка кэша

-------------очистка кэша

  DBCC FREEPROCCACHE

5. Обновить статистику

-------------обновление статистик

  exec sp_msforeachtable N'UPDATE STATISTICS ? WITH FULLSCAN'

Все эти шаги можно автоматизировать, если воспользоваться агентом MS SQL  https://docs.microsoft.com/ru-ru/sql/ssms/agent/create-a-job и поместить скрипты друг за другом.

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

ALTER DATABASE "Имя_базы" SET SINGLE_USER

7. Проверить базу на ошибки:

DBCC CHECKDB ("Имя базы", REPAIR_REBUILD) WITH NO_INFOMSGS

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

ALTER DATABASE "Имя_базы" SET MULTI_USER

2 Рекомендации по настройке службы агрегатов

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

2.1 Корректная настройка пакета смен для пересчета ("Count_shifts" доступен с 1.29.х)

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

Для небольших баз (не более 5000 смен) или баз с большим количеством смен, но с малым количеством чеков (менее 100) и их наполненности, рекомендуется устанавливать параметр «Count_shifts» от 10 до 100.

Для баз, с количеством смен от 5000 до 10000, рекомендуется устанавливать 100-500 смен для пересчета.

Для баз, с количеством смен более 10000, параметр «Count_shifts» можно устанавливать от 500 и выше.

2.2 Корректная настройка «глубины» пересчета агрегатов («Month_Recalc_Limit» доступен с  1.29.х)

Чем больше смен указано для пересчета, тем больше времени будет занимать разовый пересчет. Если есть необходимость оперативно получать данные в отчетах, можно указывать меньший объем смен (например, база может содержать данные за прошлые года, а информация по ним не критична).

За настройку «глубины» пересчета агрегатов отвечает новый параметр «Month_Recalc_Limit» (секция [FS_AGREGATE]), который ограничивает агрегирование данных в месяцах.

Пример

При указании параметра "Month_Recalc_Limit=24", агрегаты будут пересчитаны за период "Текущая дата" минус 24 месяца по настоящий момент. При контроле смен для агрегирования смены ранее 24 месяцев назад не будут учитываться.

Параметр можно менять онлайн, т.е. он применяется с момента изменения в ini-файле без перезапуска FS. Таким образом, если база огромная и пересчет всех смен может занять несколько дней, то целесообразно на момент пересчета смен после обновления ограничить выборку годом ("Month_Recalc_Limit=12") для построения отчетов, а далее увеличить этот показатель или присвоить ему значение "0" (все смены).

2.3 Время между пересчетом пакетов смен и время между проверками наличия пакетов смен для пересчета

Параметры «Time_between_recalc» (время между пересчетом пакетов смен, мин) и «Time_between_checking» (время между проверкой наличия пакетов смен для пересчета) рекомендуется оставить равными 0 и 1, соответственно. Это ускорит завершение пересчета.

2.4 Настройка параметров неиспользуемого функционала

Для уменьшения нагрузки на сервер рекомендуется не использовать параметры, которые не нужны для ресторана, например, для SH4, PDS/CRM, внешней службы, рассылки.

2.5 Обновление GUID в таблицах R-Keeper для версий RK7 7.5.2.x – 7.5.4 («UpdateStatGUID» доступен с 1.29.х)

На версиях RK7 7.5.2.x – 7.5.4 основные таблицы RK7 не имели GUID. GUID необходимы для более быстрой связи RK7-FS.

Заведен параметр, управляющий обновлением GUID в основных таблицах R-Keeper –  «UpdateStatGUID».

Если производится обновление со старой версии RK7, например, 7.5.2.х-7.5.4.х, то необходимо прописать его в ini-файле FS и установить равным 1, а после пересчета агрегатов  - 0. Этот параметр обновляет GUID основных таблиц. При большом объеме данных в базе - заметно увеличивает время при пересчете агрегатов.

2.6 Временная регулировка работы службы контроля смен (параметры «FastControlDays», «NoControlFull» доступны с 1.29.х)

Параметр «FastControlDays» позволяет контролировать указанное количество дней, а не все имеющиеся смены. Служба контролирует смены от сегодняшней даты минус n дней.

«NoControlFull» - параметр, позволяющий отключить полный контроль всех смен. Смены будут контролироваться только службой «FastControl», описанной выше.

2.7 Ускорение отчетов, использующих данные из SH4 («UpdTimeClose», «UpdTimeOpen» доступны с 1.29.х)

Глубину пересчета агрегатов для SH4 можно настроить индивидуально.

По-умолчанию, расписание пересчета агрегатов для открытого периода - 12 часов, для закрытого 7 дней. При большом объеме данных во избежание зацикливания пересчета рекомендуется увеличить промежутки времени для пересчетов.

За частоту пересчета закрытого периода отвечает параметр "UpdTimeClose".

Если нет необходимости постоянно изменять данные закрытого периода, рекомендуется установить "UpdTimeClose=30".

Это означает, что информация об изменении в закрытом периоде будет обновляться 1 раз в 30 дней.

За частоту пересчета открытого периода отвечает параметр "UpdTimeOpen".

Если база SH4 очень большая и обновленные значения из нее для ИО требуются не ежечасно, то рекомендуется выставить параметр "UpdTimeOpen=24".

3 Просмотр отчетов с большим количеством данных (от нескольких сотен тысяч) при помощи внешней службы FRVCLGenerate

3.1 Зачем необходима внешняя служба построения отчетов FRVCLGenerate?

Формирование отчетов с большим количеством данных (от нескольких сотен тысяч) реализовано посредством внешнего приложения FRVCLGenerate (оно является 64- разрядным). Для корректной работы приложения необходима 64-разрядная ОС Windows. Приложение устанавливается инсталлятором RK7. Внешняя служба позволяет обработать большой объем данных, который не может обработать 32-битная архитектура. Feature Server, как и R-Keeper, реализованы на 32х-разрядоной архитектуре. При построении отчета с большим количеством данных, превышающих объем 2Гб, с учетом метаданных, отобразить такой отчет не представляется возможным. Для этого и разработано приложение, написанное на 64-битной архитектуре, позволяющее обрабатывать объемы данных, превышающие 2 Гб. Просмотр отчетов с большим количеством данных посредством FRVCLGenerate реализован в версии плагина 1.22.5 и выше.

Просмотр отчетов с большим количеством данных возможен для Desktop (включая FastCube) -  отчетов (в формате .csv) и для FR4 - отчетов (в формате .pdf).

3.2 Каким образом работает внешняя служба?

Внешняя служба и Feature Server работают независимо друг от друга, поэтому отчет будет продолжать строиться после закрытия Feature Server и R-Keeper.

Сформированный отчет помещается в папку «tmp» рядом с исполняемым файлом службы и запаковывается в архив. Feature Server проверяет наличие файла отчета и его статус, через минуту «забирает» файл. Файл не предназначен для использования пользователем. Получить его можно только через соответствующее меню плагина. Проверить готовность файла можно через отчет в ИО «Статус отчета (внешняя служба)» (меню «Расширения» / «Интерактивные отчеты (ИО)» / «Отчеты по безопасности» / «Системные операции»).

Если с момента окончания построения отчета в течение 24 часов Feature Server «не заберет» сформированный файл отчета, то файл будет удален из внешней службы и при запуске Feature Server будет дано повторное задание внешней службе на формирование отчета. Рекомендуется оставлять Feature Server включенным.

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

3.3 Просмотр отчетов при помощи FRVCLGenerate

Для просмотра отчетов с большим количеством данных необходимо:

1. Установить FRVCLGenerate при помощи инсталлятора RK7.

2. В меню «Расширения»-«Интерактивные отчеты»

2.1 Для Desktop (включая FastCube) - отчетов (в формате .csv ):

- зайти в нужную группу отчетов;

2.2 Для FR4 - отчетов (в формате .pdf):

- зайти в нужную группу отчетов;

- открыть группу «Печатные формы».

3. Выбрать необходимый отчет, правой кнопкой мыши вызвать контекстное меню, выбрать пункт «Выполнить отчет во внешнем приложении» (см. Рис. 1). В открывшемся окне выбрать параметры отчета, нажать «ОК» (см. Рис. 2). Отобразится сообщение о формировании отчета, нажать «ОК» (см. Рис. 3). 

(рис.1)

(рис.2)

(рис.3)

4. В меню «Расширения»-«Интерактивные отчеты»-«Отчеты по безопасности»-«Системные операции»-«Статус отчета (внешняя служба)» отследить статусы выполнения отчетов (см. Рис. 4, Рис. 5).

 

(рис.4)

(рис.5)

5.  Если статус выполнения отчета «ОК», в меню «Расширения»-«Интерактивные отчеты» выбрать необходимый отчет, правой кнопкой мыши вызвать контекстное меню, выбрать пункт «Получить отчет из внешнего приложения» (см. Рис. 6). В появившемся окне указать путь к папке, в которой необходимо сохранить отчет (см. Рис. 7, Рис. 8).

(рис.6)

(рис.7)

(рис.8)

В том случае, если отчет еще не сформировался, отобразится ошибка (см. Рис. 9).

(рис.9)

После этого отчет сохранится в файл в указанной папке.

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