Хочу решить проблему с быстрой печатью 1с 7.7

  • Автор темы 2king2
  • Дата начала
2

2king2

Я в 1с не шарю, помогите реализовать идейку.
Есть 1с 7.7 сетевая установленная на сервере семейства Windows. Есть известная проблема 1с при печати пакета документа (быстрая печать без вызова меню принтера) теряет принтер по умолчанию. Есть следующий VBS скрипт, который определяет принтер по умолчанию. Идея в состоит в следующем: в глобальном модуле 1с вставить этот скрипт как функцию, которая будет выполнятся только при старте 1с, и результат работы присвоить глобальной переменной, чтобы была возможность пользоваться ею при печати пакета документов. Умельцы конечно советую ветку рееста удалять каждый раз при печать пакета документов, но это как то не красиво. Не судите строго, может все это бред. :ya_lamo:

Код:
WScript.Echo GetDefaultPrinter
Function GetDefaultPrinter
Set oShell = CreateObject("WScript.Shell")
sRegVal = "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows\Device"
sDefault = ""
On Error Resume Next
sDefault = oShell.RegRead(sRegVal)
sDefault = Left(sDefault ,InStr(sDefault, ",") - 1)
On Error Goto 0
GetDefaultPrinter = sDefault
End Function
 
K

kaa

Есть известная проблема 1с при печати пакета документа (быстрая печать без вызова меню принтера) теряет принтер по умолчанию.
Странно , а я вот с таким не сталкивался ни когда
если этот код работает попробуй так:

scr=СоздатьОбъект("MSScriptControl.ScriptControl");
scr.language="vbscript";
ТекстКода = "Твоя функция";
scr.AddCode(ТекстКода);
scr.Run("ИмяФункции");
 
2

2king2

kaa
Спс, попробую.

Это прикол с потерей принтера по умолчанию появился в Windows Server 2008, в 2000 и 2003 все работает.
 
2

2king2

Получился вот такой скрипт. Как теперь результат работы скрипта присвоить глобальной переменной???

Функция ПолучитьПринтерПоУмолчанию() Экспорт
Скрипт = создатьобъект("MSScriptControl.ScriptControl");
Скрипт.Language = "vbscript";
Скрипт.AddCode("
|Function GetDefaultPrinter()
|GetDefaultPrinter=vbNullString
|Set objWMIService=GetObject(""winmgmts:"" _
|& ""{impersonationLevel=impersonate}!\\.\root\cimv2"")
|Set colInstalledPrinters=objWMIService.ExecQuery _
|(""Select * from Win32_Printer"")
|For Each objPrinter in colInstalledPrinters
|If objPrinter.Attributes and 4 Then
|GetDefaultPrinter=objPrinter.Name
|Exit For
|End If
|Next
|End Function");
Возврат СокрЛП(Скрипт.run("GetDefaultPrinter"));
КонецФункции
 
K

kaa

//в начале глобальника
Перем глПринтерПоУмолчанию; Экспорт

Функция ПолучитьПринтерПоУмолчанию(); Экспорт

//в процедуре ПриНачалеРаботыСистемы

глПринтерПоУмолчанию = ПолучитьПринтерПоУмолчанию();
Функцию тоже надо в глобальный модуль поместить
 
2

2king2

Спс kaa!!!
Блин, но все равно этот год мою проблему не решил. принтеры которые работают через собственный изырнет, те печатают, а те которые по LPT не печатают, ни очибки ничего, Null реакции
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!