Summary: | 1С77: не работает печать через Таб.Напечатать (без диалога) | ||
---|---|---|---|
Product: | WINE@Etersoft | Reporter: | Боренко Денис <denis> |
Component: | Печать ; Диалог печати | Assignee: | Денис Баранов <baraka> |
Status: | CLOSED FIXED | QA Contact: | |
Severity: | critical | ||
Priority: | P1 | CC: | baraka, lav, sonner, vitperov |
Version: | 1.0.10 | ||
Target Milestone: | --- | ||
Hardware: | PC | ||
OS: | All | ||
Whiteboard: | |||
Заявки RT: | 16571 | Связано с: | |
Дата напоминания: | |||
Bug Depends on: | |||
Bug Blocks: | 443, 1217, 3851, 6388 |
Description
Боренко Денис
2009-04-21 09:56:39 MSD
1с версии 7.7 В трайсе выдает вот такое: trace:winspool:OpenPrinterW (L"PDF", 0x32d9e8, (nil)) trace:winspool:OpenPrinterW returning 1 with 127 and 0x1 trace:winspool:GetPrinterDataExA (0x1, "PrinterDriverData", "Paper Size" (nil), 0x32d9ec, 00000004, 0x32d9f0) warn:winspool:GetPrinterDataExA Can't open subkey "PrinterDriverData" trace:winspool:EnumPrinterDataExA 0x1 PrinterDriverData\FontSubTable trace:winspool:EnumPrinterDataExW 0x1 L"PrinterDriverData\\FontSubTable" trace:winspool:EnumPrinterDataExW RegOpenKeyExW (0x1, L"PrinterDriverData\\FontSubTable") returned 2 trace:winspool:EnumPrinterDataExA EnumPrinterDataExW returned 2 trace:winspool:ClosePrinter (0x1) trace:winspool:ClosePrinter (nil): (null) (hXcv: (nil)) for L"PDF" (doc: (nil)) lpr: Ошибка – не удается получить доступ к «1» – No such file or directory Принтер в cups называется "PDF" Скорей всего 3851, 3855 -- то же самое. Тоже наблюдал в консоли: fixme:psdrv:PSDRV_StartPage Already started a page? Я так понимаю, что бага 3851 имеет эти же корни? Воспроизведение: Регламентированные отчёты -> бух. отчёты -> бух. балланс. При печати в консоли появляется: fixme:psdrv:PSDRV_StartPage Already started a page? Сам документ на печать не посылается. Если сохранить отчёт в формате mxl, а затем распечатать, то всё прекрасно печатается. Cудя по трейсу по каналу psdrv, 1С посылает посылает документ на печать (рисует графические примитивы). *** Bug 3851 has been marked as a duplicate of this bug. *** 3851 и 3855 -- очень похоже, что корень один. Из 1с не печатает, если печать производится програмными средствами из модулей (методом Таб.Напечатать()). При печати из панели инструментов и из меню уже показаной таблицы все ок. Баланс не печатается, скорей всего, потому что направляется на печать сразу, без показа таблицы. Когда пытался потрейсить встречал две штуки: lpr: Ошибка – не удается получить доступ к «1» – No such file or directory и fixme:psdrv:PSDRV_StartPage Already started a page? причем первое вываливается несколько раз за печать и не вываливается если печатать показанную таблицу. В 1.0.9 печатало нормально. Нашёл примерное место ошибки. После печати первой страницы PSDRV_EndPage() не доходит до конца, а выходит на инструкции if(!PSDRV_WriteEndPage( physDev )) return 0; соответственно не ставится physDev->job.OutOfPage = TRUE; и PWDRV_StartPage думает, что предыдущая страница ещё не закончилась. PSDRV_WriteEndPage вызывает WriteSpool16 для записи в спул заголовка конца страницы, но WriteSpool16 возвращает SP_OUTOFDISK (количество записанных байт меньше количества исходных) можно проанализировать ошибку, содержащуюся в errno после вызова write: ERROR = Обрыв канала Скорей всего проблемы с вызовом "| lpr...." Всё оказалось просто. Формируется строка комманды: lpr -P'HpTest' -T'' -# 1 -o Collate=False -o sides=one-sided с пустым названием задание, поэтому lpr сразу завершается. Где-то уже было это исправление, но оно как-то пропало. Сделал патч. Всё работает. Ура! А можно сборку с патчем? Просто закажите сборку. Там будет пакет wine-etersoft-1.0.10-eter20 Принято eter20/13 Проверить на текущей сборке. В заявке РТ наблюдается регресс. По результату, ответить клиенту в заявку. Открываю по 1.0.12 |