|
v7: программная печать на разные принтеры | ☑ | ||
---|---|---|---|---|
0
BolshoySmal
30.01.17
✎
12:04
|
Всем добрый день. Помогите решить проблему. Есть сервак терминальный 2012. на нем 7.7 живет.
Возникла необходимость в зависмости от признкака документа отправлять на разные принтеры.Принтеры сетевые . Значение задается через переменную Сколько не бился, всё равно отправляет на последний отпечатанный. вот код Если ПустоеЗначение(докум.Хартман)=1 Тогда Таб3.Опции(0,0,0,0,"ОпцииПечатиРеализация3"); Таб3.ПараметрыСтраницы(2,,,,,,,,,1,,Устройство); Таб2.Опции(0,0,0,0,"ОпцииПечатиТитул1"); Таб2.ПараметрыСтраницы(1,,,,,,,,,1,,Устройство); //Опись Иначе Таб3.Опции(0,0,0,0,"ОпцииПечатиРеализация4"); Таб3.ПараметрыСтраницы(2,,,,,,,,,1,,УстройствоХар); Таб2.Опции(0,0,0,0,"ОпцииПечатиТитул2"); Таб2.ПараметрыСтраницы(1,,,,,,,,,1,,УстройствоХар); // КонецЕСли; Таб3.КоличествоЭкземпляров(КолвоКопий); Таб3.Показать(глНазваниеДокументаВжурнале(Докум)); Таб3.Напечатать(0); Таб2.КоличествоЭкземпляров(КолвоКопий); Таб2.Показать(глНазваниеДокументаВжурнале(Докум)); Таб2.Напечатать(0); Помогите плиз. буду очень признателен. |
|||
1
z80a
30.01.17
✎
12:12
|
Нужно удалить в реестре DefaultPrinter
|
|||
2
BolshoySmal
30.01.17
✎
12:21
|
Не спасло.
|
|||
3
Злопчинский
30.01.17
✎
12:25
|
Пропиши четко ВЕЗДЕ в разных ветках если аккуратно
Таб.Опции(0,0,0,0,"ОпцииПечати_"+рбВидЭтикетки+ИмяПользователя()+"_лИмя"); Таб.ПараметрыСтраницы(3-рбВидЭтикетки,,1,0,0,0,0,0,0,1,1,ИмяТекущийПринтер); ИмяТекущийПринтер - ПРАВИЛЬНОЕ ИМЯ, если будет неправильно - или в никуда уйдет или на умолчательный |
|||
4
Builder
30.01.17
✎
12:25
|
(0) Была где то обработка - получала список принтеров, пользователь выбирал, сохранялись данные из реестра, в реестр прописывался выбранный принтер, отправлялось все на печать, дальше все возвращалось в реестре как было. Работало.
|
|||
5
Злопчинский
30.01.17
✎
12:25
|
то есть Опции+ПараметрыСтраницы - всегда парой, чтобы не терялись
|
|||
6
z80a
30.01.17
✎
12:27
|
(2) После каждой печати
[HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\" + НазваниеИБ + "\V7\" + ИмяПользователя() + "\Moxel\Default] ""DefaultPrinter""=- |
|||
7
Злопчинский
30.01.17
✎
12:27
|
С прямой печатью сразу - была какая-то особенность, не помню уже... поройся в старых ветках
|
|||
8
Garykom
гуру
30.01.17
✎
12:28
|
Погугли EnumPrinterConnections у тя имена принтеров неправильные вероятно
|
|||
9
Злопчинский
30.01.17
✎
12:28
|
когда пропишешь все аккуратно в коде попробуй для разных принтеров сделать Показать и потом ручную печать
а потом то же самое без показать сразу Напечатать(...) |
|||
10
Garykom
гуру
30.01.17
✎
12:29
|
(6) Не надо никакой "дефолтовый принтер" скидывать, все работает и с установленным.
|
|||
11
torgm
30.01.17
✎
12:33
|
(0) наименование принтеров по 8 символов.
|
|||
12
z80a
30.01.17
✎
12:36
|
(10) нет, не работает
|
|||
13
Garykom
гуру
30.01.17
✎
12:39
|
(12) с кислотой что то
|
|||
14
Злопчинский
30.01.17
✎
12:46
|
(13) плесень? грибы?
|
|||
15
Garykom
гуру
30.01.17
✎
12:51
|
(14) между плесенью и грибами разница в этой кислоте минимальна
|
|||
16
BolshoySmal
30.01.17
✎
13:56
|
нашкл вот такой тод
|
|||
17
BolshoySmal
30.01.17
✎
13:58
|
нашел вот такой код
N=СоздатьОбъект("WScript.Network"); NetworkPrinters = N.EnumPrinterConnections(); Для Сч = 0 По NetworkPrinters.length - 1 Цикл Сообщить("Подключен сетевой принтер " + NetworkPrinters.Item(сч) + " [" + NetworkPrinters.Item(сч + 1) + "]"); сч = сч + 1; КонецЦикла; Получаю вот ___________________________________________________ Подключен сетевой принтер 10.2.3.122 [Har_Sklad] Подключен сетевой принтер 10.2.3.5 [Rozn_otd] Подключен сетевой принтер 10.2.3.93 [OSn_Sklad] Подключен сетевой принтер WSD-ce6cd131-395a-43e9-9adb-1965a2e5c612.006c [FS-C5150DN] Подключен сетевой принтер PORTPROMPT: [Microsoft XPS Document Writer] Подключен сетевой принтер PORTPROMPT: [Microsoft Print to PDF] Подключен сетевой принтер SHRFAX: [Fax] |
|||
18
BolshoySmal
30.01.17
✎
13:59
|
теперь пытаюсь сделать следующее
Т=СоздатьОбъект("Таблица"); Т.ВывестиСекцию("Шапка"); Т.Показать(); N=СоздатьОбъект("WScript.Network"); PrinterDef="Osn_skald"; PrinterPrint="Har_skald"; N.SetDefaultPrinter(PrinterPrint); Т.ПараметрыСтраницы(1,,,10,0,0,0,0,0,1,1); Т.Напечатать(0); и получаю ошибку WSHNetwork.SetDefaultPrinter: Отсутствует принтер с именем "Har_skald". |
|||
19
BolshoySmal
30.01.17
✎
13:59
|
а принтер первый в списке
|
|||
20
BolshoySmal
30.01.17
✎
13:59
|
почему так ? кто нить сможет сказать ?
|
|||
21
Это_mike
30.01.17
✎
14:01
|
Har_Sklad <> Har_skald
|
|||
22
Garykom
гуру
30.01.17
✎
14:03
|
(17) Гы с сетевыми принтерами все еще веселее, переименуй их в короткие имена без спецсимволов там где 1С запускается.
|
|||
23
BolshoySmal
30.01.17
✎
14:28
|
не понял
|
|||
24
BolshoySmal
30.01.17
✎
14:29
|
как перерименовать?
типа Har_skald в HarSklad |
|||
25
BolshoySmal
30.01.17
✎
15:16
|
вот такой код
Ошибок не выдал, но и на печать не отправил Тз=СоздатьОбъект("ТаблицаЗначений"); Тз.НоваяКолонка("Итем"); Тз.НоваяКолонка("Имя"); Т=СоздатьОбъект("Таблица"); Т.ВывестиСекцию("Шапка"); Т.Показать(); N=СоздатьОбъект("WScript.Network"); NetworkPrinters = N.EnumPrinterConnections(); Для Сч = 0 По NetworkPrinters.length - 1 Цикл Сообщить("Подключен сетевой принтер " + NetworkPrinters.Item(сч) + " [" + NetworkPrinters.Item(сч + 1) + "]"); Тз.НоваяСтрока(); Тз.Итем=NetworkPrinters.Item(сч + 1); Тз.Имя=СокрЛП(Строка(NetworkPrinters.Item(сч + 1))); сч = сч + 1; КонецЦикла; НомСТр=0; ТЗ.ВыбратьСтроки(); Пока ТЗ.ПолучитьСтроку()>0 цикл Если ТЗ.Имя="Har_Sklad" Тогда PrinterDef=ТЗ.Итем; КонецЕСли; Если ТЗ.Имя="OSn_Sklad" Тогда PrinterPrint=ТЗ.Итем; КонецЕСли; КонецЦикла; //PrinterDef=Har_sklad; //PrinterPrint=ТЗ.ПолучитьСТрокуПоомеру(1).Итем; N.SetDefaultPrinter(PrinterPrint); Т.ПараметрыСтраницы(1,,,10,0,0,0,0,0,1,1); Т.Напечатать(0); N.SetDefaultPrinter(PrinterDef); Т.ПараметрыСтраницы(1,,,10,0,0,0,0,0,1,1); Т.Напечатать(0); |
|||
26
BolshoySmal
30.01.17
✎
15:57
|
В резултьтате получилось вот так
Может кому и пригодиться. Тз=СоздатьОбъект("ТаблицаЗначений"); Тз.НоваяКолонка("Итем"); Тз.НоваяКолонка("Имя"); Т=СоздатьОбъект("Таблица"); Т.ВывестиСекцию("Шапка"); Т.Показать(); N=СоздатьОбъект("WScript.Network"); NetworkPrinters = N.EnumPrinterConnections(); Для Сч = 0 По NetworkPrinters.length - 1 Цикл Сообщить("Подключен сетевой принтер " + NetworkPrinters.Item(сч) + " [" + NetworkPrinters.Item(сч + 1) + "]"); Тз.НоваяСтрока(); Тз.Итем=NetworkPrinters.Item(сч + 1); Тз.Имя=СокрЛП(Строка(NetworkPrinters.Item(сч + 1))); сч = сч + 1; КонецЦикла; НомСТр=0; ТЗ.ВыбратьСтроки(); Пока ТЗ.ПолучитьСтроку()>0 цикл //Если ТЗ.Имя="Har_Sklad" Тогда Если ТЗ.Имя="FS-C5150DN" Тогда PrinterDef=ТЗ.Итем; КонецЕСли; Если ТЗ.Имя="OSn_Sklad" Тогда PrinterPrint=ТЗ.Итем; КонецЕСли; КонецЦикла; //PrinterDef=Har_sklad; //PrinterPrint=ТЗ.ПолучитьСТрокуПоомеру(1).Итем; Сообщить(PrinterDef); Сообщить(PrinterPrint); N.SetDefaultPrinter(PrinterPrint); //Т.ПараметрыСтраницы(1,,,10,0,0,0,0,0,1,PrinterPrint); Т.ПараметрыСтраницы(1,,,,,,,,,1,,PrinterPrint); Т.Напечатать(0); N.SetDefaultPrinter(PrinterDef); //Т.ПараметрыСтраницы(1,,,10,0,0,0,0,0,1,PrinterDef); Т.ПараметрыСтраницы(1,,,,,,,,,1,,PrinterDef); Т.Напечатать(0); |
|||
27
BolshoySmal
30.01.17
✎
15:58
|
Можно закрывать
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |