Навигация по модулям

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

Узнать, внутри какой процедуры я нахожусь

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

Во-первых, 1C:EDT показывает имя текущей процедуры в нижней панели основного окна, посередине.

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

Перейти в процедуру с известным именем

Если вы находитесь в модуле и хотите перейти в процедуру с известным именем, найдите эту процедуру в панели Схема и нажмите на нее.

Если процедур в панели много, предварительно отсортировать их по алфавиту.

Быстро перейти к известной процедуре

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

Чтобы открыть быструю схему, нажмите Ctrl+O. Будут показаны все процедуры и функции модуля таким же образом, как они показываются в панели Схема.

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

Стрелками вверх и вниз можно выбрать нужный элемент и нажать Enter. Курсор редактора будет установлен на объявление выбранной процедуры/функции.

Аналогичные действия можно выполнить, кликнув мышью.

Если кроме процедур и функций вам требуются подписки на события, можно в быстрой схеме нажать Ctrl+O еще раз, и будет показана ветка событий.

Перейти к объявлению

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

Чтобы вернуться назад, нажмите (Назад к) в командной панели основного окна.

Перейти к объявлению функции-конструктора

Если в документирующем комментарии тип указан как ссылка на функцию-конструктор "см ..." то нажав Ctrl и щелкнув мышью можно перейти к объявлению этой функции

Показать иерархию вызовов

Можно узнать, исполнение каких процедур приводит к вызову функции. Для этого установите курсор на определение процедуры или функции и нажмите Показать иерархию вызовов в контекстном меню. Откроется панель Иерархия вызовов, в которой вы увидите вызывающую иерархию процедур по отношению к процедуре/функции, на имени которой находится курсор.

Дважды кликнув на процедуре, вы откроете ее в редакторе встроенного языка.

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

Найти ссылки

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

В этом случае можно использовать другую команду контекстного меню — Поиск ссылок.

Она откроет панель Поиск и покажет в ней похожую структуру вызывающих процедур.

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

Найти подписки на события

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

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

Задачи TODO, FIXME и XXX

Очень редко бывает так, что алгоритмы пишутся «за один присест». Чаще всего работа идет этапами, и важно не забыть, что осталось сделать и что планируется. В этом вам помогут задачи, которые можно увидеть в панели Задачи .

Часть задач 1C:EDT формирует автоматически по комментариям // TODO, // FIXME и // XXX, которые содержатся в тексте модулей. Дважды кликнув на задаче, вы перейдете к строке модуля, которая содержит этот комментарий.

Произвольные задачи

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

Сложный анализ модулей

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

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

Чтобы установить закладку, нажмите Добавить закладку... в контекстном меню вертикальной линейки редактора встроенного языка.

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

Быстрая схема модуля

Быстрая схема модуля позволяет вам перемещаться по модулю, находя нужные процедуры/функции поиском по строке.

Чтобы открыть быструю схему, нажмите Ctrl+O. Будут показаны все процедуры и функции модуля таким же образом, как они показываются в панели Схема.

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

Стрелками вверх и вниз можно выбрать нужный элемент и нажать Enter. Курсор будет установлен на объявление выбранной процедуры/функции.

Аналогичные действия можно выполнить, кликнув мышью.

Если кроме процедур и функций вам требуются подписки на события, можно в быстрой схеме нажать Ctrl+O еще раз, и будет показана ветка событий.

Панель «Схема»

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

Открыть панель «Схема»
Нажмите Окно > Показать панель > > Другое... > Общие > Схема

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

Инструкции препроцессора, присутствующие в модуле, также отображаются в панели Схема. Если в модуле присутствуют области, выделенные инструкциями препроцессора, то они также показываются в схеме, группируя входящие в них процедуры.

