|
v7: Получить\установить параметры принтера | ☑ | ||
---|---|---|---|---|
0
BalBess
04.09.13
✎
12:14
|
Подскажите, как установить параметры принтера из 1с
В частности параметр "двухсторонняя печать" Принтер сетевой, 1C в терминале. Везде (где нашел) советуют через реестр, не знаю как это все будет работать в терминале, может даже прав не хватить. Вопрос в том, можно как-то без реестра? |
|||
1
ДенисЧ
04.09.13
✎
12:15
|
Можно. Напиши свой драйвер принтера, с шахматами и монашками. Который даст возможно нормально программно управлять всеми настройками.
|
|||
2
BalBess
04.09.13
✎
12:34
|
еще есть варианты?
|
|||
3
Ёпрст
04.09.13
✎
12:41
|
есть
|
|||
4
Ёпрст
04.09.13
✎
12:42
|
скармливать dat файлик принтёру перед печатью.
|
|||
5
BalBess
04.09.13
✎
12:50
|
ЗапуститьПриложение("rundll32 printui.dll,PrintUI /Sr /n """ + ИмяПринтера + """ /a ""file.dat""");
так? т.е. я сначала сохраняю, те которые были потом скармливаю, с нужными настройками потом обратно восстанавливаю? такой аглоритм, или можно как-то проще? |
|||
6
Ёпрст
04.09.13
✎
12:59
|
почти
|
|||
7
Ёпрст
04.09.13
✎
13:00
|
примерчик
http://rusfolder.com/37887929 |
|||
8
Ёпрст
04.09.13
✎
13:01
|
можно и через ветку реестра делать
|
|||
9
BalBess
04.09.13
✎
13:27
|
понял, поразбираюсь, спасибо
|
|||
10
BalBess
05.09.13
✎
09:44
|
Хорошо, а как печатать несколько экземпляров
например ТОРГ-12 в 2 экземплярах такой вариант не проходит: Таб.КоличествоЭкземпляров(Экз); Таб.Напечатать(0); печатает не правильно, или вместо этого делать такую конструкцию: Для i = 1 По Экз Цикл Таб.Напечатать(0); КонецЦикла; Кто как решил проблему? |
|||
11
Ёпрст
05.09.13
✎
10:05
|
(10) проще через цикл
|
|||
12
povar
05.09.13
✎
10:06
|
делал через реестр, но потом все переделал на виртуальные принтеры с разными настройками по умолчанию
|
|||
13
BalBess
05.09.13
✎
10:33
|
Еше такой момент..
мне нужно, чтобы пользователь мог выбрать принтер для печети, и в случае двухстороннего принтера печатал как надо. вопрос, как я узнаю принтер который выбрал пользователь? Метод Таб.Напечатать(1) ничего не возвращает? И если юзер нажал отмену? |
|||
14
BalBess
05.09.13
✎
10:38
|
Получается мне надо подменять стандартный диалог печати...
во блин.. |
|||
15
Ёпрст
05.09.13
✎
10:38
|
(13) ничего не понял..
просто на форме как в (7) размещай список принтёров и печатай на любой.. Можешь и виртуальных принтёров насоздавать (так проще всего) с разными настройками и обозвать их соответствующе |
|||
16
Ёпрст
05.09.13
✎
10:39
|
и будут выбирать либо
Принтёр_васи_безДуплекса либо Принтёр_васи_Дуплекс |
|||
17
BalBess
05.09.13
✎
10:50
|
Ну да, в (7) как раз и есть подмена стандартному диалогу
только я немного его расширю, количество экземпляров, диапазон печати, ну в общем, как в стандартном.. Еще бы Ctrl+P перехватывать.. (16) наши юзеры будут промахиваться.. т.к. видов документов много, это надо будет запоминать, если это Торг-12, и принтер "Принтёр_васи", то отправляю на "Принтёр_васи_Дуплекс", если Торг-13, то ... и т.д. А так будет все автоматом.. |
|||
18
Ёпрст
05.09.13
✎
10:59
|
Ctrl+P тоже перехватывается.. ПриПечатиТаблицы, в формексе
|
|||
19
BalBess
05.09.13
✎
11:22
|
(18) как ею пользоваться?
мне нужно вместо стандартного диалога подсунуть свой (ваш) сделал (в глобальнике) Процедура ПриПечатиТаблицы(Таблица, ФлагПредпросмотра, Заголовок) Сообщить(Заголовок); КонецПроцедуры нажимаю Ctrl+P - вылазит обычный(!) диалог, нажимаю "Ок", срабатывает процедура |
|||
20
Ёпрст
05.09.13
✎
11:23
|
Ну, тогда тупо
ПриНажатииКнопкиКлавиатуры.. только тебе еще придётся перехватывать все нажатия в меню... и в контекстных тоже. В общем, не благодарное занятие. |
|||
21
Ёпрст
05.09.13
✎
11:24
|
у нас все доки печатаются обработками, у меня проблем с перехватом не возникает..
|
|||
22
Ёпрст
05.09.13
✎
11:24
|
:)
|
|||
23
povar
05.09.13
✎
11:29
|
(21) +100
не надо такое дело взвешивать на неокрепший мозг пользователей |
|||
24
BalBess
09.09.13
✎
07:55
|
опять затык.. с печатью нескольких экземпляров
способ Для i = 1 По Экз Цикл Таб.Напечатать(0); КонецЦикла; не помогает! после Напечатать(0) таблица изчезает пробовал например Перем ВрТабл; Для i = 1 По ЧислоКопий Цикл ВрТабл = Табл; ВрТабл.Напечатать(0); КонецЦикла; Все равно печатает один экземпляр, потом пишет "Нет информации для вывода на печать!" |
|||
25
BalBess
09.09.13
✎
09:09
|
Видимо с таблицами все манипуляции происходят только со ссылками. Придется каждый раз формировать ее заново. Что не есть гуд.
Во первых, формирование таблицы занимает почти 200 строк кода, во вторых, как вызвать процедуру документа из обработки? Может кто знает как получить копию таблицы или по другому: как напечатать насколько экземпляров не используя КоличествоЭкземпляров() |
|||
26
Shaman100M
09.09.13
✎
11:03
|
(25) несколько копий - попробуй "обрамить" ВрТаб.Напечатать(0) :
ВрТаб.Показать(,,1); Для и=1 По ЧислоКопий Цикл ВрТаб.Напечатать(0); КонецЦикла; ВрТаб.Показать(,,-1); в этом случае окно печати "определено", ссылка не должна пропасть. Окна табличных форм при этом, будут мелькать. по реализации множества нажатий на клаве - можно сделать внешний отчет с свойствами формы "использовать таблицу" - "пустую" - "во все окно", и в нем сделать сколько угодно кнопок с горячими клавишами. открывать его с параметром - сформированный шаблон таблицы, который загружать в прикрепленную. |
|||
27
Shaman100M
09.09.13
✎
11:08
|
+ (26)
Процедура ПриОткрытии() // внешний отчет с таблицей Таблица.ИсходнаяТаблица(Форма.Параметр); Таблица.Вывести(); КонецПроцедуры |
|||
28
BalBess
09.09.13
✎
11:45
|
(26) работает, только окна мелькают, не камильфо... наши юзеры испугаются, да и смотреть на таблицу нет необходимости, когда печатаешь одни и те-же документы
(27) не совсем понял про что речь, но думаю что Таблица.ИсходнаяТаблица(Форма.Параметр) не сработает.. |
|||
29
Shaman100M
09.09.13
✎
12:11
|
(28)пока таблица печатается все равно висит окно состояния печати, - таблица "за ним" страха не добавит.
ну, вот так тогда: Таб.Записать(ИмяФайла); Для И=1 По ЧислоКопий Цикл ОткрытьФормуМодально("Отчет",ИмяФайла,ИмяФайлаВнешнегоОтчета); КонецЦикла; // внешний отчет Процедура ПриОткрытии() Таблица.ИсходнаяТаблица(Форма.Параметр); Таблица.Вывести(); Таблица.Напечатать(0); СтатусВозврата(0); КонецПроцедуры на закладке диалог отчета - меню действия - "свойства формы..." + (26) |
|||
30
BalBess
09.09.13
✎
15:26
|
Временно решил проблему, через получение таблицы заново, для каждой копии (через метод Формекса ВыполнитьФункцию())
Провел эксперименты, сравнивал сохранение через файл как в (29), и через получение заново таблицы: получается примерно одинаково (около 30мс). Т.е. у меня получение самой сложной таблицы (торг-12) по времени занимает как чтение таблицы из файла. Минусы через файл: нагрузка на файловую систему, картинки (например логотип) сохраняются видимо в BMP и файл может занимать 1мб, и еще у меня при загрузке из файла сыпятся ошибки, типа: Неопознанный оператор <<?>>{"B","0","0","33","0","0"," 10860 "} не сохраняются параметры страницы, т.е. нужно будет каждый раз во внешний отчет передавать параметры страницы |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |