Проблема невыгрузки смен в бэк-офис имеет два аспекта:
1. Смены не выгружаются в бэк-офис, т.к. они не выгрузились с кассового терминала на сервер УКМ. Проблема характерна для любого конвертера экспорта, т.к. в данном случае от конвертера это не зависит, но может являться результатом следующих проблем:
1.1. отсутствует связь между терминалом и сервером – необходимо проверить, запущена ли служба сервера УКМ 4.0, работает ли терминал и существует ли связь по протоколам TCP (пингуется ли терминал с сервера и сервер с терминала), возможно также, что терминал соединён с другим сервером УКМ 4.0, найденным в сети, либо на сервере УКМ установлен антивирусный пакет, сетевой экран и т.п. Проблема также может проявлять себя в случае, описанном в ошибке №1038 («потеря связи между кассой и сервером», возникает во время работы терминала; восстанавливается при перезапуске службы сервера УКМ либо при перезагрузке терминала).
1.2. В структуре данных БД терминала существует ошибка, которая препятствует автоматической выгрузке данных с терминала. Выгрузка данных с терминала осуществляется по протоколу MySQL выполнением на стороне сервера УКМ стандартных запросов чтения данных из БД терминала, при наличии ошибки в структуре данных один из таких запросов будет выполняться позорительно долго, при этом в журнале сервера работа с терминалом заканчивается на записи вида:
12:37:57: INFO:CashReader#00DE3288:Cash(101): importing out_receipt_item
12:39:13: INFO:CashReader#00DE3288:Cash(101): importing out_receipt_link
12:39:13: INFO:CashReader#00DE3288:Cash(101): importing out_receipt_payment
12:39:19: INFO:CashReader#00DE3288:Cash(101): importing out_receipt_payment_handler
12:39:23: INFO:CashReader#00DE3288:Cash(101): importing out_receipt_subtotal
12:39:26: INFO:CashReader#00DE3288:Cash(101): importing out_shift_open
12:39:26: INFO:CashReader#00DE3288:Cash(101): importing out_shift_payments
12:39:26: INFO:CashReader#00DE3288:Cash(101): importing out_receipt_discounts
Где в скобках Cash() указывается номер кассового терминала. Если при этом на кассовом терминале в консоли MySQL выполнить запрос show processlist, то в списке процессов будет фигурировать запрос вида select * from out_receipt_.... с большим временем выполнения. Исправление данной проблемы:
1.2.1. выполнить на кассовом терминале ukmoff и reboot;
1.2.2. после перезагрузки терминала выполнить ремонт БД терминала при помощи скрипта clidbrepair.sh;
1.2.3. по завершении работы скрипта можно исследовать полученный файл.log, в конце его будут после строки reparing будут перечислены отремонтированные таблицы;
1.2.4. выполнить на кассовом терминале ukmon и reboot;
1.2.5. по окончании загрузки терминала данные по продажам автоматически выгрузятся на сервер УКМ.
2. Смены не выгружаются в бэк-офис из УКМ, данные с терминалов на сервер УКМ выгружены. Т.к. стандартный конвертер экспорта УКМ 4.0 выгружает данные по сменам в БД MySQL, то все проблемы с СУБД MySQL также оказывают влияние как на работу конвертера, так и на хранение самих данных в БД export. Поэтому существует два направления, в которых возможно развитие проблемы:
2.1. Ошибка в структуре БД export, при этом либо сервер УКМ не может осуществить экспорт данных в БД, либо процедура чтения данных в бэк-офисе не может получить доступ к данным БД export (по типу проблемы п.1.2). Методика исправления данной проблемы:
2.1.1. остановить службу сервера УКМ;
2.1.2. остановить процедуру чтения данных в бэк-офисе из БД export;
2.1.3. остановить службу СУБД MySQL, дождаться её остановки – необходимо для закрытия всех соединений и завершения выполнения всех запросов, а также завершения кеширования всех таблиц;
2.1.4. запустить службу СУБД MySQL;
2.1.5. выполнить ремонт БД export, запустив на сервере УКМ скрипт exportdbrepair.cmd;
2.1.6. по завершении работы скрипта можно исследовать полученный файл.log, в конце его будут после строки reparing будут перечислены отремонтированные таблицы;
2.1.7. запустить службу сервера УКМ;
2.1.8. запустить процедуру чтения данных в бэк-офисе из БД export;
2.2. Ошибка в работе конвертера экспорта, зарегистрирована под №1042: «При автоматическом экспорте выгрузки сперва пишется запись в таблицу cnv_unload_state, затем только выгружаются данные». В БД сервера УКМ существует таблица cnv_unload_state, в которой содержатся номера последних выгруженных смен по конкретным конвертерам экспорта смен (и номера чеков по конкретным конвертерам почековой выгрузки). Т.е. ошибка характерна для работы любого конвертера экспорта, она может возникнуть, в частности, при остановке службы сервера во время выполнения экспортирования данных (в БД export для стандартного конвертера экспорта УКМ 4.0), также может возникнуть при ситуации, описанной в п.2.1. (харатерно для БД export). Если смена, не выгруженная автоматически, выгружается затем вручную, значит, это оно.