18 нояб. 2020 г.

Отладка COM соединения

Описание проверялось на версии 8.3.18.

1. В конфигураторе той базы, где будет работать COM соединение, открываем в гл. меню: Отладка - Подключение... 

1.1. Нажимаем кнопку "Автоматическое подключение", ставим флажок "Клиентские и внешние соединения на сервере". 

1.2. Нажимаем кнопку "Настройка...", копируем значение возле надписи "Отладчик". В моем случае это "tcp://ИмяПК:1562" заменяем на "tcp://localhost:1562" (далее эту строку подставим в значение атрибута debuggerURL, файла comcntrcfg.xml)

2. Создаем файл comcntrcfg.xml в директории: C:\Program Files\1cv8\8.3.18.ХХХХ\bin\conf с содержимым:

<config xmlns="http://v8.1c.ru/v8/comcntrcfg">

    <debugconfig debug="true" protocol="tcp" debuggerURL="tcp://localhost:1562"/>

</config>

3. Готово. Ставим точки останова там где нужно и запускаем приложение, из которого выполняется создание COM соединения и работа с ним.

Замечание 1. Про метод УстановитьПривилегированныйРежим.
Он доступен, когда вызывается как бы "внутри" базы, встроенным языком 1С. Например, когда вы пишите Соединение.МойОбщийМодульВнешнегоСоединения.ВыполнитьУстановкуПривилегированногоРежима() - режим для подключения установится. Выполнения кода в данном случае выполняется в 1С.
Соединение.УстановитьПривилегированныйРежим(Истина) - привилег режим не установится, потому установка режима выполняется не в 1С, а той программой, которая установила соединение - vb скрипт, к примеру, и код выполняется dll'кой в процессе, вызвавшем COMConneсtor.
Такое ограничение разработчиками сделано специально, чтобы защитить информационную базу от неправомерных действий сторонних приложений.

Замечание 2. На выполнение кода в режиме COM-соединение влияет инструкция препроцессора:

#Если ВнешнееСоединение Тогда

    // здесь код из COM-соединения выполняется

#Иначе

    // а здесь не выполняется

#Конец


Используемые источники:
1. https://its.1c.ua/db/v8318doc#bookmark:dev:TI000001036
2. https://infostart.ru/1c/articles/309179/

Комментариев нет:

Отправить комментарий