Работа с механизмом отладки 1С. Базовые настройки

19.10.19

Разработка - Механизмы платформы 1С

Доброго времени всем. В этой небольшой статье я опишу базовую процедуру настройки и запуска механизма отладки. Приведу примеры работы в старом и новом механизмах отладки. Сравним их.

Вместо введения

Привет всем!

Более чем уверен, многие из вас уже сталкивались с тем, что современная платформа 1с, запущенная в режиме отладки, иногда попросту игнорирует все "точки останова" при выполнении какой-нибудь процедуры или функции, где они установлены.

Лично у меня, при первом опыте, это вызывало сначала недоумение, потому раздражение, когда один из фундаментальных механизмов 1с предприятия "перестал работать" так как "привыкли". Поэтому, я решил написать небольшую базовую "закрепляющую" статью, которая, надеюсь, снимет у вас вопрос об отладке, сэкономить время ("а почему не срабатывает отладка?"), наконец окончательно позволит разобраться в современном и достаточно простом (классном) функционале "новой" отладки 1с.

При написании статьи, я использовал свой личный опыт, а так же некоторые базовые рекомендации и инструкции для разработчиков с ИТС, которые когда-то сам изучал.

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

Описывать "новый" механизм отладки я буду также на файловой базе. Исходя из моего опыта, большинство микро- и маленьких компаний имеют мелкие и простые файловые базы, например "Розница 2.2".

Итак, начнем по-пунктам:

 

Использование старого механизма отладки

Если Вы спросите меня - "зачем нужно уделять внимание описанию старого механизма?", могу на это ответить так - во-первых, чтобы были более видны отличия механизма отладки на обычных формах от механизма отладки на управляемых формах, и во-вторых, на своем жизненном пути я встречал разработчиков "программистов 1с", которые не знают, что такое "режим отладки" платформы 1с и как с ним работать. И, тем не менее, числятся как "инженер-программист".

Пусть этот раздел будет для них, остальные - пропустите.

Итак, допустим, вы имеете "старую" конфигурацию УПП 1.3. Конфигурация работает на обычных формах

Открываем конфигуратор, заходим в форму документа "Реализация товаров и услуг", ставим точку останова в коде процедуры "КонтрагентОбработкаВыбора" (Рис. 1).

 

Рис.1. Конфигуратор УПП 1.3 (работа с неуправляемыми формами).

 

Далее, нажимаем "Начать отладку", запуская предприятие в отладочном режиме. Возвращаемся в конфигуратор, открываем "табло отладчика" (Рис.2):

 

Рис.2. Открытие "Табло" в режиме отладки в конфигураторе.

 

По достижению события, в данном случае у меня - это обработка выбора "поля" Контрагент в документе "Реализация товаров и услуг" платформа "возвращает" нас в конфигуратор, где, в открытом ранее "табло" мы можем отследить значения передаваемых параметров в эту процедуру :

Здесь это: Элемент, ВыбранноеЗначение и СтандартнаяОбработка (Рис. 3):

 

Рис.3. Содержимое "Табло-1" в процессе отладки.

 

Далее, нажимаем, кнопку "Продолжить отладку" и продолжаем работу до повторного возникновения этого события

Все очень удобно и очень просто. Привычно. Работай - не хочу.... все как на ладони.

 

Переход на новый механизм

Теперь, давайте посмотрим, что будет, если я запущу описанную процедуру отладки в конфигурации на управляемых формах, например, вышеупомянутую "Розницу 2.2", Итак, делаю все тоже самое:

1.Открываю в режиме конфигуратора, ставлю "точку останова" в документе "РеализацияТоваровУслуг" в процедуре "КонтрагентПриИзменении" (Рис.4).

 

Рис.4. Установка точки останова в конфигурации на управляемых формах.

 

2. Для убедительности добавляю строчку кода "Привет!" в выбранную процедуру

&НаКлиенте
Процедура КонтрагентПриИзменении(Элемент)
	
	Сообщить("Привет!"); // для убедительности:)))
	
	ПересчитатьИлиОтменитьСкидки();
	
	// СтандартныеПодсистемы.РаботаСКонтрагентами
	ПроверкаКонтрагентовКлиент.ЗапуститьПроверкуКонтрагентовВДокументе(ЭтотОбъект, Элемент);
	// Конец СтандартныеПодсистемы.РаботаСКонтрагентами
	
	// ИнтернетПоддержкаПользователей.СПАРКРиски, ОбновитьОтображениеИндексов.
	Если ИспользованиеСПАРКРазрешено Тогда
		// Отображать не по ссылке, а по ИНН, НЕ сохраняя в кэше.
		ЭтотОбъект.ИндексыСПАРКРиски = Неопределено; // Сбросить полученные значения.
		ОбновитьОтображениеИндексыСПАРК();
	КонецЕсли;
	// Конец ИнтернетПоддержкаПользователей.СПАРКРиски, ОбновитьОтображениеИндексов.
	
