04.04.2012 14:37
Задача: сделать автоматическое закрытие касс через СОМ интерфейс.
Вводные: 7 филиалов в каждом по 4 кассы
Вопрос: КАК?
SMCloseCash.exe [Autostart] [Ini=Имя_файла_инициализации] [COM] л, не выходит нифига. И еще вообще не ясно как указать дату закрытия и перезаписывать отчеты или нет.
В руководстве администратора наткнулся на шикарный пример:

Пример bat-файла, выполняющего параллельное автоматическое закрытие касс.
CD C:\S-Market\BAT_FILES
echo %date% %time%: BEGIN DEL_LOCK >>_LOG.txt
ibescript.exe del_lock.sql >>_del_lock_log.txt
echo %date% %time%: END DEL_LOCK >> _LOG.txt
echo %date% %time%: BEGIN ALL CLOSECASH >> _LOG.txt
CD C:\S-Market
start C:\S-Market\SMCloseCash.exe ini=CashAutoClose_01.ini autostart
autoclose
choice /T 20 /D y
start C:\S-Market\SMCloseCash.exe ini=CashAutoClose_02.ini autostart
autoclose
choice /T 20 /D y
start C:\S-Market\SMCloseCash.exe ini=CashAutoClose_03.ini autostart
autoclose
choice /T 20 /D y
start C:\S-Market\SMCloseCash.exe ini=CashAutoClose_04.ini autostart
autoclose
choice /T 20 /D y
start C:\S-Market\SMCloseCash.exe ini=CashAutoClose_05.ini autostart
autoclose
choice /T 20 /D y
start C:\S-Market\SMCloseCash.exe ini=CashAutoClose_06.ini autostart
autoclose
CD C:\S-Market\BAT_FILES
SmWaitCloseCash.exe
echo %date% %time%: END ALL CLOSECASH >> _LOG.txt
echo %date% %time%: BEGIN CALCPART >> _LOG.txt
C:\S-Market\CalcPart.exe autostart autoclose
echo %date% %time%: END CALCPART >> _LOG.txt
CD C:\S-Market\BAT_FILES
echo %date% %time%: BEGIN OSTATOK_RECALC >> _LOG.txt
ibescript.exe Ostatok_Short_Recalc.sql >> _Ostatok_Short_Recalc_log.txt
echo %date% %time%: END OSTATOK_RECALC >> _LOG.txt
echo %date% %time%: BEGIN SALES_CALC >> _LOG.txt
ibescript.exe sales_calc.sql >> _sales_calc_log.txt
echo %date% %time%: END SALES_CALC >> _LOG.txt
echo %date% %time%: BEGIN SWEEP >> _LOG.txt
"C:\Program Files (x86)"\Firebird\Firebird_2_1\bin\gfix -sweep -user sysdba
-password masterkey SERVER:D:\DBase\Smarket.fdb >>_sweep.txt
echo %date% %time%: END SWEEP >>_LOG.txt


Из него я узнал, как автоматизировать пересчет оперативных остатков, как снять блокировки и т.д. Но этот файл не применим к СОМ объектам. Может у кого есть сведения о других "недокументированных" возможностях S-market ?
11.04.2012 05:42
Вопрос еще в силе. Я вижу ответы даже от сотрудников "Датакрат", но в других темах. Неужели нет никакой информации?
24.04.2012 18:20
Вот мой вариант .cmd файла для автоматического закрытия касс. Комментарии выделены \\ - так, их нужно будет убрать, если собрались пользоваться.
autoclose.cmd
_____________________________________________________________________________
CD d:\smdk \\Папка с С-маркетом
echo %date% %time%: Удаление блокировок FB >>_LOG.txt \\Пишем логи в файл
ibescript.exe del_lock.sql >>_LOG.txt
echo %date% %time%: Удаление блокировок завершено >> _LOG.txt
echo %date% %time%: Закрытие касс >> _LOG.txt
\\Тут у меня только 1 филиал, если надо больше повторяем следующие 2 строки, меняя только имя ini файла
start d:\smdk\SMCloseCash.exe ini=1_cash.ini autostart autoclose
choice /T 10 /D y
\\ Как бы кассы закрыты
CD d:\smdk
SmWaitCloseCash.exe \\Что именно делает эта часть понять не удалось. Все равно кассы закрываются одна за другой филиал за филиалом. Может кто и знает
echo %date% %time%: Кассы закрыты >> _LOG.txt
echo %date% %time%: Пересчитываем партионку >> _LOG.txt
d:\smdk\CalcPart.exe autostart autoclose
echo %date% %time%: Готово >> _LOG.txt
CD d:\smdk \\Зачем все время писать эту команду? Видимо в хелп пример добавляли посредством Ctrl-V
echo %date% %time%: Пересчет оперативных остатков >> _LOG.txt
ibescript.exe Ostatok_Short_Recalc.sql >> _LOG.txt
echo %date% %time%: Окончание пересчета >> _LOG.txt \\У меня пересчет оперативных остатков занимает 21 минуту. 7 филиалов 28 касс, БД размером 6гб.
echo %date% %time%: Песчитываем продажи >> _LOG.txt \\Зачем? В инструкции об этом не слова
ibescript.exe sales_calc.sql >> _LOG.txt
echo %date% %time%: Пересчитали продажи >> _LOG.txt
echo %date% %time%: Сборка мусора в базе >> _LOG.txt
"C:\Program Files\Firebird\Firebird_2_5\bin\gfix.exe" -sweep -user sysdba -password masterkey xmzmarket:D:\smdk\dbase\Sm_pit.fdb >>_sweep.txt
echo %date% %time%: Все операции завершены, перегружаемся >>_LOG.txt
shutwown.exe /f/r
______________________________________________________________________________________
Текст файла 1_cash.ini

