Подскажите, как посчитать резервы в УНФ

1. XelOla 18 06.10.20 15:58 Сейчас в теме
Здравствуйте!
РН Запасы, образуется три записи при формировании резерва товара.
Когда проводишь Заказ покупателя
Вид движения Приход
реквизит "Регистратор" Заказ покупателя № 1
реквизит "ЗаказПокупателя" Заказ покупателя № 1
соответственно Товар и количество
Вид движения Расход
реквизит "Регистратор" Заказ покупателя № 1
реквизит "ЗаказПокупателя" <пусто>
соответственно Товар и количество
Когда проводишь Реализацию товаров
Вид движения Расход
реквизит "Регистратор" Заказ покупателя № 1
реквизит "ЗаказПокупателя" Заказ покупателя № 1
соответственно Товар и количество


Как найти товар, который зарезервирован?!
соответственно у него будет запись такая
Заказ покупателя
Вид движения Приход
реквизит "Регистратор" Заказ покупателя № N
реквизит "ЗаказПокупателя" Заказ покупателя № N
соответственно Товар и количество
Вид движения Расход
реквизит "Регистратор" Заказ покупателя № N
реквизит "ЗаказПокупателя" <пусто>
соответственно Товар и количество
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. karamazoff 118 06.10.20 16:28 Сейчас в теме
Запросом. Резервы пишутся плюсом в РН Запасы и затраты, вот оттуда и выбирайте остатки в разрезе заказа покупателя со счетом учета "Сырье и материалы" (возможно у вас свой счет учета)
3. XelOla 18 06.10.20 16:35 Сейчас в теме
(2) а если по всем заказам?
с начала времен перебирать?
4. karamazoff 118 06.10.20 16:49 Сейчас в теме
(3)ну и выбирайте по всем где есть остаток
5. XelOla 18 07.10.20 10:04 Сейчас в теме
(4)
ВЫБРАТЬ
	Запасы.Номенклатура КАК Номенклатура,
	Запасы.ЗаказПокупателя КАК ЗаказПокупателя,
	СУММА(ВЫБОР
			КОГДА Запасы.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
					И Запасы.ЗаказПокупателя ССЫЛКА Документ.ЗаказПокупателя
				ТОГДА Запасы.Количество
			КОГДА Запасы.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
					И Запасы.ЗаказПокупателя ССЫЛКА Документ.ЗаказПокупателя
				ТОГДА -Запасы.Количество
			ИНАЧЕ 0
		КОНЕЦ) КАК Резерв
ИЗ
	РегистрНакопления.Запасы КАК Запасы

СГРУППИРОВАТЬ ПО
	Запасы.ЗаказПокупателя,
	Запасы.Номенклатура
Показать




Выводит ВСЕ! в том числе в детальных записях Номенклатура - Пустой Заказ Покупателя - Количество отличное от 0!!!!
Dmitry1002; +1 Ответить
7. Dmitry1002 1 05.07.24 01:01 Сейчас в теме
Немного доработав ваш запрос, сделал механизм зачистки резервов до определенной даты (такая была задача).
Получаем весь приход резервов до этой даты.
Затем получаем расход резервов по текущую дату, т.к. расход мог сформироваться после даты, до которой чистим резервы.
Разница между приходом и расходом резервов - это и есть не закрытые резервы до определенной даты.
ВЫБРАТЬ
	Запасы.ЗаказПокупателя КАК ЗаказПокупателя,
	Запасы.СтруктурнаяЕдиница КАК СтруктурнаяЕдиница,
	Запасы.Номенклатура КАК Номенклатура,
	СУММА(ВЫБОР
			КОГДА Запасы.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
					И Запасы.ЗаказПокупателя ССЫЛКА Документ.ЗаказПокупателя
				ТОГДА Запасы.Количество
			КОГДА Запасы.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
					И Запасы.ЗаказПокупателя ССЫЛКА Документ.ЗаказПокупателя
				ТОГДА -Запасы.Количество
			ИНАЧЕ 0
		КОНЕЦ) КАК Резерв
ПОМЕСТИТЬ Приходы
ИЗ
	РегистрНакопления.Запасы КАК Запасы
ГДЕ
	Запасы.СтруктурнаяЕдиница В(&СтруктурнаяЕдиница)
	И Запасы.Период <= &ДатаДоКоторойЧистимРезервы
	И Запасы.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)

СГРУППИРОВАТЬ ПО
	Запасы.ЗаказПокупателя,
	Запасы.Номенклатура,
	Запасы.СтруктурнаяЕдиница
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	Запасы.ЗаказПокупателя КАК ЗаказПокупателя,
	Запасы.СтруктурнаяЕдиница КАК СтруктурнаяЕдиница,
	Запасы.Номенклатура КАК Номенклатура,
	СУММА(ВЫБОР
			КОГДА Запасы.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
					И Запасы.ЗаказПокупателя ССЫЛКА Документ.ЗаказПокупателя
				ТОГДА Запасы.Количество
			КОГДА Запасы.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
					И Запасы.ЗаказПокупателя ССЫЛКА Документ.ЗаказПокупателя
				ТОГДА -Запасы.Количество
			ИНАЧЕ 0
		КОНЕЦ) КАК Резерв
