Задать вопрос
VikaUlshina
@VikaUlshina

Как настроить списание товара по сроку годности в регистре ТоварыНаСкладах?

При таком варианте запроса и последующей его обработкой, списания Количества товара происходят верно, но Партии, Суммы и ГоденДо заполняются не правильно. (см. в скриншоте)
6834c5816c587414205312.png

Как сделать чтобы товар списывался по сериям, сначала товар с ближайшей датой годности, но чтобы при этом партии соответствовали этим списаниям?
Запрос = Новый Запрос;
Запрос.Текст = 
	"ВЫБРАТЬ
	|	РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
	|	СУММА(РеализацияТоваровУслугТовары.Количество) КАК Количество,
	|	РеализацияТоваровУслугТовары.Стоимость КАК Стоимость,
	|	РеализацияТоваровУслугТовары.Цена КАК Цена,
	|	ПоступлениеТоваровТовары.ГоденДо КАК ГоденДо
	|ПОМЕСТИТЬ ВТ_ДокТЧ
	|ИЗ
	|	Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
	|		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваров.Товары КАК ПоступлениеТоваровТовары
	|		ПО РеализацияТоваровУслугТовары.Номенклатура = ПоступлениеТоваровТовары.Номенклатура
	|ГДЕ
	|	РеализацияТоваровУслугТовары.Ссылка = &Ссылка
	|
	|СГРУППИРОВАТЬ ПО
	|	РеализацияТоваровУслугТовары.Номенклатура,
	|	РеализацияТоваровУслугТовары.Стоимость,
	|	РеализацияТоваровУслугТовары.Цена,
	|	ПоступлениеТоваровТовары.ГоденДо
	|
	|ИНДЕКСИРОВАТЬ ПО
	|	Номенклатура
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ВТ_ДокТЧ.Номенклатура КАК Номенклатура,
	|	ВТ_ДокТЧ.Номенклатура.Представление КАК НоменклатураПредставление,
	|	ВТ_ДокТЧ.Количество КАК Количество,
	|	ВТ_ДокТЧ.Стоимость КАК Стоимость,
	|	ВТ_ДокТЧ.Цена КАК Цена,
	|	ВТ_ДокТЧ.ГоденДо КАК ГоденДо,
	|	ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток,
	|	ЕСТЬNULL(ТоварыНаСкладахОстатки.СуммаОстаток, 0) КАК СуммаОстаток,
	|	ТоварыНаСкладахОстатки.Партия КАК Партия
	|ИЗ
	|	ВТ_ДокТЧ КАК ВТ_ДокТЧ
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(
	|				&МоментВремени,
	|				Номенклатура В
	|					(ВЫБРАТЬ РАЗЛИЧНЫЕ
	|						ВТ_ДокТЧ.Номенклатура КАК Номенклатура
	|					ИЗ
	|						ВТ_ДокТЧ КАК ВТ_ДокТЧ)) КАК ТоварыНаСкладахОстатки
	|		ПО ВТ_ДокТЧ.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
	|
	|УПОРЯДОЧИТЬ ПО
	|	ТоварыНаСкладахОстатки.ГоденДо
	|ИТОГИ
	|	МАКСИМУМ(Количество),
	|	МАКСИМУМ(Стоимость),
	|	СУММА(КоличествоОстаток),
	|	СУММА(СуммаОстаток)
	|ПО
	|	Номенклатура";
	    
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.УстановитьПараметр("МоментВремени", МоментВремени());

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

	ВыборкаДетальныеЗаписи = ВыборкаНоменклатура.Выбрать();
	ОсталосьСписать = ВыборкаНоменклатура.Количество;
			
	Пока ВыборкаДетальныеЗаписи.Следующий() И ОсталосьСписать > 0 Цикл
		Движение = Движения.ТоварыНаСкладах.Добавить();
		Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
		Движение.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
		Движение.Партия = ВыборкаДетальныеЗаписи.Партия;
		Движение.ГоденДо = ВыборкаДетальныеЗаписи.ГоденДо; 
		Движение.Период = Дата;
		Движение.Количество = мин(ОсталосьСписать, ВыборкаДетальныеЗаписи.КоличествоОстаток);
					
		Если Движение.Количество = ВыборкаДетальныеЗаписи.КоличествоОстаток Тогда
			Движение.Сумма = ВыборкаДетальныеЗаписи.СуммаОстаток;
		Иначе
			Движение.Сумма = ВыборкаДетальныеЗаписи.СуммаОстаток 
						/ВыборкаДетальныеЗаписи.КоличествоОстаток
						*Движение.Количество;
		КонецЕсли;
		ОсталосьСписать = ОсталосьСписать - Движение.Количество;
	КонецЦикла;
КонецЦикла;
  • Вопрос задан
  • 34 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
fosihas
@fosihas
Автоматизации учета на 1С.
Как сделать чтобы товар списывался по сериям, сначала товар с ближайшей датой годности, но чтобы при этом партии соответствовали этим списаниям?

так то кроме группировке по Товару. Нужно сделать группировку по Серии, а далее по Партии (соотвественно сортировать их).

в вашем цикле, только 1 группировка по товару.
Ответ написан
Fragster
@Fragster
помогло? отметь решением!
Если у партии есть срок годности, то правильно указывать используемую партию вручную в таб части документа, Автоматизировать можно, например через ТСД и штрихкодирование партий (для молока ЧЗ подходит). Автоматическое списание ведет к сюрпризам при инвентаризации и отгрузке клиенту.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы