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

Особенности использования языка

«1С:Предприятие.Элемент Скрипт» — это специализированная среда выполнения, предназначенная для автономного исполнения скриптов, написанных на языке «1С:Элемент». В отличие от кода, который запускается в рамках полноценных приложений, созданных в «1С:Предприятие.Элементе» или «1С:Шине», скрипты выполняются напрямую операционной системой, что открывает возможности для автоматизации задач администрирования, развертывания и поддержки CI/CD в экосистеме «1С».

В данной статье будут рассмотрены характерные особенности написания скриптов на языке «1С:Элемент» в среде «1С:Предприятие.Элемент Скрипт».

Импорт

Используйте директиву #требуется для подключения внешних скриптов. Объявите все зависимости в начале файла до любого исполняемого кода. Укажите пути к подключаемым скриптам относительно текущего файла или используйте абсолютные пути.

// Подключение скрипта с использованием относительного пути
#требуется ./Логирование.sbsl

// Импорт скрипта с использованием абсолютного пути
#требуется C:\test\Фигура.sbsl

метод Скрипт()
пер Фигура = новый Фигура.Прямоугольник(10, 5)
Консоль.Записать("Площадь фигуры: ${Фигура.Х * Фигура.У}")
Логирование.ЗаписатьЛог()
;

Подробнее см. Модульная разработка.

Точка входа программы

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

метод СложитьЧисла(А: Число, Б: Число): Число
возврат А + Б
;

метод УмножитьЧисла(А: Число, Б: Число): Число
возврат А * Б
;

метод Скрипт()
Консоль.Записать("Начало вычислений:")
пер Сумма = СложитьЧисла(5, 3)
пер Произведение = УмножитьЧисла(4, 6)
Консоль.Записать("Сумма: ${Сумма}, Произведение: ${Произведение}")
;

Для параметризованных сценариев передайте методу Скрипт() необходимые аргументы:

метод Скрипт(Число1: Число, Число2: Число)
пер Разность = Число1 - Число2
пер Частное = Число1 / Число2

Консоль.Записать("Разность: ${Разность}")
Консоль.Записать("Частное: ${Частное}")
Консоль.Записать("Среднее: ${(Число1 + Число2) / 2}")
;

Стандартные потоки ввода и вывода

Используйте методы типа Консоль для работы со стандартными потоками ввода и вывода. Вызовите Консоль.Записать() для вывода данных в стандартный поток. Читайте пользовательский ввод через Консоль.Прочитать(). Для вывода ошибок используйте Консоль.ЗаписатьОшибку().

метод Скрипт()
пер Число1 = Консоль.СчитатьЧисло("Введите первое число:")
пер Число2 = Консоль.СчитатьЧисло("Введите второе число:")
пер Сумма = Число1 + Число2

если Сумма > 100
Консоль.ЗаписатьОшибку("Сумма превысила 100!")
иначе
Консоль.Записать("Сумма: ${Сумма}")
;
;

Стандартная библиотека

Используйте типы стандартной библиотеки языка «1С:Элемент» для работы с типами данных и переменными окружения, с файлами и процессами операционной системы и т. д.

Например, используйте типы из пространства имен Стд::РегулярныеВыражения для создания шаблонов работы с текстом:

метод РазобратьДату(ДатаСтрока: Строка): Массив<Строка>
// Шаблон для даты ДД.ММ.ГГГГ с группами захвата
знч Шаблон = новый Образец("(\\ц{2})\\.(\\ц{2})\\.(\\ц{4})")
знч Совпадения = Шаблон.НайтиСовпадения(ДатаСтрока)

если Совпадения.Пусто()
возврат []
;

знч ПервоеСовпадение = Совпадения[0]
возврат [
ПервоеСовпадение.Группа(1), // День
ПервоеСовпадение.Группа(2), // Месяц
ПервоеСовпадение.Группа(3) // Год
]
;

метод Скрипт()
пер ДатаТекст = "Событие 18.05.1993"
пер Компоненты = РазобратьДату(ДатаТекст)

если не Компоненты.Пусто()
Консоль.Записать("День: ${Компоненты[0]}")
Консоль.Записать("Месяц: ${Компоненты[1]}")
Консоль.Записать("Год: ${Компоненты[2]}")
иначе
Консоль.Записать("Дата не найдена")
;
;

Пример

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

Создайте скрипт Математика.sbsl с методами для вычисления квадрата и факториала числа:

Математика.sbsl
// Скрипт для описания математических функций
@Глобально
метод Квадрат(Число: Число): Число
возврат Число * Число
;

@Глобально
метод Факториал(Число: Число): Число
если Число <= 1
возврат 1
;
возврат Число * Факториал(Число - 1)
;

Используйте методы из Математика.sbsl внутри основного скрипта Скрипт.sbsl:

Скрипт.sbsl
// Основной скрипт, который использует модульную разработку для подключения скрипта Математика.sbsl
#требуется ./Математика.sbsl

// Вспомогательный метод для записи в файл
метод ЗаписатьРезультат(Команда: Строка, Результат: Число)
// Используется тип Файл из стандартной библиотеки
пер ФайлРезультата = новый Файл("./результат.txt")
ФайлРезультата.ОткрытьПотокЗаписи(Истина).Записать("Команда: ${Команда}, Результат: ${Результат}").Закрыть()
// Вывод в стандартную консоль вывода
Консоль.Записать("Результат сохранен в результат.txt")
;

// Основной метод, который вызовет в теле другие методы
метод Скрипт(Команда: Строка, Число: Число)

если Команда == "квадрат"
пер Результат = Математика.Квадрат(Число)
Консоль.Записать("Квадрат ${Число} = ${Результат}")
ЗаписатьРезультат(Команда, Результат)

иначе если Команда == "факториал"
если Число > 20
Консоль.ЗаписатьОшибку("Число слишком большое для вычисления факториала")
возврат
;
пер Результат = Математика.Факториал(Число)
Консоль.Записать("Факториал ${Число} = ${Результат}")
ЗаписатьРезультат(Команда, Результат)

иначе
Консоль.ЗаписатьОшибку("Неизвестная команда: ${Команда}")
Консоль.Записать("Доступные команды: квадрат, факториал")
;
;