Базовый синтаксис
В этом разделе содержится описание основных элементов синтаксиса языка «1С:Элемент» с примерами. В конце каждого раздела находится ссылка на подробное описание соответствующей темы.
Комментарии
Используйте комментарии для добавления пояснений к коду. Язык «1С:Элемент» поддерживает однострочные (строчные) и многострочные (блочные) комментарии:
// Это строчный комментарий — игнорируется компилятором
метод Скрипт()
    /* Это блочный комментарий
       на нескольких строках */
    Консоль.Записать("Рабочий код!")
;
Вывод в стандартный поток вывода
Для вывода информации в стандартный поток вывода используйте метод Записать() типа Консоль:
метод Скрипт()
    Консоль.Записать("Привет ")
    Консоль.Записать("мир!")
;
Используйте управляющие последовательности для редактирования строкового вывода:
\н— перенос строки,\т— табуляция,\— экранирующий символ.
метод Скрипт()
    // Новая строка и табуляция
    Консоль.Записать("Список:\н\т1. Первый\н\т2. Второй\н\т3. Третий")
    
    // Экранирование кавычек и обратных слэшей
    Консоль.Записать("Путь: C:\\\\Users\\\"Имя\"\\")
    Консоль.Записать("Он сказал: \"Привет!\"")
;
Подробнее о консоли.
Чтение из стандартного потока ввода
Для ввода информации через стандартный поток ввода используйте методы типа Консоль, имя которых начинается с префикса Считать:
СчитатьСимвол()— получает от пользователя один символ.СчитатьСтроку()— получает от пользователя несколько символов (строку).СчитатьЧисло()— получает от пользователя числовое значение. Фо рмат ввода определяется локалью, которую использует консоль.СчитатьБулево()— запрашивает у пользователя значения типаБулево. Фактически, пользователю предлагается ввести какое-либо из значений:Истина,Ложь,True,False(при вводе учитывается регистр).СчитатьПароль()— считывает и возвращает из входящего потока пароль типаСтрока. При вводе символов вывод в консоль не осуществляется.
Вы можете передавать аргумент в параметр ПодсказкаВвода этих методов — строку, которая добавляется в начало ввода:
метод Скрипт()
    пер ВашеСлово = Консоль.СчитатьСтроку("Введите любое слово: ")
    Консоль.Записать("Вы ввели слово: " + ВашеСлово)
;
Подробнее о консоли.
Переменные
Используйте переменные для временного хранения данных в программе. Переменные объявляются внутри тела метода с помощью модификаторов, после которых указывается имя переменной и, при необходимости, ее тип:
пер— переменная, доступная для записи и чтения;знч— переменная, доступная только для чтения;исп— переменная, доступная только для чтения. При этом для закрытия используемого ресурса при выходе из области видимости для такой переменной вызывается методЗакрыть().
Объявить константу можно с помощью модификатора конст. Константу можно объявлять вне тела метода и нельзя изменять.
Переменные можно использовать только после их инициализации, при этом тип данных переменной определяется автоматически. Тип данных переменной необходимо указывать в случае ее объявления без инициализации.
Пример использования модификаторов конст, пер и знч:
// Неизменяемое значение записывается в константу
конст ПИ = 3.14
метод АнализКруга(Р: Число)
    пер Радиус: Число
    Радиус = Р    
    знч Площадь = ПИ * Радиус * Радиус
    Площадь = 100 // Ошибка! Переменная Площадь доступна только для чтения
    Консоль.Записать("Площадь круга радиуса $Р равна $Площадь")
;
Пример использования модификатора исп:
// Откроет файл, выведет содержимое файла в консоль и после этого закроет файл
метод ПрочитатьФайл()
    исп ПотокЧтения = новый Файл("test.txt").ОткрытьПотокЧтения()
    Консоль.Записать(ПотокЧтения.ПрочитатьКакСтроку())
;
Подробнее об объявлении переменных.
Строковые шаблоны
Используйте строковые шаблоны для удобного форматирования строк с динамическими значениями. Строковые шаблоны используют интерполяцию для вставки значений переменных в строку. Для простых переменных применяйте $имя, для выражений — ${выражение}, для использования форматированного вывода — %имя:
метод Скрипт()
    пер ТекущееЧисло = 1000000
    // Интерполяция простой переменной
    пер Сообщение = "Число равно $ТекущееЧисло" // Число равно 1 000 000
    Консоль.Записать(Сообщение)
    
    ТекущееЧисло = 99999
    // Интерполяция выражения с вызовом метода
    пер НовоеСообщение = "${Сообщение.Заменить("равно", "было равно")}, но теперь равно %ТекущееЧисло"
    
    Консоль.Записать(НовоеСообщение) // Число было равно 1 000 000, но теперь равно 99999
