Оперативное и неоперативное проведение документов

1. user659168_xec8787 3 25.05.18 13:09 Сейчас в теме
День добрый! Понимаю, что тема сильно избитая, но остается некоторое недопонимание!
Готовлюсь к спецу по различным курсам. Знание черпаю из курсов, статей: https://infostart.ru/public/195591/ , https://infostart.ru/public/144750/
Платформа 8.3.10.2580. База - файловая.
Настройка конфигурации, как указано в https://infostart.ru/public/195591/

Непонятно - почему при повтором оперативном проведении документа в ОбработкеПроведения не происходит очистка РегистраНакопления (Ячейки, Себестоимость), ведь в //1 и //2 указано - Движения.....Очистить() ? Без очистки - неверные значения в таблице итогов - неверен результат запроса //4.
Если же, разкомментировать участок кода - //3, т.е. принудительно запишем пустой набор записей в РегистрНакопления, то очистка происходит, в таблице итогов - верные значения и результат запроса - верен.

Вопрос - так и нужно делать, или как-то по другому?

Имеется обработка проведения (куски):
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
	
	Движения.Ячейки.Записывать = Истина;
//1
	Движения.Ячейки.Очистить();
	Движения.Себестоимость.Записывать = Истина;
//2
	Движения.Себестоимость.Очистить();

//3
	//Если РежимПроведения = РежимПроведенияДокумента.Оперативный Тогда
	//	Движения.Ячейки.Очистить();
	//	Движения.Себестоимость.Очистить();
	//	Движения.Записать();
	
	//	Движения.Себестоимость.Записывать = Истина;
	//	Движения.Ячейки.Записывать = Истина;
	//КонецЕсли;

//4
	Запрос = Новый Запрос;
//запрос к регистру "ячейки" из которого получаем остатки на "МоментИтогов"

	Если РежимПроведения = РежимПроведенияДокумента.Оперативный Тогда
		МоментИтогов = Дата(1,1,1);
	Иначе
		МоментИтогов = МоментВремени(); //без движений самого документа
	КонецЕсли;
	Запрос.УстановитьПараметр("МоментИтогов", МоментИтогов);

	ВыборкаНоменклатура = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

	Пока ВыборкаНоменклатура.Следующий() Цикл
//обработка запроса
	КонецЦикла;

...

Показать


Внесите пожалуйста ясность
По теме из базы знаний
Найденные решения
4. TODD22 18 25.05.18 14:27 Сейчас в теме
(3)Наверное зависит от методики проведения. Если это новая методика, когда с начало пишутся движения, а потом читаются то можно не очищать, на одну запись в базу меньше. Если старая методика, когда нам нужны для проведения данные регистра, а не только данные документа, то надо очистить движения записав пустой набор записей.
Движения.Себестоимость.Очистить();

В управляемых формах движения можно не очищать. Достаточно просто записать движения, будет записан пустой набор.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. TODD22 18 25.05.18 13:13 Сейчас в теме
После очистки движений их записать надо в базу.

Движения.Записать()
или
Движения.Себестоимость.Записать();
3. user659168_xec8787 3 25.05.18 14:20 Сейчас в теме
(2) Получается, что для корректности остатков нужно использовать след. кусок:
//3
Если РежимПроведения = РежимПроведенияДокумента.Оперативный Тогда
Движения.Ячейки.Очистить();
Движения.Себестоимость.Очистить();
Движения.Записать();

Движения.Себестоимость.Записывать = Истина;
Движения.Ячейки.Записывать = Истина;
КонецЕсли;
4. TODD22 18 25.05.18 14:27 Сейчас в теме
(3)Наверное зависит от методики проведения. Если это новая методика, когда с начало пишутся движения, а потом читаются то можно не очищать, на одну запись в базу меньше. Если старая методика, когда нам нужны для проведения данные регистра, а не только данные документа, то надо очистить движения записав пустой набор записей.
Движения.Себестоимость.Очистить();

В управляемых формах движения можно не очищать. Достаточно просто записать движения, будет записан пустой набор.
5. user659168_xec8787 3 25.05.18 14:35 Сейчас в теме
(4)Большое спасибо за пояснения!
Вопрос был по старой методике контроля остатков.
Оставьте свое сообщение

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