Skip to content

Эффективное взаимодействие между сценариями проекта. Внедрение глобальных переменных и расширенная передача параметров.

License

Notifications You must be signed in to change notification settings

ahyahy/OneScriptIntegrator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 

Repository files navigation

OneScriptIntegrator

Эффективное взаимодействие между сценариями проекта. Внедрение глобальных переменных и расширенная передача параметров.

Подробнее можно узнать на этом сайте

https://ahyahy.github.io/OneScriptIntegrator/index.html

При создании проекта включающего несколько сценариев можно подключить их все сразу применив директиву #Использовать. И если будет необходим доступ к переменным между сценариями это нужно будет дописывать, делая переменные экспортными и присваивая им значения. В другом случае можно методом ЗагрузитьСценарий загрузить сценарий и внедрить глобальную переменную в область видимости загружаемого сценария.

Новая загрузка сценариев.

В этой работе сделана попытка совместить оба подхода. Создадим объект библиотеки ИнтеграторОдноСкрипта и вызовем метод ЗагрузитьСценарии.

ИОС = Новый ИнтеграторОдноСкрипта();
ОбщаяСтуктура = ИОС.ОбщаяСтруктура;
ОбщаяСтуктура.Вставить("ИОС", ИОС);
Сценарии = ИОС.ЗагрузитьСценарии(ЭтотОбъект, ".\");

В примере переменная ОбщаяСтуктура получает значение предопределенного в библиотеке объекта Структура и она будет доступна во всех загруженных таким способом сценариях напрямую, без объявлений. Её можно будет изменять и изменения отразятся во всех сценариях.

Переменная Сценарии это тоже структура. После просмотра заданного каталога она будет содержать ключами названия сценариев, значениями сами сценарии. Доступ получается красивый: Сценарии.Главный или Сценарии["Главный"].

Это что касается автоматики.

Внедрение глобальных переменных.

Но также в библиотеке есть возможность добавить глобальную переменную поддерживаемого односкриптом типа в область видимости подключаемых сценариев в ручном режиме. Для этого примените метод ВвестиГлобальноеСвойство.

Стуктура1 = Новый Структура();
Стуктура1.Вставить("Ключ", "Значение ключа");
ИОС.ВвестиГлобальноеСвойство(Стуктура1, "МояСтруктура", Ложь);

Только делать это нужно до метода ЗагрузитьСценарии.

Передача данных в метод через аргументы.

Ещё одна возможность этой работы это передача в метод другого сценария дополнительных данных, что то навроде аргументов события. Назовем их условно аргументами делегата. Можно создать делегат для выполнения в другом сценарии и при его выполнении в методе будут доступны агрументы где в свойстве Параметр будут доступны данные.

//== Файл Стартовый.os
// ...
ОбщаяСтуктура = ИОС.ОбщаяСтруктура;
ОбщаяСтуктура.Вставить("ИОС", ИОС);
Сценарии = ИОС.ЗагрузитьСценарии(ЭтотОбъект, ".\");

Параметры = Новый Структура();
Параметры.Вставить("Ключ1", "Значение1");
Действие1 = ИОС.Действие(Сценарии.Главный, "МояПроцедура", Параметры);
Рез = ИОС.Выполнить(Действие1);
//...

//== Файл Главный.os
Функция МояПроцедура() Экспорт
	Пар = ОбщаяСтруктура.ИОС.Аргументы.Параметр;
	Возврат Пар.Ключ1;
КонецФункции

Так можно будет передавать данные в метод у которого параметров и нет вовсе.

About

Эффективное взаимодействие между сценариями проекта. Внедрение глобальных переменных и расширенная передача параметров.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages