Имя: Пароль:
1C
1С v8
Печать внешних файлов
0 mzelensky
 
02.11.12
11:05
Доброго всем!

Вроде воопрос довльно простой, но решения пока в "Я" не нашел. Имеется некий внешний файл (вордовский или экселевский). Его нужно РАСПЕЧАТАТЬ программно из под 1С-ки. Как это сделать?
1 Heckfy
 
02.11.12
11:06
Может тут чего найдешь: v8: Программно распечатать файл.
2 mzelensky
 
02.11.12
11:07
(1) что-то я не вижу там решения...
3 Heckfy
 
02.11.12
11:09
КомандаСистемы и


print /?
Печать текстового файла.

PRINT [/D:устройство] [[диск:][путь]имя_файла[...]]

  /D:устройство   Устройство для печати.

Может сработает.... Сам не пробовал.
4 mzelensky
 
02.11.12
11:11
(3) спасибо - попробую....

вопрос только как устройство подставлять...т.е. перед тем как его туда подставлять - нужно же диалог выбора принтера пользователю вывести
5 mzelensky
 
02.11.12
11:14
А диалог выбора принтера можно в 1С-ке вызвать?! и получить от туда устройство?
6 mzelensky
 
02.11.12
11:24
НароооооооД!

Как вот это в 1С-ке выполнить?!

intResult = ShellExecute(Me.Hwnd, "open", strNameFile, 0, 0, SW_SHOWNORMAL)
7 Ёпрст
 
гуру
02.11.12
11:33
можно.. обходтшь коллекцию принтаков и кидаешь их в список - потом выбор из списка
8 mzelensky
 
02.11.12
11:33
ну, буду апать....
9 mzelensky
 
02.11.12
11:34
(7) ок, следубщий логичный вопрос - как получить коллекцию принтеров?! Ну или хотя бы ОСНОВНОЙ принтер?
10 Ёпрст
 
гуру
02.11.12
11:41
Функция ЗаполнитьПринтеры()
   Принтеры = Новый СписокЗначений;
   Состояние("Составляется список принтеров. Подождите.");
   Попытка
       Locator = Новый COMОбъект("WbemScripting.SWbemLocator");
       Сервисы = Locator.ConnectServer(".");
       Объекты = Сервисы.InstancesOf("Win32_Printer");
       // Теперь переберем все принтеры системы

       Для Каждого Принтер из Объекты Цикл
           ИмяПринтера = Принтер.Name;
           Пока Найти(ИмяПринтера,"\") > 0 Цикл
               ИмяПринтера = Сред(ИмяПринтера, Найти(ИмяПринтера,"\")+1);
           КонецЦикла;
           ИмяПринтера = СокрЛП(ИмяПринтера);
           Принтеры.Добавить(Принтер.Name,ИмяПринтера);
       КонецЦикла;
   Исключение
   КонецПопытки;
   Состояние();
   Возврат Принтеры;
КонецФункции
11 mzelensky
 
02.11.12
11:42
(10) мммм да, где-то встречал этот код...
12 mzelensky
 
02.11.12
11:43
(10) а он так выберет вообще все принтеры установленые на компе? т.е. и локальные и сетевые?
13 Ёпрст
 
гуру
02.11.12
11:44
(12) да
14 Ёпрст
 
гуру
02.11.12
11:45
как получить принтёр по-умолчанию.. тоже есть код.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший