Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Отображение строк в ТП (число прочтений - 2180 )
al_zzz
Senior Member
****
Отсутствует


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Отображение строк в ТП
26. Ноября 2009 :: 10:57
Печать  
Использую ТП в обработке с поставщиком данных ТЗ. Данные в таблице практически не меняются. Можно ли как-то оптимизировать обновление строк в ТП или перерисовывать не все строки, уж больно по глазам бьет это мигание?
  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отображение строк в ТП
Ответ #1 - 26. Ноября 2009 :: 11:12
Печать  
Скорее всего что-то ты делаешь не так. Никто на такое не жаловался. У меня много мест, где используется ТП с поставщиком ТЗ
  
Наверх
 
IP записан
 
al_zzz
Senior Member
****
Отсутствует


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Re: Отображение строк в ТП
Ответ #2 - 26. Ноября 2009 :: 11:22
Печать  
Может быть и так - только начинаю работать с ТП. Может  подскажете в чем дело?
  

__________________________.ert ( 87 KB | Загрузки )

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
al_zzz
Senior Member
****
Отсутствует


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Re: Отображение строк в ТП
Ответ #3 - 26. Ноября 2009 :: 11:37
Печать  
Действительно, не в ТП дело. Дело в том, что я получаю ПриАктивизацииСтроки() остатки в разрезе складов и нормы. Тогда как сделать, чтоб получать остатки не при каждой активизации, а с задержкой на несколько секунд?
  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отображение строк в ТП
Ответ #4 - 26. Ноября 2009 :: 14:06
Печать  
Приведите пожалуйста код, который вызывается ПрАктивизацииСтроки()
  
Наверх
IP записан
 
al_zzz
Senior Member
****
Отсутствует


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Re: Отображение строк в ТП
Ответ #5 - 27. Ноября 2009 :: 04:50
Печать  
pvase писал(а) 26. Ноября 2009 :: 14:06:
Приведите пожалуйста код, который вызывается ПрАктивизацииСтроки()

Львинную долю времени занимает процедура:
Код
Выбрать все
Процедура ПолучитьОстатки()
	ТОстатки.УдалитьСтроки();
	рс = СоздатьОбъект("ODBCRecordset");
	//Данный фрагмент построен конструктором.
	//При повторном использовании конструктора внесенные вручную изменения будут потеряны!!!
	ТекстЗапроса = "-- qryMaker:Отчет1.2009.11.12.11.40.20
		|SELECT ОстаткиТМЦОстатки.Склад [Склад $Справочник.Склады]
		|	, Sum(ОстаткиТМЦОстатки.КоличествоОстаток) Количество
		|	, Sum($СлужебныйОбщий.НормаПодтоварки*$Ном.МинОстаток) Норма
		|FROM $РегистрОстатки.ОстаткиТМЦ(,
		|		RIGHT OUTER JOIN $Справочник.Склады AS Склады ON Склад = Склады.ID
		|		LEFT OUTER JOIN $Справочник.СлужебныйОбщий AS СлужебныйОбщий ON $СлужебныйОбщий.Склад = Склады.ID AND Склад = $СлужебныйОбщий.Склад
		|		INNER JOIN $Справочник.Номенклатура AS Ном ON Ном.ID = СлужебныйОбщий.PARENTEXT AND Ном.ID = Номенклатура,
		|		(Номенклатура = :ВыбНом),
		|		(Склад, Номенклатура),) AS ОстаткиТМЦОстатки
		|	RIGHT OUTER JOIN $Справочник.Склады AS Склады ON ОстаткиТМЦОстатки.Склад = Склады.ID
		|	LEFT OUTER JOIN $Справочник.СлужебныйОбщий AS СлужебныйОбщий ON $СлужебныйОбщий.Склад = Склады.ID AND ОстаткиТМЦОстатки.Склад = $СлужебныйОбщий.Склад
		|	INNER JOIN $Справочник.Номенклатура AS Ном ON Ном.ID = СлужебныйОбщий.PARENTEXT AND Ном.ID = ОстаткиТМЦОстатки.Номенклатура
		|GROUP BY ОстаткиТМЦОстатки.Склад
		|ORDER BY ОстаткиТМЦОстатки.Склад
		|";
	рс.УстановитьТекстовыйПараметр("ВыбНом", ТекНоменклатура);
	то = рс.ВыполнитьИнструкцию(ТекстЗапроса);
	Для н=1 По СписокСкладов.РазмерСписка() Цикл
		стр = "";
		Если ТО.НайтиЗначение(СписокСкладов.ПолучитьЗначение(н),стр,"Склад") = 0 Тогда
			ТО.НоваяСтрока();
			ТО.Склад = СписокСкладов.ПолучитьЗначение(н);
		КонецЕсли;
	КонецЦикла;
	то.Сортировать("Склад");
	рс = СоздатьОбъект("ODBCRecordset");
	//Данный фрагмент построен конструктором.
	//При повторном использовании конструктора внесенные вручную изменения будут потеряны!!!
	ТекстЗапроса = "-- qryMaker:Отчет1.2009.11.18.15.06.03
		|SELECT ОстаткиТМЦОстатки.Склад [Склад $Справочник.Склады]
		|	, Sum(ОстаткиТМЦОстатки.КоличествоОстаток) Количество
		|FROM $РегистрОстатки.ОстаткиТМЦ(,,
		|		(Склад IN (Select Val From #СписокМП) And (Номенклатура = :ВыбНом)),
		|		Склад,) AS ОстаткиТМЦОстатки
		|GROUP BY ОстаткиТМЦОстатки.Склад
		|";
	рс.УложитьСписокОбъектов(СписокСкладовМП,"#СписокМП");
	рс.УстановитьТекстовыйПараметр("ВыбНом", ТекНоменклатура);
	тмп = рс.ВыполнитьИнструкцию(ТекстЗапроса);
	СуммаКоличество = то.Итог("Количество")+тмп.Итог("Количество");
	СуммаНорм	 = то.Итог("Норма");
	то.НоваяКолонка("Цена");
	ТЦ  = ПолучитьЦены();
	ТОстатки.Загрузить(то);
	ТОстатки.УстановитьПараметрыКолонки("Количество","Строка",15);
	ТОстатки.ВыбратьСтроки();
	Пока ТОстатки.ПолучитьСтроку()=1 Цикл
		Попытка
		   Склад = СписокСкладовМП.Получить("МП"+Прав(СокрЛП(ТОстатки.Склад),2));
	    Исключение
		   Склад = "";
	  КонецПопытки;
		стр = "";
		Если тмп.НайтиЗначение(Склад,стр,"Склад") = 1 Тогда
			личество)+"("+тмп.ПолучитьЗначение(стр,"Количество")+")");
		КонецЕсли;
		Попытка
		стр = "";
		Если ТЦ.НайтиЗначение(ТОстатки.Склад.ТипЦены,стр,"ТипЦен") = 1 Тогда
			"Цена"));
		КонецЕсли;
	    Исключение
		КонецПопытки;
		Если СокрЛП(ТОстатки.Количество) = "0" Тогда
			 ТОстатки.Количество = "";
		КонецЕсли;
	КонецЦикла;
	ТПОстатки.ОбновитьСтроки();
КонецПроцедуры	// ПолучитьОстатки 


Но без неё никак нельзя.
  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
al_zzz
Senior Member
****
Отсутствует


1C++ ->

Сообщений: 361
Местоположение: Барнаул
Зарегистрирован: 05. Сентября 2009
Пол: Мужской
Re: Отображение строк в ТП
Ответ #6 - 06. Апреля 2010 :: 06:16
Печать  
Вопрос снят.
Всё решил с помощью формексовских: ПриНажатииКнопкиКлавиатуры(...), ПриЩелчкеМыши(...).
  

Каждая система проходит три стадии:&&1) Шумиха&&2) Неразбериха&&3) Поиск виновных (собственно, рабочий процесс)&&4) Наказание невиновных&&5) Награждение непричастных&& В.М. Глушков
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать