СоздатьПеременнуюКонтекста

Автор sau, 30 марта 2024, 21:34

« назад - далее »

Злоп

Вообще не понял проч то речь. Надо на досуге перечитать ветку.

Forum123

Цитата: Злоп от 02 апреля 2024, 01:25Вообще не понял проч то речь. Надо на досуге перечитать ветку.
Если переменной не было присвоено где-то ранее значение или объявлена в Перем, то её нельзя использовать.
1С скажет, что нет такой переменной.
Так вот в любой момент в контекст модуля вы можете добавить новую переменную и обращаться к ней Конст.ИмяПеременной.
Это динамическая переменная.
Ещё имеется возможность в контекст добавить новую функцию или процедуру, которой в модуле нет и использовать её.

Эти фичи упрощают разработку обобщённых алгоритмов.

alyuev

Так есть же ВыполняемыйМодуль.

Злоп

Цитата: Forum123 от 02 апреля 2024, 07:53Если переменной не было присвоено где-то ранее значение или объявлена в Перем, то её нельзя использовать.
1С скажет, что нет такой переменной.
.
попробуй выполнить оператор где-нить посреди кода:

ПростоНеобъявленнаяПеременная = ПростоНеобъявленнаяПеременная/0; // пронаблюдай что получится 

Злоп

Цитата: Forum123 от 02 апреля 2024, 07:53Так вот в любой момент в контекст модуля вы можете добавить новую переменную и обращаться к ней Конст.ИмяПеременной.
Это динамическая переменная.
.
ну, наверное полезная фича для еще большего запутывания всего и вся, особенно если добавляться в контекст будет извне ... ;-)

alyuev

Цитата: Djelf от 01 апреля 2024, 12:54Хотя нет, можно и из самой формы достучатся через
Функция глПолучитьПеременнуюКонтекста(Конт,ИмяПеременной) Экспорт
	Перем Значение;
	Конт.Свойство(ИмяПеременной,Значение);
	Возврат Значение;
КонецФункции


А можно поподробнее по .Свойство()? Что-то я не нашел такого...

Для установки значений реквизита/переменной контекста я написал такую процедуру:

Процедура УстановитьЗначениеРеквизита(Конт,ИдРеквизита,Значение) Экспорт 
	//В качестве ИдРеквизита может выступать и переменная модуля, а не только реквизит формы.
	Перем ВМ,Текст;
	Текст="
		|Процедура УстановитьЗначение(НовоеЗначение)
		|	Перем ПредЗнач;
		|	ПредЗнач = "+ ИдРеквизита + ";
		|	"+ ИдРеквизита + " = НовоеЗначение;
		|КонецПроцедуры
		|";
	ВМ = ВыполнитьМодуль(Конт,Текст);
	ВМ.УстановитьЗначение(Значение,ПодсветкаИзмененного);
КонецПроцедуры

Djelf

Цитата: alyuev от 23 апреля 2024, 13:41А можно поподробнее по .Свойство()? Что-то я не нашел такого...
Это Структура, см. динамические свойства в https://www.1cpp.ru/docum/icpp/html/TurboBL.html
Хотя нет, это я вроде информатором у Конт (Формы) нашел.
Слишком много нынче приходится в оперативной памяти мосха держать и что-то постоянно уходит в глубокий своп...

Злоп

Цитата: Djelf от 23 апреля 2024, 15:23и что-то постоянно уходит в глубокий своп...
это
1. из-за малой применимости/малого кодинга
2. отсутствия нормальной документациибазы знаний.

Злоп

Цитата: alyuev от 23 апреля 2024, 13:41Конт.Свойство(ИмяПеременной,Значение);
- поясните, что это такое и зачем оно/как..?