Как обычно все гениальное просто!
Так как данные хранились 2 раза в документе и регистре, а все стандарные функции работают именно с регисрами, появилась мысль не хранить цены в документах, а просто отображать то что уже есть в регистре. Второй "+" ни чего конвертировать не надо.
Копируем документ "Установка цен номенклатуры" убиваем табличную часть.
Добавляем табличную часть в которую будет выводиться регистр сведений набор записей "ЦеныНоменклатуры".
При открытии формы добавляем
Если не ЭтоНовый() Тогда
ЦеныНоменклатуры.Отбор.Регистратор.Установить(Ссылка);
ЦеныНоменклатуры.Прочитать();
Иначе
ЦеныНоменклатуры.Отбор.Регистратор.Установить(Документы.УстановкаЦенНоменклатуры1.ПустаяСсылка());
КонецЕсли;
После записи в форме
Если ЦеныНоменклатуры.Отбор.Регистратор.Значение= Документы.УстановкаЦенНоменклатуры1.ПустаяСсылка() Тогда
ЦеныНоменклатуры.Отбор.Регистратор.Установить(Ссылка);
КонецЕсли;
Для Каждого Запись из ЦеныНоменклатуры Цикл
Запись.Регистратор = Ссылка;
Запись.Период = Дата;
КонецЦикла;
ЦеныНоменклатуры.Записать();
Еще не забываем очистить потом табличные части документов, тех которые уже были созданы. Что бы место освободилось.
Добавляем красивости:
1) Можно разрешить редактирование регистра из документа с внесением информации о корректировках в журнал регистрации или в регистр истории, если таковой имеется.
2) Если у вас было несколько типов цен, то в документе раньше показывалась одна строка с несколькими типами цен, можно сделать запросом и выводить в подобную таблицу. Не знаю насколько это актуально, мне кажется проще провести сортировку по номенклатуре при открытии.
Что еще можно сделать:
Так как номенклатура на 60-90% повторялась каждый день, при сохранении документа проверялась последняя цена и если она не отличается от сегодняшней её можно не записывать.
Итог: