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