Программное перемещение строк ДанныхФормКоллекции(Таблица значений) на Клиенте

Lega 15 2

Вместо ТаблицаСоСпискомСтрок подставьте свою таблицу, с колонкой ПорядковыйНомер

&НаКлиенте
Процедура ПереместитьСтрокуВверх(Команда)
	
	ПереместитьСтроку(-1);
	
КонецПроцедуры

&НаКлиенте
Процедура ПереместитьСтрокуВниз(Команда)
	
	ПереместитьСтроку(1);
	
КонецПроцедуры

&НаКлиенте
Процедура ПереместитьСтроку(ГраницаСмещения)
	
	ТекущиеДанные = Элементы.ТаблицаСоСпискомСтрок.ТекущиеДанные;
	
	Если ТекущиеДанные = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	ТекущийПорядок = ТекущиеДанные.ПорядковыйНомер;
	НовыйПорядок = ТекущийПорядок + ГраницаСмещения;
	
	ОбновитьВсеСтроки = Истина;
	Если НовыйПорядок < 1 Тогда
		НовыйПорядок = ТаблицаСоСпискомСтрок.Количество();
	ИначеЕсли НовыйПорядок > ТаблицаСоСпискомСтрок.Количество() Тогда
		НовыйПорядок = 1;
	Иначе
		ОбновитьВсеСтроки = Ложь;
	КонецЕсли;
		
	ТекущийИндекс = ТекущийПорядок - 1;
	НовыйИндекс = НовыйПорядок - 1;
	
	Если ТекущийПорядок <> НовыйПорядок Тогда
		ДельтаСмещения = НовыйИндекс - ТекущийИндекс;
		ТаблицаСоСпискомСтрок.Сдвинуть(ТекущийИндекс, ДельтаСмещения);
		
		ПеремещаемаяСтрока = ТаблицаСоСпискомСтрок.Получить(НовыйИндекс);
		ПеремещаемаяСтрока.ПорядковыйНомер = НовыйПорядок;
		
		ЗамещаемаяСтрока = ТаблицаСоСпискомСтрок.Получить(ТекущийИндекс);
		ЗамещаемаяСтрока.ПорядковыйНомер = ТекущийПорядок;
	КонецЕсли;
	
	Если ОбновитьВсеСтроки Тогда
		ОбновитьПорядокВсехСтрок();
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ОбновитьПорядокВсехСтрок()
	
	Для Каждого СтрокаСписка Из ТаблицаСоСпискомСтрок Цикл
		СтрокаСписка.ПорядковыйНомер = ТаблицаСоСпискомСтрок.Индекс(СтрокаСписка) + 1;
	КонецЦикла;

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

См. также

НайтиСтрокуВДанныхФормыДерево (БСП)

Выгрузка Таблицы значений в Объект Таблица Значений на форме обработки (для передачи сервер - клиент)

Заполнение "пустых" строк табличной части

ТаблицаЗначенийВМассив

Функция копирования колонок в таблицу или дерево значений (конструктор таблиц и деревьев значений)

Создание схемы компоновки данных программно

Описание строки в таблице значений

Работа с универсальными коллекциями данных

Проверить наличие колонки в таблице значений, когда нет доступа к самой таблице и методу Найти у коллекции Колонки

Модератору