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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Новые предопределенные методы КОП
08. Апреля 2008 :: 13:38
Печать  
Народ, как вы смотрите на то, чтобы добавить спец.виртуальные функции вирт() и я() ?

В свое время Саша Орефков выполнил подобную работу
Цитата:
Создал ветку в репозитарии, test_virt
Там на скорую руку сделаны две предопределенные функции, которые можно использовать
в любом модуле КОПов
вирт() - вместо Сам(Контекст)
и
я() - типа Сам(Контекст).ТекущийОбъект()

Чтобы проходил синтакс-контроль, добавьте две такие функции в ГМ.
Вот маленькая демо-конфа, с двумя классами.


Одна проблема с синтакс-контролем
1. В режиме Предприятия можно решить по аналогии с ФормЕкс - добавить доп. глобальный модуль с этими функциями при загрузке 1С++
2. В принципе, наверное,  можно аналогично поступить и для Конфигуратора в Виз1С++. Но тут непаханное поле Печаль Поэтому я не столь уверен.
Ну и всегда останется вариант с общим глобальником, который явно не всех устроит Улыбка

Что скажете?

PS обратите внимание, что я() позволит избежать ненужной виртуальности Улыбка
  

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: Новые предопределенные методы КОП
Ответ #1 - 08. Апреля 2008 :: 14:04
Печать  
А чего мы добиваемся? Только отсутствия в каждом классе Сам()?
Меня вроде не сильно напрягает копипастить.

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



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Новые предопределенные методы КОП
Ответ #2 - 08. Апреля 2008 :: 14:28
Печать  
artbear писал(а) 08. Апреля 2008 :: 13:38:
Ну и всегда останется вариант с общим глобальником, который явно не всех устроит Улыбка

Что скажете?

Я может что-то пропустил или не знаю, но всегда интересовал такой вопрос:
"Почему нельзя определить эти ф-ии в глобальнике раз и навсегда?"
  
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


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

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Новые предопределенные методы КОП
Ответ #3 - 08. Апреля 2008 :: 14:44
Печать  
Потому что не всем доступна роскошь работы только над одной конфигурацией.
  
Наверх
www  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Новые предопределенные методы КОП
Ответ #4 - 08. Апреля 2008 :: 14:48
Печать  
fez писал(а) 08. Апреля 2008 :: 14:44:
Потому что не всем доступна роскошь работы только над одной конфигурацией.

Вот по этому я и привёл цитату Артура:
Цитата:
Ну и всегда останется вариант с общим глобальником, который явно не всех устроит

или
Цитата:
добавить доп. глобальный модуль

т.е. решении проблемы практически нет...
  
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


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

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Новые предопределенные методы КОП
Ответ #5 - 08. Апреля 2008 :: 15:27
Печать  
А, то есть ты предлагаешь автоматически при загрузке 1С++ загружать допглобальник с этими функциями? Средставми самой компоненты?
Ну или по крайней мере делать это по включению какой-то опции?
  
Наверх
www  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Новые предопределенные методы КОП
Ответ #6 - 08. Апреля 2008 :: 21:26
Печать  
fez писал(а) 08. Апреля 2008 :: 15:27:
А, то есть ты предлагаешь автоматически при загрузке 1С++ загружать допглобальник с этими функциями? Средставми самой компоненты?
Ну или по крайней мере делать это по включению какой-то опции?

Синтаксис-контроль не пройдет тогда
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Новые предопределенные методы КОП
Ответ #7 - 09. Апреля 2008 :: 05:23
Печать  
Arta писал(а) 08. Апреля 2008 :: 21:26:
fez писал(а) 08. Апреля 2008 :: 15:27:
А, то есть ты предлагаешь автоматически при загрузке 1С++ загружать допглобальник с этими функциями? Средставми самой компоненты?
Ну или по крайней мере делать это по включению какой-то опции?

Синтаксис-контроль не пройдет тогда

Да, например, грузить при загрузке 1С++.
Синтакс-контроль чего? Синтакс-контроль классов будет сделан уже с доп.глобальником. А больше нам ничего и не нужно Улыбка
Тут проблема в Конфигураторе будет, скорее всего Печаль
  

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: Новые предопределенные методы КОП
Ответ #8 - 09. Апреля 2008 :: 05:48
Печать  
artbear писал(а) 09. Апреля 2008 :: 05:23:
Тут проблема в Конфигураторе будет, скорее всего Печаль

Про синиаксис-контроль в конфигураторе и имею ввиду.
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Новые предопределенные методы КОП
Ответ #10 - 09. Апреля 2008 :: 06:18
Печать  
Если только Саша Орефков Улыбка
Кстати, у него ведь есть своя ВК для ООП, в которой вроде бы не нужен вызов методов типа Сам() Улыбка
Вот бы у него узнать, как он реализовал подобное Улыбка
Но он ведь молчун известный Печаль
  

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


I Love YaBB 2!

Сообщений: 420
Зарегистрирован: 06. Марта 2007
Re: Новые предопределенные методы КОП
Ответ #11 - 09. Апреля 2008 :: 10:17
Печать  
artbear писал(а) 09. Апреля 2008 :: 06:18:
Но он ведь молчун известный Печаль


А если к нему с пивом подойти?  Улыбка
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Новые предопределенные методы КОП
Ответ #12 - 09. Апреля 2008 :: 10:39
Печать  
sadovnikov писал(а) 09. Апреля 2008 :: 10:17:
artbear писал(а) 09. Апреля 2008 :: 06:18:
Но он ведь молчун известный Печаль


А если к нему с пивом подойти?  Улыбка

Вооо, подойдите. Вас тут, КМК, как минимум трое зеленых из того же города. Если всей толпой ломануться?  Очень довольный

П.С. если всё-таки соберётесь, то попросите научить телепат отдовать хотя бы список глоб. ф-ий и переменных (для колорерра)  Смех
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Новые предопределенные методы КОП
Ответ #13 - 09. Апреля 2008 :: 10:54
Печать  
JohnyDeath писал(а) 09. Апреля 2008 :: 10:39:
Вас тут, КМК, как минимум трое зеленых из того же города. Если всей толпой ломануться?  Очень довольный

Эти трое кто? Я только знаю, что Orefkov, Trad и DmitrO работают вместе в одной конторе в г.Киров.
Больше оттуда зеленых не знаю Улыбка да и других цветов также Улыбка
  

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



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Новые предопределенные методы КОП
Ответ #14 - 09. Апреля 2008 :: 10:56
Печать  
artbear писал(а) 09. Апреля 2008 :: 10:54:
Эти трое кто? Я только знаю, что Orefkov, Trad и DmirtO работают вместе в одной конторе в г.Киров.
Больше оттуда зеленых не знаю Улыбка да и других цветов также Улыбка

А мне почему-то казалось, что Орафков в Новосибе живёт...  Смущённый
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Новые предопределенные методы КОП
Ответ #15 - 09. Апреля 2008 :: 10:58
Печать  
artbear писал(а) 09. Апреля 2008 :: 10:54:
Эти трое кто? Я только знаю, что Orefkov, Trad и DmirtO работают вместе в одной конторе в г.Киров.

Сейчас скажут что я ближе всех (Нижний Новгород) и я крайний? Подмигивание
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Новые предопределенные методы КОП
Ответ #16 - 09. Апреля 2008 :: 11:04
Печать  
Arta писал(а) 09. Апреля 2008 :: 10:58:
artbear писал(а) 09. Апреля 2008 :: 10:54:
Эти трое кто? Я только знаю, что Orefkov, Trad и DmirtO работают вместе в одной конторе в г.Киров.

Сейчас скажут что я ближе всех (Нижний Новгород) и я крайний? Подмигивание

Кстати, хороший вариант Улыбка
Уж если ты в Альпы съездил Улыбка, до Кирова уж как-нибудь доберешься
  

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: Новые предопределенные методы КОП
Ответ #17 - 09. Апреля 2008 :: 12:23
Печать  
Надо дождаться когда кто-нибудь из них поедет в отпуск. Путь ляжет наверняка через НН. Тогда их и отловить Смех
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Новые предопределенные методы КОП
Ответ #18 - 09. Апреля 2008 :: 12:32
Печать  
Arta писал(а) 09. Апреля 2008 :: 12:23:
Надо дождаться когда кто-нибудь из них поедет в отпуск. Путь ляжет наверняка через НН. Тогда их и отловить Смех

А если самолётом полетят? "Перехватчиком" пользоваться будешь?  Смех
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Новые предопределенные методы КОП
Ответ #19 - 09. Апреля 2008 :: 14:02
Печать  
JohnyDeath писал(а) 09. Апреля 2008 :: 12:32:
А если самолётом полетят? "Перехватчиком" пользоваться будешь?  Смех

Да, неувязочка вышла, не предусмотрел  Смех
  
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: Новые предопределенные методы КОП
Ответ #20 - 06. Мая 2008 :: 09:47
Печать  
Небольшие пояснения.
Добавление этих методов НЕ ТРЕБУЕТ никаких изменений в конфигурации в режиме Предприятия.
Не надо никаких доп.глобальных модулей с этими функциями.
При компиляции модуля КОПа 1С найдет эти функции в назначенном модулю контексте.
Единственная засада - синтакс-контроль в Конфигураторе - так как там никакой контекст модулю не назначается, с 1С негде найти эти функции, хотя и это можно обойти, доработав vis1cpp.

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Новые предопределенные методы КОП
Ответ #21 - 02. Июня 2008 :: 13:17
Печать  
Зарегил баг для решения
http://www.1cpp.ru/bugs/show_bug.cgi?id=3889
  

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



Сообщений: 166
Местоположение: Харьков
Зарегистрирован: 13. Февраля 2008
Пол: Мужской
Re: Новые предопределенные методы КОП
Ответ #22 - 02. Июня 2008 :: 17:38
Печать  
orefkov писал(а) 06. Мая 2008 :: 09:47:
Единственная засада - синтакс-контроль в Конфигураторе - так как там никакой контекст модулю не назначается, с 1С негде найти эти функции, хотя и это можно обойти, доработав vis1cpp.


Единственная и главная засада.
Скопировать две строки в класс с функциями- не проблема, а натыкаться постоянно на синтаксис в конфигураторе - большая проблема.
  

Правильно поставленный вопрос, уже содержит половину ответа.
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Новые предопределенные методы КОП
Ответ #23 - 03. Июня 2008 :: 04:43
Печать  
AndreyM писал(а) 02. Июня 2008 :: 17:38:
orefkov писал(а) 06. Мая 2008 :: 09:47:
Единственная засада - синтакс-контроль в Конфигураторе - так как там никакой контекст модулю не назначается, с 1С негде найти эти функции, хотя и это можно обойти, доработав vis1cpp.


Единственная и главная засада.
Скопировать две строки в класс с функциями- не проблема, а натыкаться постоянно на синтаксис в конфигураторе - большая проблема.

Как раз и предлагается не копировать эти строки в каждый класс Улыбка
Между прочим, в наших/моих силах и Визуал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: Новые предопределенные методы КОП
Ответ #24 - 03. Июня 2008 :: 05:29
Печать  
orefkov писал(а) 06. Мая 2008 :: 09:47:
Небольшие пояснения.
Добавление этих методов НЕ ТРЕБУЕТ никаких изменений в конфигурации в режиме Предприятия.
Не надо никаких доп.глобальных модулей с этими функциями.
При компиляции модуля КОПа 1С найдет эти функции в назначенном модулю контексте.
Единственная засада - синтакс-контроль в Конфигураторе - так как там никакой контекст модулю не назначается, с 1С негде найти эти функции, хотя и это можно обойти, доработав vis1cpp.

