1С 8 3 УТП сохранение истории изменения в табличной части

1. Nysha1210 07.12.18 16:32 Сейчас в теме
Добрый день.
Есть задача - сохранять историю изменений табличной части документа Заказ покупателя.
Как было реализовано - создан регистр накопления, в который записывается содержимое табличной части документа при проведении.

//выгрузка табличной части

Запрос1 = Новый Запрос;
Запрос1.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);
Запрос1.Текст = "ВЫБРАТЬ
| ЗаказПокупателяТовары.НомерСтроки,
| ЗаказПокупателяТовары.Количество,
| ЗаказПокупателяТовары.Номенклатура КАК Товар,
| ЗаказПокупателяТовары.Цена,
| ЗаказПокупателяТовары.Сумма,
| ЗаказПокупателяТовары.СерНомер
|ИЗ
| Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
|ГДЕ
| ЗаказПокупателяТовары.Ссылка = &ТекущийДокумент";

ЗапросТовары = Запрос1.Выполнить().Выгрузить();

//запись данных в регистр

ДатаТек=ТекущаяДата();
Записи = РегистрыНакопления.ЗаказПокТЧ.СоздатьНаборЗаписей();
Записи.Отбор.Регистратор.Установить(Ссылка);
//Записи.Прочитать();

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


//услуги

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

ЗапросУслуги = Запрос2.Выполнить().Выгрузить();
//Записи = РегистрыНакопления.ЗаказПокТЧ.СоздатьНаборЗаписей();

//Записи.Отбор.Регистратор.Установить(Ссылка);

//Записи.Прочитать();

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

ПРОБЛЕМА: Как добавить новые запси в регистр накопления, если, например, у товара изменили цену? Сейчас при таком коде при записи в регистр накопелния старые записи стираются и записываются новые строки с табличной части документа?
+
По теме из базы знаний
Найденные решения
6. Nysha1210 10.12.18 12:03 Сейчас в теме
(5)Что бы отследить того, кто откорректировал заказ, так как периодически бывают такие ситуации и потом не совпадают исходные и текущие документы)))

Данная задача в итоге была реализована на регистрах сведений и отслежены изменения в табличной части путём сравнения таблиц https://infostart.ru/public/326983/. Всем спасибо за помощь. Вопрос снят.
+
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. soft_wind 07.12.18 17:37 Сейчас в теме
А вы пробовали?
Вроде по коду, старые записи, не должны удаляться, т.к. вы задаете Запись.Период = ДатаТек; (надеюсь Период это измерение?)
+
3. Nysha1210 07.12.18 17:52 Сейчас в теме
(2) Период - это Изменение. Это готовый код (((
+
4. Alexei_Siva 182 08.12.18 07:47 Сейчас в теме
Странновато регистром накопления историю хранить
+
5. acanta 08.12.18 07:53 Сейчас в теме
Какова цель хранения истории изменения заказа клиента? Чтобы что?
+
6. Nysha1210 10.12.18 12:03 Сейчас в теме
(5)Что бы отследить того, кто откорректировал заказ, так как периодически бывают такие ситуации и потом не совпадают исходные и текущие документы)))

Данная задача в итоге была реализована на регистрах сведений и отслежены изменения в табличной части путём сравнения таблиц https://infostart.ru/public/326983/. Всем спасибо за помощь. Вопрос снят.
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот