Особенности регистрации отчетов/обработок с использованием COM-соединения в конфигурациях БСП

12.10.16

Разработка - БСП (Библиотека стандартных подсистем)

Регистрация разрешения использования COM-соединения в безопасном режиме во внешних отчетах/обработках в конфигурациях БСП (>2.2)

Для решения некой задачи потребовался внешний отчет, который часть данных берет из внешней базы в локальной сети через COM-соединение.

Вроде как все нормально работало при открытии внешнего отчета как файла, но при использовании отчета по технологии внешних отчетов БСП (>2.2.x) Система (БП3.0) выдавала ошибку:

Немного погуглив, нашел, что при регистрации отчета-обработки требуется добавить параметр «Разрешения», в который добавить нечто, возвращаемое БСП функцией  РаботаВБезопасномРежиме.РазрешениеНаСозданиеCOMКласса(…).

Для решения своей задачи готовой строки не нашел, поэтому пришлось искать ID класса в реестре

Соответственно, для 64 разрядного 1С сервера, вполне пойдет как готовая строка в коллекцию заготовок и собственно полезность статьи:

ПараметрыРегистрации.Разрешения.Добавить(                РаботаВБезопасномРежиме.РазрешениеНаСозданиеCOMКласса("V83.ComConnector", "{181E893D-73A4-4722-B61D-D604B3D67D47}","ИмяСервера"));

// Возвращает сведения о внешней обработке.
Функция СведенияОВнешнейОбработке() Экспорт
	
	ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.4.1");
	
	ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительныйОтчет();
	ПараметрыРегистрации.Версия = "100";
	ПараметрыРегистрации.ОпределитьНастройкиФормы = Истина;
	ПараметрыРегистрации.Разрешения.Добавить(
	РаботаВБезопасномРежиме.РазрешениеНаСозданиеCOMКласса("V83.ComConnector","{181E893D-73A4-4722-B61D-D604B3D67D47}","WIN-6366"));
	
	НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
	НоваяКоманда.Представление = НСтр("ru = 'Сверка ОСВ между базами'");
	НоваяКоманда.Идентификатор = "пп_Сверка_ОСВ_МеждуБазами";
	НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
	НоваяКоманда.ПоказыватьОповещение = Ложь;
	
	Возврат ПараметрыРегистрации;
	
КонецФункции

А вот это нечто, возвращаемое функцией РазрешениеНаСозданиеCOMКласса – должен быть вот такой объект XDTO

Текст функции модуля РаботаВБезопасномРежиме 

// Возвращает внутреннее описание разрешения на использование COM-класса.
//
// Параметры:
//  ProgID - Строка - ProgID класса COM, с которым он зарегистрирован в системе.
//    Например, "Excel.Application",
//  CLSID - Строка - CLSID класса COM, с которым он зарегистрирован в системе.
//  ИмяКомпьютера - Строка - имя компьютера, на котором надо создать указанный объект.
//    Если параметр опущен - объект будет создан на компьютере, на котором выполняется
//    текущий рабочий процесс,
//  Описание - Строка - описание причины, по которой требуется предоставление разрешения.
//
// Возвращаемое значение:
//  ОбъектXDTO - внутреннее описание запрашиваемого разрешения.
//  Предназначен только для передачи в качестве параметра в функции.
//  РаботаВБезопасномРежиме.ЗапросНаИспользованиеВнешнихРесурсов(),
//  РаботаВБезопасномРежиме.ЗапросНаОтменуРазрешенийИспользованияВнешнихРесурсов() и
//  РаботаВБезопасномРежиме.ЗапросНаОчисткуРазрешенийИспользованияВнешнихРесурсов().
//
Функция РазрешениеНаСозданиеCOMКласса(Знач ProgID, Знач CLSID, Знач ИмяКомпьютера = "", Знач Описание = "") Экспорт
	
	Пакет = РаботаВБезопасномРежимеСлужебный.Пакет();
	Результат = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип(Пакет, "CreateComObject"));
	Результат.Description = Описание;
	
	Результат.ProgId = ProgID;
	Результат.CLSID = Строка(CLSID);
	Результат.ComputerName = ИмяКомпьютера;
	
	Возврат Результат;
	
КонецФункции

В результате при регистрации внешнего отчета появится закладка «Разрешения» с соответствующим содержимым

В следующей статье приведу пару примеров использования СКД-отчетов с такого плана COM-запросами (знаю, знаю – не хайтек ;), но может пригодится кому на скорую руку COM-сверку между базами делать)

Внешний отчет внешняя обработка безопасный режим регистрация разрешения COM COM-соединение

См. также

БСП (Библиотека стандартных подсистем) Программист Платные (руб)

Синтакс-помощник БСП - cправочник по библиотеке стандартных подсистем. В состав справочника входит описание экспортных процедур и функций, размещенных в областях кода ПрограммныйИнтерфейс БСП.

1800 руб.

21.11.2024    141    1    0    

2

БСП (Библиотека стандартных подсистем) Программист Платформа 1С v8.3 Бесплатно (free)

В статье описан алгоритм для включения документа или справочника в систему БСП. Будет полезно программистам 1С, начинающим работать с БСП.

24.10.2024    1125    PROSTO-1C    0    

13

БСП (Библиотека стандартных подсистем) Работа с интерфейсом Программист Платформа 1С v8.3 Бесплатно (free)

В материале описан универсальный механизм работы с добавленными элементами на общую форму «ФормаОтчета». Думаю, облегчит работу многим разработчикам.

08.10.2024    1006    PROSTO-1C    4    

12

БСП (Библиотека стандартных подсистем) Программист Стажер Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В статье рассмотрим пошаговую инструкцию создания дополнительного отчета с фоновым формированием результата.

04.10.2024    1853    MadRave    11    

24

БСП (Библиотека стандартных подсистем) Программист Стажер Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Пример отслеживания прогресса фонового выполнения дополнительной обработки с использованием программного интерфейса длительных операций БСП.

10.09.2024    1845    MadRave    1    

17

БСП (Библиотека стандартных подсистем) Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

А что, если долгожданная реализация Паузы в 1С смутно напоминает старую, проверенную? А?!

06.09.2024    1265    n_mezentsev    10    

8

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Добавим дополнительные свойства в новый документ средствами БСП

02.09.2024    4119    John_d    10    

52

БСП (Библиотека стандартных подсистем) Программист Платформа 1С v8.3 Бесплатно (free)

Всё больше организаций выбирает для серверов под 1С операционные системы Linux. Одним из отличий систем Windows и Linux является отсутствие COM объектов, которые зачастую использовались для формирования печатных форм офисных документов (Word). Конечно, можно выполнять печать и на клиенте, но есть риск импортозамещения. В работе у меня случались проблемы с зависанием процесса Word, поэтому я не люблю его использовать.

29.07.2024    5375    PROSTO-1C    12    

52
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. kassbar 159 27.06.18 21:45 Сейчас в теме
видимо CLSID одинаков на всех ПК, т.к. на моем номер CLSID для V83.ComConnector тоже {181E893D-73A4-4722-B61D-D604B3D67D47}

для Excel:
"Excel.Application", "00024500-0000-0000-C000-000000000046

для ADO:
ADODB.Connection", "00000514-0000-0010-8000-00AA006D2EA4
artichoke; papche; denisros; +3 Ответить
2. kir16 14.09.20 06:48 Сейчас в теме
(1) CLSID одинаков всегда по определеню технологии COM. Однажды опубликовав объект, CLSID менять нельзя.
artichoke; +1 Ответить
Оставьте свое сообщение