23.04.2014, 18:02 | #1 |
Участник
|
Добрый день!
Работаю на кастомизированном ядре 2.6, клиент 2009. Опишу задачу. Есть функциональность печати ценников из Navision, через report. Ценники имеют разный размер (5x4 и 7x4). Для печати есть ленточный принтер. Необходимо передавать на принтер размер, который требуется напечатать. Какое решение пока рассматривается. Один физический принтер в винде определен, как 2 виртуальных с разными размерами печати (5x4,7x4) по умолчанию. Теперь задача сводится к передачи нужного формата на нужный принтер. Я это сделал через 78 таблицу (Принтер Настройка). При выборе формата ценника отрабатывает следующий код (на onAfterValidate поля): [attachment=1384:format.jpg] CLEAR(ВыбранныйПринтерПуть); DataMaxПринтерНастройка.RESET; DataMaxПринтерНастройка.SETRANGE(Магазин,Магазин."Но."); CASE ФорматЦенника OF ФорматЦенника::"5x4": BEGIN DataMaxПринтерНастройка.SETRANGE(Формат, DataMaxПринтерНастройка.Формат::"5x4"); IF DataMaxПринтерНастройка.FINDFIRST THEN ВыбранныйПринтерПуть := DataMaxПринтерНастройка.Принтер ELSE ERROR('Нет принтера для печати формата 5x4 в таблице 99001656! Обратитесь к администраторам ИС.'); END; ФорматЦенника::"7x4": BEGIN DataMaxПринтерНастройка.SETRANGE(Формат, DataMaxПринтерНастройка.Формат::"7x4"); IF DataMaxПринтерНастройка.FINDFIRST THEN ВыбранныйПринтерПуть := DataMaxПринтерНастройка.Принтер ELSE ERROR('Нет принтера для печати формата 7x4 в таблице 99001656! Обратитесь к администраторам ИС.'); END; END; ПринтерНастройка.RESET; ПринтерНастройка.SETRANGE("Код Пользователя",USERID); ПринтерНастройка.SETRANGE("Отчет ID", 60252); IF ПринтерНастройка.FINDSET THEN BEGIN ПринтерНастройка.VALIDATE("Название Принтера",''); ПринтерНастройка.MODIFY; ПринтерНастройка.VALIDATE("Название Принтера", ВыбранныйПринтерПуть); ПринтерНастройка.MODIFY; COMMIT; END ELSE BEGIN ПринтерНастройка.INIT; ПринтерНастройка."Код Пользователя" := USERID; ПринтерНастройка."Отчет ID" := 60252; ПринтерНастройка."Название Принтера" := ВыбранныйПринтерПуть; ПринтерНастройка."Отчет Название" := CurrReport.OBJECTID(TRUE); ПринтерНастройка.INSERT; COMMIT; END; Суть в том, что записывается значение в Принтер настройка, которое должно далее на системном уровне определять на какой принтер отправлять задание на печать. Работает, но криво. Почему-то срабатывает предыдущий формат, а при повторном запуске он отрабатывает. Пример: 1) Захожу в сессию Nav, и выбираю формат 5x4. На печать уходит правильный формат. [attachment=1385:5x4-1.jpg] 2) Перезахожу в отчет и выбираю формат 7x4. На печать идет формат 5x4. [attachment=1386:7x4-1.jpg] 3) Снова перезахожу и выбираю формат 7x4. Печать идет на правильный формат. [attachment=1387:7x4-2.jpg] Всю голову себе уже сломал. Может быть кто-нибудь подскажет вариант решения. Спасибо. |
|