Skip to main content

Перекачка смен в отчеты

Оглавление

Введение

Простая перекачка

Перекачка с удалением смен

Перекачка через Shift2SQL

Файлы и скрипты

Ссылки

Введение

Перекачка смен в отчеты может потребовать для устранения расхождений или отсутствия данных. Есть три вида перекачки: простая перекачка; перекачка с удалением смены; перекачка через shift2sql. После принятия решения о перекачке смены, используйте сначала простую перекачку, если не помогло - с удалением, если и это не помогло - через shift2sql.

Простая перекачка

  1. В списке общих смен (режим просмотра «Таблица») отфильтровать список по нужному имени кассового сервера или ресторана, затем по логической дате и/или номеру смены найти смены, которые нужно перекачать.embedded-image-V9fQaIw3.pngembedded-image-aIrCgGV2.png
  2. Нажать на них правой кнопкой и выбрать «Разрешить перекачать смену»
  3. Найти нужную смену в архивах (на кассовом сервере или на сервере отчетов) Как найти архив смены для перекачки
  4. Скопировать найденные файлы в папку BaseData/filesync/incoming на сервере отчетов. Как найти путь к базе отчетов или справочников RК7
  5. Через короткое время эти файлы должны исчезнуть из папки, и появиться в списке общих смен.
  6. Пересчитать все кубы (долго!), или пересчитать кубы выборочно (чаще всего нужен куб по расходу и куб по выручке). Как пересчитать кубы выборочно
  7. Проверить, что нужные данные появились или скорректировались в отчетах.

Перекачка с удалением смен

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

  • Открыть на сервере SQLManagmentStudio, авторизоваться, найти базу RK7, нажать правой кнопкой мыши по ней; выбрать в контекстном меню "New Query" или "Новый Запрос"; откроется окно создания sql-запроса.
  • В окно скопировать следующий запрос, изменив выделенные значения на свои:
SQL Запрос Удаление смены
/*  для SQL-базы  */

DECLARE @midserver int;
set @midserver=15386; -- идентификатор кассового сервера
DECLARE @icommonshift int;
set @icommonshift=123; -- номер глобальной смены

DELETE FROM OPERATIONLOG WHERE (MIDSERVER = @midserver) and visit in (select visit from ORDERS where MIDSERVER = @midserver and icommonshift=@icommonshift);
DELETE FROM SESSIONDISHES WHERE (MIDSERVER = @midserver) and visit in (select visit from ORDERS where MIDSERVER = @midserver and icommonshift=@icommonshift);
DELETE FROM ORDERSESSIONS WHERE (MIDSERVER = @midserver) and visit in (select visit from ORDERS where MIDSERVER = @midserver and icommonshift=@icommonshift);
DELETE FROM PAYBINDINGS WHERE (MIDSERVER = @midserver) and visit in (select visit from ORDERS where MIDSERVER = @midserver and icommonshift=@icommonshift);
DELETE FROM PAYMENTS WHERE (MIDSERVER = @midserver) and visit in (select visit from ORDERS where MIDSERVER = @midserver and icommonshift=@icommonshift);
DELETE FROM PAYMENTSEXTRA WHERE (MIDSERVER = @midserver) and visit in (select visit from ORDERS where MIDSERVER = @midserver and icommonshift=@icommonshift);
DELETE FROM TAXPARTS WHERE (MIDSERVER = @midserver) and visit in (select visit from ORDERS where MIDSERVER = @midserver and icommonshift=@icommonshift);
DELETE FROM KDSDATA WHERE (MIDSERVER = @midserver) and VISITID in (select visit from ORDERS where MIDSERVER = @midserver and icommonshift=@icommonshift);
DELETE FROM CURRLINES WHERE (MIDSERVER = @midserver) and visit in (select visit from ORDERS where MIDSERVER = @midserver and icommonshift=@icommonshift);
DELETE FROM DISHDISCOUNTS WHERE (MIDSERVER = @midserver) and visit in (select visit from ORDERS where MIDSERVER = @midserver and icommonshift=@icommonshift);
DELETE FROM DISCPARTS WHERE (MIDSERVER = @midserver) and visit in (select visit from ORDERS where MIDSERVER = @midserver and icommonshift=@icommonshift);
DELETE FROM DISHVOIDS WHERE (MIDSERVER = @midserver) and visit in (select visit from ORDERS where MIDSERVER = @midserver and icommonshift=@icommonshift);

delete from PRINTCHECKS where (MIDSERVER = @midserver) and visit in (select visit from ORDERS where MIDSERVER = @midserver and icommonshift=@icommonshift);
DELETE FROM VISITS WHERE (MIDSERVER = @midserver) and sifr in (select visit from ORDERS where MIDSERVER = @midserver and icommonshift=@icommonshift);
DELETE FROM ORDERS WHERE (MIDSERVER = @midserver) and icommonshift=@icommonshift;

delete from shifts where midserver=@midserver and ICOMMONSHIFT=@icommonshift;
delete from globalshifts where midserver=@midserver and shiftnum=@icommonshift;



Идентификатор кассового сервера можно узнать в свойствах кассового сервера в справочниках РК7 под дилерской УЗ. Номер глобальной смены можно узнать из списка смен.

  • Чтобы проверить есть ли в базе смена с нужным номером можно выполнить следующий запрос:
SELECT *
FROM [RK7].[dbo].[GLOBALSHIFTS] where MIDSERVER=[идентификатор сервера] and shiftnum=[номер смены]

FROM [RK7].[dbo] – имя базы может быть другим, нужно подставить свое имя базы.

  • Пересчитать кубы.
  • Проделать шаги 3-7 из раздела «Простая перекачка»

Перекачка через Shift2SQL

Перед выполнением следует удалить перекачиваемые смены из SQL скриптом как в предыдущем параграфе, если данные по ним уже есть, но некорректны. Следует посоветовать с экспертом прежде чем выполнять перекачку по этому типу.

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

1. Найти bat-файл shift2sql.bat

2. Подготовить папку для работы с shif2sql 

Папка для Shift2SQL
  1. Создать папку Shift2SQL, например внутри папки \win\
  2. Скопировать в нее файл shift2sql.bat
  3. Скопировать в нее из папки \win\ папку \sql\, а также все *.dll
  4. Скопировать в нее из папки \win\ файл shift2sql.exe
  5. Скопировать из папки win файлы с названием dbup*.exe

3. Положить в нее файлы смен, подлежащих перекачке (см. Как найти архив смены для перекачки )

4. В папку BaseData или Base (см. Как найти путь к базе отчетов или справочников RК7 ) положить файл chckconv.xml

5. Отредактировать файл shift2sql.bat, опираясь на следующие комментарии к его содержимому.

Содержимое Shift2SQL.bat

@echo start
for %%i in (*.udb) do (
   echo %%i
   call "C:\UCS\bin.cofeport\win.coferep\shift2sql\shift2sql.exe" "Provider=SQLOLEDB.1;Password=ucs;Persist Security Info=True;User ID=RK7;Initial Catalog=RK7COFE;Data Source=CS-COFFEEPORT" "%%i" "E:\UCS\base.coferep\chckconv.xml" >logs.txt
)
Pause

Желтый: путь к исполняемому файлу shift2sql.exe. Он лежит в созданной нами папке \shift2SQL\

Голубой: Строка соединения с базой SQL из настроек подключения к внешним базам данных. Ее нужно скопировать и вставить вместо выделенной. см. Строка соединения с базой отчетов РК7

Зеленый: Путь к chckconv.xml, который мы положили в папку Base или BaseData

6. Запустить файл shift2sql.bat, дождаться выполнения. Результат выполнения фиксируется в логе logs.txt. При успешном выполнении, в логе будут записи такого вида: 

7. Пересчитать кубы.