Структура информации в панели
Элементами структуры являются переменные, функции, процедуры и инструкции препроцессора, которые содержатся в редактируемом модуле.
Примечание: Далее процедуры и функции будут обозначаться одним словом - методы.
Методы, обрамленные инструкциями препроцессора, показываются как подчиненные элементы этих инструкций.
В отдельной ветке показываются неинтерактивные события модуля и подписки, связанные с этими событиями.
Условные обозначения
  • — обычная переменная;
  • — экспортируемая переменная;
  • — обычный метод;
  • — экспортируемый метод;
  • — обработчик события — процедура на встроенном языке, обрабатывающая событие;
  • — расширяющий метод, используется при работе с модулями конфигурации. Обозначает расширяющий метод, расположенный в расширении;
  • — расширяющий метод, используется при работе с модулями расширения. Показывает, что данный метод расширяет некоторый метод исходной конфигурации;
  • — если область использования метода ограничена директивами компиляции и не совпадает с контекстом всего модуля, то для таких методов указываются контексты, в которых они доступны;
  • — методы, обрамленные инструкциями препроцессора, группируются с указанием инструкции и контекстов, по которым происходит ветвление;
  • — структурные элементы модуля, объединенные в области, группируются с указанием имени области;
  • Группа «События»
    • — группа События. Содержит неинтерактивные события, обрабатываемые в модуле, на которые возможна подписка;
    • — неинтерактивное событие, обрабатываемое в модуле, на которое возможна подписка;
    • — неинтерактивное событие, которое уже обрабатывается в модуле. Имя такого события выделяется цветом;
    • подписка на событие;
Клики мышью и перетаскивание
  • Одиночный клик на переменной или методе позиционирует редактор встроенного языка на объявлении этого элемента (если включена связь с редактором).
  • Одиночный клик на переменной или методе с нажатыми клавишами Ctrl или Shift выделяет несколько структурных элементов списка для их копирования, перемещения или удаления;
  • Двойной клик на подписке на событие открывает обработчик события выбранной подписки в редакторе встроенного языка.:
  • Перетаскивание структурных элементов внутри панели меняет расположение этих элементов в модуле;
  • Перетаскивание структурных элементов внутри панели с нажатой клавишей Ctrl копирует содержимое выделенного элемента в указанное место модуля.
Возможная проблема: Перетаскивание возможно только в том случае, когда структурные элементы сортируются в том порядке, в котором они расположены в модуле.
Командная панель
  • (Свернуть все)сворачивает все уровни иерархии, существующие в панели, до первого уровня;
  • (Связать с редактором)связывает панель с редактором таким образом, что они начинают работать синхронно. В панели автоматически выделяется тот элемент, который редактируется; И наоборот, одиночный клик в панели Схема приводит к позиционированию редактора встроенного языка на определении соответствующей переменной или метода.
  • (Сортировать)устанавливает порядок, в котором структурные элементы сортируются в панели. Если кнопка отжата, структурные элементы сортируются в том порядке, в котором они расположены в модуле. Если кнопка нажата, элементы сортируются в алфавитном порядке;
  • (Показать секцию событий)показывает или скрывает ветку, содержащую интерактивные события, на которые возможна подписка;
Контекстное меню
  • Копироватькопирует в буфер обмена структурные элементы, выделенные в панели. В дальнейшем можно вставить эти элементы в этот или в другой модуль командой Вставить;
  • Вставитьвставляет в модуль содержимое буфера обмена, полученное командами Копировать и Вырезать. Вставка выполняется после того структурного элемента, который выделен в панели;
  • Удалитьудаляет из модуля выделенные структурные элементы;
  • Выделить в #Областьобрамляет инструкциями #Область#КонецОбласти те структурные элементы модуля, которые выделены в панели. Выделение элементов в одну область возможно в том случае, когда они расположены в модуле рядом друг с другом. Поэтому перед использованием этой команды убедитесь, что структурные элементы сортируются в том порядке, в котором они расположены в модуле;
  • Вырезатьвырезает из модуля в буфер обмена структурные элементы, выделенные в панели. В дальнейшем можно вставить эти элементы в этот или в другой модуль командой Вставить;
  • Создать обработчик событияэта команда активна на событиях из ветки События. Она добавляет в конец модуля определение процедуры, обрабатывающей выбранное событие;
  • Поиск ссылокоткрывает панель Поиск и показывает в ней вызывающую иерархию методов и объектов конфигурации по отношению к методу, который выделен в панели;
  • Иерархия вызововоткрывает панель Иерархия вызовов и показывает в ней вызывающую или вызываемую иерархию методов, по отношению к выделенному методу;
  • Открыть обработчик событияэта команда активна на подписках . Она открывает обработчик события выбранной подписки в редакторе встроенного языка;
  • Открыть элемент расширенияэта команда активна на расширяющих методах в конфигурации . Она открывает расширяющий метод в расширении;
  • Открыть расширяемый методэта команда активна на расширяющих методах в расширении . Она открывает расширяемый метод в конфигурации;
  • Добавить в расширениесоздает шаблон метода, расширяющего выбранный метод, и помещает этот шаблон в соответствующий модуль расширения конфигурации;

Панель «Иерархия вызовов»

Панель Иерархия вызовов показывает вызывающую или вызываемую иерархию процедур и функций (далее методов) по отношению к методу, на котором была выполнена команда Иерархия вызовов. Эта команда находится:

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

Структура информации в панели

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

В случае построения вызывающей иерархии (вверх) глубже находятся методы, из которых вызывается анализируемый метод. При выделении таких методов, в колонках Строка и Вызов 1C:EDT показывает их строки, в которых выполняется вызов "родительского" метода.

В этом примере из процедуры ПередЗаписью(), которая находится в модуле документа Заказ, вызывается метод ТекущийПользователь(), который находится в общем модуле Пользователи. Этот вызов выполняется в 31 строке модуля документа Заказ в результате выполнения оператора Пользователи.ТекущийПользователь().

Важно: Если строится вызывающая иерархия (вверх), справа показываются строки того модуля, который выделен.

В случае построения вызываемой иерархии (вниз) глубже находятся методы, которые вызываются из анализируемого метода. При выделении таких методов в колонках Строка и Вызов показываются строки "родительского" метода, которые вызывают эти методы.

В этом примере из метода ПриНачалеРаботыСистемы(), который находится в модуле приложения, вызывается метод ПриНачалеРаботыСистемы(), который находится в общем модуле ПомощникКлиент. Этот вызов выполняется в 15 строке модуля приложения в результате выполнения оператора ПомощникКлиент.ПриНачалеРаботыСистемы().

Важно: Если строится вызываемая иерархия (вниз), справа показываются строки не того модуля, который выделен, а его "родителя".
Условные обозначения
  • — обычная процедура;
  • — обычная функция;
  • — экспортируемая процедура;
  • — экспортируемая функция;
  • — возможный вызов метода. Система построения типов его не определила, однако в этом модуле был найден вызов, содержащий совпадающий идентификатор (имя процедуры или функции);
  • — в случае построения вызывающей иерархии (вверх) в скобках указывается количество строк этого модуля, в которых выполняется вызов "родительского" метода. В случае построения вызываемой иерархии (вниз) в скобках указывается количество строк "родительского" метода, в которых вызывается данный метод;
Колонки
  • Первая колонка — иерархия методов, соответствующая выбранному виду анализа (подробнее);
  • Строка — номер строки модуля, в которой выполняется вызов. Эта колонка может быть скрыта;
  • Вызов — оператор встроенного языка, выполняющий вызов. Эта колонка может быть скрыта;
Клики мышью
  • Одиночный клик в первой колонке показывает вызовы в колонках Строка и Вызов (подробнее).
  • Двойной клик в первой колонке в редакторе встроенного языка открывает тот модуль, которому принадлежат вызовы, и позиционирует курсор на первом из них (подробнее);
  • Двойной клик в колонке Строка или Вызов в редакторе встроенного языка открывает тот модуль, которому принадлежит вызов, и позиционирует курсор на этой строке модуля (подробнее);
Командная панель
  • (Обновить)обновляет информацию в панели;
  • (Отменить текущий поиск)прерывает операцию построения иерархии вызовов;
  • (Показать вызывающую иерархию)в нажатом состоянии информирует о том. что в панели показывается вызывающая иерархия методов. Нажатие на эту кнопку очищает панель и строит вызывающую иерархию методов;
  • (Показать вызываемую иерархию)в нажатом состоянии информирует о том, что в панели показывается вызываемая иерархия методов. Нажатие на эту кнопку очищает панель и строит вызываемую иерархию методов;
  • (Очистить список истории)выпадающий список показывает историю построения иерархии вызовов для разных методов. Метод, для которого в данный момент показывается иерархия вызовов, отмечен в этом списке точкой . Нажатие на любой другой метод из этого списка показывает в панели иерархию вызовов, которая была построена для него. Команда Очистить историю очищает этот список и панель Иерархия вызовов;
  • (Закрепить панель) Закрепить панель если эта кнопка нажата, панель не будет закрываться другими панелями из своей группы;
  • (Показать меню)открывает выпадающее меню, в котором содержатся дополнительные команды для панели;
    • Вызывающая иерархияв нажатом состоянии информирует о том. что в панели показывается вызывающая иерархия методов. Нажатие на эту кнопку очищает панель и строит вызывающую иерархию методов;
    • Вызываемая иерархияв нажатом состоянии информирует о том, что в панели показывается вызываемая иерархия методов. Нажатие на эту кнопку очищает панель и строит вызываемую иерархию методов;
    • Положение >подменю содержит следующие команды:
      • Горизонтальноепоказывает в панели колонки Строка и Вызов;
      • Только иерархияскрывает колонки Строка и Вызов;
