Версия 2. Управление принтерами внутри 1С

24.07.17

Интеграция - Периферийные устройства

Управление принтерами внутри 1С, обычные формы, операционная система - Windows

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Версия 2. Управление принтерами внутри 1С:
.epf 8,77Kb
71
71 Скачать (1 SM) Купить за 1 850 руб.

Нашим операторам необходимо печатать большие объемы и при этом изменять свойства принтера. Когда программа 1С открывалась через RDP, они заходили непосредственно в раздел "Устройства и принтеры". Но при запуске 1С published application такой возможности нет. Пришлось сделать управление принтерами внутри 1С. Используются только стандартные библиотеки и объекты Windows, ничего устанавливать дополнительно и настраивать не нужно

Мне показалось это необычным - решил поделиться.

Выбор принтера можно использовать например в пакетной печати документов.

Комментарии к фото экрана:

  1. Внешний вид обработки.
  2. Выбор принтера происходит с помощью объекта WScript. Открывается список принтеров.
  3. Окно свойств принтера открываем с помощью printui.dll. Результат - стандартное окно свойств.
  4. Окно очереди печати открываем с помощью printui.dll. Результат окно очереди печати.
  5. Для печати на выбранный принтер пробной страницы нужно использовать свойство "ИмяПринтера" табличного документа.
  6. Список доступных свойств принтера из объекта winmgmts.

Если файл не удается скачать второй раз бесплатно - ниже добавил текст процедуры. Переменная ТабСвойств - это табличная часть с колонками Наименование, Значение.

Процедура ПолучитьСвойстваНажатие(Элемент)
	
	ТабСвойств.Очистить();
	
	objWMIService = ПолучитьCOMОбъект ("winmgmts:\\.\root\cimv2");
	colPrinters = objWMIService.ExecQuery("Select * From Win32_Printer Where Name = '"+мПринтер+"'");
	Для Каждого Product ИЗ colPrinters Цикл
		Для Каждого Prop ИЗ Product.Properties_ Цикл
			Стр = ТабСвойств.Добавить();
			Стр.Наименование = Prop.Name;
			Стр.Значение = Prop.Value;
		КонецЦикла;
	КонецЦикла;
	
КонецПроцедуры

управление принтерами внутри WScript printui.dll ИмяПринтера пакетная печать документов

См. также

Периферийные устройства Программист Платформа 1С v8.3 1С:Управление производственным предприятием Россия Абонемент ($m)

Обработка позволяет получить статус текущего принтера. Может быть полезна для разработчиков, например, когда необходимо получить принтеры и отправить документ на печать на активный принтер, или необходимо предупредить пользователя, что документ не может быть распечатан, так как текущий принтер не активный.

1 стартмани

31.12.2024    378    0    user821472    0    

2

Периферийные устройства Системный администратор Программист Платформа 1С v8.3 1С:Розница 2 Россия Абонемент ($m)

Пример работы для разработчика с оборудованием принтер чеков в рамках новейшей библиотеки подключаемого оборудования.

10 стартмани

14.11.2024    812    4    aximo    0    

3

Периферийные устройства Системный администратор Пользователь Платформа 1С v8.3 1С:Бухгалтерия 3.0 Абонемент ($m)

Простая в использовании обработка https://infostart.ru/1c/tools/1001819/ в целом решает поставленную задачу, но имеет явный недостаток - взаимодействует только с принтерами, подключенными к серверу. Доработанная версия позволяет работать как с принтерами на клиенте, так и на сервере

1 стартмани

30.08.2024    515    3    Sergey1CSpb    0    

4

Периферийные устройства Пользователь Платформа 1С v8.3 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 Розничная и сетевая торговля (FMCG) Россия Абонемент ($m)

Расширение для вывода информации для покупателя из РМК на второй монитор. Также реализован вывод картинок из каталога в левую часть экрана покупателя. Разработано для УТ 11.5, УНФ 3.0.6 и 3.0.9.

1 стартмани

12.08.2024    1494    30    Rastopchinss    16    

4

Периферийные устройства Пользователь Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Абонемент ($m)

Вывод для клиента на второй монитор (информационное табло) номера заказа в браузер (по умолчанию, например, Яндекс). Внешняя обработка может быть легко переделана под другие конфигурации (нужды) даже начинающим программистом.

1 стартмани

02.08.2024    829    0    AlOkt    0    

5

Периферийные устройства Программист Пользователь Платформа 1С v8.3 1С:Розница 3.0 Абонемент ($m)

