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

1С 8.x : Как напечатать документ на определенном принтере из сеанса 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 УП |  Дата:   Прочитано: 5422
 +3 
Распечатать
Возможно, вас также заинтересует
10060 (0x0000274C): Попытка установить соединение была безуспешной 0
Установили новый терминальный сервер, на нем подняли 1С, терминальные пользователе неописуемо довольны, все просто летает :) И вот же надо было такому случиться, главному бухгалтеру не понравилось работать через...
Как определить при добавлении нового документа, что он добавляется копированием? 0
Есть расширение формы документа ПараметрОбъектКопирования . В него при копировании помещается ссылка на документ оригинал. Также есть расширение ПараметрОснование , в нем ссылка на основание. Вот пример: ...
Как определить при добавлении нового справочника, что он добавляется копированием? 0
// В Процедуре ПриОткрытии() Если ЭтоНовый() Тогда Если НЕ ПараметрОбъектКопирования = НЕОПРЕДЕЛЕНО Тогда // Проверка на копирование Предупреждение(" Запрещено копировать Договора!" ); Закрыть(); КонецЕсли; ...
Конструктор схемы компоновки данных - Закладка Макеты 0
Печатная форма, получаемая в результате работы СКД в общем случае, не требует разработки, большинство группировок, полей и заголовков генерируются автоматически в зависимости от установленных условий оформлений. Но...
Конструктор схемы компоновки данных - Закладка Настройки 0
Закладка повторяет пользовательский диалог «Настройка» доступный для настройки пользователем параметров отчета. https://helpf.pro/uploads/img/sukpd052.png Заполнение настроек на этой закладке служит для настройки отчета...
Посмотреть все результаты поиска похожих
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.