PDA

Просмотр полной версии : Перенос транзакций RK7 в БД GK



Alexem
15.01.2016, 16:13
Недавно запустили комплекс - GK 3.28, общепит на RK7.5.4, связь между системами не предполагалась. Установлены на разных машинах, в одной локалке.

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

Я не особо погружался в глубины GK и совсем не знаю структуру БД RK7, т.к. занимаюсь в основном Шелтером и Абонементом - а там несчастный FireBird.
Хотелось бы получить совет от знающих людей - правильно копаю или это точно стоит делать не так. Сразу скажу, задвоение данных в разных системах никого не трогает.

Идея следующая: в таблицу GK_Transacts записывать транзакции из таблицы Payments БД RK7. Заранее создать недостающие записи в таблицах GK UNITS, ACTIVITY и возможно прочих.


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

И не совсем понятно что произойдёт с генерируемыми где-то в недрах GK not null полями таблицы GK_TRANSACTS при вставке транзакции из RK - чем заполнять поля GUID и TRANSACTION_GUID? Остальные not null поля заполню проанализировав структуру БД GK.


По результату напишу, что получилось.

Alexem
15.01.2016, 19:03
Или вообще возможно будет проще создать в базе GK новую таблицу, в нее совать необходимые данные и для неё сделать отдельный простейший суммовой отчёт по датам?

mnekin
16.01.2016, 12:22
Правильно будет подключить в FastReport две базы и делать к ним запросы. Проще будет сделать думаю в Отчетах GameKeeper.

Alexem
20.02.2016, 08:45
Правильно будет подключить в FastReport две базы и делать к ним запросы. Проще будет сделать думаю в Отчетах GameKeeper.

Спасибо!

Вопрос подвис надолго, т.к. уточнений ТЗ не поступало. Сейчас снова "восстал".

Получилось подцепить в GK_reports базу RK. Добавил Источник данных, взял запрос из нужного отчета Кипера.
Но при добавлении самого отчета можно выбрать базу данных только GKDB, при выборе Источника данных указываю RKDB.

Есть несоответствие форматов дат в GKFILTER.DLL и хранимой даты смены в базе RK - GKGILTER запрашивает в формате dd-mm-yyyy, а в поле dd.mm.yyyy.
Но даже отключая ввод дат и убрав в запросе источника данных выборку по датам, при попытке построить отчет для построения макета появляется "Ошибка запроса данных! Access violation...", открывается текст запроса, а потом "Источник ... вернул испорченные или неверные данные".

Хотя если редактировать источник, то он при выборе нужной БД (RKDB) отдает данные хорошо.

Такое ощущение, что несмотря на указание в Источнике цепляться к RKDB, он лезет в GKDB.

Также есть стандартный отчет "Системный балансовый отчет GK + RK7", оттуда также через Источник данных возвращаются данные.
Но если его строить, то ругается на отсутствующую БД с ID = 3, хотя где он эту дурь берёт - непонятно.

Alexem
20.02.2016, 12:36
На трекере неожиданно вопрос получил продолжение, оказывается надо добавлять БД РК через rk7_server.
Сейчас добиваюсь подробного описания настроек, т.к. тыканье наудачу не приносит успехов =)

По итогам закину сюда небольшой мануал.

Alexem
24.02.2016, 14:59
Мануала никакого нет, делают очевидно по памяти. Давно так не плясал с бубном и не вытягивал инфу по кусочкам.

Итак, чтобы заработала такая схема, надо правильно настроить подключение через DCOM. Для этого используется мануал 2011 года из Reports\docs.
Настраивается rk7_server.ini на БД РК.
На базу РК накатывается скрипт по добавлению пары системных пользователей.
Приложения rk7_server.exe и gkreports.exe надо настроить, чтобы запускались от имени администратора.
Не запуская rk7_server.exe, запускаем отчеты.
Настраиваем новую БД РК через DCOM, причем имя компа - через его айпи.

После этого можно работать с этой БД в отчётах.
Кстати, меня устроил "предустановленный" отчет "Системный баласновый отчет GK+RK7", только основной макет не заработал, а на "копии" всё прошло успешно.