Найти все вызовы процедуры 1с

Обновлено: 08.07.2024

Рефакторинг — это процесс изменения кода на встроенном языке с целью сделать код чище, повысить читаемость и улучшить структуру кода не изменяя при этом изначального смысла и внешнего поведения этого кода. Конфигуратор предоставляет несколько инструментов, которые могут помочь при проведении рефакторинга кода в прикладном решении.

Подробнее о каждом из этих инструментов и будет рассказано ниже.

Общие средства рефакторинга

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

Выделить фрагмент

Эта команда преобразует выделенный фрагмент кода в процедуру или функцию. Фрагмент должен быть синтаксически целостным. Код нового метода располагается сразу после родительского метода.

Если переменные из выделяемого фрагмента используются в оставшейся части родительского метода, то эти переменные передаются новому методу в виде параметров.

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

Переименовать

Эта команда предназначена для изменения имен переменных и методов. При переименовании методов-обработчиков в модуле формы выполняется автоматическая замена соответствующих значений свойств элементов формы и команд на правильные.

Для экспортных переменных и модулей выполняется проверка уникальности в рамках конфигурации и отсутствия синонимов среди методов и свойств объектов платформы. Если условие соблюдено, пользователю предлагается глобальная замена идентификатора.

Создать описание метода

Простая команда, которая создает заготовку описания метода. Это описание будет использоваться для контекстной подсказки при использование метода в тексте модулей.

Создать обработку оповещения

Эта команда облегчает применение асинхронных методов. Для того, чтобы команда стала доступна нужно ввести имя метода и открывающую скобку, курсор нужно расположить на имени метода.

Рефакторинг синхронных вызовов

Теперь рассмотрим команды, которые помогают при переходе на асинхронные вызовы

Преобразовать вызов

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

Преобразовать в асинхронную процедуру

Команда преобразует метод к виду, подходящему для использования в асинхронных вызовах. Эту команду следует использовать в тех случаях, когда необходимо преобразовать модальные вызовы внутри процедуры/функции, которая вызывается из других процедур/функций. После использования этой команды нужно превратить модальные вызовы в асинхронные аналоги при помощи команды преобразования модального вызова.

Выделить в асинхронную процедуру

Эта команда превращает выделенный фрагмент кода в отдельную процедуру или функцию, при этом выделенный метод преобразуется к асинхронному виду.

Найти вызовы модуля

Выводит список используемых синхронных методов в текущем модуле.

Преобразовать вызовы модуля

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

На этом все, надеюсь, что эта статья была Вам полезна.

Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

(оценок: 7, средняя оценка: 5,00 из 5)

Ключевое слово Процедура начинает секцию исходного текста, выполнение которого можно инициировать из любой точки программного модуля, просто указав Имя_процедуры со списком параметров (если параметры не передаются, то круглые скобки, тем не менее, обязательны). Если в модуле обычного приложения, модуле управляемого приложения или общем программном модуле в теле описания процедуры использовано ключевое слово Экспорт , то это означает, что данная процедура является доступной из всех других программных модулей конфигурации.

При выполнении оператора Возврат процедура заканчивается и возвращает управление в точку вызова. Если в тексте процедуры не встретился оператор Возврат , то после выполнения последнего исполняемого оператора происходит выполнение неявного оператора Возврат . Конец программной секции процедуры определяется по оператору КонецПроцедуры .

Переменные, объявленные в теле процедуры в разделе Объявления локальных переменных , являются локальными переменными данной процедуры, поэтому доступны только в этой процедуре (за исключением случая передачи их как параметров при вызове других процедур, функций или методов).

Имя_проц Назначает имя процедуры.
Знач Необязательное ключевое слово, которое указывает на то, что следующий за ним параметр передается по значению, то есть изменение значения формального параметра при выполнении процедуры никак не повлияет на фактический параметр, переданный при вызове процедуры. Если это ключевое слово не указано, то параметр процедуры передается по ссылке, то есть изменение внутри процедуры значения формального параметра приведет к изменению значения соответствующего фактического параметра.
Парам1 , . ПарамN Необязательный список формальных параметров, разделяемых запятыми. Значения формальных параметров должны соответствовать значениям передаваемых при вызове процедуры фактических параметров. В этом списке определяются имена каждого из параметров так, как они используются в тексте процедуры. Список формальных параметров может быть пуст.
= ДефЗнач Необязательная установка значения параметра по умолчанию. Параметры с установленными значениями по умолчанию можно располагать в любом месте списка формальных параметров.
Экспорт Необязательное ключевое слово, которое указывает на то, что данная процедура является доступной из других программных модулей.
// Объявления локальных переменных Объявляются локальные переменные, на которые можно ссылаться только в рамках этой процедуры.
// Операторы Исполняемые операторы процедуры.
Возврат Необязательное ключевое слово, которое завершает выполнение процедуры и осуществляет возврат в точку программы, из которой было обращение к процедуре. Использование данного оператора в процедуре не обязательно.
КонецПроцедуры Обязательное ключевое слово, обозначающее конец исходного текста процедуры, завершение выполнения процедуры. Возврат в точку, из которой было обращение к процедуре.

Функция

Ключевое слово Функция начинает секцию исходного текста функции, выполнение которой можно инициировать из любой точки программного модуля, просто указав Имя_функции со списком параметров (если параметры не передаются, то круглые скобки, тем не менее, обязательны). Если в модуле обычного, управляемого приложения, внешнего соединения, сеанса или общем программном модуле в теле описания функции использовано ключевое слово Экспорт , то это означает, что данная функция является доступной из всех других программных модулей конфигурации.

Функции отличаются от процедур только тем, что возвращают Возвращаемое значение . Конец программной секции функции определяется по оператору КонецФункции .

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

