Шаблоны встроенного языка

О шаблонах

Шаблоны — это фрагменты текста на встроенном языке, которые можно использовать при написании модулей.

Существует два типа шаблонов:
  • Стандартные шаблоны — это фиксированный набор шаблонов, который хранится внутри 1C:EDT. Можно использовать эти шаблоны, но изменять их или удалять нельзя;
  • Пользовательские шаблоны — эти шаблоны можно импортировать, изменять, удалять, создавать собственные.

Шаблоны 1C:EDT и шаблоны проекта

Пользовательские шаблоны могут храниться в двух местах:

  • В рабочей области — можно использовать один набор шаблонов для нескольких проектов;
  • В проекте — можно использовать один набор шаблонов для всей команды, которая разрабатывает проект.
Контексты

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

Переменные

Шаблон может содержать переменные, которые выполняют то или иное действие во время вставки или после вставки шаблона в модуль.

Например, следующий шаблон использует две переменные: ${Редактировать()} и ${ВыборТипа()}.

Если ТипЗнч(${Редактировать()}) = Тип("${ВыборТипа()}") Тогда

	${Редактировать()}
	
КонецЕсли;

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

В первом маркере вы можете вводить текст, а при переходе на второй маркер 1C:EDT откроет диалог выбора типа.

Вставить шаблон в модуль

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

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

На второй странице контекстной подсказки (повторное нажатие Ctrl+Пробел) расположены все пользовательские шаблоны и обработчики событий, доступные в модуле.

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

Если ТипЗнч(${Редактировать()}) = Тип("${ВыборТипа()}") Тогда

	${Редактировать()}
	
КонецЕсли;	

после вставки в модуль будет иметь такой вид (стрелками отмечены маркеры):

Можно перемещаться между маркерами, нажимая Tab и Shift+Tab. В первом маркере вы можете вводить текст, а при переходе на второй маркер 1C:EDT откроет диалог выбора типа.

Добавить, экспортировать, импортировать шаблоны

Чтобы добавлять, редактировать или удалять шаблоны, нужно открыть один из списков шаблонов.

Открыть список пользовательских шаблонов
  • Чтобы открыть список шаблонов рабочей области в главной панели основного окна нажмите Окно > Параметры > V8 > Встроенный язык > Шаблоны;
  • Чтобы открыть список шаблонов проекта в панели Навигатор нажмите Свойства > V8 > Встроенный язык > Шаблоны в контекстном меню проекта.

В обоих случаях список шаблонов выглядит одинаково и предоставляет одинаковую функциональность.

Добавить шаблон
  1. Откройте список шаблонов;
  2. Нажмите Добавить...;
  3. В поле Имя задайте имя шаблона. Имя предназначено для вас и позволяет отличить один шаблон от другого. Имя шаблона должно быть уникально в пределах своего списка. Но в разных списках могут быть шаблоны с одинаковыми именами. В этом случае будет использоваться шаблон проекта, как более приоритетный;
  4. Выберите контекст шаблона.

    Для нового шаблона всегда включены все контексты.

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

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

    Вводить переменные можно с помощью механизма контекстной подсказки, который вызывается при нажатии Ctrl+Пробел. Назначение каждой переменной описано в подсказке:

    После того, как переменная вставлена в шаблон, можно перемещаться между ее параметрами с нажимая Tab и Shift+Tab. Для тех параметров, которые предполагают фиксированные значения, будет предложен выбор из списка.

  6. Задайте описание шаблона. Это описание будет показано вам в контекстной подсказке при вставке шаблона в модуль.
  7. Нажмите ОК;
  8. Если нужно, аналогичным образом добавьте еще несколько шаблонов;
  9. Нажмите Применить и Закрыть, чтобы сохранить все изменения параметров;
Импортировать шаблоны

Можно импортировать шаблоны «1С:Предприятия» из .st-файла. Например, если вы создавали собственные шаблоны для платформы. В этом случае они будут автоматически конвертированы в формат шаблонов 1C:EDT.

Можно импортировать шаблоны 1C:EDT из .txt-файла. Эти шаблоны могут быть экспортированы, например, из другого проекта, или получены от другого разработчика.

