|
Как определить наличие принтера в системе? | ☑ | ||
---|---|---|---|---|
0
mzelensky
14.12.11
✎
14:32
|
Доброго времени суток!
!00% где-то уже обсуждалась эта тема и я даже как-то ее видел, но вот найти ,когда понадобилось, не удается. В общем нужно определить, установлен ли в системе принтер с определенным именем? |
|||
1
aleks-id
14.12.11
✎
14:35
|
Функция ЗаполнитьПринтеры()
Принтеры = Новый СписокЗначений; Состояние("Составляется список принтеров. Подождите."); Попытка Locator = Новый COMОбъект("WbemScripting.SWbemLocator"); Сервисы = Locator.ConnectServer("."); Объекты = Сервисы.InstancesOf("Win32_Printer"); // Теперь переберем все принтеры системы Для Каждого Принтер из Объекты Цикл ИмяПринтера = Принтер.Name; Пока Найти(ИмяПринтера,"\") > 0 Цикл ИмяПринтера = Сред(ИмяПринтера, Найти(ИмяПринтера,"\")+1); КонецЦикла; ИмяПринтера = СокрЛП(ИмяПринтера); Принтеры.Добавить(Принтер.Name,ИмяПринтера); КонецЦикла; Исключение КонецПопытки; Состояние(); Возврат Принтеры; КонецФункции |
|||
2
mzelensky
14.12.11
✎
14:48
|
(1) этот пример я находил...но это ж ДОЛГО!!! Создается ком-объект, получаются все принтеры системы ,а потом методом перебора ищется нужный...ДОЛГО! Тем более там мы получаем весь набор свойств и методов этого объекта, а мне нужно просто "есть" или "нет" такой принтер в системе.
|
|||
3
Матадор
14.12.11
✎
14:53
|
(2) А ты думаешь если тебе предоставить встроенную функцию 1С с таким функционалом, она будет делать это каким-то другим способом?
|
|||
4
mzelensky
14.12.11
✎
15:00
|
(3) ну должен же быть способ проще!
|
|||
5
aleks-id
14.12.11
✎
15:11
|
Объекты = Сервисы.ExecQuery("SELECT Name FROM Win32_Printer WHERE Name LIKE '%HPLJ1110%'");
|
|||
6
aleks-id
14.12.11
✎
15:12
|
ну и соответственно если хоть чото есть в Объекты - значит принтер есть.
|
|||
7
aleks-id
14.12.11
✎
15:14
|
Объекты = Сервисы.ExecQuery("SELECT * FROM Win32_Printer Prn WHERE Prn.Name LIKE '%HPLJ1110%'");
это на случай если первый запрос не прокатит |
|||
8
aleks-id
14.12.11
✎
15:17
|
тьфу ты
Объекты = Сервисы.ExecQuery("SELECT Prn.Name FROM Win32_Printer Prn WHERE Prn.Name LIKE '%HPLJ1110%'"); |
|||
9
mzelensky
16.12.11
✎
09:34
|
(5) работать работает, но почему-то на обработку уходит секунд 5.
|
|||
10
andrewks
16.12.11
✎
09:36
|
(9) а ты открой в проводнике папку Принтеры, и сравни
|
|||
11
mzelensky
16.12.11
✎
09:39
|
(10) тогда уж быстрее через "исключение" отлавливать! схватывает мгновенно :)
|
|||
12
MaxS
16.12.11
✎
09:40
|
какой-то типовой метод табличного документа выдаёт ошибку если в системе не установлены принтеры. не помню точнее ))
|
|||
13
mzelensky
16.12.11
✎
09:44
|
(12) ну я так подозреваю ты про "НаПечать" :)
|
|||
14
MaxS
16.12.11
✎
09:46
|
(13) проверка уместится ли документ на листе принтера, что-то в этом роде ;)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |