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

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