Переключение на Главную Страницу Страницы: [1] 2 3  ОтправитьПечать
Очень популярная тема (более 25 ответов) Переменная контекста по имени (число прочтений - 10679 )
TemaAE
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 14
Зарегистрирован: 27. Апреля 2007
Переменная контекста по имени
07. Мая 2007 :: 09:05
Печать  
Ситуация такая: есть имя переменной, есть ссылка на контекст, в котором нужно узнать ее значение.
Вопрос: как все-таки это связать и узнать значение переменной?
  
Наверх
 
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Переменная контекста по имени
Ответ #1 - 07. Мая 2007 :: 09:17
Печать  
Код
Выбрать все
Шаблон("[Конт."+ИмяПеременной+"]") 

  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
TemaAE
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 14
Зарегистрирован: 27. Апреля 2007
Re: Переменная контекста по имени
Ответ #2 - 07. Мая 2007 :: 09:22
Печать  
Сам думал об этом, но ведь такая конструкция вернет строку?
  
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: Переменная контекста по имени
Ответ #3 - 07. Мая 2007 :: 09:32
Печать  
ЗначениеИзСтрокиВнутр(Шаблон("[ЗначениеВСтрокуВнутр(Конт." + Имя + ")]")
  
Наверх
 
IP записан
 
TemaAE
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 14
Зарегистрирован: 27. Апреля 2007
Re: Переменная контекста по имени
Ответ #4 - 07. Мая 2007 :: 09:33
Печать  
Все гениально просто!  Смех
Огромное спасибо!
  
Наверх
 
IP записан
 
TemaAE
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 14
Зарегистрирован: 27. Апреля 2007
Re: Переменная контекста по имени
Ответ #5 - 07. Мая 2007 :: 09:33
Печать  
Все гениальноЕ просто  Подмигивание
  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Переменная контекста по имени
Ответ #6 - 07. Мая 2007 :: 13:53
Печать  
Ну, скажем, не всегда это работает. А если там лежит Структура или объект КОП?

Мы же про 1С++ говорим, а не про 1С.

По-моему, в FormEx есть метод типа ПолучитьПеременнуюКонтекста(). Точно не помню.

Цитата:
Все гениальноЕ просто  Подмигивание

Но не все простое гениально.  Подмигивание
  
Наверх
 
IP записан
 
КилоГрамм
Senior Member
****
Отсутствует


Таити, Таити...

Сообщений: 434
Зарегистрирован: 14. Июня 2006
Пол: Мужской
Re: Переменная контекста по имени
Ответ #7 - 09. Мая 2007 :: 07:10
Печать  
Цитата:
По-моему, в FormEx есть метод типа ПолучитьПеременнуюКонтекста(). Точно не помню.
Сервис: ПолучитьПеременнуюКонтекста() и УстановитьПеременнуюКонтекста()
  

Константин
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Переменная контекста по имени
Ответ #8 - 09. Мая 2007 :: 09:18
Печать  
Универсальный метод для работы с любыми типами данных - использовать ВыполняемыйМодуль из 1С++ вместо узкоспециализированных Шаблон или ПолучитьПеременнуюКонтекста
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
КилоГрамм
Senior Member
****
Отсутствует


Таити, Таити...

Сообщений: 434
Зарегистрирован: 14. Июня 2006
Пол: Мужской
Re: Переменная контекста по имени
Ответ #9 - 09. Мая 2007 :: 11:06
Печать  
Угу.ВыполняемыйМодуль из 1С++ это Вам не ПолучитьПеременнуюКонтекста из FormEx-а
  

Константин
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Переменная контекста по имени
Ответ #10 - 10. Мая 2007 :: 05:01
Печать  
Цитата:
Угу.ВыполняемыйМодуль из 1С++ это Вам не ПолучитьПеременнуюКонтекста из FormEx-а http://www.1cpp.ru/forumfiles/Templates/Forum/default/smiley.gif

Иронии не понял Печаль
В чем смысл?
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
КилоГрамм
Senior Member
****
Отсутствует


Таити, Таити...

Сообщений: 434
Зарегистрирован: 14. Июня 2006
Пол: Мужской
Re: Переменная контекста по имени
Ответ #11 - 10. Мая 2007 :: 15:39
Печать  
Цитата:
В чем смысл?
Для получения 1-2 переменных вполне можно обойтись без ВыполняемогоМодуля, а его оставить  для решения более глобальных задач. Есть такие, где без него вряд ли обойтись. А насчет иронии - так это просто улыбаюсь, мне ВыполняемыйМодуль тоже нравится, знатная штука.
  

Константин
Наверх
 
IP записан
 
DionX
Senior Member
****
Отсутствует



Сообщений: 373
Местоположение: Кемерово
Зарегистрирован: 22. Августа 2006
Пол: Мужской
Re: Переменная контекста по имени
Ответ #12 - 05. Октября 2007 :: 04:58
Печать  
artbear писал(а) 09. Мая 2007 :: 09:18:
Универсальный метод для работы с любыми типами данных - использовать ВыполняемыйМодуль из 1С++ вместо узкоспециализированных Шаблон или ПолучитьПеременнуюКонтекста

А небольшой примерчик можно, как будет выглядеть реализация получения значения из контекста, если в заранее неизвестно не имя, не даже то, что это: переменная, реквизит док-та/справочника, реквизит формы и тп?
  
Наверх
ICQ  
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Переменная контекста по имени
Ответ #13 - 05. Октября 2007 :: 06:03
Печать  
Дарю рабочий код. При желании, можно доработать напильником Улыбка

Код
Выбрать все
Перем _ЗначениеВыражения Экспорт;

Процедура ВыполнитьМакрос(стрМакрос, Конт="") Экспорт
	Если ПустоеЗначение(стрМакрос)=1 Тогда Возврат; КонецЕсли;

	ВМ=СоздатьОбъект("ВыполняемыйМодуль");
	Если ТипЗначенияСтр(Конт)<>"Строка" Тогда
		ВМ.НазначитьКонтекст(Конт);
	КонецЕсли;
	ВМ.УстановитьМодуль(стрМакрос);
	Попытка
		ВМ.КомпилироватьИВыполнитьМодуль();
	Исключение
		Сообщить("Ошибка выполнения макровыражения:
			|"+стрМакрос, "!!!");
		ВызватьИсключение;
	КонецПопытки;
КонецПроцедуры
//--------------------------------------------

Функция ВычислитьВыражение(стрВыражение, Конт="") Экспорт
	Если ПустоеЗначение(стрВыражение)=1 Тогда Возврат ""; КонецЕсли;
	ВыполнитьМакрос("_ЗначениеВыражения="+стрВыражение, Конт);
	Возврат _ЗначениеВыражения;
КонецФункции
//--------------------------------------------
 

  
Наверх
 
IP записан
 
DionX
Senior Member
****
Отсутствует



Сообщений: 373
Местоположение: Кемерово
Зарегистрирован: 22. Августа 2006
Пол: Мужской
Re: Переменная контекста по имени
Ответ #14 - 05. Октября 2007 :: 07:29
Печать  
спасибо, но...
работает для, например, реквизитов документа, но не работает для переменных модуля документа и для реквизитов формы документа ((((
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 3 
ОтправитьПечать