1. Nysha1210 07.12.18 16:32 Сейчас в теме

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

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

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

Запрос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. user834357 9 08.12.18 07:47 Сейчас в теме
Странновато регистром накопления историю хранить
5. acanta 45 08.12.18 07:53 Сейчас в теме
Какова цель хранения истории изменения заказа клиента? Чтобы что?
6. Nysha1210 10.12.18 12:03 Сейчас в теме
(5)Что бы отследить того, кто откорректировал заказ, так как периодически бывают такие ситуации и потом не совпадают исходные и текущие документы)))

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

Вакансии

Программист 1С
Москва
зарплата от 80 000 руб.
Полный день

Консультант-аналитик 1С
Санкт-Петербург
Полный день

Консультант-аналитик 1С
Москва
зарплата от 120 000 руб. до 120 000 руб.
Полный день

Senior 1C Developer ЛЮБОЙ ГОРОД
Москва
зарплата от 80 000 руб.
Полный день

Удаленный ИТ-журналист
Санкт-Петербург
По совместительству