Перейти к основному содержимому

Общее

Регистрозависимость​

Синтаксис языка «Исполнителя» регистрозависимый, поэтому, например, нельзя объявить две переменные, которые отличаются только регистром.

Имена переменных​

«1С:Предприятие 8»
// Это одна и та же переменная.
РабочийКаталог = "C:\test\";
рабочийКаталог = "D:\worker\";
«1С:Исполнитель»
// Во второй строке будет ошибка.
пер РабочийКаталог = "C:\\test\\"
пер рабочийКаталог = "D:\\worker\\"

Ключевые слова​

«1С:Предприятие 8»
// Работают оба варианта.
Если РабочийКаталог = "" Тогда
Возврат;
КонецЕсли;

если РабочийКаталог = "" тогда
возврат;
конецесли;
«1С:Исполнитель»
// Этот вариант работает.
если РабочийКаталог == ""
возврат
;

// Этот вариант не работает.
Если РабочийКаталог == ""
Возврат
;
«1С:Предприятие 8»
// Работают оба варианта.
Версии = новый Массив();
Версии = Новый Массив();
«1С:Исполнитель»
// Этот вариант работает.
пер Версии = новый Массив<Версия>()

// Этот вариант не работает.
пер Версии = Новый Массив<Версия>()

Ключевые слова​

Все ключевые слова языка «Исполнителя» пишутся строчными буквами. Прописные буквы в ключевых словах не используются. Это позволяет отличать ключевые слова от идентификаторов при просмотре кода без наличия подсветки, например в системах контроля версий.

Примеры ключевых слов​

«1С:Предприятие 8»
Процедура Скрипт()
КонецПроцедуры
«1С:Исполнитель»
метод Скрипт()
;
«1С:Предприятие 8»
Если Результат = 0 Тогда
КонецЕсли;
«1С:Исполнитель»
если Результат == 0
;
«1С:Предприятие 8»
Для Счетчик = 1 по 5 Цикл
КонецЦикла;
«1С:Исполнитель»
для Счетчик = 1 по 5
;

Упрощенные инструкции​

Простые и составные инструкции​

Многие привычные инструкции упрощены. Точка с запятой ; в конце простых инструкций не ставится. Этот символ используется в конце составных инструкций вместо ключевых слов КонецЕсли, КонецЦикла, КонецПроцедуры, КонецФункции и так далее.

«1С:Предприятие 8»
Процедура Скрипт()
Результат = 0;
Если Результат = 0 Тогда
Для Счетчик = 1 по 5 Цикл
Результат = Результат + 1;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
«1С:Исполнитель»
метод Скрипт()
пер Результат = 0
если Результат == 0
для Счетчик = 1 по 5
Результат += 1
;
;
;

После «если» не пишется «тогда»​

В инструкции если не используется ключевое слово Тогда.

«1С:Предприятие 8»
Если Результат = 0 Тогда
КонецЕсли;
«1С:Исполнитель»
если Результат == 0
;
примечание

Подробнее про инструкцию если.

После «для» не пишется «цикл»​

В инструкции для не используется ключевое слово Цикл.

«1С:Предприятие 8»
Для Счетчик = 1 по 5 Цикл
КонецЦикла;
«1С:Исполнитель»
для Счетчик = 1 по 5
;
примечание

Подробнее про инструкцию для по.

После «пока» не пишется «цикл»​

В инструкции пока не используется ключевое слово Цикл.

«1С:Предприятие 8»
Счетчик = 1;
Пока Счетчик < 5 Цикл
Счетчик = Счетчик + 1;
КонецЦикла;
«1С:Исполнитель»
пер Счетчик = 1
пока Счетчик < 5
Счетчик += 1
;
совет

Для ввода угловых скобок < и > используйте сочетание клавиш Alt + б и Alt + ю (подробнее).

примечание

Подробнее про инструкцию пока.

В цикле «для из» не пишется «каждого»​

В инструкции для из не используется ключевое слово Каждого.

«1С:Предприятие 8»
Массив = Новый Массив();
Массив.Добавить(1);
Массив.Добавить(3);
Массив.Добавить(5);
Массив.Добавить(7);
Массив.Добавить(9);
Для Каждого Элемент Из Массив Цикл
Сообщить("Элемент - " + Элемент)
КонецЦикла;
«1С:Исполнитель»
для Элемент из [1, 3, 5, 7, 9]
пер Результат = "Элемент - %Элемент"
;
совет

Для ввода квадратных скобок [ и ] используйте сочетание клавиш Alt + х и Alt + ъ (подробнее).

примечание

Подробнее про инструкцию для из.

Статическая типизация​

Язык «Исполнителя» — статически типизированный. Это значит, что у каждой переменной, параметра и метода, возвращающего значение, должны быть описаны типы.

Объявление переменной​

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

«1С:Предприятие 8»
// Объявление не обязательно.
// Отсутствие объявления
// не вызовет ошибку
// при использовании переменной.
Перем РабочийКаталог;
«1С:Исполнитель»
// Объявление обязательно.
// Отсутствие объявления
// вызовет ошибку компиляции
// при использовании переменной.
пер РабочийКаталог: Строка

// Объявление и инициализация.
пер РабочийКаталог = "C:\\test\\"
примечание

Рекомендации по инициализации переменных.

Объявление метода​

«1С:Предприятие 8»
// Типы параметров не объявляются.
Процедура КакПроцедура(Парам1,
Парам2)
Результат = Парам1 + Парам2;
КонецПроцедуры
«1С:Исполнитель»
// Объявление типов параметров обязательно.
метод КакПроцедура(Парам1: Строка,
Парам2: Число)
пер Результат = Парам1 + Парам2
;

Объявление типа возвращаемого значения​

«1С:Предприятие 8»
// Тип возвращаемого значения не объявляется.
//
Функция КакФункция(Парам1,
Парам2)
Возврат Парам1 + Парам2;
КонецФункции
«1С:Исполнитель»
// Объявление типа возвращаемого значения
// обязательно.
метод КакФункция(Парам1: Строка,
Парам2: Число): Строка
возврат Парам1 + Парам2
;

Объявление переменной любого типа​

Сохранена возможность динамической типизации в стиле «1С:Предприятия». Для этого в описании типа нужно использовать ключевое слово неизвестно. В этом случае все проверки кода с момента написания переносятся на момент его выполнения.

«1С:Предприятие 8»
// Объявление не обязательно.
Перем РабочийКаталог;
«1С:Исполнитель»
// Объявление обязательно.
пер РабочийКаталог: неизвестно

Объявление метода с параметрами любого типа​

«1С:Предприятие 8»
// Типы параметров не объявляются.
Процедура КакПроцедура(Парам1,
Парам2)
Результат = Парам1 + Парам2;
КонецПроцедуры
«1С:Исполнитель»
// Объявление типов параметров обязательно.
метод КакПроцедура(Парам1: неизвестно,
Парам2: неизвестно)
пер Результат = Парам1 + Парам2
;

Объявление любого типа возвращаемого значения​

«1С:Предприятие 8»
// Тип возвращаемого значения не объявляется.

Функция КакФункция(Парам1,
Парам2)
Возврат Парам1 + Парам2;
КонецФункции
«1С:Исполнитель»
// Объявление типа возвращаемого значения
// обязательно.
метод КакФункция(Парам1: неизвестно,
Парам2: неизвестно): неизвестно
возврат Парам1 + Парам2
;

Составные типы​

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

// Переменная может принимать значения типов Строка, Число или Булево.
пер Переменная1: Строка|Число|Булево = 0

// Переменная может принимать значения типов Строка или Неопределено.
пер Переменная2: Строка?
совет

Для ввода вертикальной черты | используйте сочетание клавиш Alt + \ (подробнее).

примечание

Константа​

Константа — это именованное значение, которое синтаксически выглядит как переменная, но значение такой переменной нельзя изменить после объявления.

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

конст РАБОЧИЙ_КАТАЛОГ = "C:\\test\\" 

метод Скрипт()
пер ФайлРезультата = новый Файл(РАБОЧИЙ_КАТАЛОГ + "test.txt")
;
примечание

Только методы​

Нет деления на процедуры и функции. Для объявления переиспользуемого блока кода всегда применяется ключевое слово метод.

О том, что метод что-либо возвращает, можно судить по тому, что у метода описан тип возвращаемого значения.

Пример описания и использования методов​

«1С:Предприятие 8»
Процедура Скрипт()
КакПроцедура("номер ", 5);
Результат = КакФункция("номер ",5);
КонецПроцедуры

Процедура КакПроцедура(Парам1,
Парам2)
Результат = Парам1 + Парам2;
КонецПроцедуры

Функция КакФункция(Парам1,
Парам2)
Возврат Парам1 + Парам2;
КонецФункции
«1С:Исполнитель»
метод Скрипт()
КакПроцедура("номер ", 5)
пер Результат = КакФункция("номер ",5)
;

метод КакПроцедура(Парам1: Строка,
Парам2: Число)
пер Результат = Парам1 + Парам2
;

метод КакФункция(Парам1: Строка,
Парам2: Число): Строка
возврат Парам1 + Парам2
;

Передача аргументов по значению​

Изменение параметра в вызываемом методе не приводит к изменению аргумента​

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

В отличие от этого в языке «1С:Предприятия» существует возможность передавать аргументы по ссылке так, что изменение значения параметра в вызываемом методе приведет к изменению аргумента.

«1С:Предприятие 8»
Процедура Скрипт()
Переменная1 = 30;
Метод1(Переменная1);
// Переменная1 будет равна 100.
КонецПроцедуры

// Возможна передача по ссылке.
Процедура Метод1(пер1)
пер1 = 100;
КонецПроцедуры
«1С:Исполнитель»
метод Скрипт()
пер Переменная1 = 30
Метод1(Переменная1)
// Переменная1 будет равна 30.
;