Саш, а что-то у меня твой код в 1С++ не заработал - т.е. две вставки в CallAsFunc и FindMethod для вирт() и я() не заработали Печаль
Заглушки описаны в глобальнике, синтакс-контроль проходит, но поиск этих методов 1С делает самостоятельно, т.е. в CComponentClass::FindMethod просто не попадаем Печаль
Что не так??
  

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: Новые предопределенные методы КОП
Ответ #25 - 03. Июня 2008 :: 12:23
Печать  
Посмотри в репозитарии внимательно, что я еще правил, помимо FindMethod и CallAsFunc.
Там вся фишка в том, что сейчас в 1С++ сначала компилируется модуль, потом ему назначается контекст.
Поэтому при компиляции модуля никакого поиска методов в контексте не происходит.
Я же делал - сначала модулю назначается контекст, потом модуль компилится, и вот тогда идет поиск методов в контексте.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Новые предопределенные методы КОП
Ответ #26 - 03. Июня 2008 :: 12:54
Печать  
Саш, дай подробнее код.
В ветке test_virt только две правки - CallAsFunc и FindMethod, больше я ничего не увидел при сравнении.
Дай еще инфу на назначение контекста, ты какой контекст назначаешь?
  

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: Новые предопределенные методы КОП
Ответ #27 - 03. Июня 2008 :: 13:08
Печать  
В 1С++ сейчас вроде бы и так сначала назначается контекста для модуля - т.е. создается CBLModule7(pCreatedComponentClassObject), а затем только компилируется.

В общем, подробнее скажи про компиляцию и назначение контекста.

ЗЫ у тебя в ветке test_virt тоже самое написано Печаль
  

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: Новые предопределенные методы КОП
Ответ #28 - 04. Июня 2008 :: 05:22
Печать  
Ну как же так, Артур?
KDiff мне ясно показал, в чем ключевая соль:
было
pModLocale = new CBLModuleWrapper(NULL, str, FullFileName);
стало
ModLocale = new CBLModuleWrapper(pCreatedCompModule, str, FullFileName);
  
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: Новые предопределенные методы КОП
Ответ #29 - 04. Июня 2008 :: 05:28
Печать  
Щас эта строка выглядит так:
pModLocale = CComponentClassModulePtr(new CBLModuleWrapper(m_NameOfInstance, NULL, ModuleString));
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Новые предопределенные методы КОП
Ответ #30 - 04. Июня 2008 :: 05:39
Печать  
Блин, а я уж как только не смотрел, и pModLocale в т.ч. изучал Улыбка
Спасибо большое!
  

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: Новые предопределенные методы КОП
Ответ #31 - 04. Июня 2008 :: 06:53
Печать  
Ага, все отлично получилось Улыбка - тестовая конфа сработала на ура.

Да, при компиляции модуля с назначенным контекстом прикольно все происходит : любые неизвестные функции (глобальные Сообщить(), Вирт(), КаталогИБ() ) сначала ищутся в модуле класса.
Очень полезная инфа, не знал Улыбка

Саше Орефкову очередное УРА !!
  

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: Новые предопределенные методы КОП
Ответ #32 - 04. Июня 2008 :: 07:04
Печать  
Именно на этом механизме я и предлагал сделать прямое обращение к методам базовых классов, без "ПолучитьБазовыйКласс".
Ведь когда мы компилируем модуль класса-наследника, и 1С ищет методы, которых нет в самом модуле, то в этот момент модуль базового класса УЖЕ СКОМПИЛИРОВАН, и можно поискать их там.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Новые предопределенные методы КОП
Ответ #33 - 04. Июня 2008 :: 09:29
Печать  
Да, теперь подобное вполне возможно.
Подумаю и постараюсь сделать.
  

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: Новые предопределенные методы КОП
Ответ #34 - 04. Июня 2008 :: 11:35
Печать  
orefkov писал(а) 04. Июня 2008 :: 07:04:
Именно на этом механизме я и предлагал сделать прямое обращение к методам базовых классов, без "ПолучитьБазовыйКласс".
Ведь когда мы компилируем модуль класса-наследника, и 1С ищет методы, которых нет в самом модуле, то в этот момент модуль базового класса УЖЕ СКОМПИЛИРОВАН, и можно поискать их там.

Добавлю: и к методам, и к свойствам базовых классов.

Т.е. например, можно добавить какое-нибудь предопределенное свойство для всех классов Улыбка

Например, мне давно очень хочется добавить свойство _ФабрикаКОП_ типа ФабрикаОбъектов для удобного и быстрого создания любых объектов на базе Фабрики Улыбка
Это свойство будет только для чтения и будет существовать в единственном экземпляре внутри 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: Новые предопределенные методы КОП
Ответ #35 - 04. Июня 2008 :: 11:36
Печать  
Кстати, скажите, плиз, какие предопределенные функции и свойства удобно иметь в каждом классе КОП ?
Очень интересная тема.
  

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: Новые предопределенные методы КОП
Ответ #36 - 04. Июня 2008 :: 13:32
Печать  
Саш, а получается, что из класса нельзя возвращать значение я() , иначе какая-то хрень выдается, верно?
Возвращать из класса можно значения только вирт().
Например, я в твоем примере в классе Базовый пишу
Код
Выбрать все
Функция ВернутьВирт() Экспорт
	Возврат вирт();
КонецФункции

Функция ВернутьСебя() Экспорт
	Возврат я();
КонецФункции 


А в тесте пишу
Код
Выбрать все
Тест=СоздатьОбъект("Базовый");
лОбъект = Тест.ВернутьВирт();
Сообщить("лОбъект = <"+лОбъект+">");

лОбъект = Тест.ВернутьСебя();
Сообщить("лОбъект = <"+лОбъект+">"); 


Получаю результат
Цитата:
лОбъект = <Базовый>
лОбъект = <>


Это поведение будем считать нормальным?
  

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: Новые предопределенные методы КОП
Ответ #37 - 04. Июня 2008 :: 13:54
Печать  
artbear писал(а) 08. Апреля 2008 :: 13:38:
Цитата:
Создал ветку в репозитарии, test_virt
Там на скорую руку сделаны две предопределенные функции, которые можно использовать
в любом модуле КОПов
вирт() - вместо Сам(Контекст)
и
я() - типа Сам(Контекст).ТекущийОбъект()



А что такое ТекущийОбъект() для произвольного класса?
  
Наверх
www  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Новые предопределенные методы КОП
Ответ #38 - 04. Июня 2008 :: 13:57
Печать  
Это вспомогательный объект, который позволяет обратиться к виртуальным методам и экспортным атрибутам данного класса без виртуальности Улыбка

Т.е. для иерархии Базовый-Наследник и виртуального метода Показать(), определенного в обоих классах, употребление в коде класса Базовый вызова я().Показать() выполнит именно Базовый::Показать(), а не как обычно Наследник::Показать()
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Новые предопределенные методы КОП
Ответ #39 - 04. Июня 2008 :: 14:30
Печать  
Перенес пост в соответствующую ветку
http://www.1cpp.ru/forum/YaBB.pl?num=1212645215/0#0
« Последняя редакция: 05. Июня 2008 :: 05:59 - artbear »  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Новые предопределенные методы КОП
Ответ #40 - 05. Июня 2008 :: 05:19
Печать  
Выложена очередная сборка icpp
Цитата:
[+] http://www.1cpp.ru/bugs/show_bug.cgi?id=3889
Реализация предопределенных функций для любых КОП - вирт() и я() - без необходимости определения их в модуле класса


Прошу качать и тестить.

Обсуждение фичи на http://www.1cpp.ru/forum/YaBB.pl?num=1207661901/0 или в багзилле.

Выкладываю тестовую конфигурацию для проверки - http://www.1cpp.ru/forumfiles/Attachments/1cpp_test_virt_2.rar

Важно: две функции ( вирт() и я() ) в глобальнике нужны только для синтакс-контроля в режиме Конфигуратора,
в режиме Предприятия классы прекрасно создаются и без этих функций.

ЗЫ как обычно, все проверено на автоматических юнит-тестах Улыбка
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Новые предопределенные методы КОП
Ответ #41 - 05. Июня 2008 :: 05:21
Печать  
artbear писал(а) 04. Июня 2008 :: 13:32:
Саш, а получается, что из класса нельзя возвращать значение я() , иначе какая-то хрень выдается, верно?
Возвращать из класса можно значения только вирт().

...

Это поведение будем считать нормальным?

