Каталог решений - Точка останова с условием. Приемы и хитрости использования

Точка останова с условием. Приемы и хитрости использования

Точка останова с условием. Приемы и хитрости использования

В наличии

“Точка останова с условием“ — применима в самых разнообразных ситуациях, и грамотное её применение экономит много времени разработчика 1С.

Категория:

Описание

10 июня 2022

В 1С есть очень мощный инструмент “Точка останова с условием“. При установки такой точки необходимо указать условие, и если результатом вычисления этого условия будет Истина, то отладчик остановится на этой строке. Если же нет, то не остановится. В условии можно использовать выражение на встроенном языке 1С. Вызов экспортной функции внешней обработки как раз и является выражением языка 1С. Отсюда имеем возможность много чего сделать не меняя основную конфигурацию.

Для этих целей надо завести внешнюю обработку, у меня она называется “Отладка“.

Есть пара важных моментов:

  1. Внешняя обработка должна быть доступна серверу отладки. Если сервер находится на другом компьютере, то Вам для комфортной работы необходима папка с общим доступом, доступная и Вам и тому пользователю, от которого запущен сервер.

  2. Также точку останова с условием нужно ставить только на строку с кодом. На пустом месте поставить можно, но она не сработает, по крайней мере в платформе 8.3.20.1363.

  3. Для того, чтобы выполнение программы не останавливалось, функция должна возвращать Ложь.

Удобным оказалось в первой строке модуля внешней обработки прописать закомментированную строку с полным путем для вызова своей обработки. Остается только копировать — вставить.

Смотрите скрин ниже:

 

 

Сделана внешняя обработка “Отладка.epf“ с экспортной процедурой “Проверка“. Создан справочник “Номенклатура“ и форма элемента. . В процедуре формы элемента справочника выставлена точка останова с условием. Также видно и результат открытия формы с сообщением из функции обработки.

 

В каких случаях имеет смысл использовать точку останова с условием.

В больших и сложных системах довольно много времени можно потратить на поиск или создание подходящего тестового примера.

Используя точку останова с условием можно существенно сократить затраты времени на эту работу.

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

Нет риска забыть удалить отладочный код и оставить его в конфигурации.

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

Рассмотрим парочку примеров более подробно.

 

Пример 1. Доступность и видимость элементов.

 

Довольно часто при отладке нужно изменить видимость/доступность элементов формы.

Например, на скрине ниже, программно сделана недоступной кнопка “Кнопка_ОбычноНедоступная“ и невидимым элемент "БазоваяЕдиницаИзмерения":

 

 

Конечно, если один-два элемента и разово, то быстрее сделать через обычную точку останова и через окно “Вычислить выражение… (SHIFT+F9)“, а там выбрав “Установить новое значение в виде выражения“ задать новое значение и нажать кнопку “Установить“. См.скрин:

 

 

Но если элементов много или необходимо изменить свойство множество раз, то это довольно утомительно. Удобнее использовать точку останова с условием и экспортную функцию внешней обработки. В эту функцию передать элементы, а там в пару строк кода изменить значения свойств на нужные. На скрине ниже кнопка делается доступной и базовая единица измерения видимой. Программа продолжает выполнение, т.к. функция возвращает ЛОЖЬ:

 

 

Здесь в процедуре формы элемента справочника “ПриСозданииНаСервере()“ на строке “КонецПроцедуры“ установлена точка останова с условием. Выражение условия останова:

ВнешниеОбработки.Создать("D:\VVK\отладка.epf").Пример1_ВидимостьДоступность(Элементы)

А во внешней обработке сделана экспортная функция “Пример1_ВидимостьДоступность“, принимающая в качестве параметра элементы формы. Полный текст функции для Копировать/Вставить:

Функция Пример1_ВидимостьДоступность(Элементы) Экспорт

	Элементы.Кнопка_ОбычноНедоступная.Доступность = Истина;
	Элементы.БазоваяЕдиницаИзмерения.Видимость = Истина;

	Возврат Ложь;
КонецФункции

 

Пример 2. Изменение текста запроса.

 

Таким же способом можно существенно сократить время выполнения тяжелого запроса, оставив только те данные, которые Вам нужны в данный момент, “на лету“ изменив текст запроса.

Текст запроса может собираться программно, в таком случае в режиме отладки можно добраться до оператора, когда текст запроса сформировался. Получить его из Shift+F9, → F2, скопировать. См скрин:

 

 

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

См.скрин слева направо, важные моменты обведены красным:

 

 

Обратите внимание, что сначала выполняется выражение условия точки останова, а затем та строчка кода, на которой она установлена

Здесь, выражение условия:

ВнешниеОбработки.Создать("D:\VVK\отладка.epf").Пример2_ИзменениеТекстаЗапроса(ТяжелыйЗапрос)

В экспортной функции внешней обработки в тексте запроса добавлено условие “ГДЕ“ для временной таблицы. Полный код функции:

Функция Пример2_ИзменениеТекстаЗапроса(Запрос) Экспорт
	
    Запрос.Текст ="ВЫБРАТЬ
                  |	ТЗ.Номер КАК Номер
                  |ПОМЕСТИТЬ ВТ_ТЗ
                  |ИЗ
                  |	&ТЗ_Пример КАК ТЗ
                  |ГДЕ
                  |	ТЗ.Номер В (33, 500, 721)
                  |;
                  |
                  |////////////////////////////////////////////////////////////////////////////////
                  |ВЫБРАТЬ
                  |	ВТ_ТЗ.Номер КАК Номер
                  |ИЗ
                  |	ВТ_ТЗ КАК ВТ_ТЗ";

	Возврат Ложь;
КонецФункции

Самое правое выделение на скрине: режим предприятия, 2 результата нажатия на кнопку “Показать количество строк“ в обработке “ВажнаяОбработка“ приложенной к статье конфигурации. Первый раз без изменения “на лету“ текста запроса, второй — с изменением.

И ещё раз напомню: текст запроса конфигурации не изменен. Можно же текст запроса изменить непосредственно в конфигурации и всё отлично отладить, но забыть подчистить за собой.

 

Заключение

 

Думаю, понятно более-менее.

Не пугайтесь следующих окошек безопасности:

 

 

и

 

 

Это тоже “лечится”, при желании.

К статье приложен архив с выгрузкой информационной базы, конфигурацией и внешней обработкой. Делалось на платформе 8.3.20.1363, хотя всё, что описал, работало ещё на платформе 8.2 и на толстых формах.

has been added to your cart:
Оформление заказа