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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: В какой класс закинуть методы ВыполнитьХХХ(Кон
Ответ #30 - 09. Ноября 2006 :: 15:35
Печать  
Т.е.
Делегат.ВыполнитьПроцедуру(Конт, ИмяПроц, СписокАргументов)
будет равносильно
Код
Выбрать все
Длг = СоздатьОбъект("Делегат");
Длг.ОпределитьТип(Список.РазмерСписка(), 0);
Длг.Добавить(Конт, ИмяПроц)
Длг.Вызвать();
 


плюс кеширование предыдущих вызовов для ускорения
  

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



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: В какой класс закинуть методы ВыполнитьХХХ(Кон
Ответ #31 - 09. Ноября 2006 :: 16:10
Печать  
sedmin писал(а) 09. Ноября 2006 :: 10:04:
Не вижу смысла в этих методах. Если они кому-то понадобились, значить пора задуматься о Палыче.

Улыбка 5+
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: В какой класс закинуть методы ВыполнитьХХХ(Кон
Ответ #32 - 09. Ноября 2006 :: 16:11
Печать  
kms писал(а) 09. Ноября 2006 :: 13:11:
Делегат позволяет выполнить любую процедуру или функцию контекста.
При этом поиск номера выполняется 1 раз, как я помню. По крайней мере - так должно быть.

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


Согласен на все 100%. На мой взгляд огород городить не стоит...
  
Наверх
 
IP записан
 
Deb
1c++ developer
Отсутствует


Sex, drugs and 1C

Сообщений: 41
Зарегистрирован: 21. Мая 2006
Re: В какой класс закинуть методы ВыполнитьХХХ(Кон
Ответ #33 - 09. Ноября 2006 :: 17:59
Печать  
Индекс метода вычисляется при вызове:
Длг.Добавить(КонтекстОСВ, "Сформировать")

Когда происходит
Длг.Вызвать();
Номер метода уже есть.

Насчет
"ВыполнитьПроцедуру(Конт, ИмяПроцедуры, СписокАргументов)
ВыполнитьФункцию(Конт, ИмяПроцедуры, СписокАргументов) "
Даже не знаю, в принципе можно добавить в делегат, но без них легко можно использовать код Федора...
Тем более не понятно как точно эти методы будут вести себя в контексте делегата.
Будут ли они во время своего вызова добавлять метод в делегат (проверка есть ли такой метод нужна тогда) или не будут (тогда нужно прикручивать костыль с хранением номера - хранить номер вместе с контекстом и номером и именем процедуры, чтобы потом найти, может долго это...)
Короче масса вопросов у меня лично возникает с этими методами...
Мое резюме: мне лично хватит функционала делегата, хочется сделать такие методы, я не против, только надо продумать все эти нюансы...
  
Наверх
 
IP записан
 
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: В какой класс закинуть методы ВыполнитьХХХ(Кон
Ответ #34 - 09. Ноября 2006 :: 18:44
Печать  
Видимо, в этом споре рождается истина Подмигивание

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



мы могли писать что-то вроде:

Код
Выбрать все
Длг = Делегат(КонтекстОСВ, "Сформировать");
Длг.Вызвать(); 

  
Наверх
ICQ  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: В какой класс закинуть методы ВыполнитьХХХ(Кон
Ответ #35 - 09. Ноября 2006 :: 20:58
Печать  
fez
Насчет мокселя - если сейчас нет, надо добавить очередной batchquard.
Когда я переписывал делегат, этой информации еще у меня не было.

По контекстам отчетов и обработок, в том числе внешних - да, будет работать.

Палыч
Давно-давно это [конструкторы с параметрами] ждут своего воплощения.
В твоем предложении меня правда смущает одно: делегат - суть набор методов контекстов.
Т.е. твой конструктор - это частный случай с одним-единственным методом.

Arta
Улыбка

artbear
С добавлением этих методов в делегат я не согласен.
Если хочешь, обоснуй, какое отношение эти 2 метода имеют именно к классу делегат.
  

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


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

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

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

Точнее, Саша Орефков решил в последней версии ТурбоБЛ, она входит в состав 2031
  

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


I Love YaBB 2!

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

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

Точнее, Саша Орефков решил в последней версии ТурбоБЛ, она входит в состав 2031

Точнее еще раньше решил Альф, и поделился со мной решением.
Была давным-давно ветка на итлэнде.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: В какой класс закинуть методы ВыполнитьХХХ(Кон
Ответ #38 - 13. Ноября 2006 :: 07:35
Печать  
Добавил новые методы в класс "ВыполняемыйМодуль".
+ "ВыполнитьПроцедуруКонтекста(Конт, ИмяПроцедуры, СписокАргументов)"
+ "ВыполнитьФункциюКонтекста(Конт, ИмяПроцедуры, СписокАргументов)"


В отличии от решения АльФ-а, которое работает только с групповыми контекстами, и позволяет вызвать только методы модуля формы группового контекста,

мое решение работает с любыми контекстами, т.е. объектами 1С (например, ТаблицаЗначений, СписокЗначений, и т.д) и 1С++ (пользовательские классы и встроенный классы 1С++)

Также при включенном ТурбоБЛ есть возможность вызывать методы модуля формы группового контекста.

ЗЫ брать завтра в ночной сборке релиза 2.5

ЗЗЫ для неоднократного вызова одного метода лучше использовать класс "Делегат", в котором кешируется поиск метода и за счет этого неоднократный вызов метода через Делегат будет быстрее неоднократного вызова указанных методов.
  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: В какой класс закинуть методы ВыполнитьХХХ(Кон
Ответ #39 - 13. Ноября 2006 :: 10:16
Печать  
artbear
Артур, а где-нибудь документировано управление настройками, и т.д., которое ты сделал?
Хотелось бы ознакомиться с современными возможностями.
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: В какой класс закинуть методы ВыполнитьХХХ(Кон
Ответ #40 - 13. Ноября 2006 :: 10:59
Печать  
Пока документировано только в хистори Печаль
До составления нормальной доки все руки не доходят Печаль
Что это плохо, я понимаю Улыбка
  

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] 
ОтправитьПечать