На форме любого документа в управляемых формах создаем команду и помещаем ее на форму. В моем случае я сделал в расширении.
Команда у меня называется "ПереместитьСтроку". Она ссылается на клиентскую процедуру Расш1_ПереместитьСтрокуПосле()
В модуле формы будет всего три процедуры:
Асинхронно задаем вопрос, на какую позицию переместить выделенную строку и выполняем команду
&НаКлиенте
Процедура Расш1_ПереместитьСтрокуПосле(Команда)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
НовыйНомерСтроки = ТекущаяСтрока.НомерСтроки;
Оповещение = Новый ОписаниеОповещения("ПереместитьСтрокуЗавершение", ЭтотОбъект);
ПоказатьВводЧисла(Оповещение, НовыйНомерСтроки,"Укажите новый номер строки:", 15);
КонецПроцедуры
&НаКлиенте
Процедура ПереместитьСтрокуЗавершение(НовыйНомерСтроки, ДополнительныеПараметры) Экспорт
Если НовыйНомерСтроки = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ТекНомерСтроки = ТекущаяСтрока.НомерСтроки;
ПереместитьСтрокуНаСервере(ТекНомерСтроки, НовыйНомерСтроки);
КонецПроцедуры
&НаСервере
Процедура ПереместитьСтрокуНаСервере(ТекНомерСтроки, НовыйНомер)
Если НовыйНомер > ТекНомерСтроки Тогда
Дельта = НовыйНомер - ТекНомерСтроки;
Объект.Товары.Сдвинуть(ТекНомерСтроки-1, Дельта);
ИначеЕсли ТекНомерСтроки > НовыйНомер Тогда
Дельта = ТекНомерСтроки - НовыйНомер;
Объект.Товары.Сдвинуть(ТекНомерСтроки-1, -Дельта);
КонецЕсли;
КонецПроцедуры