Переключение на Главную Страницу Страницы: 1 [2] 3  ОтправитьПечать
Очень популярная тема (более 25 ответов) Тестируем: Добавление контекстов (число прочтений - 8053 )
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Тестируем: Добавление контекстов
Ответ #15 - 27. Августа 2008 :: 07:18
Печать  
artbear писал(а) 27. Августа 2008 :: 03:50:
artbear писал(а) 27. Августа 2008 :: 03:47:
Михаил, а ты на тестах 1С++, похоже, что не проверял Печаль
Падают тесты ТурбоБЛ - например, вызов методов контекста с параметрами по умолчанию.

Исправил.

Опс, совсем забыл про них. Печаль
Хорошо, что ты вспомнил.
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тестируем: Добавление контекстов
Ответ #16 - 28. Августа 2008 :: 04:38
Печать  
kms писал(а) 26. Августа 2008 :: 20:42:
Я только сейчас заметил, что и добавление структуры у меня в Тест2() работает неверно (ну или "весьма своеобразно").
Свойства-то структуры к контексту добавляются, но только те, которые были добавлены к контексту до добавления контекста структуры.
Но вот дальнейшая вставка свойств уже в контексте не отображается.
Например, нельзя получить свойство структуры "Десять" через контекст.
По крайней мере, до тех пор, пока не будет вызван очередной Accept().

Т.е. добавление полиморфных контекстов к ГК не имеет смысла.
Все равно TurboBL не заточена под поддержку таких контекстов в соединении с ГК.

P.S.
Я так и знал, что добавление контекстов - это очередной ящик Пандоры... Улыбка

Для обновления данных ГК уже после изменения исходного контекста можно юзать Система::ОбновитьДанныеГК(Конт) - я исправил его реализацию на вызов Accept
В тестах 1С++ все работает - они уже залиты в репозитарий.

В связи с этим может быть добавим в контексты еще один метод - __Обновить() - который будет вызывать простой Accept для контекста ?
А Система::ОбновитьДанныеГК(Конт) соответственно удалим.
  

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: Тестируем: Добавление контекстов
Ответ #17 - 28. Августа 2008 :: 18:26
Печать  
artbear писал(а) 28. Августа 2008 :: 04:38:
Для обновления данных ГК уже после изменения исходного контекста можно юзать Система::ОбновитьДанныеГК(Конт) - я исправил его реализацию на вызов Accept
В тестах 1С++ все работает - они уже залиты в репозитарий.

В связи с этим может быть добавим в контексты еще один метод - __Обновить() - который будет вызывать простой Accept для контекста ?
А Система::ОбновитьДанныеГК(Конт) соответственно удалим.

А я что-то сомневаюсь.
Есть ли смысл выносить этот метод из Системы в контекст?
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тестируем: Добавление контекстов
Ответ #18 - 29. Августа 2008 :: 03:34
Печать  
Ну в принципе, этот метод относится непосредственно к контексту, поэтому есть смысл к нему и добавить!
  

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: Тестируем: Добавление контекстов
Ответ #19 - 29. Августа 2008 :: 06:33
Печать  
artbear писал(а) 29. Августа 2008 :: 03:34:
Ну в принципе, этот метод относится непосредственно к контексту, поэтому есть смысл к нему и добавить!

Кстати, а зачем он, вообще, нужен?
Это же такой внутренний метод, зачем он нужен пользователям?
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тестируем: Добавление контекстов
Ответ #20 - 29. Августа 2008 :: 06:39
Печать  
Сейчас он пригодится при изменении исходного контекста и желании пользователя обновить контекст, к которому мы добавляли исходный.
  

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: Тестируем: Добавление контекстов
Ответ #21 - 29. Августа 2008 :: 06:42
Печать  
artbear писал(а) 29. Августа 2008 :: 06:39:
Сейчас он пригодится при изменении исходного контекста и желании пользователя обновить контекст, к которому мы добавляли исходный.

Мне не хотелось бы давать такую возможность.
Ибо перестроение контекста - операция небыстрая, небезопасная.
Я бы скорее сейчас считал дизайн, где такой метод необходим, неправильным (я про принудительный Accept).
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тестируем: Добавление контекстов
Ответ #22 - 29. Августа 2008 :: 06:51
Печать  
Лады, я не сильно настаиваю, текущий вариант меня устраивает.
Тогда __Обновить отбрасываем.
  

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: Тестируем: Добавление контекстов
Ответ #23 - 29. Августа 2008 :: 06:58
Печать  
artbear писал(а) 29. Августа 2008 :: 06:51:
Лады, я не сильно настаиваю, текущий вариант меня устраивает.
Тогда __Обновить отбрасываем.

Понимаешь, я не то, чтобы именно по поводу обновления сомневаюсь.
Я вообще сомневаюсь по всему этому творчеству по добавлению контекстов.

Там есть подводные камни.
Например: ТП кеширует номера методов формы (для событий).
При добавлении контекстов, номера методов будут смещаться.