Контекстное меню первой колонки
  • Удалить из окнаудаляет из панели выбранную строку со всеми потомками;
  • Обновитьобновляет информацию в панели;
  • Открытьв редакторе встроенного языка открывает тот модуль, которому принадлежат вызовы, и позиционирует курсор на первом из них (подробнее);
  • Показать иерархию вызовов для текущего элементаочищает панель и показывает в ней вызывающую или вызываемую иерархию методов, по отношению к выделенному методу;
  • Поиск ссылокоткрывает панель Поиск и показывает в ней вызывающую иерархию методов и объектов конфигурации по отношению к методу, который выделен в панели;
Контекстное меню колонок
  • Открытьв редакторе встроенного языка открывает тот модуль, которому принадлежит вызов, и позиционирует курсор на этой строке модуля (подробнее);
  • Показать иерархию вызовов для текущего элементаочищает панель и показывает в ней вызывающую или вызываемую иерархию методов, по отношению к выделенному методу;
  • Поиск ссылокоткрывает панель Поиск и показывает в ней вызывающую иерархию методов и объектов конфигурации по отношению к методу, который выделен в панели;

Панель «Закладки»

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

Можно открыть эту панель из главного меню основного окна, нажав Окно > Показать панель > > Другое… > Общие > Закладки.

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

Колонки
  • Описание — описание закладки. Стандартно в качестве описания 1C:EDT использует текст строки, на которой установлена закладка. Можно изменить описание закладки прямо в таблице или в отдельном диалоге;
  • Файлы — имя файла, в котором установлена закладка;
  • Путь — путь к файлу, в котором установлена закладка;
  • Расположение — номер строки, на которой установлена закладка.
Клики мышью
  • Одиночный клик в колонке Описание позволяет изменить описание закладки;
  • Одиночный клик с нажатыми клавишами Ctrl или Shift выделяет несколько строк списка для их копирования или удаления;
  • Одиночный клик на заголовке колонки сортирует таблицу по этой колонке. Если таблица уже отсортирована по этой колонке — меняет направление сортировки;
  • Двойной клик на строке таблицы открывает модуль в редакторе встроенного языка и позиционируется на строке, содержащей выбранную закладку;
Командная панель
  • (Фильтры)открывает диалог, с помощью которого можно отобразить не все, а только некоторые закладки. Доступен отбор закладок по принадлежности к проекту и по описанию. Также можно ограничить количество отображаемых закладок;
  • (Показать меню)открывает выпадающее меню, в котором содержатся дополнительные команды для панели;
    • Сортировать по >подменю содержит следующие команды:
      • Описаниесортирует список по колонке Описание;
      • Файлысортирует список по колонке Файлы;
      • Путьсортирует список по колонке Путь;
      • Расположениесортирует список по колонке Расположение;
    • Новая панель закладокотрывает еще одну панель закладок;
    • Фильтры...открывает диалог, с помощью которого можно отобразить не все, а только некоторые закладки. Доступен отбор закладок по принадлежности к проекту и по описанию. Также можно ограничить количество отображаемых закладок;
    • Настройка столбцов...открывает диалог, с помощью которого можно настроить состав, порядок и ширину колонок списка;
Контекстное меню
  • Перейти к ресурсуоткрывает модуль в редакторе встроенного языка и позиционируется на строке, содержащей выбранную закладку;
  • Копироватькопирует в буфер обмена имена колонок и значения полей выбранной закладки;
  • Копировать детали >подменю содержит следующие команды:
    • ОписаниеКопирует в буфер обмена описание закладки;
    • Полное имя ресурсакопирует в буфер обмена значения полей Путь и Файлы;
  • Удалитьудаляет выделенные закладки;
  • Выбрать всевыбирает все закладки в списке;
  • Показать в >подменю содержит следующие команды:
    • Проводникпоказывает файл, связанный с закладкой, в проводнике;
    • Свойствапоказывает свойства закладки в панели Свойства;
  • Свойстваоткрывает диалог, который позволяет изменить описание закладки;