Форум OlegON > Программы и оборудование для автоматизации торговли > Кассовые программы > УКМ-4

Прекращение печати документов OpenOffice : УКМ-4

28.03.2024 20:51


31.12.2012 14:59
Onesoft
 
С Новым годом, друзья!!! :Laie_22mini:

Продолжаю делиться жопытом.
Не знаю, сталкивался ли кто-нибудь с этим, на форуме не нашёл подобных тем. Посему пишу.

У нас на сегодняшний день 108 магазинов, на СГО настроена печать кассовых документов (ПКО/РКО и кассовых книг, "старый" до 49sp6-формат) через OpenOffice 3.3.0. Соответственно, около 115 принтеров (магазины видят только свои принтеры и кассовые документы), ukmserver.exe запущен от учётной записи, у которой настроен профиль в системе и имеются соответствующие настройки OpenOffice.
Полтора года назад мы столкнулись с такой проблемой: в периоды наибольшей активности печати кассовых документов могло произойти зависание в памяти soffice.exe и soffice.bin, мы даже думали, что это могло быть как-то связано с утечкой памяти, связанной с драйвером aksdf.sys, но после её решения проблема с soffice.exe не пропала. Процессы просто повисали в памяти, при этом в вэбе УКМ отображалось, что документ оправлен на печать, а следующие документы просто терялись. Убиение процессов soffice.exe и soffice.bin проталкивало печать на пару документов, затем снова всё стопорилось. Решалась проблема перезапуском службы ukmservice на СГО, а поскольку до настройки репликации Master-Slave для архивирования БД мы каждую ночь останавливали все службы, к утру проблема "решалась" автоматически.
В системных журналах никаких записей нет. Сервис Плюс так и не смог нам помочь, видимо, слишком специфическая задача оказалась.. На сегодняшний день есть две версии:
1. стек запуска приложений. OpenOffice в процессе своей работы что-то делает неправильно и на 200-300 раз больше не может запускаться. И ничего нигде не фиксируется.
2. возникают какие-то проблемы в домене с учётной записью, под которой запущен ukmservice. Создавали другую учётную запись с другим набором прав - проблему не решило.

Был придуман "велосипед" в виде отдельной службы, которая отправляла на печать документы, подготовленные в УКМ:

1. hex-редактором подправили ukmserver.exe чтобы он запускал не soffice.exe, а другой экзешник, который формирует специальную очередь из документов и принтеров.
2. написана служба печати документов из этой очереди, реализован контроль состояния принтера, анализ его очереди и результата печати документа.

Но главное: служба эта умеет перезапускать себя с заданным интервалом времени *72. Работа этой службы без перезапуска в течение суток повторила проблему с отказом печати, версии причины остались те же. Сейчас она перезапускается каждые 20 минут, документы берёт из специальной очереди, печать стала осуществляться даже быстрее на пару секунд. Ненапечатанные вовремя документы при очередном запуске службы напечатаются гарантированно. Ни одного сбоя печати пока не было..

Однако, может быть кто-нибудь сталкивался с подобным поведением процесса печати документов в УКМ 4.0 и имеет более цивилизованный жопыт решения безо всяких затычек?
03.06.2015 17:41
Aligator
 
Подскажите пожалуйста все кто сможет, у кого получилось штатно без написания стороннего софта победить проблемы подвисания служб Open Office?
11.06.2015 00:38
Onesoft
 
На самом деле, возможны ситуации, когда без стороннего софта не обойтись. Пример из жизни: печатаем все документы через СГО, каждый магазин печатает свои документы через СГО на свой принтер (допилил WEB-интерфейс, чтобы магазин видел только свои принтеры), на СГО при этом принтеры всех магазинов (здесь, конечно, важно не разводить зоопарк принтеров, но всяко бывает). Проблема очевидна: когда время закрытия магазинов одинаково и все магазины начинают печатать свои документы (от пяти (ПКО и КМ6 с двух касс и лист кассовой книги) до шести-семи (РКО, КМ3) на магазин), очередь печати документов на СГО переполняется и время печати документа может растянуться до нескольких десятков минут. Для печати одного документа через OpenOffice требуется не менее трёх секунд. 15 секунд требуется для печати пяти документов от одного магазина. 150 секунд - для печати пяти документов от десяти магазинов. Но кто-то в магазине не дождался, пока дойдёт его очередь (там ничего не знают об очереди и вообще спешат домой), и вот они снова отправляют документ на печать... Решение - в многопоточной печати документов, а УКМ этого делать (пока) не умеет. Вот и я допилил свой сервер печати кассовых документов для печати в многопоточном режиме. Для 134 закрывающихся в 22:00 магазинов десяти потоков печати оказалось вполне достаточно. Помимо этого, печать документов вынес на отдельный сервер, принтеры все на нём, а в WEB-интерфейс УКМ транслирую только их названия.
Часовой пояс GMT +3, время: 20:51.

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