Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема ТП: ТекущаяСтрока в видимой части экрана (число прочтений - 2386 )
ArtInSky
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 41
Зарегистрирован: 26. Июня 2009
ТП: ТекущаяСтрока в видимой части экрана
29. Января 2010 :: 16:53
Печать  
3.0.1.23

ТП + ИТ

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

Код такой:
Код
Выбрать все
Процедура КнопкаТабличноеПолеПриВыбореЗаголовка(ТабличноеПоле,Колонка)
	// если такой колонки в поставщике нет, то сортировка не нужна; например, в случае пиктограммы
	Попытка
		КолонкаПоставщика = ТЗПоставщикаДанных.ИмяКолонки(Колонка.Имя);
	Исключение
		Колонка.ЗнакУпорядочивания = 0;
		Возврат;
	КонецПопытки;

	Если Колонка.ЗнакУпорядочивания > 0 Тогда
	    Колонка.ЗнакУпорядочивания = 2 - Колонка.ЗнакУпорядочивания + 1;
	Иначе
		Колонка.ЗнакУпорядочивания = 1;
	КонецЕсли;

	// отключим сортировку для другой колонки, которая уже отсортирована
	Колонки = ТабличноеПоле.Колонки;
	Для Счетчик = 1 По Колонки.Количество() - 1 Цикл
		ТекущаяКолонка = Колонки.Получить(Счетчик);
		Если ТекущаяКолонка <> Колонка Тогда
			Если ТекущаяКолонка.ЗнакУпорядочивания > 0 Тогда
			    ТекущаяКолонка.ЗнакУпорядочивания = 0;
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;

	НаправлениеСортировки = ?(Колонка.ЗнакУпорядочивания = 1,"","-");
	ТЗПоставщикаДанных.Сортировать(НаправлениеСортировки + "" + Колонка.Имя);
	Спозиционироваться();
КонецПроцедуры

Процедура Спозиционироваться()
	Если ПустоеЗначение(ТекущийКлиент) = 0 Тогда
		ТекущаяСтрока = 0,1);
		Если ТекущаяСтрока > 0 Тогда
		    лкТабличноеПоле.ТекущаяСтрока = ТекущаяСтрока;
			лкТабличноеПоле.ОбновитьСтроки();
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры

 



Или следует вообще переопределять поставщика данных? Некрасиво вроде выйдет
  
Наверх
 
IP записан
 
ArtInSky
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 41
Зарегистрирован: 26. Июня 2009
Re: ТП: ТекущаяСтрока в видимой части экрана
Ответ #1 - 01. Февраля 2010 :: 08:50
Печать  
Судя по отсутствию ответов банальный вопрос. Пните, куда копать, плиз
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: ТП: ТекущаяСтрока в видимой части экрана
Ответ #2 - 01. Февраля 2010 :: 08:58
Печать  
попробуй так:
Код
Выбрать все
...
	НаправлениеСортировки = ?(Колонка.ЗнакУпорядочивания = 1,"","-");
	ТЗПоставщикаДанных.Сортировать(НаправлениеСортировки + "" + Колонка.Имя);
	лкТабличноеПоле.ОбновитьСтроки();
	Спозиционироваться();
КонецПроцедуры

Процедура Спозиционироваться()
	Если ПустоеЗначение(ТекущийКлиент) = 0 Тогда
		ТекущаяСтрока = 0,1);
		Если ТекущаяСтрока > 0 Тогда
		    лкТабличноеПоле.ТекущаяСтрока = ТекущаяСтрока;
//		    лкТабличноеПоле.ОбновитьСтроки();
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры 

  

1&&2&&3
Наверх
 
IP записан
 
ArtInSky
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 41
Зарегистрирован: 26. Июня 2009
Re: ТП: ТекущаяСтрока в видимой части экрана
Ответ #3 - 01. Февраля 2010 :: 18:41
Печать  
trad писал(а) 01. Февраля 2010 :: 08:58:
попробуй так:
Код
Выбрать все
...
	НаправлениеСортировки = ?(Колонка.ЗнакУпорядочивания = 1,"","-");
	ТЗПоставщикаДанных.Сортировать(НаправлениеСортировки + "" + Колонка.Имя);
	лкТабличноеПоле.ОбновитьСтроки();
	Спозиционироваться();
КонецПроцедуры

Процедура Спозиционироваться()
	Если ПустоеЗначение(ТекущийКлиент) = 0 Тогда
		ТекущаяСтрока = 0,1);
		Если ТекущаяСтрока > 0 Тогда
		    лкТабличноеПоле.ТекущаяСтрока = ТекущаяСтрока;
//		    лкТабличноеПоле.ОбновитьСтроки();
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры 


Улыбка неа
  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: ТП: ТекущаяСтрока в видимой части экрана
Ответ #4 - 02. Февраля 2010 :: 15:33
Печать  
ArtInSky писал(а) 01. Февраля 2010 :: 18:41:
Улыбка неа

Очень информативно.
Попробуй сделать обработку, в которой заполняй ИТЗ тестовыми данными и добавь две кнопки "Сортировать А" и "Сортировать Б", в которых и вызывай соответствующую сортировку. Тогда можно будет посмотреть, поразбираться.
З.Ы. Компоненты НЕ нужно к обработке прикладывать, но версии можешь озвучить.
  
Наверх
ICQ  
IP записан
 
ArtInSky
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 41
Зарегистрирован: 26. Июня 2009
Re: ТП: ТекущаяСтрока в видимой части экрана
Ответ #5 - 03. Февраля 2010 :: 07:27
Печать  
Обработку сделаю - отпишусь.
Версию указал в первом посте: 3.0.1.23
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать