Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) ТП: ОбновитьСтроки() внутри ПриКонтекстномМеню() (число прочтений - 5696 )
Kapet
Senior Member
****
Отсутствует


Ламер - вансист

Сообщений: 262
Местоположение: Ukraine, Kyiv
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
ТП: ОбновитьСтроки() внутри ПриКонтекстномМеню()
21. Марта 2007 :: 11:23
Печать  
Работает ли для табличного поля метод ОбновитьСтроки() внутри процедуры события ПриКонтекстномМеню()?

Вопрос риторический. У меня не работает  Печаль
Также внутри не работает изменение ТаймаутОбновления

В обычном журнале есть ТП с подчиненными документами. По контекстному меню как в РасшЖурнал2 удаляю подч документ, однако время появление символа удаленности (т.е. задержка обновления ТП) зависит исключительно от заранее заданного для ТП ТаймаутОбновления... ИМХО, дас ист нихт зер гуд

1с++ Рекомендованный стабильный релиз с раздельной загрузкой FormEx: 2.5.0.1

Это нормально?
  
Наверх
ICQ  
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: ТП: ОбновитьСтроки() внутри ПриКонтекстномМеню
Ответ #1 - 21. Марта 2007 :: 14:35
Печать  
Это не нормально.
ОбновитьСтроки() должен работать.
При изменении таймаута обновления, следующее автообновление строк должно произойти по истечению вновь установленного времени с момента установки, ранее установленное значение таймаута должно игнорироваться.

Поставщик данных и формат ИБ?

вопрос нисколько не риторический )
  
Наверх
ICQ  
IP записан
 
Kapet
Senior Member
****
Отсутствует


Ламер - вансист

Сообщений: 262
Местоположение: Ukraine, Kyiv
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Re: ТП: ОбновитьСтроки() внутри ПриКонтекстномМеню
Ответ #2 - 21. Марта 2007 :: 14:46
Печать  
Бес попутал: if Form.ActiveControl()<>"ПодчиненныеТабличноеПоле" then...  - не давало обновить строки

Конечно всё работает  Смущённый

Снять бы этот топик ...
  
Наверх
ICQ  
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: ТП: ОбновитьСтроки() внутри ПриКонтекстномМеню
Ответ #3 - 21. Марта 2007 :: 14:50
Печать  
Улыбка нееет, пусть стоит как памятник..
а памятники разрушать нехорошо, кому бы они ни были!
  
Наверх
ICQ  
IP записан
 
Kapet
Senior Member
****
Отсутствует


Ламер - вансист

Сообщений: 262
Местоположение: Ukraine, Kyiv
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Re: ТП: ОбновитьСтроки() внутри ПриКонтекстномМеню
Ответ #4 - 21. Марта 2007 :: 14:53
Печать  
Хреновый памятник, позорный  Смущённый
Ну да ладно...
  
Наверх
ICQ  
IP записан
 
Kapet
Senior Member
****
Отсутствует


Ламер - вансист

Сообщений: 262
Местоположение: Ukraine, Kyiv
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Re: ТП: ОбновитьСтроки() внутри ПриКонтекстномМеню
Ответ #5 - 21. Марта 2007 :: 15:06
Печать  
Хотя, впрочем ...

Конструкция if Form.ActiveControl()<>"ПодчиненныеТабличноеПоле" then... висит в функции невидимого текстового реквизита (типа стандартного УстДоступность())

Если её закомментировать, то табличное поле по подчиненным обновляется, но только как реакция формы на внешний раздражитель. А, по идее, при принудительном выполнении ПодчиненныеТабличноеПоле.ОбновитьСтроки() внутри ПриКонтекстномМеню() обновление должно происходить вне зависимости от содержимого функции типа УстДоступность().

Так что вопрос остается открытый

Поставщик данных - VTProvider, база на скуле 2000, данные выбираются маленьким параметризированным запросом селект * к прописаной на скуле пользовательской функции...
  
Наверх
ICQ  
IP записан
 
Kapet
Senior Member
****
Отсутствует


Ламер - вансист

Сообщений: 262
Местоположение: Ukraine, Kyiv
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Re: ТП: ОбновитьСтроки() внутри ПриКонтекстномМеню
Ответ #6 - 21. Марта 2007 :: 15:13
Печать  
Делаем так:
Код
Выбрать все
Процедура ПодчиненныеТабличноеПолеПриКонтекстномМеню(Конт,ФлагЗаголовка)
	Если ФлагЗаголовка=0 Тогда
		Док=ПолучитьТекущийДокумент();
		Если ПустоеЗначение(Док)=1 Тогда
			Возврат;
		КонецЕсли;
		Меню=СоздатьОбъект("СписокЗначений");
		Меню.ДобавитьЗначение(2,"Открыть");
		Меню.ДобавитьЗначение(3,"Просмотр");
		Меню.ДобавитьЗначение(0,"-");
		Если Док.Проведен()=1 Тогда
			Меню.ДобавитьЗначение(7,"Сделать не проведенным");
		КонецЕсли;
		Если Док.ПометкаУдаления()=1 Тогда
			Меню.ДобавитьЗначение(8,"Отменить пометку на удаление");
		Иначе
			Меню.ДобавитьЗначение(5,"Пометить на удаление");
		КонецЕсли;
		ВыбЗнач=0;
		Сервис =СоздатьОбъект("Сервис");
		if Сервис.ВыбратьЗначение(Меню,ВыбЗнач,,0,2)=1 then
			//ПодчиненныеТП.ТаймаутОбновления=3;
			Если ВыбЗнач=1 Тогда	  
			ИначеЕсли ВыбЗнач=2 Тогда
				ПросмотрПодчиненный(Док,0);
			ИначеЕсли ВыбЗнач=3 Тогда
				ПросмотрПодчиненный(Док,1);
			ИначеЕсли ВыбЗнач=5 Тогда
				ПометитьНаУдаление(Док);
			ИначеЕсли ВыбЗнач=7 Тогда
				СделатьНеПроведенным(Док);
			ИначеЕсли ВыбЗнач=8 Тогда
				ОтменитьПометкуНаУдаление(Док);
			КонецЕсли;
			ПодчиненныеТП.ОбновитьСтроки();
			//ПодчиненныеТП.ТаймаутОбновления=30;
		endif;
	КонецЕсли;
КонецПроцедуры 


Так Нэ работает...
... и с таймаутом та же фигня
  
Наверх
ICQ  
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: ТП: ОбновитьСтроки() внутри ПриКонтекстномМеню
Ответ #7 - 21. Марта 2007 :: 15:28
Печать  
VTProvider это поставщик данных таблицы значений. Метод ОбновитьСтроки() обновляет данные ТП, заново запрашивая у поставщика данных отображаемые в данный момент строки. Поставщик честно вернет в ТП данные своей ТЗ.
А кто обновит данные самой ТЗ? Ведь данные ТЗ не изменяются!
  
Наверх
ICQ  
IP записан
 
Kapet
Senior Member
****
Отсутствует


Ламер - вансист

Сообщений: 262
Местоположение: Ukraine, Kyiv
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Re: ТП: ОбновитьСтроки() внутри ПриКонтекстномМеню
Ответ #8 - 21. Марта 2007 :: 15:37
Печать  
Гм, действительно, заработало так (окончание пред. функции):
Код
Выбрать все
			УстДоступность();
			ПодчиненныеТП.ОбновитьСтроки();
		endif;
	КонецЕсли;
КонецПроцедуры 



Можно сказать, установка памятника завершена!
  
Наверх
ICQ  
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: ТП: ОбновитьСтроки() внутри ПриКонтекстномМеню
Ответ #9 - 21. Марта 2007 :: 15:40
Печать  
А почему в решении данной задачи не применить ПоставщикДанныхODBC? Имхо, он как нельзя лучше подходит.
  
Наверх
ICQ  
IP записан
 
Kapet
Senior Member
****
Отсутствует


Ламер - вансист

Сообщений: 262
Местоположение: Ukraine, Kyiv
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Re: ТП: ОбновитьСтроки() внутри ПриКонтекстномМеню
Ответ #10 - 21. Марта 2007 :: 15:44
Печать  
До этого блюда я еще не добрался...
  
Наверх
ICQ  
IP записан
 
Kapet
Senior Member
****
Отсутствует


Ламер - вансист

Сообщений: 262
Местоположение: Ukraine, Kyiv
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Re: ТП: ОбновитьСтроки() внутри ПриКонтекстномМеню
Ответ #11 - 21. Марта 2007 :: 16:10
Печать  
Сейчас немного посмотрел про ПоставщикДанныхODBC.
Действительно, вроде как по смыслу более подходит, но... это всё (работу с ним) надо прописывать в модуле формы, кажется не очень маленький кусочек. А у меня сейчас коротенько из формы журнала делается:
Код
Выбрать все
ТекстЗапросаПоПодчиненным="
|set nocount on
|select * from dbo.fn_podch_schet(?,?)"; 

и весь селект сразу в ТЗ, а польз. функция на сервере dbo.fn_podch_schet грузит только сам сервер, а не дохлых клиентов. И всё летает...
  
Наверх
ICQ  
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: ТП: ОбновитьСтроки() внутри ПриКонтекстномМеню
Ответ #12 - 21. Марта 2007 :: 16:29
Печать  
офф

Kapet писал(а) 21. Марта 2007 :: 16:10:
а польз. функция на сервере dbo.fn_podch_schet грузит только сам сервер, а не дохлых клиентов. И всё летает...
а ты думаешь если в тексте запроса будет не функция dbo.fn_podch_schet а ее тело, то это запрос будет грузить дохлых клиентов сильнее?
  

1&&2&&3
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: ТП: ОбновитьСтроки() внутри ПриКонтекстномМеню
Ответ #13 - 21. Марта 2007 :: 16:33
Печать  
Kapet писал(а) 21. Марта 2007 :: 16:10:
но... это всё (работу с ним) надо прописывать в модуле формы, кажется не очень маленький кусочек. А у меня сейчас коротенько из формы журнала делается:
на самом деле (по личному опыту) кода примерно столько же
(без учета текста запроса ибо такой запроса не подойдет)
  

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


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: ТП: ОбновитьСтроки() внутри ПриКонтекстномМеню
Ответ #14 - 22. Марта 2007 :: 06:05
Печать  
Kapet писал(а) 21. Марта 2007 :: 16:10:
Сейчас немного посмотрел про ПоставщикДанныхODBC.
Действительно, вроде как по смыслу более подходит, но... это всё (работу с ним) надо прописывать в модуле формы, кажется не очень маленький кусочек. А у меня сейчас коротенько из формы журнала делается:
Код
Выбрать все
ТекстЗапросаПоПодчиненным="
|set nocount on
|select * from dbo.fn_podch_schet(?,?)"; 

и весь селект сразу в ТЗ, а польз. функция на сервере dbo.fn_podch_schet грузит только сам сервер, а не дохлых клиентов. И всё летает...

Озадачен любые запросы всегда выполняются на сервере, и клиентов никогда не грузят.. это же не dbf какой-нибудь(!)
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать