При создании проекта включающего несколько сценариев можно подключить их все сразу применив директиву #Использовать. И если будет необходим доступ к переменным между сценариями это нужно будет дописывать, делая переменные экспортными и присваивая им значения. В другом случае можно методом ЗагрузитьСценарий загрузить сценарий и внедрить глобальную переменную в область видимости загружаемого сценария.
Новая загрузка сценариев.
В этой работе сделана попытка совместить оба подхода. Создадим объект библиотеки ИнтеграторОдноСкрипта и вызовем метод ЗагрузитьСценарии.
ИОС = Новый ИнтеграторОдноСкрипта();
ОбщаяСтруктура = ИОС.ОбщаяСтруктура;
ОбщаяСтруктура.Вставить("ИОС", ИОС);
Сценарии = ИОС.ЗагрузитьСценарии(
ЭтотОбъект, ".\");
Сохраните этот код в файл с расширением ".os".
В примере переменная ОбщаяСтруктура получает значение предопределенного в библиотеке объекта Структура и она будет доступна во всех загруженных таким способом сценариях напрямую, без объявлений. Её можно будет изменять и изменения отразятся во всех сценариях.
Переменная Сценарии это тоже структура. После просмотра заданного каталога она будет содержать ключами названия сценариев, значениями сами сценарии. Доступ получается красивый: Сценарии.Главный или Сценарии["Главный"].
Это что касается автоматики.
Внедрение глобальных переменных.
Но также в библиотеке есть возможность добавить глобальную переменную поддерживаемого односкриптом типа в область видимости подключаемых сценариев в ручном режиме. Для этого примените метод ВвестиГлобальноеСвойство.
Структура1 = Новый Структура();
Структура1.Вставить(
"Ключ",
"Значение ключа");
ИОС.ВвестиГлобальноеСвойство(
Структура1,
"МояСтруктура",
Ложь);
Только делать это нужно до метода ЗагрузитьСценарии.
Передача данных в метод через аргументы.
Ещё одна возможность этой работы это передача в метод другого сценария дополнительных данных, что то навроде аргументов события. Назовем их условно аргументами делегата. Можно создать делегат для выполнения в другом сценарии и при его выполнении в методе будут доступны агрументы где в свойстве Параметр будут доступны данные.
//== Файл Стартовый.os
// ...
ОбщаяСтруктура = ИОС.ОбщаяСтруктура;
ОбщаяСтруктура.Вставить("ИОС", ИОС);
Сценарии = ИОС.ЗагрузитьСценарии(
ЭтотОбъект, ".\");
Параметры = Новый Структура();
Параметры.Вставить(
"Ключ1",
"Значение1");
Действие1 = ИОС.Действие(
Сценарии.Главный,
"МояПроцедура",
Параметры);
Рез = ИОС.Выполнить(Действие1);
//...
//== Файл Главный.os
Функция МояПроцедура() Экспорт
Пар =
ОбщаяСтруктура.ИОС.Аргументы.Параметр;
Возврат Пар.Ключ1;
КонецФункции
Так можно будет передавать данные в метод у которого параметров и нет вовсе.