COM-соединение 1С 8.3 - 1С 8.3 Есть ли возможность зайти в отладчик в соединении #750354


#0 by kostyaomsk
Хотел спросить форумчан если ли вообще такая возможность отладки когда подключаюсь по СОМ-соединению с помощью обработки из одной базы на платформе 8.3.6 (БП 3.0) к модулю внешнего соединения самописной базы (тоже работающей на платформе 8.3.6) и вызываю из него экспортные процедуры с помощью обработки? Базы пока файловые и находятся на одном ПК, но планируется серверный вариант. До этого времени использовал конструкции приведенные ниже для передачи на выполнение произвольного кода по СОМ-соеднению, а также регистрации ошибок. Вот фрагменты процедур в самописной базе в модуле внешнего соединения: Функция ИсполнитьВн(КодВыполнить, ВспомПараметр= "") Экспорт Из БП 3.0 выполняю такой фрагмент: Попытка Понимаю, конечно что в оператор Выполнить(СтрокаКода1С8) зайти не удастся, но есть ли такая возможность при вызове удаленной процедуры модуля внешнего подключения из основной базы Соединение.ТестСвязи(Вх, Вых) зайти в ее код в этой же сессии отладчика в функцию ПроверкаБезопасности их вызывающей процедуры? Уже смотрел документацию что смог найти по этому вопросу. Ставил везде в обоих конфигурациях опции по разрешению отладки и точки останова. Запускал оба конфигуратора. Есть ли вообще такая возможность в данной ситуации отладить допустим процедуру ПроверкаБезопасности и дальше на стороне модуля внешнего подключения?
#1 by kostyaomsk
На стороне БП 3.0 при подключении можно только отладить код, выполняющийся в этой сессии, перешагнув процедуру. Соединение.ТестСвязи(Вх, Вых) Уже включал опции отладчика из главного меню "Отладка"->"Подключение" в окне предметы отладки по кнопке "Автоматическое подключение" все галочки: - Клиентские и внешние соединения на сервере; - Web-сервисы на сервере; - HTTP-сервисы на сервере; - Фоновые задания. Кто занимается интеграцией? Думаю, что раз можно подключиться через COM-соединение не только к базам 1С 7.7 и 1С 8.х, но и к сторонним АИС вообще (Excel даже) и передать туда код в виде текста для ТОЙ АИС Полагаю, что все вышеназванные галочки позволяют отладить сеанс в рамках этой базы, а не подключаемой.
#2 by alexei366
Ну тогда серверный вариант нужен для базы к которой подключаешься. Запускаешь оба конфигуратора, в первом делаешь точку останова после установки соединения в обработке, ну и во втором подключаешься через меню отладка к созданному сеансу. Вроде так прокатить должно, естественно служба срвера должна быть запущена в режима отладки
#3 by alexei366
Яб на самом деле тестировал бы процедуры сразу во второй базе, а потом бы дописал "Соединение." где надо
#4 by kostyaomsk
Стоп, для простоты вообще все базы файловые и даже работают на одном ПК. Мне интерена сама возможность отладки в такой ситуации. Или принципиально для отладки серверный вариант тогда (всякие ключи -debug и прочие настроки). Я выясняю принципиально возможна ли такая отладка (может даже использовать сторонние средсва) или это просто глюки ПК, платформы и настроек базы по отладке. Использовать конструкции Попытка Исключение даст только информацию об ошибке?
#5 by kostyaomsk
Да я понял уже что нужно во второй базе тестировать, но вот если сложные случаи когда во вторую базу пересылается таблица значений и во второй базе выполняется сложный запрос
#6 by alexei366
Много пишешь, лучше давай конкретику небольшую, там потом сам разовьешь тему
#7 by kostyaomsk
Конструкция вида во второй базе в модуле внешнего соединения тестируется во второй базе, т.к. нет внешних данных: В первой базе или на ура А что делать тогда если нужно передать таблицу в эту процедуру из первой базы ТЗвх = ... Получение таблицы-значений в 1-й базе ТЗвых = неопределено; А во второй базе в модуле внешнего соединения в процедуре ТестЗапросаСоединения(ТЗвх, ТЗвых) запихиваем ТЗвх в параметр запроса и индексируем (тут надо еще проверить можно ли так делать из-за ошибок платформы), а потом эту временную таблицу соединяем с данными запроса во второй базе, выгружаем в итоговую ТЗ и уже анализируем результаты в 1-й базе
#8 by kostyaomsk
Понимаю так, что придется отлаживать во второй базе, с помощью служебных обработок. Вызывать из запущенной 2-й базы и подставлять в качестве параметра ТЗвх те же данные. Это при разработке. А как потом ловить ошибки при поддержке? Куда-то выгружать данные из отладчика 1-й базы ТЗвх, потом запускать вторую со служебной обработкой, которая подставит в качестве параметра сохраненные данные ТЗвх?
#9 by kostyaomsk
Еще вопрос стоит оптимизации. Задача найти допустим те договора, которых нет в базе 2 и потом их дописать. Получается запрос на порции разбивать, передавать массив ключей (кодов договоров примитивный тип) во вторую базу в параметр ТЗвх там уже запросом смотреть если ли они, полученные по сложным правилам из базы 2 с последующей обработкой.
#10 by alexei366
Ну я когда писал нечто подобное использовал сериализацию для передачи таблиц структур и других общих типов (кроме простых) через методы "ЗначениеВСтрокуВнутр" и т.д. Просто думаю фиг он те даст таблицу из первой базы установить как параметр в запрос второй базы без сериализации. И да когда я делал подобную вещь, то обработка у меня писалась сразу под вторую базу, в ней я её отлаживал, а в рабочем варианте после установки соединения обработка открывалась во второй базе, а первая только вызывала функции и процедуры экспортные обработки. А там уже для отладки можешь в начале процедур обработки все значения в текст файл к примеру выгружать, чтоб потом тестировать. Ну да разбей на порции, можешь даже блокировки ставить на договора чтоб пока выполняется никто поменять удалить не мог)
#11 by kostyaomsk
Проверю, конечно после чистки кэшей и презагрузки возможность отладки. Если есть опции для автоматического подключения в отладчике "Клиентские и внешние соединения на сервере" и тем более для других уже задач "Web-сервисы на сервере" как советуете "Запускаешь оба конфигуратора, в первом делаешь точку останова после установки соединения в обработке, ну и во втором подключаешься через меню отладка к созданному сеансу. " когда оба сервера запущены под -debug Про службу сервера (вариант пока файловый) имеется в виду запуск с ключом -debug и галочками разрешения отладки? В платформе 8.3.6 главное меню "Сервис"-"параметры" вкладка "Дополнительно" галочки: - "устанавливать режим разрешения отладки"; - "начинать отладку при запуске";
#12 by kostyaomsk
Верно, тип то не примитивный таблица значений. Его "склеивать" построчно-поэлементно на приемной стороне Это я так для простоты. Тут уже или в массив структур упаковывать для передачи и прочее
#13 by alexei366
Я так думаю стоит уже пробывать и глядеть, информации пока достаточно (и да я имел ввиду ключ -debug)
#14 by Serginio1
Проще обмен делать через внешние отчеты
#15 by Serginio1
Отладить их сначала на стороне сервера, а затем уже подключать COM.
#16 by alexei366
Таже хрень только я у ся делал чуток поизвращенней - менять конфу куда подключался не мог, поэтому сначало передавал двоичные данные (обработку) на сторону COM соединения, там сохранял во врем каталог (типа могли быть разные компы и т.д, корочь путь мог быть не доступен), дальше уже создавал обработину и вперед)
#17 by kostyaomsk
По поводу отладки заметил почему пошли глюки с подключением: ноут засраный весь, только по профилю 1С была установка кучи платформ и еще забыл что создавал учетную запись для агента сервера, который сейчас не запустить и не исправить ошибки платформы. Короче тут опять админство (1068 не запустить дочерние службы) и более менее понятно почему не запустить с параметром "-debug" в кромандной строке. "C:Program Files (x86)1cv88.3.6.2041in agent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:Program Files (x86)1cv8srvinfo" alexei366, интересует другое. вы все-таки после передачи обработки на сторону COM соединения из конфигуратора 1-го компа или (из конфигуратора 2-го компа на чьей стороне запускается код из переданной обработки) смогли войти в каждую процедуру через отладчик? В окне стека вызовов кода что появлялось (где исполняется код) НаСервере(порт, имя ПК -в т.ч. удаленного) или ВнешнееСоединение(порт, имя ПК). Такой столь специфический вопрос попался когда нужно иметь на вооружении средства для повседневной отладки. То что можно упросить задачу отладив с тестовыми данными на 2-й базе, а потом уже заниматься сом-соединением понятно, но вот это не вариант для техподдержки.
#18 by TormozIT
Рекомендую почитать статью
#19 by kostyaomsk
TormozIT, большое спрасибо. Поставил Вам плюс в публикации за то, что очень подробно рассказали про саму возможность включить отладку в COM-соединении и какие есть трудности. Одно плохо, решение ваше то очень сильно дорогое (почти как любая отраслевая конфигурация, а выкладывают деньги равные ее стоимости чтоб запустить): оно же для программистов-разработчиков, но Вы, главное объяснили как сделать самим: - Использование хитрого файла " comcntrcfg.xml" в каталоге "conf"; - Правильный путь конфигуратора "...необходимо запускать конфигуратор для отладки с той же (до регистра букв) строкой соединения, что и предмет отладки. "; - Шаманство с настройками DCOM-компонент на сервере (тут правда отовсюду по-крупицам на русском языке что-то попадалось; - Глючность некоторых редакций платформы 8.3 и что только подбирать нужную (пишите что сама возможность отладки только появилась в 8.3); Одним словом, всем большое спасибо что ответили серьезно. Тема действительно очень специфическая, документации в оригинале на английском очень много и она для программистов-разработчиков больше этих самых компонет.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С