Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Объявление глобальных переменных приложения #36

Open
pallid opened this issue Jun 6, 2018 · 11 comments

Comments

@pallid
Copy link
Contributor

pallid commented Jun 6, 2018

Хочется иметь возможность объявлять глобальные переменные приложения в модуле main.os

@ghost
Copy link

ghost commented Jun 6, 2018

@pallid они формально есть - уже средствами OScript

  • напишите в main.os #использовать model

а дальше вы можете об\ъявить свои модули подключения и свои классы

пример тут

https://github.com/EvilBeaver/os-hub-frontend/tree/master/src/model/modules - например ПереченьПакетов

и тогда этот подключаемый модуль доступен в контексте main.os

https://github.com/EvilBeaver/os-hub-frontend/blob/master/src/main.os

@pallid
Copy link
Contributor Author

pallid commented Jun 6, 2018

@allustin
Тогда придется вызывать установку переменных среды в разных местах

хотелось бы так

main.os


перем Бот Экспорт;

Процедура ПриНачалеРаботыСистемы()
	
       ТокенБота = ПолучитьПеременнуюСреды("TokenBot");
       Бот = Новый Бот(ТокенБота);
       ИспользоватьСтатическиеФайлы();
       ИспользоватьМаршруты();

КонецПроцедуры

ect

Результат = Бот.Метод();

@nixel2007
Copy link
Contributor

nixel2007 commented Jun 6, 2018

@pallid

Тогда придется вызывать установку переменных среды в разных местах

почему бы не сделать это один раз в "используемом" модуле?

@pallid
Copy link
Contributor Author

pallid commented Jun 6, 2018

@nixel2007 затрудняюсь представить как сделать так что бы "используемый" модуль был один, их много и в каждом используется свои переменные

@ghost
Copy link

ghost commented Jun 6, 2018

@pallid тут вот какое дело - глобальные в каком контексте ?

посмотрите на мои эксперименты - я сделал кластер с балансировщиком впереди, пока в парралельном форке https://github.com/silverbulleters-research/OneScript.Web/blob/feature/auth-and-backgroud/docker-scale-compose.yml#L16

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

Если соблюсти все формальности - то глобальные переменные всего кластера (приложения) должны жить в константах приложения, то есть внезапно в базе данных

То есть с глобальными переменными среды не все так просто как казалось бы

Константы приложения я так думаю можно будет делать вот через этот коммит когда он войдет в основной ствол a9cd753

Сейчас я делаю вот так

@EvilBeaver
Copy link
Owner

эээ, чуваки, вы прям тут дискутируете так... А задача для 1С - ника типичная, видеть гл. переменные из модуля приложения.

Сейчас вот прям как есть - так сделать нельзя. Обычно объявляется некий общий модуль с экспортными свойствами, подключается через Использовать, а потом в программе юзается вот так:

СделатьХорошее(МойМодульКонстант.МояНастройка);

@EvilBeaver
Copy link
Owner

Кстати, @pallid может лучше воспользоваться не Модулем, а Классом?
Я не до конца уловил задачу...

@pallid
Copy link
Contributor Author

pallid commented Jun 7, 2018

@EvilBeaver сейчас так и делаю

в контроллере

перем Бот ;

Процедура Index()
	
       БОТ= Новый Бот;
       БОТ.Токен = ПолучитьПеременнуюСреды("TokenBot");

КонецПроцедуры

думал еще что такая конструкция будет работать, чтоб каждый раз не получать переменные среды

перем Бот ;

Процедура Index()
	
 Если БОТ = Неопределено Тогда
       БОТ= Новый Бот;
       БОТ.Токен = ПолучитьПеременнуюСреды("TokenBot");
 КонецЕсли;
...


@EvilBeaver
Copy link
Owner

@pallid такая конструкция будет работать. Не понял пока, что не так.

@pallid
Copy link
Contributor Author

pallid commented Jun 7, 2018

@EvilBeaver Условие Если БОТ = Неопределено Тогда всегда истина

@EvilBeaver
Copy link
Owner

EvilBeaver commented Sep 25, 2018

Да, экземпляр контроллера создается каждый раз на вызов. Сохраняемое состояние нужно хранить либо в модуле, либо в сессии. А лучше вообще не хранить, т.к. к сайту будет доступ с разных клиентов и разных потоков.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants