Перекачка смен в отчеты
Оглавление
Введение
Перекачка смен в отчеты может потребовать для устранения расхождений или отсутствия данных. Есть три вида перекачки: простая перекачка; перекачка с удалением смены; перекачка через shift2sql. После принятия решения о перекачке смены, используйте сначала простую перекачку, если не помогло - с удалением, если и это не помогло - через shift2sql.
Простая перекачка
- В списке общих смен (режим просмотра «Таблица») отфильтровать список по нужному имени кассового сервера или ресторана, затем по логической дате и/или номеру смены найти смены, которые нужно перекачать.
- Нажать на них правой кнопкой и выбрать «Разрешить перекачать смену»
- Найти нужную смену в архивах (на кассовом сервере или на сервере отчетов) Как найти архив смены для перекачки
- Скопировать найденные файлы в папку BaseData/filesync/incoming на сервере отчетов. Как найти путь к базе отчетов или справочников RК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
- Создать папку Shift2SQL, например внутри папки \win\
- Скопировать в нее файл shift2sql.bat
- Скопировать в нее из папки \win\ папку \sql\, а также все *.dll
- Скопировать в нее из папки \win\ файл shift2sql.exe
- Скопировать из папки 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. Проверить, что нужные данные появились или скорректировались в отчетах.
Файлы и скрипты
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
No Comments