helpf.pro
Регистрация
 +3 
Распечатать

Как напечатать документ на определенном принтере из сеанса RDP (Терминал)

В 1С есть возможность обратиться к принтеру по имени перед печатью, однако при работе через терминал к названию принтера добавляется (перенаправлено N), где N постоянно меняется. Решение следующее:

Код 1C v 8.2 УП
 
&НаКлиенте
Функция ИмяПринтераRDP(ИмяПринтера)
Shell = Новый COMОбъект("Wscript.Shell");
Task = Shell.Exec("query session");
РезультатЗапроса = Task.StdOut.ReadAll();
РезультатЗапроса = Декодер(РезультатЗапроса, "windows-1251", "cp866");
Task.Terminate();
Shell = Неопределено;

Network = Новый COMОбъект("WScript.Network");
ПользовательОС = Network.UserName();
Network = Неопределено;

НомерСеанса = RegExpGetFirstMatch("rdp-tcp\S+\s+" + ПользовательОС + "\s+(\d+)", РезультатЗапроса);

Возврат ИмяПринтера + " (перенаправлено " + НомерСеанса + ")";

КонецФункции


Функция Декодер(Стр, Вход, Выход)
Stream = Новый COMОбъект("Adodb.Stream");
Stream.Type = 2;
Stream.Mode = 3;
Stream.Charset = Вход;
Stream.Open();
Stream.WriteText(Стр);
Stream.Position = 0;
Stream.Charset = Выход;
Результат = Stream.ReadText(-1);
Stream.Close();
Возврат Результат;
КонецФункции

Функция RegExpGetFirstMatch(Маска, Строка, МногострочныйРежим = Истина, ГлобальныйПоиск = Истина, БезУчетаРегистра = Истина)

RegExp = Новый COMОбъект("VBScript.RegExp");

// Параметры
RegExp.Multiline = МногострочныйРежим;
RegExp.Global = ГлобальныйПоиск;
RegExp.IgnoreCase = БезУчетаРегистра;
RegExp.Pattern = Маска;

Matches = RegExp.Execute(Строка);

Если Matches.Count = 1 тогда
Возврат Matches.Item(0).SubMatches.Item(0);

Иначе
Возврат Неопределено;

КонецЕсли;

КонецФункции

Разместил:   Версии: | 8.x | 8.2 УП |  Дата:   Прочитано: 5390
 +3 
Распечатать
Возможно, вас также заинтересует
10060 (0x0000274C): Попытка установить соединение была безуспешной 0
Установили новый терминальный сервер, на нем подняли 1С, терминальные пользователе неописуемо довольны, все просто летает :) И вот же надо было такому случиться, главному бухгалтеру не понравилось работать через...
Cодержимое указанного ниже веб-сайта в этом приложении блокируется... Aboutsecurity_1cv8c.exe 0
Проблема: После обновления на 1С:Бухгалтерию предприятия 3-й версии, при нажатии на закладку командного интерфейса 1С:предприятие, выскакивает ошибка: Aboutsecurity_1cv8c.exe или Aboutsecurity_1cv8.exe «Содержимое указанного ниже...
Зависание 1С при печати (предварительном просмотре) или при ПроверитьВывод() 3
У одного пользователя 1С-ка начала умирать при печати (и предварительном просмотре) конкретной печатной формы. Способы решения: 1. Обновить Платформу 2. Проверить доступность принтера по умолчанию 3. Сделать очистку...
Использование программы rundll32.exe в 1С 1
Программа rundll32.exe входит в стандартную поставку всех операционных систем семейства Windows и позволяет выполнять различные функции, описанные в библиотеках, драйверах или ActiveX-объектах, как будто они выполняются из...
Конвертация экселя в картику 0
На листе екселя есть картинки, надписи в произвольной форме. Как это чудище с конвертировать в картинку. Нашел процедуру ФайлПрограммы = НовыйФайл("C:Program FilesBullzipPDF Printergsgswin32c.exe"); Если Не ФайлПрограммы.Существует()...
Посмотреть все результаты поиска похожих
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.