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

Тема в разделе "1C и всё что с ней связано", создана пользователем 2king2, 19 янв 2010.

  1. 2king2

    2king2 Гость

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

    Код (Text):
    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
     
  2. vitfil

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    Хочешь? Решай! Одобряем!
     
  3. kaa

    kaa Гость

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

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

    2king2 Гость

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

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

    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"));
    КонецФункции
     
  6. kaa

    kaa Гость

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

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

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

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

    2king2 Гость

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

Поделиться этой страницей