Особенности использования языка
«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
метод ЗаписатьРезультат(Команда: Строка, Результат: Число)
пер ФайлРезультата = новый Файл("./результат.txt")
ФайлРезультата.ОткрытьПотокЗаписи(Истина).Записать("\нКоманда: ${Команда}, Результат: ${Результат}").Закрыть()
Консоль.Записать("Результат сохранен в результат.txt")
;
метод Скрипт(Команда: Строка, Число: Число)
если Команда == "квадрат"
пер Результат = Математика.Квадрат(Число)
Консоль.Записать("Квадрат ${Число} = ${Результат}")
ЗаписатьРезультат(Команда, Результат)
иначе если Команда == "факториал"
если Число > 20
Консоль.ЗаписатьОшибку("Число слишком большое для вычисления факториала")
возврат
;
пер Результат = Математика.Факториал(Число)
Консоль.Записать("Факториал ${Число} = ${Результат}")
ЗаписатьРезультат(Команда, Результат)
иначе
Консоль.ЗаписатьОшибку("Неизвестная команда: ${Команда}")
Консоль.Записать("Доступные команды: квадрат, факториал")
;
;