user=580 \\Номер пользователя
Password=0 \\Его пароль
Shopindex=54 \\Номер партнера
Filialindex=56 \\Номер филиала
Cashes=30,31,32,33 \\Список номеров касс через запятую, без пробелов
LogFileName=_LOG.txt \\Файл лога

Тексты файлов
Ostatok_Short_Recalc.sql
del_lock.sql
sales_calc.sql
не даны в руководстве и вообще нигде ничего про них нет. Но и мы не пальцем единым

Ostatok_Short_Recalc.sql
SET NAMES WIN1251;
SET CLIENTLIB 'fbclient.dll';
CONNECT 'тут путь до файла БД' USER 'SYSDBA' PASSWORD 'masterkey';
execute procedure ostatok_short_recalc;

del_lock.sql
SET NAMES WIN1251;
SET CLIENTLIB 'fbclient.dll';
CONNECT 'тут путь до файла БД' USER 'SYSDBA' PASSWORD 'masterkey';
execute procedure LOCK_SWEEP;

sales_calc.sql
SET NAMES WIN1251;
SET CLIENTLIB 'fbclient.dll';
CONNECT 'тут путь до файла БД' USER 'SYSDBA' PASSWORD 'masterkey';
execute procedure SCHEDULER_CALC_SALES(1);

Для того, чтобы воспользоваться этой шайтан технологией пришлось про СОМ забыть и закрывать кассы через DBF файлы. В данный момент уже 5 дней все работает как часы (плюнул через плечо). Загрузка касс через СОМ, закрытие через файлы.

У кого есть предложения - замечания по поводу автоматического закрытия касс, прошу пишите.
26.04.2012 20:13
Закрытие через COM :
Код:
содержимое SMCloseCash.bat
SMCloseCash.exe autostart ini=SMCloseCash.ac autoclose COM rewrite

в итоге в cash_bpl.log
CashOperate (1,SMCloseCash.ac) AutoStart=1 AutoClose=1 Rewrite=1
23.04.2012 21:47:58: 
23.04.2012 21:47:58: --------------------------------------------------------------
23.04.2012 21:47:58: Начало формирования данных по кассовым продажам
23.04.2012 21:47:58: Количество закрываемых касс: 1
23.04.2012 21:47:59: Будет производиться локальная загрузка.
23.04.2012 21:47:59: Начало общего закрытия касс
23.04.2012 21:47:59: Получен список закрываемых касс: (1)
23.04.2012 21:47:59: Будет производиться закрытие касс за дату 22.04.2012 как за последнюю смену
23.04.2012 21:47:59: Начало процедуры копирования данных CopyData
23.04.2012 21:47:59: Начало копирования данных по закрытым сменам
23.04.2012 21:47:59: Количество записей по закрытым сменам: 2
23.04.2012 21:47:59: Z-отчёт (64,1,1394,22.04.2012) уже существует и будет перезаписан.
23.04.2012 21:48:23: Копирование данных по закрытым сменам произведено
23.04.2012 21:48:23: Получен список Z-отчётов:
23.04.2012 21:48:23: 64,1,1394
rewrite - для перезаписи z-отчета (у пользователя должно быть разрешение в smadmin), поставил просто показать, на самом деле так не делаю и не советую.

не могли бы поделиться информацией по времени загрузки касс, у меня через файловый обмен загрузка в S-Market'e занимает 6 секунд и оператор спокойно работает дальше,
в set никому не мешая загрузка идет еще 15 минут (объем записей в тысячах: plu - 21, bar - 22, disccli - 18),
через COM загрузка идет в с-маркете 20 минут (это все полная загрузка), занимая рабочее место.
26.04.2012 23:42
Через СОМ полная загрузка дольше, но товары на кассе появляются быстрее. И еще при СОМ загрузке данные идут только на загружаемые кассы, а не на все вподряд как при DBF.

Если грузить только изменения то все быстро и красиво. СОМ загрузка более надежна, как показала практика.
Часовой пояс GMT +3, время: 00:13.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.