Особенности регистрации отчетов/обработок с использованием 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    3655    16    15    

18

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

Расскажу, как использовать полезный функционал - инструментарий разработчика «1С:Библиотека стандартных подсистем» (БСП) в своих объектах метаданных. Статья будет полезна как шпаргалка при написании собственных объектов метаданных.

27.12.2024    3453    PROSTO-1C    15    

43

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

Синтакс-помощник БСП - справочник по Библиотеке Стандартных Подсистем, профессиональный инструмент разработчика с интуитивно понятным интерфейсом. Читайте в статье как использовать все возможности справочника и сделать работу с БСП более комфортной и эффективной.

11.12.2024    3907    gorenski    0    

8

БСП (Библиотека стандартных подсистем) Менеджеры внешних отчетов Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление холдингом Абонемент ($m)

За последние лет 5 несколько раз сталкиваюсь с проблемой на разных проектах (в конфигурациях 1С:ERP, 1С:ERP УХ и многих других, основанных на БСП), когда много пользователей (около 30 тысяч) в информационной базе, время добавления доступа для пользователей занимает значительное время. Открытие списка занимает от 10 до 15 секунд, и каждое изменение списка еще примерно столько же.

1 стартмани

10.12.2024    997    Iaskeliainen    2    

7

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

Некоторые нюансы, если вы захотите создавать свои расширения. Доработка отчета "Связанные документы" для отражения документов расширения. Печатные формы с шаблоном Word.

20.11.2024    3346    milkers    3    

12

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

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

24.10.2024    1688    PROSTO-1C    0    

18

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

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

08.10.2024    1375    PROSTO-1C    4    

14
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 Ответить
Оставьте свое сообщение