Как сформировать новый набор записей и заменить им старый?

1. crog 23.11.23 17:09 Сейчас в теме
Добрый день.

Множаться записи в документе ОперацияБух.

Имеется код:
    ОперацияБухСсылка = ОперацияБух.Ссылка;
    ПредыдущаяОперацияБух = ОперацияБухСсылка.ПолучитьОбъект();
    ПредыдущийНаборПроводок = ПредыдущаяОперацияБух.Движения.Хозрасчетный;
    ПредыдущийНаборПроводок.Прочитать();
    
    Для Каждого ТекущаяСтрока Из РеализацииСНоменклатурой Цикл
        НоваяПроводка = ПредыдущийНаборПроводок.Добавить();
        НоваяПроводка.Активность = Истина;
        НоваяПроводка.Период = ОперацияБП.Дата;
        
        НоваяПроводка.СчетДт = ПланыСчетов.Хозрасчетный.ДоходыПолученныеВСчетБудущихПериодов; // 98.01
        НоваяПроводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты]                = ТекущаяСтрока.Контрагент;
        НоваяПроводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Договоры]                    = ТекущаяСтрока.Договор;
        НоваяПроводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ДоходыБудущихПериодов]    = ТекущаяСтрока.ДБП;
        
        НоваяПроводка.СчетКт = ПланыСчетов.Хозрасчетный.ВыручкаНеЕНВД; // 90.01.1
        НоваяПроводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура]                = ТекущаяСтрока.Номенклатура;
        НоваяПроводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.НоменклатурныеГруппы]        = ТекущаяСтрока.НоменклатурнаяГруппа;
        НоваяПроводка.КоличествоКт                                                                            = ТекущаяСтрока.Количество;
        НоваяПроводка.Сумма                                                                                    = ТекущаяСтрока.Сумма;
        
        СуммаОперации = СуммаОперации + ТекущаяСтрока.Сумма;
    КонецЦикла;

Показать


где, РеализацииСНоменклатурой - таблица значений с новыми записями.

При новом проведении документа, количество записей увеличивается на количество записей в таблице значений РеализацииСНоменклатурой.

Как новым сформированным набором записей заменить старый, чтобы не множились? Т.е. требуется перезаполнить ОперацияБух.
По теме из базы знаний
Найденные решения
13. Sashares 33 24.11.23 18:24 Сейчас в теме
(12)Данный код должен вызываться единоразово для документа, чтобы не обрабатывать повторно те документы, которые уже обработаны ранее.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Sashares 33 23.11.23 17:30 Сейчас в теме
(1) Удалить эту строку
ПредыдущийНаборПроводок.Прочитать();
3. crog 23.11.23 17:58 Сейчас в теме
(2)
ПредыдущийНаборПроводок.Прочитать();


Тогда не добавляет новые записи, которые должны заноситься циклом.
4. Sashares 33 23.11.23 18:17 Сейчас в теме
5. crog 23.11.23 18:24 Сейчас в теме
(4) Что Вы имели ввиду под "как связано?"?
6. user1880116 23.11.23 18:26 Сейчас в теме
(5) Что в твоей терминологии означает "требуется перезаполнить ОперацияБух."?
8. Sashares 33 23.11.23 20:04 Сейчас в теме
(5)Строка кода
ПредыдущийНаборПроводок.Прочитать();

читает из базы ранее сформированные движения этого документа.
Как связано то, что вы не будете читать ранее сформирвоанные движения документа с тем, что не добавляются новые записи?
9. crog 24.11.23 09:23 Сейчас в теме
(8)
(8)
читает из базы ранее сформированные движения этого документа

Вот к этим, ранее сформированным движениям, мне необходимо добавить те, записи которые находятся, в таблице значений РеализацииСНоменклатурой.
И они добавляются.

Но, при очередном проведении ОперацииБух, к уже существующим добавляются новые записи.
И таким образом записи начинают множиться.

Важно (не захватил в этот код строчку после цикла)
ПредыдущийНаборПроводок.Записать(Истина);

Эта строка должна, перед записью, существующие записи удалить.
Но этого не происходит.
10. Sashares 33 24.11.23 11:54 Сейчас в теме
(9) А вы где этот код разместили?
По логике работы данного кода, это должна быть какая-то обработка, при выполнении команды в которой происходит дополнение проводок.

Если вы это сделали в модуле объекта документа ОперацияБух, то напрасно.

"Проведение" документа ОперацияБух как связано с данным кодом?
12. crog 24.11.23 18:14 Сейчас в теме
(10) Нет, конечно же это не в модуле объекта ОперацияБух.

Эта задача не решаема, т.к. этот код делает накопительные движения.
13. Sashares 33 24.11.23 18:24 Сейчас в теме
(12)Данный код должен вызываться единоразово для документа, чтобы не обрабатывать повторно те документы, которые уже обработаны ранее.
14. crog 24.11.23 18:26 Сейчас в теме
(13) Да, верно. При повторном запуске - информация будет накапливаться.
11. user1992985 24.11.23 13:14 Сейчас в теме
(9) Чуви, что для тебя значит "перезаполнить"?

Ты понимаешь, что ты всегда читаешь все существующие записи из базы, добавляешь к ним свои новые и записываешь все обратно - и прочитанные существующие и новые добавленные? Естественно, при следующем чтении ты получишь эти "старые" записи, ты же их туда сам и пишешь.
7. user1936667 23.11.23 18:46 Сейчас в теме
(1) Что для тебя значит "перезаполнить"?
Оставьте свое сообщение

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