Чтобы импортировать шаблоны выполните следующие действия:

  1. Откройте список шаблонов;
  2. Нажмите Импортировать...;
  3. Выберите файл с шаблонами и нажмите Открыть;
  4. Отредактируйте имена шаблонов, если есть конфликты;
  5. Нажмите ОК;
  6. Нажмите Применить и закрыть, чтобы сохранить список шаблонов.
Экспортировать шаблоны

Шаблоны можно экспортировать в .txt-файл. Для этого:

  • Откройте список шаблонов;
  • Удерживая Ctrl выберите мышью те шаблоны, которые вы хотите экспортировать (нажмите Ctrl+A чтобы выбрать все);
  • Нажмите Экспортировать...;
  • Выберите каталог, в который нужно сохранить файл, введите имя файла вместе с расширением;
  • Нажмите Сохранить.
Импортировать «старые» шаблоны

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

Шаблоны «старого» формата хранятся в рабочей области. Поэтому для их конвертации нужно открыть старую рабочую область новой версией 1C:EDT — 2021.2 и старше. Шаблоны будут конвертированы автоматически и вы увидите их в списке шаблонов.

Примеры использования переменных

ВыборТипа

Переменную ${ВыборТипа()} можно использовать в тех случаях, когда требуется ввести тип некоторого значения.

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

Если ТипЗнч(${Редактировать("Выражение для проверки типа")}) = Тип("${ВыборТипа()}") Тогда

	${Редактировать("")}

КонецЕсли;

После вставки этого шаблона и ввода имени переменной 1C:EDT откроет окно выбора типа, в котором можно найти нужный вам тип с помощью строки поиска:

В результате фрагмент кода будет выглядеть следующим образом:

Выбрать

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

Тогда следующий шаблон после вставки в модуль и выбора документа попросит выбрать один из видов открываемой формы.

ОткрытьФорму("Документ.${ИмяОбъектаМетаданного(Документ)}.${Выбрать("ФормаОбъекта", "ФормаСписка", "ФормаВыбора", "Форма.")}${Редактировать("")}");

В результате будет сформировано имя формы.

ЗначениеПеречисления

Переменную ${ЗначениеПеречисления()} можно использовать, например, для выбора предопределенного значения на клиенте.

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

ПредопределенноеЗначение("Перечисление.${ЗначениеПеречисления()}")

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

ИмяОбъектаМетаданного

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

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

ОткрытьФорму("Документ.${ИмяОбъектаМетаданного(Документ)}.${Выбрать("ФормаОбъекта", "ФормаСписка", "ФормаВыбора", "Форма.")}${Редактировать("")}");

В результате будет сформирована часть имени формы.

Метод

Переменную ${Метод()} можно использовать, например, для вставки описания оповещения.

Следующий шаблон добавляет в модуль заготовку для описания оповещения:

Оповещение = Новый ОписаниеОповещения("${Метод(Обработчик,
Процедура)}", ЭтотОбъект);

МетодИВызов

Переменную ${МетодИВызов()} можно использовать, например, для создания шаблона, который суммирует результаты двух функций.

${Редактировать(СуммаФункций)} = ${МетодИВызов(ПерваяФункция, Функция, Парам1)} + ${МетодИВызов(ВтораяФункция, Функция, Парам2)};

Например, такой шаблон вставляется в следующую процедуру.

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

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

Кроме этого 1C:EDT предложит использовать модификатор Асинх.

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

${МетодИВызов(МояПроцедура, Процедура, парам1, парам2)};

В результате в модуль будет добавлена процедура и ее вызов.

Редактировать

Следующий шаблон показывает особенности использования переменной ${Редактировать()}:

Процедура ${Редактировать("Имя процедуры")}()

	${Редактировать("")}

КонецПроцедуры // ${Редактировать("Имя процедуры")}()

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

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

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

ФорматнаяСтрока

Переменную ${ФорматнаяСтрока()} можно использовать в тех случаях, когда необходимо указать параметры форматирования значения.

Например, следующий шаблон вставляет инструкцию Формат и открывает диалог для создания форматной строки.

Формат(${Редактировать("")}, "${ФорматнаяСтрока()}")

Результат может выглядеть следующим образом.