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

1С 8.2 УП : Как напечатать документ на определенном принтере из сеанса 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 УП |  Дата:   Прочитано: 16313
 +5 
Распечатать
Возможно, вас также заинтересует
10060 (0x0000274C): Попытка установить соединение была безуспешной 24
Установили новый терминальный сервер, на нем подняли 1С, терминальные пользователе неописуемо довольны, все просто летает :) И вот же надо было такому случиться, главному бухгалтеру не понравилось работать через терминал, а еще у нее свой ноутбук и
Cодержимое указанного ниже веб-сайта в этом приложении блокируется... Aboutsecurity_1cv8c.exe 1
Проблема: После обновления на 1С:Бухгалтерию предприятия 3-й версии, при нажатии на закладку командного интерфейса 1С:предприятие, выскакивает ошибка: Aboutsecurity_1cv8c.exe или Aboutsecurity_1cv8.exe «Содержимое указанного ниже веб-узла в э
Зависание 1С при печати (предварительном просмотре) или при ПроверитьВывод() 5
У одного пользователя 1С-ка начала умирать при печати (и предварительном просмотре) конкретной печатной формы. Способы решения: 1. Обновить Платформу 2. Проверить доступность принтера по умолчанию 3. Сделать очистку кэша пользователя . 4. Нас
Ошибка 1С 8.2 "Сеанс отсутствует или удален". 2
BoricH пишет: 1C8.2 при работе в терминале на 64х сервере в клиент-серверном режиме при большом колличестве пользователей вылетает с ошибкой " Сеанс отсутствует или удален" . Сервер 1С 64х 8.2.10.82, 8.2.11.229 , SQL 2005. Если на одной машине з
При работе в терминале не печатает на принтер Windows SERVER 2
Решение проблем с печатью 1C терминально: Собственно решение данной проблемы простое, не выбран принтер по умолчанию , или выбран принтер по умолчанию который отключен, нужно зайти в СИСТЕМУ и там выбрать принтер и тогда все ОК. Еще возможная
Посмотреть все результаты поиска похожих
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.