Пример работы с эмулятором дисплея покупателя через библиотеку БПО.

6 стартмани

10.07.2024    906    6    aximo    0    

3

Периферийные устройства Программист Пользователь Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Речь пойдет не о сканерах штрихкодов 2D/3D/RF/распознавании лиц и прочего, а о старом добром аппарате, позволяющем считать страницу и отправить ее образ в ПК через COM/USB порт. Рассмотрим, как можно подключить и использовать сканер в типовых 1С-конфигурациях. И что делать, если никак не найти команду настройки сканера.

1 стартмани

28.05.2024    1258    Sergey1CSpb    2    

7
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. jaroslav.h 180 26.07.17 08:23 Сейчас в теме
На 10-ке список получен, все остальное не канает.
3. vasilev2015 2734 26.07.17 09:32 Сейчас в теме
(1) Объясните значение "не канает": "не работает" или "не интересует" ?
4. jaroslav.h 180 26.07.17 09:37 Сейчас в теме
(3) не работает, ошибка "Неприпустимі аргументи"
6. vasilev2015 2734 26.07.17 09:55 Сейчас в теме
(4) у меня работает на Windows Server 2008 R2 Enterprise, Windows Server 2012 R2 Datacenter. Много пользователей, ежедневно. Проверьте, что служба диспетчера печати запущена. Недопустимые аргументы - это ошибка Windows или ошибка 1С в какой-то строке ?
7. jaroslav.h 180 26.07.17 10:13 Сейчас в теме
(6) винда показывает ошибку. spooler запущен, но это не принципиально, я брал обработку из-за инфы как получить список принтеров, все остальное, было бы желание, нашлося б решение.
2. vasilev2015 2734 26.07.17 09:13 Сейчас в теме
Коллеги, напишите: что еще нужно добавить в эту обработку ? Идеи есть ?
5. jaroslav.h 180 26.07.17 09:40 Сейчас в теме
(2) на мой взгляд что самое ценное это получить список принтеров, т.е. имя принеторв, что бы это имя присвоить при программной печати из 1С. За способ получения списка спасибо, не знал о таком объекте в винде какой получает информацию о принтерах, находил только скриптами поллучения.
9. kraynev-navi 683 26.07.17 11:49 Сейчас в теме
(2) получить/выбрать лотки бумаги (входящие/исходящие) реализовано?
10. vasilev2015 2734 26.07.17 12:00 Сейчас в теме
(9) Если это свойство принтера, то в окне свойств можно.

Еще можно отдельно вывести кнопку очистку очереди, но можно чистить из окна очереди.
12. kraynev-navi 683 26.07.17 20:12 Сейчас в теме
(10) не скачивал, поэтому не понял сразу. Судя по скриншоту - просто вызов окна свойств без всякого программного взаимодействия на уровне считать/установить? Надеялся как раз на программное взаимодействие.
13. vasilev2015 2734 26.07.17 21:18 Сейчас в теме
можно разные темы поднять. Например, сделать табличную часть две колонки имя свойства-значение свойства заполнять ее свойствами принтера например Дуплекс-Истина и потом записывать обратно в принтер. Вам это интереснее будет ?

Только за запись поручиться не смогу: например у меня не всегда отрабатывает SetDefaultPrinter объекта WScript. Это все из-за винды )))
17. kraynev-navi 683 28.07.17 12:02 Сейчас в теме
(13) изначально поднимал тему: http://forum.infostart.ru/forum28/topic169460/ (первая фраза: без предпросмотра выбрать лоток печати). Интерес остался.
19. vasilev2015 2734 28.07.17 12:18 Сейчас в теме
(17) я не думаю, что у меня получится лучше, чем у Вас, но посмотрю. Вчера с удивлением узнал, что бумага в лотках наших принтеров поднимается типа как в лифте. Не пружинами, а именно электроприводами )))
20. vasilev2015 2734 28.07.17 14:03 Сейчас в теме
(17) Кстати, выбирать принтеры гораздо легче, чем лотки. Можно печатать четные страницы на одном принтере, нечетные - на другом. Или у Вас тоже огромный объем печати и лотки на электроприводе ?
21. kraynev-navi 683 28.07.17 14:05 Сейчас в теме
(20) Нет, у нас другая проблема: печать на защищенных носителях. Поэтому брак должен быть минимальным.
22. vasilev2015 2734 28.07.17 17:07 Сейчас в теме
(21) Специально для kraynev-navi добавил табличную часть со свойствами.