Парадокс, блин.
Я понимаю, как это можно использовать, но обеспечить прозрачность конструкции не могу.

Ладно, не обращай внимания Улыбка это рабочие сомнения такие...
  

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



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тестируем: Добавление контекстов
Ответ #24 - 29. Августа 2008 :: 08:08
Печать  
Это миниответ на мою стародавню хотелку?:
http://www.1cpp.ru/forum/YaBB.pl?num=1163938068/0
  
Наверх
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Тестируем: Добавление контекстов
Ответ #25 - 29. Августа 2008 :: 10:16
Печать  
trdm писал(а) 29. Августа 2008 :: 08:08:
Это миниответ на мою стародавню хотелку?:
http://www.1cpp.ru/forum/YaBB.pl?num=1163938068/0

Не, Дим, это работает только для ГК (групповых контекстов).
И у добавленного контекста нет доступа к оригинальному контексту.

Т.е. это скорее добавка к Артурову Перехватчику.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Sergey
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 135
Зарегистрирован: 18. Октября 2006
Пол: Мужской
Re: Тестируем: Добавление контекстов
Ответ #26 - 03. Сентября 2008 :: 20:08
Печать  
Код
Выбрать все
Процедура Сформировать()
КонтФормы="";
КонтФормы=ВернутьКонтекст(контекст);

	Структура = СоздатьОбъект("Структура");
	Структура.Вставить("ДопСвойство", "ПростоСтрока");

	КонтФормы.__ДобавитьКонтекст(Структура);

	Сообщить("Новое свойство = "+КонтФормы.ДопСвойство);
КонецПроцедуры 



10 раз нажал сформировать появилось 10 ДопСвойство в отладчике)) Оно разве так надо
  
Наверх
 
IP записан
 
Sergey
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 135
Зарегистрирован: 18. Октября 2006
Пол: Мужской
Re: Тестируем: Добавление контекстов
Ответ #27 - 03. Сентября 2008 :: 20:33
Печать  
Код
Выбрать все
Перем ДопСвойство;

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


//*******************************************
Процедура Сформировать()

КонтФормы=ВернутьКонтекст(контекст);
ДопСвойство=1;//Это работает.

Структура = СоздатьОбъект("Структура");
Структура.Вставить("ДопСвойство", "ПростоСтрока");

КонтФормы.__ДобавитьКонтекст(Структура);

Сообщить("Новое свойство = "+КонтФормы.ДопСвойство);

ДопСвойство=1;//А ЭТО УЖЕ НЕ РАБОТАЕТ!!!!!!!
КонтФормы.ДопСвойство=1;// теперь только так работает!!
КонецПроцедуры 

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


I Love YaBB 2!

Сообщений: 135
Зарегистрирован: 18. Октября 2006
Пол: Мужской
Re: Тестируем: Добавление контекстов
Ответ #28 - 03. Сентября 2008 :: 20:58
Печать  
Вот так переменные не размножаются))


Код
Выбрать все
Процедура Сформировать()

КонтФормы=ВернутьКонтекст(контекст);

Структура = СоздатьОбъект("Структура");
//Структура.Вставить("ДопСвойство", "ПростоСтрока");
КонтФормы.__ДобавитьКонтекст(Структура);
//Сообщить("Новое свойство = "+КонтФормы.ДопСвойство);
КонтФормы.Вставить("ДопСвойство1", "ПростоСтрока1");
КонтФормы.Вставить("ДопСвойство2", "ПростоСтрока2");
Структура = СоздатьОбъект("Структура");//для обновления
КонтФормы.__ДобавитьКонтекст(Структура);// для обновления

КонецПроцедуры 

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Тестируем: Добавление контекстов
Ответ #29 - 04. Сентября 2008 :: 05:13
Печать  
Sergey

Цитата:
10 раз нажал сформировать появилось 10 ДопСвойство в отладчике)) Оно разве так надо

Так надо - ты же добавил 10 контекстов.
Другое дело, что сможешь пользоваться только одним - остальные 9 будут недоступны.

Цитата:
ДопСвойство=1;//А ЭТО УЖЕ НЕ РАБОТАЕТ!!!!!!!

Верно, не работает.
Чтобы такое работало, необходимо перекомпилировать модуль.
Здесь об этом и речи не идет - поэтому доступ возможен только через групповой контекст (у тебя - КонтФормы).

Цитата:
КонтФормы.__ДобавитьКонтекст(Структура);
КонтФормы.__ДобавитьКонтекст(Структура);// для обновления

Я бы не советовал использовать эту возможность таким образом.

Во-первых, здесь добавляются два контекста вместо одного.
А, как известно, даже незаряженные ружья иногда начинают стрелять.

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

Это просто возможность добавить несколько фиксированных свойств и методов к контексту - и пока все.
Для перехватчика, в основном, это нужно.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 3 
ОтправитьПечать