ПОМЕСТИТЬ Расходы
ИЗ
	РегистрНакопления.Запасы КАК Запасы
ГДЕ
	Запасы.СтруктурнаяЕдиница В(&СтруктурнаяЕдиница)
	И Запасы.Период <= &ТекущаяДата
	И Запасы.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)

СГРУППИРОВАТЬ ПО
	Запасы.ЗаказПокупателя,
	Запасы.Номенклатура,
	Запасы.СтруктурнаяЕдиница
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	Приходы.ЗаказПокупателя КАК ЗаказПокупателя,
	Приходы.СтруктурнаяЕдиница КАК СтруктурнаяЕдиница,
	Приходы.Номенклатура КАК Номенклатура,
	Приходы.Резерв КАК Резерв
ПОМЕСТИТЬ РезервыНеСгруппированная
ИЗ
	Приходы КАК Приходы

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	Расходы.ЗаказПокупателя,
	Расходы.СтруктурнаяЕдиница,
	Расходы.Номенклатура,
	Расходы.Резерв
ИЗ
	Расходы КАК Расходы
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	РезервыНеСгруппированная.ЗаказПокупателя КАК ЗаказПокупателя,
	РезервыНеСгруппированная.СтруктурнаяЕдиница КАК СтруктурнаяЕдиница,
	РезервыНеСгруппированная.Номенклатура КАК Номенклатура,
	СУММА(РезервыНеСгруппированная.Резерв) КАК Резерв
ПОМЕСТИТЬ Резервы
ИЗ
	РезервыНеСгруппированная КАК РезервыНеСгруппированная

СГРУППИРОВАТЬ ПО
	РезервыНеСгруппированная.СтруктурнаяЕдиница,
	РезервыНеСгруппированная.Номенклатура,
	РезервыНеСгруппированная.ЗаказПокупателя
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	Резервы.ЗаказПокупателя КАК ЗаказПокупателя,
	Резервы.ЗаказПокупателя.Организация КАК Организация,
	Резервы.СтруктурнаяЕдиница КАК СтруктурнаяЕдиница,
	Резервы.Номенклатура КАК Номенклатура,
	Резервы.Резерв КАК Резерв
ИЗ
	Резервы КАК Резервы
ГДЕ
	Резервы.Резерв > 0

УПОРЯДОЧИТЬ ПО
	ЗаказПокупателя,
	Организация
Показать


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

Пока Выборка.СледующийПоЗначениюПоля("ЗаказПокупателя") Цикл

	Об = Документы.РезервированиеЗапасов.СоздатьДокумент();
	Об.Дата = Дата(2024,06,20);
	Об.Организация = Выборка.Организация;
	Об.ЗаказПокупателя = Выборка.ЗаказПокупателя;
	Об.Автор = ПараметрыСеанса.ТекущийПользователь;
	Об.ХозяйственнаяОперация = Справочники.ХозяйственныеОперации.РезервированиеЗапасов;
	Об.Комментарий = "Создан автоматически по заявке снятия резервов.";
	
	Пока Выборка.Следующий() Цикл
		
		Стр = Об.Запасы.Добавить();
		Стр.Номенклатура = Выборка.Номенклатура;
		Стр.ЕдиницаИзмерения = Выборка.Номенклатура.ЕдиницаИзмерения;
		Стр.ИсходноеМестоРезерва = Выборка.СтруктурнаяЕдиница;
		Стр.Количество = Выборка.Резерв;
		
	КонецЦикла;
	
	Об.Записать(РежимЗаписиДокумента.Проведение);
		
КонецЦикла;
Показать
6. karamazoff 118 07.10.20 15:01 Сейчас в теме
Вот так попробуйте, только посмотрите какой у вас счет учета при резервировании ставится
ВЫБРАТЬ
	ЗапасыОстатки.СтруктурнаяЕдиница КАК СтруктурнаяЕдиница,
	ЗапасыОстатки.ЗаказПокупателя КАК ЗаказПокупателя,
	ЗапасыОстатки.Номенклатура КАК Номенклатура,
	ЗапасыОстатки.Характеристика КАК Характеристика,
	ЗапасыОстатки.КоличествоОстаток КАК КоличествоОстаток
ИЗ
	РегистрНакопления.Запасы.Остатки(, СчетУчета = &СчетУчета) КАК ЗапасыОстатки
ГДЕ
	НЕ ЗапасыОстатки.ЗаказПокупателя.Номер ЕСТЬ NULL

УПОРЯДОЧИТЬ ПО
	ЗапасыОстатки.ЗаказПокупателя.Дата,
	ЗаказПокупателя
Показать


Если по заказам делается производство, то там посложнее будет, поскольку производство то-же резервирует товар под заказ
Оставьте свое сообщение

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