Подбор товаров, переданных на ответственное хранение / Модуль менеджера

файл
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

#Область ПрограммныйИнтерфейс

//Возвращает текст запроса переданных товаров
//
// Возвращаемое значение:
//  Строка - 
//
Функция ТекстЗапросаТоварыПереданные() Экспорт

	ТекстЗапроса =
	"ВЫБРАТЬ
	|	ТоварыНакладной.НомерСтроки КАК НомерСтроки,
	|	ТоварыНакладной.Номенклатура КАК Номенклатура,
	|	ТоварыНакладной.Характеристика КАК Характеристика,
	|	ТоварыНакладной.Серия КАК Серия,
	|	ТоварыНакладной.Назначение КАК Назначение,
	|	ТоварыНакладной.НомерГТД КАК НомерГТД,
	|	ТоварыНакладной.Количество КАК Количество
	|ПОМЕСТИТЬ ВтТоварыНакладной
	|ИЗ
	|	&Товары КАК ТоварыНакладной
	|;
	|
	|//////////////////////////////////////////////////////////////////////////////// 1
	|ВЫБРАТЬ
	|	МИНИМУМ(ВтТоварыНакладной.НомерСтроки) КАК НомерСтроки,
	|	ВтТоварыНакладной.Номенклатура,
	|	ВтТоварыНакладной.Характеристика,
	|	ВтТоварыНакладной.Серия КАК Серия,
	|	ЛОЖЬ КАК РазныйУчетСерий,
	|	ВтТоварыНакладной.Назначение,
	|	ВтТоварыНакладной.НомерГТД,
	|	СУММА(ВтТоварыНакладной.Количество) КАК Количество
	|ПОМЕСТИТЬ ТоварыНакладной
	|ИЗ
	|	ВтТоварыНакладной КАК ВтТоварыНакладной
	|СГРУППИРОВАТЬ ПО
	|	ВтТоварыНакладной.Номенклатура,
	|	ВтТоварыНакладной.Характеристика,
	|	ВтТоварыНакладной.Серия,
	|	ВтТоварыНакладной.Назначение,
	|	ВтТоварыНакладной.НомерГТД
	|;
	|
	|//////////////////////////////////////////////////////////////////////////////// 2
	|ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	КлючиАналитики.Ссылка КАК Ссылка
	|ПОМЕСТИТЬ КлючиАналитики
	|ИЗ
	|	Справочник.КлючиАналитикиУчетаНоменклатуры КАК КлючиАналитики
	|ГДЕ
	|	КлючиАналитики.МестоХранения = &Договор
	|;
	|
	|//////////////////////////////////////////////////////////////////////////////// 3 - Остатки на дату документа
	|ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	ТоварыПереданныеОстатки.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
	|	ТоварыПереданныеОстатки.НомерГТД КАК НомерГТД,
	|	ТоварыПереданныеОстатки.КоличествоОстаток КАК КоличествоОстаток
	|ПОМЕСТИТЬ ТоварыПереданныеОстаток
	|ИЗ
	|	РегистрНакопления.ТоварыОрганизаций.Остатки(&Период, АналитикаУчетаНоменклатуры В
	|		(ВЫБРАТЬ
	|			КлючиАналитики.Ссылка
	|		ИЗ
	|			КлючиАналитики КАК КлючиАналитики)
	|		И Организация = &Организация) КАК ТоварыПереданныеОстатки
	|;
	|
	|//////////////////////////////////////////////////////////////////////////////// 4 - Текущие остатки
	|ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	ТоварыПереданные.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
	|	ТоварыПереданные.НомерГТД КАК НомерГТД,
	|	ТоварыПереданные.КоличествоОстаток КАК КоличествоОстаток,
	|	ВЫБОР
	|		КОГДА ТоварыПереданные.КоличествоОстаток < 0
	|			ТОГДА -1
	|		ИНАЧЕ 1
	|	КОНЕЦ КАК Знак
	|ПОМЕСТИТЬ ТоварыПереданныеОстатокЗнак
	|ИЗ
	|	РегистрНакопления.ТоварыОрганизаций.Остатки(, АналитикаУчетаНоменклатуры В
	|		(ВЫБРАТЬ
	|			КлючиАналитики.Ссылка
	|		ИЗ
	|			КлючиАналитики КАК КлючиАналитики)
	|	И Организация = &Организация) КАК ТоварыПереданные
	|;
	|
	|
	|//////////////////////////////////////////////////////////////////////////////// 5 - Остатки и количество по регистратору
	|ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	ТоварыПереданные.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
	|	ТоварыПереданные.НомерГТД КАК НомерГТД,
	|	СУММА(ТоварыПереданные.КоличествоОстаток) КАК КоличествоОстаток
	|ПОМЕСТИТЬ ТоварыПереданные
	|ИЗ
	|	(ВЫБРАТЬ
	|		ТоварыПереданные.АналитикаУчетаНоменклатуры,
	|		ТоварыПереданные.НомерГТД,
	|		ВЫБОР
	|			КОГДА ЕСТЬNULL(Остатки.КоличествоОстаток * Остатки.Знак, 0) < ТоварыПереданные.КоличествоОстаток *
	|				ЕСТЬNULL(Остатки.Знак, 1)
	|				ТОГДА ЕСТЬNULL(Остатки.КоличествоОстаток, 0)
	|			ИНАЧЕ ТоварыПереданные.КоличествоОстаток
	|		КОНЕЦ КАК КоличествоОстаток
	|	ИЗ
	|		ТоварыПереданныеОстаток КАК ТоварыПереданные
	|			ЛЕВОЕ СОЕДИНЕНИЕ ТоварыПереданныеОстатокЗнак КАК Остатки
	|			ПО ТоварыПереданные.АналитикаУчетаНоменклатуры = Остатки.АналитикаУчетаНоменклатуры
	|			И ТоварыПереданные.НомерГТД = Остатки.НомерГТД
	|
	|	ОБЪЕДИНИТЬ ВСЕ
	|
	|	ВЫБРАТЬ
	|		ТоварыПереданныеРегистратор.АналитикаУчетаНоменклатуры,
	|		ТоварыПереданныеРегистратор.НомерГТД,
	|		ВЫБОР КОГДА &ХозяйственнаяОперация В (
	|			ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОприходованиеИзлишковТоваровВПользуКомитента),
	|			ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОприходованиеИзлишковТоваровВПользуПоклажедателя)) ТОГДА
	|			- ТоварыПереданныеРегистратор.Количество
	|		КОГДА &ХозяйственнаяОперация В (
	|			ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПересортицаТоваровУХранителя),
	//++ НЕ УТ
	|			ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПересортицаТоваровУПереработчика),
	|			ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПорчаТоваровУПереработчика),
	|			ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПроизводствоУПереработчика2_5),
	//-- НЕ УТ
	|			ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПорчаТоваровУХранителя))
	|			И ТоварыПереданныеРегистратор.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) ТОГДА
	|			- ТоварыПереданныеРегистратор.Количество
	|		ИНАЧЕ
	|			ТоварыПереданныеРегистратор.Количество
	|		КОНЕЦ
	|	ИЗ
	|		РегистрНакопления.ТоварыОрганизаций КАК ТоварыПереданныеРегистратор
	|	ГДЕ
	|		ТоварыПереданныеРегистратор.Регистратор = &Регистратор
	|		И ТоварыПереданныеРегистратор.Активность
	|		И ТоварыПереданныеРегистратор.АналитикаУчетаНоменклатуры В
	|			(ВЫБРАТЬ
	|				КлючиАналитики.Ссылка
	|			ИЗ
	|				КлючиАналитики КАК КлючиАналитики)
	|		И ТоварыПереданныеРегистратор.Организация = &Организация) КАК ТоварыПереданные
	|СГРУППИРОВАТЬ ПО
	|	ТоварыПереданные.АналитикаУчетаНоменклатуры,
	|	ТоварыПереданные.НомерГТД
	|
	|ИМЕЮЩИЕ
	|	СУММА(ТоварыПереданные.КоличествоОстаток) > 0
	|;
	|
	|//////////////////////////////////////////////////////////////////////////////// 6
	|ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	ЕСТЬNULL(КлючиАналитики.Номенклатура, ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)) КАК Номенклатура,
	|	ЕСТЬNULL(КлючиАналитики.Характеристика, ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)) КАК
	|		Характеристика,
	|	ВЫБОР
	|		КОГДА вт_Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
	|			ТОГДА ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
	|		ИНАЧЕ КлючиАналитики.Назначение
	|	КОНЕЦ КАК Назначение,
	|	ЕСТЬNULL(КлючиАналитики.Серия, ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)) КАК Серия,
	|	ТоварыПереданные.НомерГТД КАК НомерГТД,
	|	ТоварыПереданные.НомерГТД.СтранаПроисхождения КАК СтранаПроисхождения,
	|	СУММА(ТоварыПереданные.КоличествоОстаток) КАК КоличествоОстаток
	|ПОМЕСТИТЬ ТоварыПереданныеГруппировка
	|ИЗ
	|	ТоварыПереданные КАК ТоварыПереданные
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлючиАналитикиУчетаНоменклатуры КАК КлючиАналитики
	|		ПО ТоварыПереданные.АналитикаУчетаНоменклатуры = КлючиАналитики.Ссылка
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК вт_Номенклатура
	|		ПО КлючиАналитики.Номенклатура = вт_Номенклатура.Ссылка
	|СГРУППИРОВАТЬ ПО
	|	ЕСТЬNULL(КлючиАналитики.Номенклатура, ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)),
	|	ЕСТЬNULL(КлючиАналитики.Характеристика, ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)),
	|	ВЫБОР
	|		КОГДА вт_Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
	|			ТОГДА ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
	|		ИНАЧЕ КлючиАналитики.Назначение
	|	КОНЕЦ,
	|	ЕСТЬNULL(КлючиАналитики.Серия, ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)),
	|	ТоварыПереданные.НомерГТД,
	|	ТоварыПереданные.НомерГТД.СтранаПроисхождения
	|;
	|
	|//////////////////////////////////////////////////////////////////////////////// 7 Соединение с товарами из накладной
	|ВЫБРАТЬ
	|	ТоварыПереданныеГруппировка.Номенклатура КАК Номенклатура,
	|	ТоварыПереданныеГруппировка.Характеристика КАК Характеристика,
	|	ТоварыПереданныеГруппировка.Назначение КАК Назначение,
	|	ТоварыПереданныеГруппировка.Серия КАК Серия,
	|	ЕСТЬNULL(ТоварыНакладной.РазныйУчетСерий, ЛОЖЬ) КАК РазныйУчетСерий,
	|	ТоварыПереданныеГруппировка.НомерГТД КАК НомерГТД,
	|	ТоварыПереданныеГруппировка.СтранаПроисхождения КАК СтранаПроисхождения,
	|	ТоварыПереданныеГруппировка.КоличествоОстаток КАК КоличествоОстаток,
	|	ТоварыПереданныеГруппировка.КоличествоОстаток - ЕСТЬNULL(ТоварыНакладной.Количество, 0) КАК КоличествоОсталосьПодобрать,
	|	ЕСТЬNULL(ТоварыНакладной.Количество, 0) КАК КоличествоПодобрано,
	|	ЕСТЬNULL(ТоварыНакладной.Количество, 0) КАК КоличествоВНакладной
	|
	|ИЗ
	|	ТоварыПереданныеГруппировка КАК ТоварыПереданныеГруппировка
	|		ЛЕВОЕ СОЕДИНЕНИЕ ТоварыНакладной КАК ТоварыНакладной
	|		ПО ТоварыПереданныеГруппировка.Номенклатура = ТоварыНакладной.Номенклатура
	|		И ТоварыПереданныеГруппировка.Характеристика = ТоварыНакладной.Характеристика
	|		И ТоварыПереданныеГруппировка.Назначение = ТоварыНакладной.Назначение
	|		И ТоварыПереданныеГруппировка.Серия = ТоварыНакладной.Серия
	|		И ТоварыПереданныеГруппировка.НомерГТД = ТоварыНакладной.НомерГТД
	|
	|УПОРЯДОЧИТЬ ПО
	|	ЕСТЬNULL(ТоварыНакладной.НомерСтроки, 99999)
	|";
	
	Возврат ТекстЗапроса;
	
КонецФункции

#КонецОбласти

#КонецЕсли

Связанные материалы