Теперь не работает метод Таб.Напечатать(); где Таб -- объект "Таблица" Вне зависимости от параметров (показывать диалог печати или нет). Печатаю на штатный cups PDF принтер. Если таблицу показать и печатать из панели инструментов, то все ок. wine 1.0.10-eter19/13 на ubuntu intrepid
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