8. Проверить, что нужные данные появились или скорректировались в отчетах.

Файлы и скрипты

shift2sql.bat

chckconv.xml

SQL Запрос Удаление смены
/*  для SQL-базы  */

DECLARE @midserver int;
set @midserver=15386; -- идентификатор кассового сервера
DECLARE @icommonshift int;
set @icommonshift=123; -- номер глобальной смены

DELETE FROM OPERATIONLOG WHERE (MIDSERVER = @midserver) and visit in (select visit from ORDERS where MIDSERVER = @midserver and icommonshift=@icommonshift);
DELETE FROM SESSIONDISHES WHERE (MIDSERVER = @midserver) and visit in (select visit from ORDERS where MIDSERVER = @midserver and icommonshift=@icommonshift);
DELETE FROM ORDERSESSIONS WHERE (MIDSERVER = @midserver) and visit in (select visit from ORDERS where MIDSERVER = @midserver and icommonshift=@icommonshift);
DELETE FROM PAYBINDINGS WHERE (MIDSERVER = @midserver) and visit in (select visit from ORDERS where MIDSERVER = @midserver and icommonshift=@icommonshift);
DELETE FROM PAYMENTS WHERE (MIDSERVER = @midserver) and visit in (select visit from ORDERS where MIDSERVER = @midserver and icommonshift=@icommonshift);
DELETE FROM PAYMENTSEXTRA WHERE (MIDSERVER = @midserver) and visit in (select visit from ORDERS where MIDSERVER = @midserver and icommonshift=@icommonshift);
DELETE FROM TAXPARTS WHERE (MIDSERVER = @midserver) and visit in (select visit from ORDERS where MIDSERVER = @midserver and icommonshift=@icommonshift);
DELETE FROM KDSDATA WHERE (MIDSERVER = @midserver) and VISITID in (select visit from ORDERS where MIDSERVER = @midserver and icommonshift=@icommonshift);
DELETE FROM CURRLINES WHERE (MIDSERVER = @midserver) and visit in (select visit from ORDERS where MIDSERVER = @midserver and icommonshift=@icommonshift);
DELETE FROM DISHDISCOUNTS WHERE (MIDSERVER = @midserver) and visit in (select visit from ORDERS where MIDSERVER = @midserver and icommonshift=@icommonshift);
DELETE FROM DISCPARTS WHERE (MIDSERVER = @midserver) and visit in (select visit from ORDERS where MIDSERVER = @midserver and icommonshift=@icommonshift);
DELETE FROM DISHVOIDS WHERE (MIDSERVER = @midserver) and visit in (select visit from ORDERS where MIDSERVER = @midserver and icommonshift=@icommonshift);

delete from PRINTCHECKS where (MIDSERVER = @midserver) and visit in (select visit from ORDERS where MIDSERVER = @midserver and icommonshift=@icommonshift);
DELETE FROM VISITS WHERE (MIDSERVER = @midserver) and sifr in (select visit from ORDERS where MIDSERVER = @midserver and icommonshift=@icommonshift);
DELETE FROM ORDERS WHERE (MIDSERVER = @midserver) and icommonshift=@icommonshift;

delete from shifts where midserver=@midserver and ICOMMONSHIFT=@icommonshift;
delete from globalshifts where midserver=@midserver and shiftnum=@icommonshift;



SQL Запрос Проверка наличия смены
SELECT *
FROM [RK7].[dbo].[GLOBALSHIFTS] where MIDSERVER=[идентификатор сервера] and shiftnum=[номер смены]

--вместо [RK7].[dbo] подставить реальное имя базы SQL
SQL Запрос ID Кассового сервера, если нет дилерской УЗ
select name, sifr from cashgroups where name = 'подставить имя кассового сервера'

Ссылки

Как найти архив смены для перекачки

Как найти путь к базе отчетов или справочников RК7

Как пересчитать кубы выборочно

Строка соединения с базой отчетов РК7