Предлагаю в 1С не делать установку лотков принтера, а проверять перед печатью установленный лоток. Чтобы не брать на себя ответственность за "защищенные носители"
kraynev-navi; +1 Ответить
24. kraynev-navi 683 30.07.17 21:29 Сейчас в теме
(22) респект за желание помочь. +
Скачаю новую версию, посмотрю.
8. vasilev2015 2734 26.07.17 10:51 Сейчас в теме
Посмотрите еще https://technet.microsoft.com/library/ee176792.aspx
может, не запущена служба, поддерживающая WScript или какие-то настройки безопасности ?

Способ получения принтеров таким образом для 1С встречается с 2005 года. (Больше 10 лет). Все новое - хорошо забытое старое.
11. buddha667 26.07.17 16:22 Сейчас в теме
Я решил подобную проблему (в 1с 7.7) таким образом:

//---------------------------------------
Процедура глОткрытьНастройкиПринтеров()
	ЗапуститьПриложение("explorer.exe shell:PrintersFolder");	
КонецПроцедуры


Не так красиво, но просто)
14. Yashazz 4802 27.07.17 16:41 Сейчас в теме
15. vasilev2015 2734 27.07.17 16:49 Сейчас в теме
(14) Приведите пример аналогичной публикации на infostart, доступной за sm ? )))

Лично мне из всех моих статей больше нравится http://infostart.ru/public/534444/ а остальные - гораздо меньше. Но коллеги оценивают противоположно.
16. Yashazz 4802 28.07.17 09:44 Сейчас в теме
(15) А я даже не об ИС говорю. Ещё на ИТлэнде в своё время было. Была книжка, автора не помню, про работу с WSH, AD и всяким таким системным, для 7.7/8.0 ещё. И вот когда она вышла, был прямо шквал разработок на эту тему.
18. vasilev2015 2734 28.07.17 12:16 Сейчас в теме
(16) В этом смысле соглашусь с Вами. Об этом же в пункте 8.

Вспомните Екклезиаста

9 Что было, то и будет; и что делалось, то и будет делаться, и нет ничего нового под солнцем.
10 Бывает нечто, о чем говорят: "смотри, вот это новое"; но это было уже в веках, бывших прежде нас.

)))
23. aspirator23 340 29.07.17 13:41 Сейчас в теме
25. kraynev-navi 683 31.07.17 16:41 Сейчас в теме
Посмотрел обработку - до этих свойств уже добирался ранее, увы, этого мало.
Установка в нашем случае должна быть по любому.
26. vasilev2015 2734 31.07.17 17:18 Сейчас в теме
Посмотрите код в отладчике. Там еще есть свойства у com-объекта, но мне они показались малозначимыми. Пожалуй, это все чем могу Вам помочь.
27. user1530126 24.01.21 20:13 Сейчас в теме
Здравствуйте. Заработает ли на ут 11.4 и как в коде осуществляется сохранение принтера, через ХранилищеСистемныхНастроек?
28. vasilev2015 2734 24.01.21 20:59 Сейчас в теме
(27) Здравствуйте !

для УФ толстый клиент будет работать,
для УФ тонкий клиент com объект будет на сервере
а использовать принтеры нужно на клиенте.

Обычно принтер печатной формы в УФ сохраняется
вместе с другими параметрами печати.

Расскажите, что у Вас получится.
29. user1530126 24.01.21 21:36 Сейчас в теме
... это понятно.
Так посмотрите, как осуществляется сохранение принтера при его выборе.
Стандартными средствами 1с (Парметры страницы) или вы сами код писали?
30. vasilev2015 2734 25.01.21 09:03 Сейчас в теме
(29) Здесь пример получения принтеров, доступных в windows.
Результат - строка, которую можно самостоятельно сохранять в любое место.
31. Angel_19 6 29.04.21 09:12 Сейчас в теме
Можно менять настройки принтера?
Как пример печатаем этикетки, часть идут с зазорами, часть с метками. Приходится менять руками, можно ли как-то получить параметр и установить его?
32. vasilev2015 2734 29.04.21 12:01 Сейчас в теме
.
(31) Здравствуйте !

Посмотрите, что-то есть в комментариях.

Как правило, настройки устанавливаются вручную в обычном диалоге принтера,
но конечно диалог имеет api.

Проверьте, что датчик смены страниц на принтере не засорен.
Оставьте свое сообщение