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

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

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

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


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

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

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


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

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

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

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

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

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

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

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

Эта задача не решаема, т.к. этот код делает накопительные движения.
13. Sashares 35 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) Что для тебя значит "перезаполнить"?
Оставьте свое сообщение

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