Имя: Пароль:
1C
 
Как отладить код, исполняемый командой Выполнить()?
0 НоваяВолна
 
09.04.25
18:41
Конфигурация УФ, клиент-серверная, на поддержке. В пользовательском режиме есть настройки, в которых можно в виде текста (строки) прописать код. Исполняется он через Выполнить(). Конечно код проходит проверку и если в нем находятся ошибки выдает сообщения об этом.
   Задача отредактировать этот код. Но некоторые куски кода игнорируются без выдачи сообщения. Кто сталкивался с подобным? Как обойти ситуацию? Возможно ли в команде Выполнить() вызвать например Внешнею обработку, а в ней прописать код и поставить точки останова?
1 mikecool
 
09.04.25
18:45
поставить точку останова в выполняющемся коде, ваш кеп
2 НоваяВолна
 
09.04.25
18:54
(1) Точку останова в коде выполняющемся после Выполнить("код для отладки")? Мне надо внутри "код для отладки"
Точка останова внутри текстовой строки
3 Franchiser
 
гуру
09.04.25
18:59
(0) смотри как вы выполняется отладка обработчиков в КД 2.0.
4 ads55
 
09.04.25
19:00
(2) Раздели строку на составляющие.

Добавь видимость переменных.

Поставь точку(и) останова.

После правки/отладки соедини обратно в строку.

Программирование - это не для ленивых, что бы там не говорили :)
Ваш КЭП.
5 zenik
 
09.04.25
19:06
Взять ИР, открыть консоль кода, вставить в нее код и отлаживать...
6 НоваяВолна
 
09.04.25
19:17
(5) Консоль кода это хорошо. Но как ее вызвать из тех мест, где стоит Выполнить()?
7 ads55
 
09.04.25
19:20
(6) поставь точки останова в модулях, которые вычисляются.
8 НоваяВолна
 
09.04.25
22:00
(3) Имеешь в виду «Универсальный обмен данными XML» из КД2.0?
(она позволяет динамически создавать внешнюю обработку с кодом обработчиков для их отладки, а также проводить грубый синтаксический контроль текста обработчика при загрузке правил обмена)
9 TormozIT
 
гуру
09.04.25
21:38
(6) Обычно у динамического (динамически компилируемого) кода очень ограниченный список входящих параметров и вызываемых локальных методов, т.е. слабая связь с контекстом. Эти параметры зачастую можно сериализовать в точке останова, например через ирОбщий.От(). Далее в консоли кода открыть снимок этих параметров. Далее добавить динамический код.
Самая большая сложность обычно с вызовами локальных методов и обращениями к переменным модуля и реквизитам объекта. Если такого нет, то подготовка выполнения в консоли кода не будет сложной.

Но если речь про "Конвертация данных", то там лучше использовать генерируемую внешнюю обработку для отладки.
10 ldo6
 
09.04.25
22:00
(0) Никак не отладить. Создаешь обработку, пихаешь туда код свой и отладчиком смотришь. Инфостарт Тулз что-то сделал, какую-то отладку из режима предприятия.
11 Garykom
 
гуру
09.04.25
22:29
(0)
1. Добавь общий модуль, можно в расширении
2. Засунь туда экспортную процедуру со своим отлаживаемым кодом
3. Вызов этой процедуры воткни в пользовательском режиме в тексте скрипта:
// создаем параметры СтруктураПараметровВход
СтруктураПараметровВход = Новый Структура;
СтруктураПараметровВход.Вставить("ТвойПараметр1", ТвойПараметр1);
// ...
СтруктураПараметровВыход = Новый Структура;
ТвойМодуль.ТвояПроцедура(СтруктураПараметровВход, СтруктураПараметровВыход);
// тут получаем параметры из СтруктураПараметровВыход 
4. Отлаживай

Можно и на внешних обработках но это проблемы на сервере 1С
12 Garykom
 
гуру
09.04.25
22:31
И советую взять за стандарт что если в конфе/базе есть некие "скрипты в настройках" - засовывай их в конфу/расширения
В настройках только вызывай из конфы/расширения
13 Bigbro
 
10.04.25
06:15
(12) мудрость этого совета постигается только с годами опыта) и то не всеми))
14 craxx
 
10.04.25
06:43
(2) весь код для отладки суешь в экспортную процедуру общего модуля (с нужными входными параметрами), а в Выполнить только вызов этой процедуры.
15 Mraque
 
10.04.25
08:06
(0) В пользовательском режиме в настройках, где прописываете код, разместите вывод нужных переменных через Сообщить, например :)
Ошибка? Это не ошибка, это системная функция.