Этот баг был поборен решением из http://www.1cpp.ru/forum/YaBB.pl?num=1207661901/39#39
Сейчас все нормально, можно возвращать как вирт(), так и я ().
  

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


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: Новые предопределенные методы КОП
Ответ #42 - 05. Июня 2008 :: 05:26
Печать  
Насчет Reset это точно.
С trad'ом как-то разбирались с подобной фигней.
Выяснили, что при вызове функций движок 1С использует для retVal статический объект CValue. И это приводит к разным траблам. Например, если мы в своем методе присвоили retVal ссылку на контекст, а потом сгенерили RuntimeError, то так как retVal статическая, а не на стеке, для нее не вызывается деструктор, и на тот контекст (который записывали в retVal), ссылка сохраняется, до того момента, пока 1С не вызовет какой-либо другой метод, в котором retVal присвоится другое значение. А в случаях, когда в коде 1С пишут Возврат ВызовНекойФункции(); , ссылки на объекты могут вообще считаться криво.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Новые предопределенные методы КОП
Ответ #43 - 05. Июня 2008 :: 05:27
Печать  
Т.е. теперь можно в классах делать так:
1. Просто в коде писать вирт().НужныйМетод или вирт().НужныАтрибут вместо необходимости определять функции типа Этот(Конт) и вызова Этот(Контекст).НужныйМетод

2. 100% совместимость осталась, но можно для небольшого ускорения работы классов вместо
Код
Выбрать все
Функция Этот(Конт) Возврат Конт; КонецФункции
Функция Сам() Возврат Этот(Контекст); КонецФункции 


писать
Код
Выбрать все
Функция Этот(Конт) Возврат вирт(); КонецФункции
Функция Сам() Возврат вирт(); КонецФункции 


  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Новые предопределенные методы КОП
Ответ #44 - 05. Июня 2008 :: 05:42
Печать  
Перенес пост в соответствующую ветку
http://www.1cpp.ru/forum/YaBB.pl?num=1212645215/0#0
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Новые предопределенные методы КОП
Ответ #45 - 05. Июня 2008 :: 05:54
Печать  
По поводу бага 1С завел новую тему в разделе Разработка, предлагаю обсуждать этот баг там
http://www.1cpp.ru/forum/YaBB.pl?num=1212645215/0#0
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Новые предопределенные методы КОП
Ответ #46 - 06. Июня 2008 :: 03:33
Печать  
Народ, а ведь помимо вирт() и я() можно добавить аналогичные фичи для предопределенных методов любых КОП, типа ПолучитьБазовыйКласс(), ЗаменитьБазовыйОбъект() и т.д.
Код реализации полностью аналогичен коду реализации вирт() и я().

С учетом возможности нативного использования методов класса получается целая революция в ООП для 1С Улыбка

Ура!

ЗЫ осталось только решить с синтакс-контролем в Визуал1С++ и тогда все будет совсем чудесно Улыбка
  

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



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Новые предопределенные методы КОП
Ответ #47 - 06. Июня 2008 :: 06:12
Печать  
artbear писал(а) 06. Июня 2008 :: 03:33:
ЗЫ осталось только решить с синтакс-контролем в Визуал1С++ и тогда все будет совсем чудесно Улыбка

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Новые предопределенные методы КОП
Ответ #48 - 06. Июня 2008 :: 06:13
Печать  
Да, подумаю.
  

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



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Новые предопределенные методы КОП
Ответ #49 - 15. Июня 2008 :: 11:12
Печать  
Артур, должен ли я что-то получить при использовании следующей схемы?

Код
Выбрать все
Информатор = СоздатьОбъект("Информатор");
ТЗ = Информатор.ПолучитьТаблицуМетодов(Вирт());
ТЗ.ВыбратьСтроку();
 

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



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Новые предопределенные методы КОП
Ответ #50 - 15. Июня 2008 :: 11:32
Печать  
Идрить, Артур, "вирт" и "я" - регистрозависимые?  Смех


P.S. прерыдущий вопрос снят!
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Новые предопределенные методы КОП
Ответ #51 - 16. Июня 2008 :: 13:42
Печать  
Arta писал(а) 15. Июня 2008 :: 11:32:
Идрить, Артур, "вирт" и "я" - регистрозависимые?  Смех

Неужели?
Виноват, исправлюсь.
  

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