КонецПроцедуры

3.Запускаю отладчик, "добираюсь" до вызова этой процедуры.... и ничего не работает.... точка останова "проигнорирована"

А сообщение "Привет" выскочило! (Рис.5).

 

Рис.5. Тестирование срабатывания точки останова.

 

Ладно, сделаем так, установим точку останова на коде и запустим конфигурацию в режиме отладке заново (Рис.6.).

 

Рис.6. Точка останова установлена напротив строки кода (конфигурация на УФ).

 

Точка останова отработала. У меня открылось табло, где я могу посмотреть передаваемый в процедуру "Элемент" (Рис.7):

 

Рис.7. Содержимое "Табло-1" при отладке конфигурации на управляемых формах.

 

Вот, определяем, что в "старом" режиме отладке - отработка "точки" возможна, если она установлена на "пустой строке". В новом режиме - отработка "точки" не получается. Если это запомнить  - можно сэкономить много времени и нервов. Казалось бы элементарная "невидимая" вещь, но помнить нужно.

Если даже есть "какие-то настройки" в самом конфигураторе типа "останавливаться на пустой строке", как минимум - их нужно "включить". Но, по-умолчанию механизм "точки останова", работает так, как описано у меня.

 

Базовые настройки режима отладки для конфигурации на УФ

Теперь давайте посмотрим, как быстро настроить новый режим отладки для конфигурации на управляемых формах.

Рассмотрю файловую базу, как самый распространенный вариант на малых предприятиях.

Во-первых, в конфигураторе заходим в меню "Сервис - Параметры - Отладка". Здесь выбираем протолок отладки "Отладка по протоколу TCP/IP" как более универсальный.

Используем локальный сервер отладки (по-умолчанию).

Далее, конфигуратор предлагает перезапустить его для применения настроек, соглашаемся с этим и перезапускаем.

Выглядит это вот так (Рис.7):

 

Рис.7 Установка отладки по протоколу HTTP и принятие изменений.

 

Одним из отличий работы файлового режима отладки от серверного режима заключается в определении типов предметов отладки. Есть такая кнопка "Автоматическое подключение" в меню "Отладка - подключение". Установка "типов предметов отладки" для файлового режима - не требуется (точнее это бесполезно) - Рис.8, в файловом режиме будут подтягиваться все задействованные типы отладки, например "Сервер (файловый вариант) и Тонкий клиент":

 

Рис.8. Установка предметов отладки (в файловом варианте не требуется).

 

Нажимаем кнопку "начать отладку". В предприятии идем в меню "Сервис - Параметры", убеждаемся, что отладка разрешена в текущем сеансе "по протоколу TCP/IP" (Рис.9).

 

Так же я прописал значения полей "Отладка при перезапуске" и "Сервер отладки при перезапуске". Просто повторил их с полей свыше.

 

Рис.9. Параметры запуска предприятия (Отладка разрешена).

 

Все, мы работаем в режиме отладочном режиме для файлового режима базы (Рис.10).

 

Рис.10. Задействованные предметы отладки (файловый режим).

 

В форме "Предметы отладки" (режим предприятия), все как на ладони - пользователь Администратор в двух типах отладки - "Тонкий клиент" и "Сервер (файловый вариант)", так же, например, могу возникать фоновые задания.

При нажатии кнопки "Завершить" - закрывается выбранный тип отладки, например это так же может быть фоновое задание в файловом варианте под другим сеансом.

Пожалуй, о настройках файлового режима мне написать больше нечего.

 

Пример работы, главное отличие от старого механизма

Теперь, я приведу пример работы в отладочном режиме. Предварительно, настроил все по предыдущему разделу.

Заходим в процедуру и ставим точку останова напротив кода. Например, вот здесь (Рис.11):

 

Рис.11. Точка останова в процедуре на событие "При изменении номенклатуры" - Розница 2.2.

 

