Добавление колонки суммы в документ «Заказ на перемещение». Розница 3

Клиенту нужно добавить колонку сумм в каждую строку документа «Заказ на перемещение» и видеть общую сумму в подвале.

Добавление колонки делаю по классике, используя заготовки из своих статей:


&НаСервере
Процедура дор_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
	
	//Добавляем колонку суммы
	ДобавляемыеРеквизиты = Новый Массив;
	ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("дор_Сумма", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(17, 2)), "Объект.Запасы", "Сумма", Ложь));
	ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("дор_СуммаИтого", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(17, 2)), "", "Сумма", Ложь));
	ИзменитьРеквизиты(ДобавляемыеРеквизиты);  
	
	Элемент = Элементы.Вставить("дор_Сумма", Тип("ПолеФормы"), Элементы.Запасы, Элементы.ЗапасыЕдиницаИзмерения);
    Элемент.Вид = ВидПоляФормы.ПолеВвода;
    Элемент.ПутьКДанным = "Объект.Запасы.дор_Сумма"; 
	Элемент.ОтображатьВПодвале = истина;
	Элемент.Формат = "ЧДЦ=0";
	//Элемент.ПутьКДаннымПодвала = "Объект.Запасы.Итогдор_Сумма"; 
	Элемент.ПутьКДаннымПодвала = "дор_СуммаИтого"; 
	
	
	Привязка = Элементы.ЗапасыИтогКоличествоСобрано;
	Элемент = Элементы.Вставить("дор_СуммаИтого", Тип("ПолеФормы"), Привязка.Родитель, Привязка);
    Элемент.ПутьКДанным = "дор_СуммаИтого"; 
	ЗаполнитьЗначенияСвойств(Элемент, Привязка, "ЦветФона, ЦветТекста, Шрифт, АвтомаксимальнаяШирина, РастягиватьПоГоризонтали, Ширина");
	Элемент.ГоризонтальноеПоложение = ГоризонтальноеПоложениеЭлемента.Право;

	
	дор_ЗаполнитьСуммыСтрок(); //Получаем суммы
	
	Элементы.ЗапасыИтогКоличествоСобрано.Видимость = ложь;
	
КонецПроцедуры   


 &НаСервере
Процедура дор_ЗаполнитьСуммыСтрок(ИдентификаторСтроки = Неопределено) Экспорт
    ТЗ = Объект.Запасы.Выгрузить(, "НомерСтроки, Номенклатура, Количество");
    З = Новый Запрос();
    З.Текст =
    "ВЫБРАТЬ
    |	Т.НомерСтроки КАК НомерСтроки,
    |	Т.Номенклатура КАК Номенклатура, Т.Количество
    |ПОМЕСТИТЬ ТН
    |ИЗ
    |	&ТЗ КАК Т
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |	ТН.НомерСтроки КАК НомерСтроки,
    |	ЕСТЬnull(Т.Цена, 0) КАК Цена, ТН.Количество
    |ИЗ
    |	ТН КАК ТН
    |		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ВидЦен = &ВидЦен) КАК Т
    |		ПО ТН.Номенклатура = Т.Номенклатура";
    З.УстановитьПараметр("Дата", ТекущаяДата());
    З.УстановитьПараметр("ТЗ", ТЗ);
    З.УстановитьПараметр("ВидЦен", Объект.СтруктурнаяЕдиницаПолучатель.РозничныйВидЦен);

	
	ЭтаФорма.дор_СуммаИтого = 0;
    Выборка = З.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
        Цена = Выборка.Цена; 
		Сумма = Выборка.Цена * Выборка.Количество;
		
        Объект.Запасы[Выборка.НомерСтроки - 1].дор_Сумма = Сумма;
		ЭтаФорма.дор_СуммаИтого = ЭтаФорма.дор_СуммаИтого + Сумма;
	КонецЦикла;                                  
	
	

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

&НаКлиенте
Процедура дор_ПослеЗаписиПосле(ПараметрыЗаписи)
	дор_ЗаполнитьСуммыСтрок(); //Получаем суммы
КонецПроцедуры

&НаКлиенте
&После("РассчитатьОбъемИВесВДокументе")
Процедура дор_РассчитатьОбъемИВесВДокументе()
	дор_ЗаполнитьСуммыСтрок(); //Получаем суммы
КонецПроцедуры



Нюанс, в каком событии пересчитывать суммы строк. К счастью, в документе есть событие РассчитатьОбъемИВесВДокументе.

В путь подвала не захотело устанавливаться выражение с Итог. Пришлось рассчитывать сумму итога самому.

Подвал табличной части не показывается. Ради одной строки выводить его не хочется, поэтому добавил поле итога по сумме.

Итоговая форма выглядит так:

Мне так и не удалось выровнять сумму вправо, чтобы было наравне с количеством, кстати.

При таком подходе сумма не сохраняется, а всякий раз вычисляется на лету.

Среда: Розница 3.0.12.237. Объем: 1 час