;
Подробнее про интерполяцию строк.
Методы
Используйте методы для организации кода и повторного использования логики. Методы могут принадлежать типам или объявляться в коде как самостоятельные функции.
Метод с двумя параметрами типа Число и возвращаемым значением типа Число:
метод Сумма(А: Число, Б: Число): Число
    возврат А + Б
;
метод Скрипт()
    пер Число = Сумма(3, 5)
    Консоль.Записать("Сумма 3 и 5 равна $Число")
;
Метод, не возвращающий значение (в качестве возвращаемого значения может быть указано ключевое слово ничто):
метод ВывестиСумму(А: Число, Б: Число)
    Консоль.Записать("Сумма $А и $Б равна ${А + Б}")
;
// Метод не возвращает значения, «ничто» используется только для улучшен ия читаемости 
метод ВывестиРазность(А: Число, Б: Число): ничто
    Консоль.Записать("Разность $А и $Б равна ${А - Б}")
;
метод Скрипт()
    ВывестиСумму(-1, 8)
    ВывестиРазность(10, 5)
;
Импорт
Используйте директиву #требуется для подключения внешних скриптов. Объявляйте все зависимости в начале файла до любого исполняемого кода. Указывайте пути к подключаемым скриптам относительно текущего файла или используйте абсолютные системные пути.
// Подключение скрипта с использованием относительного пути
#требуется ./Логирование.sbsl 
// Импорт скрипта с использованием абсолютного пути
#требуется C:\test\Фигура.sbsl
метод Скрипт()
    пер Фигура = новый Фигура.Прямоугольник(10, 5)
    Консоль.Записать("Площадь фигуры: ${Фигура.Х * Фигура.У}")
    Логирование.ЗаписатьЛог()
;
Подробнее о модульной разработке.
Условная инструкция «если»
Для выполнения различных действий в зависимости от результата логического выражения используйте условную инструкцию если. В случае, если значение условия Истина, выполняется блок кода, следующий за условием.
метод ЭтоЧетыре(А: Число): Строка
    если А == 4
        возврат "Верно!"
    ;
    возврат "Не верно!"
;
метод Скрипт()
    пер Число = Консоль.СчитатьЧисло("Сколько будет 2+2?\н")
    Консоль.Записать(ЭтоЧетыре(Число))
;
Используйте блок иначе для указания действий, если значение условия — Ложь:
метод Максимум(А: Число, Б: Число): Число
    если А > Б
        возврат А
    иначе
        возврат Б
    ;
;
метод Скрипт()
    Консоль.Записать("Максимум 0 и 42 равен " + Максимум(0, 42))
;
Инструкция если поддерживает любой уровень вложенности и любые инструкции языка:
метод ВДиапазоне(А: Число): Строка 
    если А == 0
        возврат "А равно 0"
    иначе если А < 10
        возврат "А меньше 10"
    иначе если А >= 10 и А < 15
        возврат "А больше или равно 10, но меньше 15"
    иначе
        возврат "А строго больше 15"
    ;
;
метод Скрипт()
    пер Число = Консоль.СчитатьЧисло("Введите число: ")
    Консоль.Записать(ВДиапазоне(Число))
;
Для работы с несколькими логическими выражениями используйте логические операторы или/и/не (подробнее), а также тернарный оператор ?: (подробнее):
метод ПроверитьТреугольник(А: Число, Б: Число, В: Число)
    пер Условие1 = (А + Б) > В
    пер Условие2 = (А + В) > Б
    пер Условие3 = (Б + В) > А
    
    если Условие1 и Условие2 и Условие3
        // Тернарный оператор для определения типа треугольника
        пер Тип = (А == Б и Б == В) ? "равносторонний" : 
                 (А == Б или А == В или Б == В) ? "равнобедренный" : "разносторонний"
        Консоль.Записать("Можно построить ${Тип} треугольник")
    иначе если (А + Б == В) или (А + В == Б) или (Б + В == А)
        Консоль.Записать("Точки лежат на одной прямой")
    иначе если не (А > 0 и Б > 0 и В > 0)
        Консоль.Записать("Некорректный ввод. Все стороны должны быть > 0")
    иначе
        Консоль.Записать("Треугольник нельзя построить" + 
                         (А > Б + В ? " (сторона А слишком велика)" : ""))
    ;
;
метод Скрипт()
    ПроверитьТреугольник(3, 4, 5)   // Можно построить разносторонний треугольник
    ПроверитьТреугольник(5, 5, 5)   // Можно построить равносторонний треугольник
    ПроверитьТреугольник(5, 5, 8)   // Можно построить равнобедренный треугольник
    ПроверитьТреугольник(1, 1, 2)   // Точки  лежат на одной прямой
    ПроверитьТреугольник(10, 2, 3)  // Треугольник нельзя построить (сторона А слишком велика)
;
Подробнее об инструкции если.