Переключение на Главную Страницу Страницы: 1 [2]  ОтправитьПечать
Горячая тема (более 10 ответов) Выполнение произвольного выражения (число прочтений - 6250 )
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Выполнение произвольного выражения
Ответ #15 - 15. Октября 2008 :: 13:12
Печать  
noxxx писал(а) 15. Октября 2008 :: 13:03:
Плюс у нас условия должны быть намного гибче, и в связи с этим будет использоваться исполняемый модуль.

Но вопрос был не в реализации самого контроля, а в способе хранения вида объекта в таблице - как будет быстрее его оттуда вытащить.  Нерешительный

Ну я сомневаюсь, что ты сделаешь "намного гибче", чем Регистры Правил.
Ну если вопрос только в способе хранения, то, КМК, так как ты указал будет нормально.
Вот пару ф-ий, которые тебе помогут (из того же СКАТА):
Код
Выбрать все
//--------------------------------------------

Функция контТип(Конт) Экспорт
	Если ТипЗначенияСтр(Конт)<>"ГрупповойКонтекст" Тогда Возврат ТипЗначенияСтр(Конт); КонецЕсли;
	Попытка Вид=Конт.ТекущийДокумент().Вид(); Возврат "Документ"; Исключение КонецПопытки;
	Попытка Вид=Конт.ТекущийЭлемент().Вид(); Возврат "Справочник"; Исключение КонецПопытки;
	Попытка Путь=""; Имя=""; Конт.РасположениеФайла(Путь, Имя); Возврат "ДФ"; Исключение КонецПопытки;
	Возврат "Форма";
КонецФункции
//--------------------------------------------

Функция контВид(Конт) Экспорт
	стрТип=контТип(Конт);
	Если стрТип="Документ" Тогда Возврат Конт.Вид();
	ИначеЕсли стрТип="Справочник" Тогда Возврат Конт.Вид();
	ИначеЕсли стрТип="СписокЗначений" Тогда Возврат Конт.Получить("Вид");
	КонецЕсли;
	Попытка Возврат Конт.Вид(); Исключение КонецПопытки; // гр контекст
	Попытка Возврат Конт.Вид; Исключение КонецПопытки; // форма, класс, ТЗ
	Возврат "";
КонецФункции

//--------------------------------------------

 Функция контТипВид(Конт) Экспорт
	стрТип=контТип(Конт);
	Если (стрТип="Документ") Или (стрТип="Справочник") Или (стрТип="Перечисление") Тогда
		Возврат стрТип+"."+Конт.Вид();
	КонецЕсли;
	Возврат стрТип;
КонецФункции 

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


1c++ rocks 8)

Сообщений: 239
Местоположение: Москва
Зарегистрирован: 24. Августа 2007
Пол: Мужской
Re: Выполнение произвольного выражения
Ответ #16 - 15. Октября 2008 :: 13:15
Печать  
Спасибо!  Улыбка
А вот насколько я знаю, конструкция Попытка-Исключение-КонецПопытки - очень "дорогая в плане времени" - это на самом деле так?
А если так, то приведенные функции должны работать медленно  Нерешительный
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Выполнение произвольного выражения
Ответ #17 - 15. Октября 2008 :: 13:22
Печать  
Можешь юзать быстрый метод Информатор::МетодСуществует/СвойствоСуществует Улыбка без использования попытки
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Выполнение произвольного выражения
Ответ #18 - 15. Октября 2008 :: 13:22
Печать  
Самые дорогие в плане времени - это операции с жестким диском. Работа с данными.
По сравнению с этим все остальное просто реактивный самолет.
  
Наверх
www  
IP записан
 
noxxx
Full Member
***
Отсутствует


1c++ rocks 8)

Сообщений: 239
Местоположение: Москва
Зарегистрирован: 24. Августа 2007
Пол: Мужской
Re: Выполнение произвольного выражения
Ответ #19 - 15. Октября 2008 :: 13:35
Печать  
fez писал(а) 15. Октября 2008 :: 13:22:
Самые дорогие в плане времени - это операции с жестким диском. Работа с данными.
По сравнению с этим все остальное просто реактивный самолет.


Кстати, никто еще не придумал реактивный аналог метода справочника ПринадлежитГруппе() ?   Озадачен
Меееедлеееенннныыыыыый ....  Смущённый
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Выполнение произвольного выражения
Ответ #20 - 15. Октября 2008 :: 13:55
Печать  
noxxx писал(а) 15. Октября 2008 :: 13:35:
Кстати, никто еще не придумал реактивный аналог метода справочника ПринадлежитГруппе() ?   Озадачен
Меееедлеееенннныыыыыый ....  Смущённый

На прямых запросах вроде что-то подобное делали, но подробностей не помню Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Выполнение произвольного выражения
Ответ #21 - 15. Октября 2008 :: 13:57
Печать  
noxxx писал(а) 15. Октября 2008 :: 13:35:
fez писал(а) 15. Октября 2008 :: 13:22:
Самые дорогие в плане времени - это операции с жестким диском. Работа с данными.
По сравнению с этим все остальное просто реактивный самолет.


Кстати, никто еще не придумал реактивный аналог метода справочника ПринадлежитГруппе() ?   Озадачен
Меееедлеееенннныыыыыый ....  Смущённый

значительно бытрее
В список Список1 ставишь группу после этого
Список1.Принадлежит()

либо 1с++
1. Заносим группу в Список1
Применяем УложитьСписокОбъектов
Оставляем во временной таблице только группы
и сравниваем родителя принадлежит ли он этой временной таблице
Код недавно написал в ветке см :
http://www.1cpp.ru/forum/YaBB.pl?num=1221565091/9#9
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 
ОтправитьПечать