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 8 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С НОВОСИБИРСК
Новосибирск
зарплата до 130 000 руб.
Полный день

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



Руководитель проектов 1С
Санкт-Петербург
По совместительству