Переменные, объявленные в теле функции в разделе Объявления локальных переменных , являются локальными переменными данной функции, поэтому доступны только в этой функции (за исключением случая передачи их как параметров при вызове других процедур, функций или методов).



skype: live:di-sem

@programmist_1C

Советы программистам 1с при работе с конфигуратором

conf

Подсветка текущего идентификатора

1tekId

Позволяет подсвечивать текущий идентификатор выбранным цветом.

Выделяются все идентикаторы у которых такое же имя.

Очень удобно для поиска идентификатора по тексту кода.

Отладка под определенным пользователем

2otladkaPodPolz

Позволяет запускать отладку под определенным пользователем.

Незаменимо когда ошибка появляетося только у определенного пользователя или когда пользователю не хватает прав, но неизвестно каких.

Работа с открытыми окнами в конфигураторе

3okna

Позволяет расположить окна в удобном виде.

Выделить их все и закрыть.

Форматирование текста кода

Выделить нужный фрагмент кода и нажать Alt+Shift+F

либо через меню:

4format p2

4format do

4format p

Предположим, вы дорабатываете незнакомую конфигурацию и в каком-то модуле вам попался неотформатированный текст. Вам трудно в нем разобраться и вы хотите улучшить его читаемость, да и вообще сделать более «приличным».
В этом случае вам не нужно вручную двигать строки текста с помощью клавиши Tab, так как это гораздо удобнее и быстрее сделать с помощью форматирования блока текста.
Для этого выделите этот фрагмент текста (или сразу весь модуль – Ctrl + A) и нажмите кнопку Форматировать (Alt + Shift + F) в командной панели Текст.

Вывод списка всех процедур модуля + заготовки предопределенных процедур

5proc

Вернуться в исходное место после команды "Перейти к определению".

Во время анализа кода мы хотим посмотреть что за процедура или функция вызывается. Жмем ПКМ и выбираем перейти к определению и переходим к нужной процедуре/функции.

6perehod1 1

Но после просмотра функции мы хотим вернуться обратно. Для этого жмем "CTRL" + "-":

6perehod2 2

Посмотреть где используется выделенная процедура/функция

6perehod3

Откуда была вызвана процедура/функция? Стек вызовов.

Допустим что в этой процедуре у нас ошибка мы ставим точку останова, но видим что в процедуру уже поступают неверные параметры.

7steck1

Нужно узнать откуда была вызвана данная процедура. Вызываем стек вызовов:

7steck2

Видим все процедуры из которорых мы перешли к текущей:

7steck3

Вырезать часть кода в отдельную процедуру/функцию

Мы хотим часть кода вывести в отдельную процедуру чтобы использовать ее в других процедурах.

Для этого выделим нужную часть, вызовем контекстное меню и сделаем так:

Закладки и перейти к строке.

Бывает что код достаточно большой и нужно "прыгать" от одного места к другому.

Искать место глазами совсем неудобно.

Лучше воспользоваться следующими инструментами.

1 Переход к строке.

Запоминаем номер строки, он написан в правой нижней части экрана

9 0

Жмем в любом месте этого модуля кнопку или сочетание клавиш

9

В нужной строке жмем Alt+F2 либо через меню

9 1

Переход по закладкам горячие клавиши:

F2 - Следующая закладка

Shift+F2 - Предыдущая закладка

Остановить отладчик до наступления ошибки.

Отладчик будет остановлен на строке на которой будет ошибка.

10 1

10 2

10

Проверим что скажет отладчик.

10 3

и остановит процедуру на нужной строке

10 4

Вычислять выражение не меняя код.

В контекстном меню при остановке отладчика есть команда "Вычислить выражение". Shift+F9

11 1

11 2

В поле "Выражение" мы можем написать любой код и тут же получить ответ. Например:

11 3

Контекстная подсказка по параметрам

podskParam

Принудительно вызвать обычную контекстную подсказку: CTRL+Пробел

При изменении объекта метаданных отключить автоматический поиск ссылок на него.

Инструмент безусловно полезный, но нужен он не всегда.

refact 1

Отключается в Сервис-Параметры. Убрать галочки в группе "Рефакторинг при изменениях в метаданных и формах":

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

Основные возможности отладки

Точки останова

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

Отладчик

При достижении точки останова с условием, выполнение программного модуля останавливается только в том случае, если заданное условие истинно:

Отладчик

Отладчик поддерживает возможность отключения точек останова. При этом строка модуля остается отмечена маркером, однако на ход исполнения модуля он никакого влияния не оказывает:

Отладчик

При большом количестве точек останова удобно использовать отдельное окно для работы с точками останова, позволяющее просматривать и редактировать их в едином списке:

Отладчик

Пошаговое выполнение

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

Отладчик

Просмотр выражений

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

Отладчик

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

Отладчик

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

Табло и локальные переменные

Результаты вычислений, которые требуется просматривать на протяжении выполнения некоторой части модуля, можно вывести в отдельное окно — табло, — в котором есть возможность распределить все просматриваемые выражения по четырем страницам:

Отладчик

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

Изменение значений переменных

Значения примитивных типов можно изменить прямо в ячейке Значение.

Отладчик

В этом окне полностью функционирует контекстная подсказка.

Отладчик

Стек вызовов

Отладчик позволяет использовать стек вызовов, который показывает последовательность вызовов процедур и функций, приведшую к строке модуля, которая отлаживается в данный момент:

Отладчик

Двойным щелчком мыши на имени процедуры в стеке вызова можно перейти в соответствующую строку процедуры.

Остановка по ошибке

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

Отладчик

Во время отладки при такой настройке отладка будет останавливаться только при возникновении ошибок, связанных с делением на ноль.

Читайте также: