«1С:Исполнитель» поддерживает разбиение кода на отдельные модули, каждый из которых может выполнять определенную функцию.
Модульный подход к разработке позволяет:
- разделить сложные скрипты на более простые;
- повторно использовать код в других скриптах;
- обеспечить изоляцию кода;
- упростить отладку и тестирование скриптов;
- повысить скорость разработки за счет параллельной работы над отдельными скриптами.
Создание скрипта
Скрипт — это файл, написанный на языке «1С:Исполнителя» и имеющий расширение .sbsl. Он может как использоваться в других скриптах, так и запускаться автономно. Имя скрипта должно соответствовать следующим требованиям:
- может содержать только буквы (латиницы или кириллицы), цифры и символ подчеркивания;
- не может начинаться с цифры;
- чувствительно к регистру, однако запрещается одновременное использование скриптов, имена которых отличаются только регистром (мойСкрипт и МойСкрипт, например).
В скриптах поддерживаются две области видимости: @Локально
и @Глобально
. Они позволяют разграничить, что будет доступно только локально, а что вне скрипта:
@Глобально
— метод или пользовательский тип доступен в других скриптах.
@Локально
— метод или пользовательский тип доступен только внутри скрипта.
При создании скриптов также следует учитывать следующее ограничение: циклические зависимости между скриптами запрещены. Другими словами, вы не можете создать скрипт А, который требует подключения скрипта B, в свою очередь зависящего от скрипта A.
В качестве примера создадим скрипт с именем Фибоначчи.sbsl
, содержащий метод для расчета последовательности чисел Фибоначчи:
@Глобально
метод ВернутьЧислаФибоначчи(КоличествоЧисел: Число): ЧитаемыйМассив<Число>
если КоличествоЧисел < 2
выбросить новый ИсключениеНедопустимыйАргумент(
"Количество чисел должно быть больше двух!")
;
пер Числа: Массив<Число> = []
Числа.Добавить(0)
Числа.Добавить(1)
для Номер = 2 по КоличествоЧисел
Числа.Добавить(Числа.Получить(Номер - 1) + Числа.Получить(Номер - 2))
;
возврат новый ЧитаемыйМассив<Число>(Числа)
;
Подключение скрипта
Для подключения скрипта используйте директиву препроцессора #требуется
:
#требуется <путь_к_скрипту>
#требуется "<путь_к_скрипту>"
Параметр <путь_к_скрипту>
задает относительный (относительно каталога с текущим скриптом) или абсолютный путь к подключаемому скрипту.
Вы также можете указать путь к файлу скрипта следующим образом:
- создать переменную окружения EXECUTOR_MODULES_PATH, в которой указать каталог, содержащий подключаемые скрипты;
-
использовать параметр командной строки --modules-path
для указания пути к каталогу, в котором будет выполняться поиск подключаемых скриптов, например:
executor --modules-path C:/executor-modules
Имеет приоритет над переменной среды EXECUTOR_MODULES_PATH.
Если не указан абсолютный путь к файлу скрипта, «1С:Исполнитель» выполняет его поиск в следующем порядке:
- в каталоге с текущим скриптом;
- в каталоге переменной среды EXECUTOR_MODULES_PATH.
После подключения скрипта для него будет создан тип-одиночка с таким же именем. Данный тип позволяет получить доступ к содержимому скрипта — его глобальным методам и пользовательским типам.
Пример ниже показывает, как вызвать метод ВернутьЧислаФибоначчи()
, определенный в скрипте Фибоначчи.sbsl
:
#требуется Фибоначчи.sbsl
метод Скрипт(КоличествоЧисел: Число)
пер ЧислаФибоначчи: ЧитаемыйМассив<Число>?
попытка
ЧислаФибоначчи = Фибоначчи.ВернутьЧислаФибоначчи(КоличествоЧисел)
поймать Исключение: ИсключениеНедопустимыйАргумент
выбросить Исключение
;
Консоль.Записать(ЧислаФибоначчи)
;
Использование индексного скрипта