Затем, запускаем код, и "отлавливаем" эту точку (событие срабатывает при изменении номенклатуры, возвращаясь в конфигуратор. В нем нам нужна наша панель "Табло 1".

В ней пишем "Объект" и выбираем какое-нибудь свойство, например дата (Рис.12.):

 

Рис.12. Устанавливаем новое значение в виде выражения в "Табло-1".

 

Нажимаем, правой кнопкой на "Установить новое значение в виде выражения" и пишем вот такой код:

Дата("11.10.2019 10:10:10")

нажимаем кнопку "Установить". Успех! "Изменение значения параметра "Дата" установлено". Кстати, на примитивные типы значений, к чему относится в том числе и тип "Дата" можно менять прям в табло (Рис.13). Но, для демонстрации, я прописал это кодом - и так и так сработает:

 

Рис.13. Ввод выражения.

 

Теперь, "продолжаем отладку", - мы возвращаемся в конфигурацию и опсс - у нас поменялось наше значение (Рис.14). Класс.

 

Рис.14. Результат изменения параметра "на лету" через подстановку в отладчике.

 

В этом пример, я наглядно показал основное отличие старого механизма от нового - это изменение параметров в процессе отладки и "передача" их в предприятие. По мне - так очень удобная штука.

 

Вместо заключения

Так, вроде все. Надеюсь, что я достаточно подробно описал основные "отладочные моменты". Специально не стал уделять внимание таким возможностям как "остановка по ошибке", "стек вызовов", "точка остановка с условием".... кому интересно и кто не знает - может сам посмотреть что это такое.

 

Решил поделился своим практическим опытом работы с отладчиком и постарался указать вам на наиболее интересные и казалось бы "простые" вещи в данном механизме.

Сейчас, наверное, невозможно представить разработку даже простейшего кода без отладчика. Чего уж говорить о том,  если нужно "разобраться" с какой-нибудь конфигурацией.

 

Хочу еще раз обратить ваше внимание на вот эти моменты:

1. (Здесь я сам споткнулся и не раз). В новом механизме УФ - это "установка" точки остановка на коде. Не все так делают и может возникнуть непонимание.

2. Возможность изменения данных "на лету" в отладке - достаточно (мега)полезная вещь, отсутствующая в предыдущем механизме отладке. Пример работы с данным функционалом приведен выше, предполагаю, что он максимально понятен.

И само изменение переменной в процессе отладки у меня почему-то ассоциируется с триггерами (подписками на события, только более униварсальными) - очень похоже, не знаю как вам...

 

Ну и вообще - куда ни копни в механизмах 1с - там такая "бездонная яма" информации... очень многое и много нужно знать и помнить.

 

Спасибо Всем, кто дочитал эту статью до конца, надеюсь, что она была полезна для вас и поможет как минимум сэкономить время в дальнейшем, работая с отладчиком. Еще раз напомню, что я написал ее в основном полагаясь на свой практический "ежедневный" опыт, что называется "без изысков".

Желаю Всем удачного и комфортного кодинга. И, конечно, постоянного изучения возможностей 1с предприятия.  Всем привет!

 

Ранее опубликованные материалы

Так же, прошу посмотреть мои предыдущие статьи:

1С + IIS + SSL: Перевод опубликованной базы на защищенное соединение https с сертификатом от Let's encrypt

Методика независимой системы "Подписки на события"

Дополнительные расходы на основе перемещения запасов в УНФ (пошаговая разработка расширения конфигурации)

отладка новый механизм отладочный сервер файловый режим

См. также

Поинтегрируем: сервисы интеграции – новый стандарт или просто коннектор?

Обмен между базами 1C Администрирование СУБД Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

В платформе 8.3.17 появился замечательный механизм «Сервисы интеграции». Многие считают, что это просто коннектор 1С:Шины. Так ли это?

11.03.2024    4538    dsdred    53    

72

Как готовить и есть массивы

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

Все мы используем массивы в своем коде. Это один из первых объектов, который дают ученикам при прохождении обучения программированию. Но умеем ли мы ими пользоваться? В этой статье я хочу показать все методы массива, а также некоторые фишки в работе с массивами.

24.01.2024    5295    YA_418728146    25    

63

Планы обмена VS История данных

Обмен между базами 1C Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Вы все еще регистрируете изменения только на Планах обмена и Регистрах сведений?

11.12.2023    6410    dsdred    36    

112

1С-ная магия

Механизмы платформы 1С Бесплатно (free)

Язык программирования 1С содержит много нюансов и особенностей, которые могут приводить к неожиданным для разработчика результатам. Сталкиваясь с ними, программист начинает лучше понимать логику платформы, а значит, быстрее выявлять ошибки и видеть потенциальные узкие места своего кода там, где позже можно было бы ещё долго медитировать с отладчиком в поисках источника проблемы. Мы рассмотрим разные примеры поведения кода 1С. Разберём результаты выполнения и ответим на вопросы «Почему?», «Как же так?» и «Зачем нам это знать?». 

06.10.2023    18475    SeiOkami    46    

118

Дефрагментация и реиндексация после перехода на платформу 8.3.22

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

Начиная с версии платформы 8.3.22 1С снимает стандартные блокировки БД на уровне страниц. Делаем рабочий скрипт, как раньше.

14.09.2023    12089    human_new    27    

74

Валидация JSON через XDTO (включая массивы)

WEB-интеграция Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    8824    YA_418728146    6    

141

Внешние компоненты Native API на языке Rust - Просто!

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

Внешние компоненты для 1С можно разработывать очень просто, пользуясь всеми преимуществами языка Rust - от безопасности и кроссплатформенности до удобного менеджера библиотек.

20.08.2023    6279    sebekerga    54    

94

Все скопируем и вставим! (Буфер обмена в 1С 8.3.24)

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

Рассмотрим новую возможность 8.3.24 и как её можно эффективно использовать

27.06.2023    15986    SeiOkami    31    

103
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. dock 44 14.10.19 09:42 Сейчас в теме
Я прошу прощения, но что за набор абзацев ?

1. (Здесь я сам споткнулся и не раз). В новом механизме УФ - это "установка" точки остановка на коде. Не все так делают и может возникнуть непонимание.

Целый раздел посвящен!!!
Извините, но о какой точке останова вообще может идти речь на ПУСТОЙ строке ?
не буду вдаваться в теорию, просто проведем маленький эксперимент: попробуем поставить точку останова на пустой строке и посмотреть что произойдет. Результат - на скрине во вложении. Почему так: автор, надеюсь сам поймёт. И, может быть поймёт, почему в УФ точка останова на пустой строке просто не работает... И не будет рассуждать о "старом и новом" механизме отладки...

Во-первых, в конфигураторе заходим в меню "Сервис - Параметры - Отладка". Здесь выбираем протолок отладки "Отладка по протоколу TCP/IP" как более универсальный.
Используем локальный сервер отладки (по-умолчанию).
Далее, конфигуратор предлагает перезапустить его для применения настроек, соглашаемся с этим и перезапускаем.
Выглядит это вот так (Рис.7):

Но что же мы видим на рисунке ? Даже процитирцю:
Рис.7 Установка отладки по протоколу HTTP и принятие изменений.

Как-то странно выглядит у нас на рисунке настройка отладки "Отладка по протоколу TCP/IP"...

И вот тут несколько вопросов к автору. Дмитрий:
1) в серверном режиме хотя бы раз запускали отладку?
2) вы уверены, что этом суть отличия "нового и старого" режимов отладки (точка останова на ПУСТОЙ строке...)?
Прикрепленные файлы:
tormozit; DrBlack; Йожкин Кот; rpgshnik; ПрестарелыйЗаяц; Sergafan10; achernobrovin; user874148; Rusbread; +9 Ответить
2. Cyberhawk 135 31.10.19 09:19 Сейчас в теме
1. Хорошо бы дать определение, что подразумевается под "старым" и "новым" механизмом отладки.
2.
чтобы были более видны отличия механизма отладки на обычных формах от механизма отладки на управляемых формах
Ошибаешься: абсолютно никакой связи между видами форм и механизмом отладки нет.
3.
выбираем протолок отладки "Отладка по протоколу TCP/IP" как более универсальный
Хорошо бы указать критерий универсальности.
4.
Если даже есть "какие-то настройки" в самом конфигураторе типа "останавливаться на пустой строке", как минимум - их нужно "включить"
Кажется, ИС - не лучшая площадка для фантазий.
5.
Установка "типов предметов отладки" для файлового режима - не требуется (точнее это бесполезно)
Ошибаешься: есть еще и фоновые задания.
6.
главное отличие от старого механизма
Возможность изменения данных "на лету" в отладке - достаточно (мега)полезная вещь, отсутствующая в предыдущем механизме отладке
И вновь ошибаешься: изменение значений переменных на лету не зависит от протокола отладки.

В общем, получил от меня заслуженный минус.
user1615730; ПрестарелыйЗаяц; +2 Ответить
3. ISP 20.11.19 15:59 Сейчас в теме
есть ли команда командной строки для запуска 1C в режиме отладки. Т.к окно открыто в режиме рабочего стола, то не могу зайти в сервис параметры и включить отладку
4. Van2507 11 21.11.19 14:11 Сейчас в теме
5. kolya_tlt 86 17.02.20 12:05 Сейчас в теме
Добрый день.
Удалось ли кому-то запускать конфигуратор сразу с отладкой http, чтобы не перезапускать каждый раз конфигуратор, к сожалению, каждый день кеш чистится :(
8. Serg2000mr 311 21.03.24 15:30 Сейчас в теме
(5) Параметр запуска /Debug -http
Можно добавить /DebuggerUrl "http://address:port"
6. user618785_bag.dat 09.08.21 10:08 Сейчас в теме
Добрый день

Как в коде определить что система запущена в режиме отладки?
типа:
#Если DEBUG Тогда
...
#КонецЕсли
7. user1126480 16 20.03.23 18:43 Сейчас в теме
Спасибо. Познавательно
Оставьте свое сообщение