1. yurowski 31 14.05.19 14:56 Сейчас в теме

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

Здравствуйте.
Подписка на событие для документа РТУ.
Нужно получить остатки по рег. Заказы покупателей с учетом движений документа РТУ.

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


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

Вакансии

Руководитель отдела внедрения 1С
Новосибирск
зарплата от 60 000 руб. до 160 000 руб.
Полный день

Ведущий программист 1С
Москва
зарплата от 120 000 руб. до 150 000 руб.
Полный день

Программист 1С
Самара
зарплата от 50 000 руб. до 100 000 руб.
По совместительству


Ведущий программист 1С
Сочи
зарплата от 82 500 руб. до 99 000 руб.
Полный день