Вот мой вариант .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 дней все работает как часы (плюнул через плечо). Загрузка касс через СОМ, закрытие через файлы.
У кого есть предложения - замечания по поводу автоматического закрытия касс, прошу пишите.