Запись движений документа для получения остатков с учетом движения

1. yurowski 33 14.05.19 14:56 Сейчас в теме
Здравствуйте.
Подписка на событие для документа РТУ.
Нужно получить остатки по рег. Заказы покупателей с учетом движений документа РТУ.

Корректно ли написать так:
Источник.Движения.Записать();
?


Процедура ПриПроведенииРеализацииТУОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт
	
	Если Отказ Тогда
		Возврат;
	КонецЕсли;
	
	Если Источник.ОбменДанными.Загрузка  Тогда
		Возврат;
	КонецЕсли;
	
	
	Источник.Движения.Записать();
	
	Если ЗначениеЗаполнено(Источник.Сделка) Тогда
		Если ТипЗнч(Источник.Сделка)= Тип("ДокументСсылка.ЗаказПокупателя") Тогда
			
			СуммаЗаказа = Источник.Сделка.СуммаДокумента;
			
			Запрос = Новый Запрос;
			Запрос.Текст = 
			"ВЫБРАТЬ РАЗРЕШЕННЫЕ
			|	ИсточникДанных.Номенклатура КАК Номенклатура,
			|	ИсточникДанных.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
			|	СУММА(ИсточникДанных.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток
			|ИЗ
			|	РегистрНакопления.ЗаказыПокупателей.ОстаткиИОбороты(, , Авто, , ЗаказПокупателя = &ЗаказПокупателя) КАК ИсточникДанных
			|
			|СГРУППИРОВАТЬ ПО
			|	ИсточникДанных.Номенклатура,
			|	ИсточникДанных.ХарактеристикаНоменклатуры
			|ИТОГИ
			|	СУММА(КоличествоКонечныйОстаток)
			|ПО
			|	ОБЩИЕ,
			|	Номенклатура,
			|	ХарактеристикаНоменклатуры";
			Запрос.УстановитьПараметр("ЗаказПокупателя", Источник.Сделка);
			
			Результат = Запрос.Выполнить();
			
			Если Результат.Пустой() Тогда
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. zarankony 305 14.05.19 15:01 Сейчас в теме
При проведении, насколько я знаю, движения уже записаны.
3. yurowski 33 14.05.19 15:06 Сейчас в теме
(2) ну у меня только так получилось. Если самому не записать, то остаток по регистру ещё без движений. Из-за этого и решил спросить у знатоков, ничего критичного в этой строчке.
4. zarankony 305 14.05.19 15:10 Сейчас в теме
(3)А, то есть движения есть, но не записаны. Ну получится 2 раза при вашей реализации запишется... Можно попробовать в транзакции сделать :
1) НачатьТранзакцию();
2) записать и получить остатки;
3) ОтменитьТранзакцию();
5. yurowski 33 14.05.19 15:13 Сейчас в теме
(4) получить данные и сбросить потом? Сейчас проверю свой вариант, вроде не дублирует.
Всё нормально и без транзакции.
Остатки и записи корректны не задвоены.
7. zarankony 305 14.05.19 16:20 Сейчас в теме
(5)они бы-по любому не задвоились, это вопрос количества обращений к SQL
6. alx7304 14.05.19 15:33 Сейчас в теме
Движения.ЗаказыПокупателей.Записать(); не сбрасывает флаги записи и записывает только один регистр, возможно еще флаг этого регистра установил в ложь, после проверки.
Оставьте свое сообщение

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