SETTAX
Если возникает ошибка при установке нового налога с продаж [Калькуляция используется в документах расхода , или комплектациях ] - это значит , что они уже списали эти блюда со старым налогом. Лечится удалением этих документов .
========================================
SHOUSE
При открытии карточки блюда :
[invalid variant type conversion] - Можно попробовать отключить автовычисление себестоимости .
[Unsupported on disk structure] - Не та версия InterBase
[Непавильная функция] - При печати товарной накладной - Обновить Кристал Репортс !
========================================
Инвентаризация через кассу
Это программа для проведения инвентаризации в барах через стоящую там кассу.
Запускается под Windows.
Для инвентаризации используется сканер штрих-кодов и, возможно, весы.
Результаты инвентаризации передаются в StoreHouse через Shinvent.dll,
предоставляемую Громовым.
В rkinv.ini
[Config]
CharCode = - можно указать DLL для перекодировки, например (RUS, LITVA,...)
если не указана - используется Windows.
Для проведения инвентаризации нужно зарегистрироваться на кассе картой БАРМЕНА.
После появления на экране списка столов провести картой бармена еще раз - тогда появится
экран проведения инвентаризации .
========================================
Комбинации клавиш на кассе
[Alt + ящик] - Включение тарификации (в режиме кассира , без открытия стола)
[Alt + количество] - Ввод кол-ва товара через подключенные к кассе весы.
[Alt + ввод] - Ручной ввод карт .
[Alt + скидка ] - Скидка по картам ISD
[Alt + меню] - Для входа в меню TIMEKEEPER .
[Alt + оплата] - Для карты на входе вываливаемся в мастер чек .
[Alt + предчек] - Быстрый чек .
[Alt + выход] - Для внутреннего использования . Если загружен grabber.dll - снимает скриншот , и кладет его в RKCLIENT .
========================================
Новые настройки RKEEPER6.INI
************************************************
Новые настройки RKEEPER6.INI
************************************************
[WaiterCloseAnyTable = ON] - Карта на входе. Позволяет БАРМЕНУ работать со столами , открытыми другими барменами .
[CanManualCardInput = ON] - Ручной ввод карт ПДС . ( ALT + ВВОД )
[CanManualDiscInput = ON] - Ручной ввод дисконтных карт
[CanManualRoomInput = ON] - Ручной ввод гостиничных карт
[AcceptShortCard = ON] -
[UnpayFiscal = OFF]
[HotelFiscal = OFF] - Неплательщики , Гостиница , ПДС - не попадают в FISC.
[ClubFiscal=OFF]
[StartCurency = код валюты ] - Автоматический выбор валюты при оплате .
__________________________________________________ _______________________
[CheckSmartCardRest = ON] - Использование Смарт карт ISD . При ОN - невозможно открыть стол , не зарегистрировав карту ISD + проверка остатка на карте + скидка .
[SmartDisc = ON] - Скидка по карте ISD (Работает ALT+Скидка)
В редакторе заводится валюта с авторизацией "Смарт карта" . Скидка заводится , как для ПДС . Тип магнитной карты узнаем у представителей ISD .
__________________________________________________ _______________________
[CurDateInCheck = ON] - Для печати текущей даты , времени на чеке , предчеке .
[CurDateInPrecheck = ON]
[DiscOncePerCard = ON] - Использование карты ПДС один раз в день .
[PreCheckNum = ON] - Печать номера предчека . В макет добавить VAT_NUM.
[HiResolution = 2] - На touch-screen разрешение 1024 * 768
[Colors = 2] - T - rue Colors на таче
[InternalZ = ON,OFF] - На ШТРИХЕ печатать - не печатать Z отчет .
[CrollToFprinter] - на СПАРКЕ разрешает перепечатку контрольной ленты .
[ Colors = 0 ] - начиная с 58 версии (поставить - когда не стартует графика, т.е если станция не touch-screen ).
[ManagerTransfer=OFF] - Запретить менеджеру перенос.
[ManagerForManualCard=OFF] - Ручной ввод карт без регистрации менеджера .
[PayCardNumOnFCheck] - номер и дата активации карты на входе на чеке
[CardPaySystem= OFF] - Серверная настройка , позволяет отменить систему "Карта на входе" в пределах одной менеджерской и нескольких серверов (На одном , или нескольких серверах).
[ NeedPayCardEnterCheck = OFF ] - Отмена печати "контрольного чека" для карты на входе.
[ PayCardNumOnFcheck = ON ] - Печать номера и даты активации "Карты на входе" в чеке
[ DateSeparator = знак ] - разделитель
[ CCheckCutCardNo = ON ] - Запрещает печать полного номера карты при Авторизации .
[NeedPayCardEnterCheck=OFF] - Отмена печати "контрольного" чека для карты на входе
[DiscOncePerCard=ON] - Использование карты ПДС только один раз в день
[EKLZprinter=<имя библиотеки>] -Указывает на возможность работы кассы с ЭКЛЗ (например EKLZprinter=Shfrk.dlll)
[messages=Сообщение1\Сообщение2 \ Сообщение3\и т.д.]-позволяет выводить в заголовке окна периодически меняющиеся сообщения (для FastFood)
========================================
Ошибки DocKill
16-апр-2004 13:49:16
************************************************** ***
[ IB-836 - exception76 ] - Номер документа должен быть уникальным
Убрать настройку в Складе - Уникальный номер документа .
************************************************** ***
[ IB-530 violation of foreign key constraint "C_BSTORE_MAINDOC_FK" on table "BOOKSTORE" ] -
Зайти в SHLOCK и установить галку "Все документы доступны для изменения (открыть периоды).
************************************************** *****************
[ IB-503 violation of FOREIGN KEY constraint "C_RS_MOVE_REF_FK" on table "RETSPECS" ] -
Заходим в Склад- Список документов , оставляем галки Возврат и списание товаров , дату не указываем .
Если последняя дата документа попадает в удаляемый период , то заходим в SHCHECK и удаляем
эту таблицу "DELETE FROM RETSPECS" .
select * from retspecs
delete from retspecs where ret_ref in (....... , ........) . (числа из select).
************************************************** ****************
[ IB-503 violation of FOREIGN KEY constraint "C_EDH_SBBOOK_FK" on table "EDHEADERS" ] -за удаляемый период есть
счета-фактуры-заходим в склад и ручками их удаляем
************************************************** ****************
[IB - 902 parameter mismatch for procedure SP_CHECKMAINDOCS] - Проверить SHCHECKOM .
************************************************** *****************
[ivalid request BLR at offset 894 parameter mismatch for procedure SP_INSERTRECEIPTMOV] -
поправить DDP.SQL - поиск процедуры (SP_INSERTRECEIPTMOV).
************************************************** *****************
XSQLDA index out of range
Возникает сразу при нажатии кнопки "Старт"-попытка обрезать старую версию складской базы (2.хх)
новой версией DocsKill (для версий базы 3.хх)
************************************************** *****************
(IB -530: violation of FOREIGN KEY constraint "C_MDL_CCH_REF_PK" on table "MOVEDISHLINKS")
Выдает ошибку, если установлена галочка удалять калькуляционные карты.
Обозначает, что на удаляемые калькуляции есть ссылки в комплектациях
************************************************** *****************
Настройки пользователей: UserParams( Key violation. violation of PRIMARY or UNIQUE KEY constraint "C_UP_USER_NAME_PK"
on table "USERPARAMS" ) - ERROR -параметры пользователей, связанный с У и У_
************************************************** *****************
========================================
Ошибки UPGRADE SH
************************************************** *****************
[invalid modify request unsuccesfully metadata update STORE RDB $ RELATION_FIELDS
failed no permission for control access table ] - Нет прав . Если стоят все права у пользователя UCS, то резать SYSDBA .
************************************************** *****************
Налог с продаж: SaleTaxDetail( Master record missing. violation of FOREIGN KEY constraint
"C_STDETAIL_MOVES_FK" on table "SALETAXDETAIL" ) - ERROR
Решение:
select count(*) from SaleTaxDetail where MOVES_REF not in( select RID from Moves3 )
delete from SaleTaxDetail where MOVES_REF not in( select RID from Moves3 )
select count(*) from SBDetail where MOVES_REF not in( select RID from Moves3 )
delete from SBDetail where MOVES_REF not in( select RID from Moves3 )
************************************************** *****************
Moves3( Master record missing. violation of FOREIGN KEY constraint "C_MVS3_MAINDOCS_REF_FK" on table "Moves3" ) - ERROR
Решение:
select count(*) from Moves3 where maindoc_ref not in( select rid from maindocs3 )
delete from Moves3 where maindoc_ref not in ( select rid from maindocs3 )
************************************************** *****************
Спецификации расхода блюд: ExpDish( Master record missing. violation of FOREIGN KEY constraint "C_EXD_CCH_FK" on
table "EXPDISH" ) - ERROR
Посмотреть
select * from expdish a where not exists ( select * from ccheaders b where a. ccheaders_ref = b.RID)
Удалить
delete from expdish a where not exists ( select * from ccheaders b where a.ccheaders_ref = b.RID)
************************************************** ******************
************************************************** ******************
Master record missing. violation of FOREIGN KEY constraint "C_EXD_EDH_FK" on table "EXPDISH"
select * from expdish a where not exists (select * from edheaders b where a.edheaders_ref = b.rid)
delete from expdish a where not exists (select * from edheaders b where a.edheaders_ref = b.rid)
************************************************** *******************
Спецификации расх.блюд: ExpDish
( Master record missing. violation of FOREIGN KEY constraint "C_EXD_MAINDOCS_FK" on table "EXPDISH" ) - ERROR
select * from expdish a where not exists (select * from MAINDOCS3 b where a.MAINDOCS_ref = b.rid)
delete from expdish a where not exists (select * from MAINDOCS3 b where a.MAINDOCS_ref = b.rid)
************************************************** ******************
Key violation. violation of PRIMARY or UNIQUE KEY constraint "C_MVS3_RID_PK" on table "MOVES3"
1-я причина : попытка повторно перекачать данные т.е. в базе уже есть данные;
2-я причина : слетели индексы, сделать БЭКАП-РЕСТОР , при ресторе поставить галочку Deactivate Indexes
************************************************** ******************
Ед.измы продуктов: GOODSMUNITS( Master record missing. violation of FOREIGN KEY constraint "C_GMU_GOODS_FK" on table "GOODSMUNITS" ) - ERROR
В таблице GOODSMUNITS есть ссылки на несуществующие записи таблицы GOODS
Поиск таких записей:
select * from goodsmunits a where not exists ( select * from goods b where a.goods_ref = b.RID)
Удалять их нежелательно, т.к. на этот товар могут быть ссылки в других таблицах. Луше вручнуб в таблице GOODS создать товары с найденными RID-ами
************************************************** ******************
Master record missing. violation of FOREIGN KEY constraint "C_MDL_CCH_REF_PK:" on table "Movedishlinks" ) - ERROR
возникает если выставлен флаг "удалять калькуляции"
delete from movedishlinks a where not exists( select * from moves3 b where a.Moves_ref = b.rid)
и удалять из недоудаленной базы без создания входящих остатков.
************************************************** *****************
Ед.измы продуктов: GOODSMUNITS( General SQL error. exception 140 Неуникальный штрих-код ) - ERROR
просмотреть штрих-коды
select * from goodsmunits where barcode <>''
если в поле barcode - дерьмо,
update goodsmunits set barcode = ''
************************************************** *****************
Заголовки расх.блюд: EDHEADERS( Master record missing. violation of FOREIGN KEY constraint "C_EDH_MONEY_FK" on table "EDHEADERS" ) - ERROR
есть сылки на несуществующие валюты
Выбор записей:
select * from EDHEADERS where MONEY_REF not in (select RID from MONEY)
Устанавливаем значение MONEY_REF в энайденных записях в NULL:
update EDHEADERS
set MONEY_REF=NULL where MONEY_REF not in (select RID from MONEY)
************************************************** ***************
General SQL error. exseption 27 Неуникальный номенклатурный номер
select * from Goods a, Goods b where a.rid<>b.rid and
a.Abbr_text||cast(a.ABBR_NUMBER as varchar(15)) =
b.Abbr_text||cast(b.ABBR_NUMBER as varchar(15))
После выполнения скрипта смотрим, какие товары имеют одинаковый номенклатурный номер и в Складе изменяем их
#select * from Goods where subconto_ref is null
insert into subconto (name) values ('GOODS')
update goods set subconto_ref = 1 where subconto_ref is null
************************************************** ***************
Master record missing. violation of FOREIGN KEY constraint "C_DISHES2_CATEGORY_FK:" on table "DISHES" ) - ERROR
Есть ссылки в блюдах на несуществующие категории
выбираем несущ. ссылки
select * from dishes2 a where not exists (select * from categories b where a.Category_ref= b.RID) and a.category_ref is not null
обновляем ссылки на категории, устанавливая их в NULL (при повторной перекачке меню из R-Keeper они восстановяться)
update dishes2 a set a.category_ref = NULL
where not exists (select * from categories b where a.Category_ref= b.RID) and a.category_ref is not null -
************************************************** ****************
Группы блюд: DishGroups( Master record missing. violation of FOREIGN KEY constraint "C_DISHGR_MENUGRREF_FK"
on table DISH_GROUPS
Решение
select * from menu_groups -смотрим, какие RID-ы существуют.
Также смотрим поле CORRESP_MENU_GROUP-смотрим на какие RID есть ссылки.
Далее обновляем значения:
update menu_groups
set CORRESP_MENU_GROUP=null
where CORRESP_MENU_GROUP=<указываем те значения, которые ссылаются на несуществующие RID>
************************************************** ***************
Спецификации расхода взаимозаменяемых прод.: EXPREPLACEGOODS( Master record missing. violation of FOREIGN KEY constraint "C_ERG_ED_FK" on table "EXPREPLACEGOODS" ) - ERROR
Проверить:
select * from EXPREPLACEGOODS a where not exists ( select * from expdish b
where a.EXPDISH_REF = b.RID)
если есть, удалить
delete from EXPREPLACEGOODS a where not exists ( select * from expdish b
where a.EXPDISH_REF = b.RID)
************************************************** ****************
Заголовки к.к.: CCHeaders( Master record missing. violation of FOREIGN KEY constraint "C_CCH_DISH_REF_FK" on table "CCHEADERS" ) - ERROR
в калькул. картах есть ссылки на несуществующие блюда
Решение:
select * from ccheaders a where not exists ( select * from dishes2 b where a.dish_ref = b.RID)
Затем удаляем эти ссылки
************************************************** ***************
заголовки к.к.: CCHeaders( Master record missing. violation of FOREIGN KEY constraint "C_CCH_OMUNITS_REF_FK" on table "CCHEADERS" ) - ERROR
в калькул. картах есть ссылки на несуществующие единицы измерения
select * from ccheaders a where not exists ( select * from dishes2 b where a.omunits_ref = b.RID)
Проблема может быть еще связана с тем, что в базу приемник не перекачалась какая-то из единиц измерения
************************************************** ***************
Изменения Сумм НДС:
SBDetail( Master record missing. violation of FOREIGN KEY constraint "C_SBDETAIL_MOVES_FK" on table "SBDETAIL" ) - ERROR
В таблице SBDETAIL есть ссылки на пустые записи в таблице MOVES3
Решение:
select * from SBDETAIL a where not exists ( select * from MOVES3 b where a.MOVES_REF = b.RID)
delete from SBDetail where MOVES_REF in (<значения через запятую MOVES_REF из предыдущего запроса>)
************************************************** ***************
Заголовки расх.блюд:
EDHEADERS( Master record missing. violation of FOREIGN KEY constraint "C_EDH_DR_FK" on table "EDHEADERS" ) - ERROR
************************************************** ***************
========================================
Штрих - шапка чека
Таблица 1
Ряд-1 Поле-8 Отрезание чека 1
Таблица-4 "Шапка чека"
Ряд-5,6 Поле-1
ООО "Калисто ТД" , Московская обл.
Красногорск, 65-66 км. МКАД ТВК 2
========================================
SHouse SQL
Если в "Администраторе" при попытке открыть "Права пользователей" происходит "зависание", возможно слетели индексы для системных таблиц. Следующий скрипт их воостанавливает
connect 'D:\Work\Sh_work\Express\Restore\IB_SH319_RESTORE. GDB' user 'UCS' password 'ucs';
set term ## ;
/* Индексы для системных таблиц интербейса от Borland */
CREATE INDEX RDB$D_DON ON RDB$DEPENDENCIES (RDB$DEPENDED_ON_NAME)##
CREATE INDEX RDB$D_DN ON RDB$DEPENDENCIES (RDB$DEPENDENT_NAME)##
CREATE INDEX RDB$D_DNON ON RDB$DEPENDENCIES (RDB$DEPENDENT_NAME,RDB$DEPENDED_ON_NAME)##
CREATE INDEX RDB$LF_FS ON RDB$LOG_FILES (RDB$FILE_SEQUENCE)##
CREATE INDEX RDB$TR_ID ON RDB$TRANSACTIONS (RDB$TRANSACTION_ID)##
CREATE INDEX RDB$TM_TN ON RDB$TRIGGER_MESSAGES (RDB$TRIGGER_NAME)##
CREATE INDEX RDB$T_FN ON RDB$TYPES (RDB$FIELD_NAME)##
CREATE INDEX RDB$UP_G ON RDB$USER_PRIVILEGES (RDB$GRANTOR)##
CREATE INDEX RDB$UP_U ON RDB$USER_PRIVILEGES (RDB$USER)##
CREATE INDEX RDB$UP_UG ON RDB$USER_PRIVILEGES (RDB$USER, RDB$GRANTOR)##
CREATE INDEX RDB$VR_VN ON RDB$VIEW_RELATIONS (RDB$VIEW_NAME)##
CREATE INDEX RDB$PR_N on RDB$PROCEDURES (RDB$PROCEDURE_NAME)##
CREATE INDEX RDB$UP_RU ON RDB$USER_PRIVILEGES (RDB$RELATION_NAME,RDB$USER)##
set term ; ##
************************************************** **********
Установка значения генератора на занчение max+1
select max(rid) from supplierbase -выбор текущего последнего значения
set generator g_supplierbase to <полученое значение в предыдущем запросе+1>
************************************************** **********
========================================
Ф-регистраторы
С регистраторами помимо FPRINTER.DLL использовать нулевой FISCSUP !!!
& MENUEXT.DLL из директории FPRINTER.DLL > MENUEXT !!!
[InternalZ = ON,OFF] - На ШТРИХЕ печатать - не печатать Z отчет .
[CrollToFprinter] - на СПАРКЕ разрешает перепечатку контрольной ленты .
Menuext.dll - По карте Менеджера появляется окно "Функции ф-регистратора"
"Взнос-Изьятие денег в кассу" , "Печать Х-отчета" И.Т.Д.
__________________________________________________ _______________________
*ШТРИХ-ФР-Ф*
__________________________________________________ _______________________
В Ini берет настройки:
FiscRegCom = 1 - как обычно, номер COM
FiscRegBaud = 4800 - скорость обмена
FRCheckPsw = 1 - пароль режима чека
FRRepPsw = 30 - пароль режима отчетов
FRPay1 = 1 - как оформить чек, оплаченный Наличными
0 - не делать чек
1-4 - номер вида оплаты в ФР
FRPay2 = 1 - как оформить чек, оплаченный Кредитной картой
FRPay3 = 1 - как оформить чек, закрытый на Неплательщика
FRPay4 = 1 - как оформить чек, закрытый на Безналичные
если COM больше 4 то берет настройку ComXport
Если DLL переименована, то добавляется спереди ее имя и подчеркивание. Например, ее назвали FP1.DLL, тогда:
FP1_FiscRegCom = 1
в FICHECK.FRM оставить только заголовок
__________________________________________________ _______________________
*СПАРК-617*
__________________________________________________ _______________________
[FRFULL=ON] - Позволяет перепечатку эл.журнала
В Rkeeper6.ini берет настройки:
FiscRegCom = 1 - номер COM
FRPsw = 000000 - пароль управления ФР
FRCashier = 11111 - пароль кассира
FRPay1 = 8 - как оформить чек, оплаченный Наличными
0 - не делать чек
1-8 - номер вида оплаты в ФР
FRPay2 = 7 - как оформить чек, оплаченный Кредитной картой
FRPay3 = 0 - как оформить чек, закрытый на Неплательщика
FRPay4 = 0 - как оформить чек, закрытый на Безналичные
FICHECK.FRM не используется
__________________________________________________ _______________________
MSTAR-Ф 01 ПО 3.0
__________________________________________________ _______________________
В Rkeeper6.ini берет настройки:
FiscRegCom = 1 - номер COM
FRPsw = 0000 - пароль ФР
FRPay1 = 1 - как оформить чек, оплаченный Наличными
0 - не делать чек
1-2 - номер вида оплаты в ФР
FRPay2 = 2 - как оформить чек, оплаченный Кредитной картой
FRPay3 = 0 - как оформить чек, закрытый на Неплательщика
FRPay4 = 0 - как оформить чек, закрытый на Безналичные
FICHECK.FRM не используется
__________________________________________________ _______________________
MSTAR-Ф 02 ПО 4.0
__________________________________________________ _______________________
В Rkeeper6.ini берет настройки:
FiscRegCom = 1 - номер COM
FRPsw = 0000 - пароль ФР
FRPay1 = 1 - как оформить чек, оплаченный Наличными
0 - не делать чек
1-3 - номер вида оплаты в ФР
FRPay2 = 2 - как оформить чек, оплаченный Кредитной картой
FRPay3 = 0 - как оформить чек, закрытый на Неплательщика
FRPay4 = 0 - как оформить чек, закрытый на Безналичные
FICHECK.FRM не используется
__________________________________________________ _______________________
========================================
KACCA-ERRORS
0 - Не запустился Paradox, часто плохой путь в local или плохие *.lck
1 - нет файла Cashes.db
2 - Нет конфигурации этой станции
3 - Плохой формат макс/мин гостей
4 - Не найден файл Printers.db
5 - Не найден файл Usplink.db
6 - Не найден файл Streams.db
7 - Не найден файл Services.db
8 - Не найден файл Printers.db
9 - Для FF менее 2-х потоков
10 - Не найден файл System.db
11 - Нет директории "BmpFontPath"
12 - Нет директории DataBase
13 - Нет директории Results
14 - Пустое меню
15 - Пустой персонал
16 - Проблемы со статьями расходов
16-1 -Категория блюда в списке категорий отсутств (назв блюда при сообщ)
17 - Защита N 4
18 - Проблеммы сети
19 - Не открылся Local.Db
20 - Нет категории для какого-либо блюда
21 - Не открылся eoday.db
22 - Попытка работать после закрытия дня
23 - Не открылась таблица
24 - сетевое имя не получено при запуске
25 - Get,Put,Append - Не прошел
26 - RecCount - Не прошел
27 - Не найден c:\dos\share.exe
28 - Контроль версий файлов нарушен по share
29 - Контроль к-ва записей
30 - Не прошел PXSave
31 - Не найдена карта для этого чека (при CardPay)
32 - Плохое имя ресурса для внутренней печати
33 - Ошибка создания таблиц внутренней печати
34 - День сервера закрыт(или начато закрытие).
Перегрузить сервер.
35 - не найден файл языковой поддержки(работает как RunTime)
36 - не найдено доступного меню
37 - РАЗНЫЕ ВЕРСИИ СЕРВЕРА И КЛИЕНТА
199 - как RUNTIME проблеммы с DLL
========================================
========================================
Fix_Len
************************************************** ***************
Использование системной библиотеки fix_len.dll
************************************************** ***************
!Fix_Len рассчитан на работу с картами, на которых имеется минимум пять
цифр, т.е. в записи на второй дорожке должны присутствовать минимум
пять цифр, причем в любом порядке.
--------------------------------------------------------------------------------------
Описание модуля, позволяющего использовать практически любые магнитные карты, как Персональные дисконтно\депозитные карты R-KEEPER-а.
--------------------------------------------------------------------------------------
Модуль реализован в виде DLL файла FIX_LEN.DLL.
Необходимо скопировать данную DLL на все кассы и официантские станции в папку EXTENS, которая находится в рабочей папке RKCLIENT.
В RKEEPER6.INI, на каждой кассе и официантской станции, добавить строку с "маской" ваших карт. Формат записи:
FIX_LEN_CARD=
можно присвоить 0,1,2,3
0 - персональная диск карта (по умолчанию)
1 - неперсональная диск карта
2 - гостиничная
3 - карта на входе
FIX_LEN_MASK=12**NNNN
Где, FIX_LEN_MASK - имя переменной. Если DLL переименовали, то вместо FIX_LEN, пишется новое имя DLL.
12, в данном случае, а вообще любые цифры от 0 до 9 - постоянный идентификатор. Может находиться в любых местах, но на всех ваших картах одинаковый.
* - любые символы, в любом количестве, в любом месте. Программа будет игнорировать символ, находящиеся на месте звездочки.
N - любые цифры от 0 до 9, общее количество не более 9. Программа данные символы будет воспринимать как номер карты.
Примеры:
1.Есть карта с записью на второй дорожке 34910431234, где первый, второй и пятый символы - постоянные. Последние два символа и третий ничего не значат. Номер содержится в четвертом и с шестого по девятый символах. Запись в RKEEPER6.INI для этих карт:
FIX_LEN_MASK=34*N0NNNN**
2.Карта проще - 7002345. Где 7 - постоянный символ на всех подобных картах. Номер - остальные символы. Запись в RKEEPER6.INI для этих карт:
FIX_LEN_MASK=7NNNNNN
Можно, кстати, ограничить в RKEEPER номера карт при помощи маски. Для вышеприведенной карты, например. Мы хотим, что бы в RKEEPER-е работали карты только с 0 во втором символе. Тогда маска такая:
FIX_LEN_MASK=70NNNNN
========================================
SHOffice
************************************************** ***
Установка UCS StoreHouse BackOffice
************************************************** ***
(1)
SH BackOffice устанавливается также как склад, т.е. устанавливаем необходимую версию InterBase (поддерживается следующие версии 4.1, 5.6, 6.5, но при совместной установке на один компьютер SHOffice и R-Keeper BackOffice Reports необходимо устанавливать InterBase 6.5, т.к. R-Keeper BackOffice Reports работает только под ним), устанавливаем Crystal Reports, BDE.
!!!-ВАЖНО-!!! Библиотеку ibxp.dll необходимо записывать не в системную директорию Windows, а в директорию X:\Program Files\Borland\Interbase\UDF
(2)
Путь к базе данных прописывается так же как для SHouse в реестре,
только используется раздел SHOffice.(это необходимо сделать "вручную", воспользовавшись программой regedit)
Создаем раздел: \HKEY_LOCAL_MACHINE\Software\UCS\SHOffice
Создаем в нем строковый параметр: DBPath
Значение этого параметра=путь к базе SHOffice
Создаем раздел: \HKEY_LOCAL_MACHINE\Software\UCS\SHOffice Administrator
Создаем в нем строковый параметр: DBPath (значение аналогично предыдущему)
Создаем в нем строковый параметр: AdmDBPath (путь к базе isc4.gdb)
(3)
Устанавливаем драйвер для электронных ключей Novex и работаем!
(4)
В программе SHOffice в разделе "Словари"->"Коды ресторанов" необходимо прописать все рестораны корпорации и присвоить каждому из них уникальный код, который потом прописываем в каждой локальной базе (см. ниже)
(5)
При заведении новых пользователей в локальной складской программе необходимо убирать у них все права на редактирование словарей (кроме "Списка блюд"-иначе будет невозможен импорт меня из R-Keeper). Это очень важно, т.к. при изменении каких-либо словарей системы в локальной базе приведет к ошибкам при транспорте данных из центрального офиса (SHOffice)
(6)
Существует два варианта exe-ников: shoffice.exe и shoffice_bde.exe. Разница между ними только в формате
экпортируемых dbf-файлов (тот который _bde позволяет экспортировать файлы с длинными именами)
(7)
Последовательность закачки данных:
1. Выгружаем из RKBO словари и передаем их на точки
2. Выгружаем из SHOffice словари и передаем их на точки
3. Закачиваем на точке (Trans32.exe) данные из RKBO в локальную
менеджерскую
4. Делаем импорт меню из локальной менеджерской в локальный склад
5. Делаем "Импорт из StoreHouse BackOffice" (SHTrans.exe) в локальном
складе
-------------------------------------------------------------------------
Некоторые настройки, необходимые для корректной работы SHOffice и локальных SHouse
-------------------------------------------------------------------------
/*Установка кода ресторана в локальной складской базе */
update DatabaseParams
set Rest_Code=1
/*Для каждого ресторана выставляем свой код, который соответствует коду, заведенному в SHoffice (см. выше) */
/*Установка следующего значения имеет смысл только в базе данных SHOffice, но там он еще не реализован. Применение этого парметра в локальной базе SHouse не имеет смысла. Установка этого параметра в ноль позволяет удалять данные в базе не физически, а только помечая их как удаленные*/
update DatabaseParams
set Eraser=0
/*Устанавливаем одинаковую дату начала действия калькуляционных карт
Эта дата должна быть одинакова во всех ресторанах и в центральном SHOffice*/
select CC_Start_Date from DatabaseParams /*Выбор из базы значения */
/* Обновление значения */
update DatabaseParams
Set CC_Start_Date="1-OCT-2003"
/* Необходимо установить одинаковую единицу нормы
закладки для блюд во всех ресторанах и в центральном SHOffice*/
select Def_NMUnits_Ref from DatabaseParams
/*Выбор текущего значения-по умолчанию 1-"порция"*/
udate DatabaseParams
set Def_NMUnits_Ref=1 /*Установка необходимого значения*/
--------------------------------------------------
Удаление документов в базе SHOffice
--------------------------------------------------
/*Удаление документoв в базе SHOffice за определенную дату */
execute procedute sp_DEL_MAINDOCS
SYS_FLAG,REST_CODE,DOC_DATE
SYS_Flag - тип учета: 0-учет, 1- спец.учет.
RES_CODE - код ресторана
DOC_DATE - за какую дату удалять.
/*Удаление расходов блюд за дату*/
execute procedure sp_DEL_EXPDISH
SYS_FLAG, REST_CODE, DOC_DATE
SYS_Flag - тип учета: 0-учет, 1- спец.учет.
RES_CODE - код ресторана
DOC_DATE - за какую дату удалять.
/*Удаление всех документов*/
delete from MAINDOCS
delete from GOODSCRC
delete from MAINDOCS_HEAD
delete from MAINDOCS_SUBCONTO
delete from EXPDISH
delete from RPT_DAYSEXPENSE
delete from RPT_DISHEXPENSE
delete from RPT_REASONSEXPENSE
delete from RPT_SUNITSEXPENSE
************************************************** *******
© UCS 02.08.2004
************************************************** *******
Если есть необходимость импортировать меню в SHOffice не из RKeepr BackOffice Editor, а из менеджерской базы
можно воспользоваться стандартных приложением SHTrans.exe, прописав путь к к базе данных SHOffice
========================================
************************************************** ***************
Установка R-Keeper BackOffice Editor (Редактор)
************************************************** ***************
Предназначение программы описано в файле rboman.txt, который находится в дистрибутиве
Для работы данного приложения не требуется никаких СУБД (ни BDE, ни Interbase). Установка производится простым копированием директории RBO на жесткий диск и настройкой файла rbo.ini (необходимо указать путь к базе данных rbo.udb)
Конфигурирование и настройка, а также заведение новых пользователей происходит в приложении Rbodisp.exe, при первом запуске которой необходимо ввести пароль дилера. Этот пароль для разных rbo.udb различный, поэтому каждый инсталятор или дилер должен получить соответствующую базу и пароль у Александра Шашкова (alex@ucs.ru), указав при этом в письме точную версию RBO
В приложении "Диспетчер" также необходимо прописать наименование и код корпорации (Пользователь->Корпорация). Кодом корпорации является первые пять цифр (раньше было четыре) из общего кода ресторана, т.е. если организации выдан код 19999.0001, то кодом корпорации в этом случае является число 19999, а число 0001 является кодом конкретного ресторана. Т.к. при заведении кода корпорации в приложении "Диспетчер " есть возможность ввести только четыре цифры, то прописываются последние четыре цифры из присвоенного кода корпорации (на нашем примере это будет 9999, т.к. единица отброшена)
Затем присваивается пароль новому диспетчеру (Пользователь ->Диспетчер), с помощью которого в дальнейшем можно заводить новых пользователей и их права
В приложении Rboedit.exe необходимо прописать все рестораны корпорации (Файл->Рестораны) с указанием кода каждого ресторана (последние четыре цифры в общем коде ресторана,в нашем примере это 0001, для следующего ресторана 0002 и т.д.), а также указать каталоги рассылки, т.е. директории, куда будут записываться исходящие данные для локальных ресторанов
************************************************** **************
© UCS 03.08.2004
************************************************** **************
========================================
RemoteBoot
Для поддержки PXE клиентов через DHCP необходимо установить "Опцию 60" (Windows 2000 Server)
C:\WINDOWS\system32>netsh
netsh>dhcp
netsh dhcp>server \\<server_machine_name>
netsh dhcp>add optiondef 60 PXEClient String 0 comment=PXE support
netsh dhcp>set optionvalue 60 STRING PXEClient
netsh dhcp>exit
Программа которая создавала эту опцию в Win2000 в Win2003 не работает
========================================
RK-Server
Вопрос:
В окне RK сервера мы видим такие две строки:
"R-Keeper Transactions & Reports Server WIN32 for V 6.60a Queue Length0"
" 0 0 "
Что обозначяет две цыфры во второй строке? При работе касс они меняются
Ответ:
Первое число - количество необработанных запросов от клиентов в очреди
Второе число - максмиальное время ответа на запос в сотых долях секунды
************************************************** **********
========================================
Ошибки SHTrans
************************************************** **********
IB -811: multiple rows in singleton select -появляется при импорте меню из R-Keeper в S-House (обозначает, что есть задублированные RK_SIFR)
select * from Dishes2 a , Dishes2 b where a.RID< b.RID and a.RK_SIFR = b.RK_SIFR and
a.MENU_GROUP_REF = B.MENU_GROUP_REF
select * from Dishes2 a , Dishes2 b where a.RID<> b.RID and a.RK_SIFR = b.RK_SIFR and
a.MENU_GROUP_REF = B.MENU_GROUP_REF
после выполнения этого скрипта появиться список блюд, в которых задублированы RK_SIFR
устанавливаем RK_SIFR этих блюд в null
update Dishes2 set RK_SIFR=null where rid in (<перечень через запятую RID-ов тех блюд, которые выбрались в предыдущем запросе >)
*********
могут быть задублированны группы блюд (таблица DISH_GROUPS)
выполняем:
select * from Dish_groups a , Dish_groups b where a.RID<> b.RID and a.RK_SIFR = b.RK_SIFR and
a.MENU_GROUP_REF = B.MENU_GROUP_REF
после выполнения этого скрипта появиться список групп, в которых задублированы RK_SIFR
устанавливаем RK_SIFR этих групп в null
update dish_groups set rk_sifr = null where rid in (<перечень через запятую RID-ов тех групп, которые выбрались в предыдущем запросе >)
************************************************** ************
Такая же ошибка может возникнуть при импорте меню, но при перекачке из таблицы categ.db. В таком случае использовать следующие скрипты:
select * from Categories a , Categories b where a.RID< b.RID and a.RK_SIFR = b.RK_SIFR and
a.MENU_GROUP_REF = B.MENU_GROUP_REF
select * from Categories a , Categories b where a.RID<> b.RID and a.RK_SIFR = b.RK_SIFR and
a.MENU_GROUP_REF = B.MENU_GROUP_REF
после выполнения этого скрипта появиться список категорий, в которых задублированы RK_SIFR
устанавливаем RK_SIFR этих блюд в null
update Categories set RK_SIFR=null where rid in (<перечень через запятую RID-ов тех категорий, которые выбрались в предыдущем запросе >)
************************************************** ************
Такая же ошибка может появляться при импорте расхода блюд (на таблице ACHECK.DB)-лечиться тем же скриптом, что и для menu.db (если не помогает, пробуем скрипт для categ.db)
Если ошибка появляется при импорте расхода блюд на таблице ACHECK.DB, при этом происходит импорт возвратов,
то необходимо выполнить следущий скрипт:
update delreasons set EXT_CODE=NULL
После выполнения скрипта обязательно импортировать заново меню
Ошибка "IB-811: multiple rows in singleton select" может проявлятся при просмотре отчета "Список блюд". Проблема, скорее всего,
в том, что на одном из блюд на закладке "Заголовок" установлено две галочки напротив складов списания (галочки определяют склад, по которому
будет рассчитываться себестоимость). Проверить это можно с помощью следующего скрипта:
select a.item_ref, a.item_type from paymentsoff_refs a
where ( select count(*) from paymentsoff_refs b where a.Item_ref = b.Item_ref and a.Item_type = b.Item_type and b.Checked = 1) >1
========================================
DocKill Info
Еще раз про обрезание базы:
1. Обрезаем базу с помощью DocKill. Если в конце появилась ошибка SP_CHECKMAINDOCS (а
не просто SP_MAINDOCS), игнорируем ее, исправим ошибки потом
2. Перекачиваем в чистую базу БЕЗ СТАТИСТИКИ (т.к. после обрезания
старых докуметнов статистика по ним все-равно остается, то мы делаем
перекачку сначала без статистики, а затем пересчет-таким образом
избавляемся от лишнего мусора). Перекачка без статистики делается
таким же образом, как и апгрейд, за исключением того, что в файле
TRANSFER.TXT находим следующие строки:
{move\ Статистика по документам: OutPtrs\ [300, 999]\ T\ OutPtrs\\ NO_GEN\ }
{move\ Статистика по документам: Remns\ [300, 999]\ T\ Remns\\ NO_GEN\ }
{move\ Статистика по документам: RemnsA\ [300, 999]\ T\ RemnsA\\ NO_GEN\ }
и комментируем их или просто удаляем
3. После перекачки без статистики запускаем SHCheck.exe, проверяем на
ошибки и после окончания проверки и появления списка ошибок, нажимаем
в любом месте окна правой кнопкой и выбираем пункт "Пересчитать все".
После пересчета снова проверяем на ошибки, если необходимо исправляем
ошибки и пересчитываем неверные очереди (чаще всего эту процедуру
необходимо выполнять несколько-до полного исправления ошибок)
Конечно, может быть ситуация, когда ошибки не исправяться, тогда
необходимо смотреть тексты ошибок и разбираться более тщательно.
И запомните-некоторые операции, особенно на больших базах, такие как
проверка документов, пересчет всего, исправление ошибок,
восстановление базы может длиться очень долго-будьте терпеливы-не
прерывайте процесс!
************************
24-09-2004 ©UCS
************************
========================================
Ошибки SHouse
************************************************** *******
/* Создание заголовков калькуляционных карт для блюд, у к-рых их нет */
create procedure sp_CrtTmpHeaders
as
declare variable DISH_REF INTEGER;
declare variable NMUNITS_REF INTEGER;
declare variable TMP INTEGER;
declare variable CARD_DATE DATE;
declare variable STR varchar( 25 );
begin
select CC_START_DATE from DatabaseParams into :CARD_DATE;
STR = null;
for select RID from Dishes2 where RID not in( select distinct DISH_REF from CCHeaders )
into ISH_REF
do begin
for select MUNITS_REF from CCItems where COMP_REF = ISH_REF and COMP_TYPE = 2 into :NMUNITS_REF
do begin
TMP = null;
end
execute procedure sp_InsertCCHeader( ISH_REF, :CARD_DATE, 1, :NMUNITS_REF,
0, :TMP, :STR, 0, 1, :STR, 0, 0 ) returning_values :TMP;
end
end
************************************************** *********
ib-913: deadlock - ошибка конкурентного доступа, т.е. с разных рабочих мест пытаются работать под одним и тем же пользователем
************************************************** *********
========================================
Shouse 4.xx
************************************************** *********
Если при запуске ib2sh.exe (апгрейд базы данных Склада 3.хх до версии 4.хх) появляется ошибка, необходимо
использовать gds32.dll от 5-й версии Intebase (версия 5.6.0.29, размер 347 136 байт)
************************************************** *********
========================================
CSHost
Приветствую!
Столкунулся со странной, на мой взгляд, вещью при работе с синхронизацией CSHost <> SynHost <> CardServ:
Делаем 1-ую синхронизацию с цсхоста на чистую базу локал кардсерва.
В результате получаем список карт в локале.
Останвливаем локал кардсерв и кладем ему снова чистую базу
Запускаем и снова делаем синхронизацию.
А список карт НЕ ПРОГРУЖАЕТСЯ!!!
Тогда затачиваем 2-ой локальный кардсерв с другим именем и делаем синхронизацию.
Все зашибись! Только не попали карты у которых истек срок действия.
Отсюда делаю вывод:
1)Что список карт для отдельно взятого локального кардсерва можно прогрузить только ОДИН раз.
2)Карты, у которых истек срок действия, в локал кардсерв не прогружаются.
Ответ:
Задача синхронизатора - не прокачивать через сеть ВСЕ карты и транзакции, а передать только НОВЫЕ.
CSHost помнит - ЧТО он передавал своим клиентам в предыдущий раз и не станет с бухты-барахты слать то же самое.
В том редком случае, когда локальная база сломалась и надо бы заново прокачать ВСЕ, применяется такой метод: в каталог, где лежит SynHost, записывается файл sysnum.sys. Нулевой длины. После этого запускается SynHost.
Теперь насчет того, что "Карты, у которых истек срок действия, в локал кардсерв не прогружаются. "
Ни фига подобного! Все прогружаются. Скорее "другое имя" уже ранее
было использовано, и CSHost его помнил. И когда вы подцепились с ним - послал то новое, что появилось у него для этого имени.
========================================