// Невозможна передача по ссылке.
метод Метод1(пер1: Число)
пер1 = 100
;

Изменение экземпляров с помощью их методов​

В то же время, как и во встроенном языке «1С:Предприятия», вы можете изменять экземпляры, переданные через параметры, с помощью методов этих экземпляров.

«1С:Предприятие 8»
Процедура Скрипт()
Массив1 = новый Массив();
Массив1.Добавить(1);
Метод3(Массив1);
// Массив1 будет иметь два элемента.
КонецПроцедуры

Процедура Метод3(масс)
масс.Добавить(2);
КонецПроцедуры
«1С:Исполнитель»
метод Скрипт()

пер Массив1 = [1]
Метод3(Массив1)
// Массив1 будет иметь два элемента.
;

метод Метод3(масс: Массив<Число>)
масс.Добавить(2)
;

Ввод английских символов без переключения раскладки​

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

Для ввода вертикальной черты |, которая используется, например, при перечислении типов, используйте Alt + \.

пер СтрокаЧисло: Строка|Число = 5  // Alt + \

Для ввода квадратных скобок [ и ], которые используются, например, при перечислении значений, используйте Alt + х и Alt + ъ.

пер Числа = [0, 1, 2]  // Alt + х и Alt + ъ

Для ввода фигурных скобок { и }, которые используются, например, при включении в строковый литерал вычисляемых выражений, используйте Alt + 9 и Alt + 0.

пер ТекущееВремя = "Сейчас %{Время.Сейчас()|ЧЧ:мм}"  // Alt + 9 и Alt + 0

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

для Число из Числа
выбор Число
когда < 1 // Alt + б
Консоль.Записать("<1")
когда >= 1 // Alt + ю
Консоль.Записать(">=1")
;
;

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

  • амперсанд & — Alt + 7;

  • коммерческое at (собака) @ — Alt + 2;

  • апостроф ' — Alt + э;

  • слеш / — Alt + ..

Многострочные комментарии​

Поддерживаются многострочные комментарии.

Пример многострочного комментария​

«1С:Предприятие 8»
// Алгоритм на основании анализа
// типа данных заменяет их
// на данные, удаляющие информацию
// из узла, в котором их
// не должно быть.
«1С:Исполнитель»
/* Алгоритм на основании анализа
типа данных заменяет их
на данные, удаляющие информацию
из узла, в котором их
не должно быть. */

Текучий интерфейс (Fluent API)​

Некоторые типы языка «Исполнителя» обладают текучим интерфейсом (Fluent API). Его суть заключается в том, что методы возвращают контекст своего вызова, благодаря чему упрощается множественный вызов методов одного экземпляра. Внешне это выглядит как цепочка методов, вызываемых последовательно.

Примеры использования текучего интерфейса​

«1С:Предприятие 8»
Процедура ПриНачалеРаботыСистемы()

Запись = Новый ЗаписьXML;
Запись.ОткрытьФайл("C:\test\test.xml");
Запись.ЗаписатьНачалоЭлемента("product");
Запись.ЗаписатьАтрибут("code", "138");
Запись.ЗаписатьНачалоЭлемента("description");
Запись.ЗаписатьТекст("Холодильник");
Запись.ЗаписатьКонецЭлемента();
Запись.ЗаписатьНачалоЭлемента("price");
Запись.ЗаписатьТекст("30000");
Запись.ЗаписатьКонецЭлемента();
Запись.ЗаписатьНачалоЭлемента("count");
Запись.ЗаписатьТекст("20");
Запись.ЗаписатьКонецЭлемента();
Запись.ЗаписатьКонецЭлемента();

КонецПроцедуры
«1С:Исполнитель»
метод Скрипт()
исп ПотокЗаписи =
новый Файл("C:\\test\\test.xml")
.ОткрытьПотокЗаписи()
пер Запись = новый ЗаписьXml(ПотокЗаписи)
Запись.ЗаписатьНачалоЭлемента("product")
.ЗаписатьАтрибут("code", "138")
.ЗаписатьНачалоЭлемента("description")
.ЗаписатьТекст("Холодильник")
.ЗаписатьКонецЭлемента()
.ЗаписатьНачалоЭлемента("price")
.ЗаписатьТекст("30000")
.ЗаписатьКонецЭлемента()
.ЗаписатьНачалоЭлемента("count")
.ЗаписатьТекст("20")
.ЗаписатьКонецЭлемента()
.ЗаписатьКонецЭлемента()
;

Другие примеры использования текучего интерфейса:

пер НастройкиПоиска = новый НастройкиПоискаФайлов()
.ИсключитьКаталоги()
.ИсключитьСсылки()
.ИмяСодержит(".html")

пер ЧистыйТекст = Чтение.Значение
.Заменить(Символы.НоваяСтрока, " ")
.Заменить(Символы.Таб, " ")
.Заменить(" ", " ")