Поиски в Интернет помогли решить задачу определения полного имени принтера по подстроке. Такое может потребоваться при печати из терминальной сессии. В настройках пользователя добавляем новый элемент
ПринтерПоУмолчанию типа
Строка и далее в общем модуле
УниверсальныеМеханизмы правим:
Процедура НапечататьДокумент(ПечДокумент, КоличествоЭкземпляров = 1, НаПринтер = Ложь, Заголовок = "", Ссылка = Неопределено, ИсточникМакета = Неопределено, ОткрыватьПечатнуюФорму=Истина) Экспорт
Если ПечДокумент = Неопределено тогда
Возврат;
КонецЕсли;
// Получить необходимое количество копий
Если КоличествоЭкземпляров > 0 Тогда
ПечДокумент.КоличествоЭкземпляров = КоличествоЭкземпляров;
КонецЕсли;
//am+
Если Не ЗначениеЗаполнено(ПечДокумент.ИмяПринтера) Тогда
_ИмяПринтераПоУмолчанию = СокрЛП(УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ПринтерПоУмолчанию"));
Если ЗначениеЗаполнено(_ИмяПринтераПоУмолчанию) Тогда
ПечДокумент.ИмяПринтера = НайтиПолноеИмяПринтераПоПодстроке(_ИмяПринтераПоУмолчанию);
КонецЕсли;
КонецЕсли;
//am-
//--- 8< ----------
а вот текст основной функции, в написании которой сильно помог поиск в Интернет, расположим ее в том же общем модуле.
//am+
Функция НайтиПолноеИмяПринтераПоПодстроке(Маска) Экспорт
_Маска = СокрЛП(Маска);
Locator = Новый COMОбъект("WbemScripting.SWbemLocator");
Сервисы = Locator.ConnectServer();
Объекты = Сервисы.InstancesOf("Win32_Printer");
Для каждого Принтер из Объекты Цикл
Если Найти(Принтер.Name,_Маска)<>0 Тогда
Возврат Принтер.Name;
КонецЕсли;
КонецЦикла;
Возврат "";
КонецФункции
//am-