В этом разделе содержится описание основных элементов синтаксиса языка «1С:Элемент» с примерами. В конце каждого раздела находится ссылка на подробное описание соответствующей темы.
Комментарии
Используйте комментарии для добавления пояснений к коду. Язык «1С:Элемент» поддерживает однострочные (строчные) и многострочные (блочные) комментарии:
метод Скрипт()
Консоль.Записать("Рабочий код!")
;
Вывод в стандартный поток вывода
Для вывода информации в стандартный поток вывода используйте метод Записать() типа Консоль:
метод Скрипт()
Консоль.Записать("Привет ")
Консоль.Записать("мир!")
;
Используйте управляющие последовательности для редактирования строкового вывода:
\н — перенос строки,
\т — табуляция,
\ — экранирующий символ.
метод Скрипт()
Консоль.Записать("Список:\н\т1. Первый\н\т2. Второй\н\т3. Третий")
Консоль.Записать("Путь: C:\\\\Users\\\"Имя\"\\")
Консоль.Записать("Он сказал: \"Привет!\"")
;
Чтение из стандартного потока ввода
Для ввода информации через стандартный поток ввода используйте методы типа Консоль, имя которых начинается с префикса Считать:
СчитатьСимвол() — получает от пользователя один символ.
СчитатьСтроку() — получает от пользователя несколько символов (строку).
СчитатьЧисло() — получает от пользователя числовое значение. Фо рмат ввода определяется локалью, которую использует консоль.
СчитатьБулево() — запрашивает у пользователя значения типа Булево. Фактически, пользователю предлагается ввести какое-либо из значений: Истина, Ложь, True, False (при вводе учитывается регистр).
СчитатьПароль() — считывает и возвращает из входящего потока пароль типа Строка. При вводе символов вывод в консоль не осуществляется.
Вы можете передавать аргумент в параметр ПодсказкаВвода этих методов — строку, которая добавляется в начало ввода:
метод Скрипт()
пер ВашеСлово = Консоль.СчитатьСтроку("Введите любое слово: ")
Консоль.Записать("Вы ввели слово: " + ВашеСлово)
;
Переменные
Используйте переменные для временного хранения данных в программе. Переменные объявляются внутри тела метода с помощью модификаторов, после которых указывается имя переменной и, при необходимости, ее тип:
пер — переменная, доступная для записи и чтения;
знч — переменная, доступная только для чтения;
исп — переменная, доступная только для чтения. При этом для закрытия используемого ресурса при выходе из области видимости для такой переменной вызывается метод Закрыть().
Объявить константу можно с помощью модификатора конст. Константу можно объявлять вне тела метода и нельзя изменять.
Переменные можно использовать только после их инициализации, при этом тип данных переменной определяется автоматически. Тип данных переменной необходимо указывать в случае ее объявления без инициализации.
Пример использования модификаторов конст, пер и знч:
конст ПИ = 3.14
метод АнализКруга(Р: Число)
пер Радиус: Число
Радиус = Р
знч Площадь = ПИ * Радиус * Радиус
Площадь = 100
Консоль.Записать("Площадь круга радиуса $Р равна $Площадь")
;
Пример использования модификатора исп:
метод ПрочитатьФайл()
исп ПотокЧтения = новый Файл("test.txt").ОткрытьПотокЧтения()
Консоль.Записать(ПотокЧтения.ПрочитатьКакСтроку())
;
Строковые шаблоны
Используйте строковые шаблоны для удобного форматирования строк с динамическими значениями. Строковые шаблоны используют интерполяцию для вставки значений переменных в строку. Для простых переменных применяйте $имя, для выражений — ${выражение}, для использования форматированного вывода — %имя:
метод Скрипт()
пер ТекущееЧисло = 1000000
пер Сообщение = "Число равно $ТекущееЧисло"
Консоль.Записать(Сообщение)
ТекущееЧисло = 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)
;
Цикл «для»