Переключение на Главную Страницу Страницы: 1 [2] 3  ОтправитьПечать
Очень популярная тема (более 25 ответов) В какой класс закинуть методы ВыполнитьХХХ(Конт,.) (число прочтений - 12572 )
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: В какой класс закинуть методы ВыполнитьХХХ(Кон
Ответ #15 - 09. Ноября 2006 :: 11:17
Печать  
Про таблички не забудь...  Подмигивание
  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: В какой класс закинуть методы ВыполнитьХХХ(Кон
Ответ #16 - 09. Ноября 2006 :: 12:41
Печать  
Артур, а можешь привести какой-нить конкретный пример, где такой функционал нужен, и без него всё значительно усложняется?  Просто в моей личной практике ни разу не пригодились эти вещи. Вот вызов методов контекста с помощью TurboBL - это да, сколько угодно. ВыполняемыйМодуль - тоже бывает, но в таких случаях, когда ВыполнитьПроцедуру(Конт, ...) никак не спасает.

Что касается места, то по-моему больше всего подходит ВыполняемыйМодуль. Компиляция и выполнение кода в рантайм - это как раз то, для чего он и предназначен.
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: В какой класс закинуть методы ВыполнитьХХХ(Кон
Ответ #17 - 09. Ноября 2006 :: 13:03
Печать  
Если обсуждать не дизайн, а реализацию, то я могу сказать одно.
Без кеширования номера метода - это деньги на ветер.

А с кешированием - это Делегат.
Ну и смысл?
  

De quelle planète es-tu?
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


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

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: В какой класс закинуть методы ВыполнитьХХХ(Кон
Ответ #18 - 09. Ноября 2006 :: 13:06
Печать  
kms писал(а) 09. Ноября 2006 :: 13:03:
Если обсуждать не дизайн, а реализацию, то я могу сказать одно.
Без кеширования номера метода - это деньги на ветер.

А с кешированием - это Делегат.
Ну и смысл?

Если я правильно помню - делегат работает только с методами классов. Не уверен, что делегат можно соединить с TurboBL
  
Наверх
www  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: В какой класс закинуть методы ВыполнитьХХХ(Кон
Ответ #19 - 09. Ноября 2006 :: 13:11
Печать  
fez писал(а) 09. Ноября 2006 :: 13:06:
Если я правильно помню - делегат работает только с методами классов. Не уверен, что делегат можно соединить с TurboBL

Не понял вопроса.
Причем здесь TurboBL?

Речь о
Цитата:
ВыполнитьПроцедуру(Конт, ИмяПроцедуры, СписокАргументов)
ВыполнитьФункцию(Конт, ИмяПроцедуры, СписокАргументов)

Делегат позволяет выполнить любую процедуру или функцию контекста.
При этом поиск номера выполняется 1 раз, как я помню. По крайней мере - так должно быть.

Это значит, что вызов N раз функции контекста через делегат по сравнению с FormEx будет быстрее ровно на время поиска номера метода.
А оно немалое.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: В какой класс закинуть методы ВыполнитьХХХ(Кон
Ответ #20 - 09. Ноября 2006 :: 13:13
Печать  
Или вы думаете, что для контекстов, оптимизированных TurboBL время поиска минимально (=const)?
ХЗ, но если это так - тогда можно сделать, как предлагает Артур.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


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

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: В какой класс закинуть методы ВыполнитьХХХ(Кон
Ответ #21 - 09. Ноября 2006 :: 13:58
Печать  
kms писал(а) 09. Ноября 2006 :: 13:11:
fez писал(а) 09. Ноября 2006 :: 13:06:
Если я правильно помню - делегат работает только с методами классов. Не уверен, что делегат можно соединить с TurboBL

Не понял вопроса.
Причем здесь TurboBL?


При том, что Артуру нужно вызывать процедуры и функции обработок и отчетов. Являются ли контексты таких обработок - агрегатными объектами, с которыми сможет работать Делегат - вот в чем вопрос.
  
Наверх
www  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


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

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: В какой класс закинуть методы ВыполнитьХХХ(Кон
Ответ #22 - 09. Ноября 2006 :: 14:01
Печать  
Сработает ли такая конструкция?

Код
Выбрать все
ОткрытьФорму("Отчет.ОборотноСальдоваяВедомость", КонтекстОСВ);
Длг = СоздатьОбъект("Делегат");
Длг.ОпределитьТип(0, 0);
Длг.Добавить(КонтекстОСВ, "Сформировать")
Длг.Вызвать();
КонтекстОСВ.Форма.Закрыть();
 

  
Наверх
www  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


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

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: В какой класс закинуть методы ВыполнитьХХХ(Кон
Ответ #23 - 09. Ноября 2006 :: 14:06
Печать  
Работает, но мокселя оно не видит (1С++ 2.0.0.0)
  
Наверх
www  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


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

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: В какой класс закинуть методы ВыполнитьХХХ(Кон
Ответ #24 - 09. Ноября 2006 :: 14:07
Печать  
artbear писал(а) 09. Ноября 2006 :: 09:22:
ИМХО у Делегата немного не та задача

Обоснуй.
  
Наверх
www  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: В какой класс закинуть методы ВыполнитьХХХ(Кон
Ответ #25 - 09. Ноября 2006 :: 14:50
Печать  
fez писал(а) 09. Ноября 2006 :: 14:01:
Сработает ли такая конструкция?

Код
Выбрать все
ОткрытьФорму("Отчет.ОборотноСальдоваяВедомость", КонтекстОСВ);
Длг = СоздатьОбъект("Делегат");
Длг.ОпределитьТип(0, 0);
Длг.Добавить(КонтекстОСВ, "Сформировать")
Длг.Вызвать();
КонтекстОСВ.Форма.Закрыть();
 


Ну а если в процедуру "Сформировать" надо и параметры передать?

А с мокселем люди уже знают как бороться. Говорят, что исправят...  Круглые глаза
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: В какой класс закинуть методы ВыполнитьХХХ(Кон
Ответ #26 - 09. Ноября 2006 :: 14:54
Печать  
Простите, про параметры тупонулллл...
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: В какой класс закинуть методы ВыполнитьХХХ(Кон
Ответ #27 - 09. Ноября 2006 :: 15:01
Печать  
fez писал(а) 09. Ноября 2006 :: 14:06:
Работает, но мокселя оно не видит (1С++ 2.0.0.0)

ИМХО kms эту проблему решил в какой-то версии 202Х или 203Х.
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: В какой класс закинуть методы ВыполнитьХХХ(Кон
Ответ #28 - 09. Ноября 2006 :: 15:20
Печать  
Опаньки, выясняется, что я и про Делегат забыл Улыбка
Нужный мне код ведь можно реализовать, как показал Федор Улыбка

Тогда следующее предложение -
добавить подобные методы в Делегат именно на базе кода Федора.


ЗЫ лично я никак не настроюсь на Делегат, все время кажется, что он должен применяться для многих контекстов, и забываю, что для одного контекста также все работает Улыбка

ЗЗЫ не предлагать использовать класс-наследник от Делегат. Как уже писал, удобнее сразу подобный универсальный метанизм включить в код 1С++, чем каждый пользователь будет для себя писать подобный класс.
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: В какой класс закинуть методы ВыполнитьХХХ(Кон
Ответ #29 - 09. Ноября 2006 :: 15:28
Печать  
Естественно, для ускорения работы  можно добавить кеширование последнего вызванного метода или нескольких методов, т.е. так мы исключим повторное создание и поиск метода
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 3 
ОтправитьПечать