Расходный ордер на товары / Форма выбора распоряжения на отгрузку / Модуль формы

файл

#Область ОбработчикиСобытийФормы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	// Пропускаем инициализацию, чтобы гарантировать получение формы при передаче параметра "АвтоТест".
	Если Параметры.Свойство("АвтоТест") Тогда
		Возврат;
	КонецЕсли;
	
	СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
	
	Запрос = Новый Запрос;
	Запрос.Текст =
	СкладыСервер.ТекстЗапросаСкладскаяОперацияТипДокумента() + 
	"ВЫБРАТЬ
	|	Остатки.ДокументОтгрузки,
	|	СУММА(Остатки.КОтгрузкеОстаток - Остатки.СобираетсяОстаток - Остатки.СобраноОстаток) КАК КОтгрузке
	|ПОМЕСТИТЬ ДокументыОтгрузки
	|ИЗ
	|	(ВЫБРАТЬ
	|		ТоварыКОтгрузкеОстатки.ДокументОтгрузки КАК ДокументОтгрузки,
	|		ТоварыКОтгрузкеОстатки.КОтгрузкеОстаток КАК КОтгрузкеОстаток,
	|		ТоварыКОтгрузкеОстатки.СобираетсяОстаток КАК СобираетсяОстаток,
	|		ТоварыКОтгрузкеОстатки.СобраноОстаток КАК СобраноОстаток
	|	ИЗ
	|		РегистрНакопления.ТоварыКОтгрузке.Остатки(
	|				,
	|				Номенклатура = &Номенклатура
	|					И Характеристика = &Характеристика
	|					И Назначение = &Назначение
	|					И Серия = &Серия
	|					И Склад = &Склад
	|					И Получатель = &Получатель) КАК ТоварыКОтгрузкеОстатки
	|	
	|	ОБЪЕДИНИТЬ ВСЕ
	|	
	|	ВЫБРАТЬ
	|		ТоварыКОтгрузке.ДокументОтгрузки,
	|		ВЫБОР
	|			КОГДА ТоварыКОтгрузке.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
	|				ТОГДА -ТоварыКОтгрузке.КОтгрузке
	|			ИНАЧЕ ТоварыКОтгрузке.КОтгрузке
	|		КОНЕЦ,
	|		ВЫБОР
	|			КОГДА ТоварыКОтгрузке.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
	|				ТОГДА -ТоварыКОтгрузке.Собирается
	|			ИНАЧЕ ТоварыКОтгрузке.Собирается
	|		КОНЕЦ,
	|		ВЫБОР
	|			КОГДА ТоварыКОтгрузке.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
	|				ТОГДА -ТоварыКОтгрузке.Собрано
	|			ИНАЧЕ ТоварыКОтгрузке.Собрано
	|		КОНЕЦ
	|	ИЗ
	|		РегистрНакопления.ТоварыКОтгрузке КАК ТоварыКОтгрузке
	|	ГДЕ
	|		ТоварыКОтгрузке.Номенклатура = &Номенклатура
	|		И ТоварыКОтгрузке.Характеристика = &Характеристика
	|		И ТоварыКОтгрузке.Назначение = &Назначение
	|		И ТоварыКОтгрузке.Серия = &Серия
	|		И ТоварыКОтгрузке.Склад = &Склад
	|		И ТоварыКОтгрузке.Получатель = &Получатель
	|		И ТоварыКОтгрузке.Регистратор = &Регистратор) КАК Остатки
	|
	|СГРУППИРОВАТЬ ПО
	|	Остатки.ДокументОтгрузки
	|
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ДокументыОтгрузки.ДокументОтгрузки КАК Распоряжение,
	|	ДокументыОтгрузки.КОтгрузке КАК КОтгрузке,
	|	ВЫБОР
	|		КОГДА ДокументыОтгрузки.КОтгрузке = 0
	|			ТОГДА ЛОЖЬ
	|		ИНАЧЕ ИСТИНА
	|	КОНЕЦ КАК ЕстьКОтгрузке
	|ИЗ
	|	ДокументыОтгрузки КАК ДокументыОтгрузки
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ СкладскаяОперацияТипДокумента КАК СкладскаяОперацияТипДокумента
	|		ПО (ТИПЗНАЧЕНИЯ(ДокументыОтгрузки.ДокументОтгрузки) = СкладскаяОперацияТипДокумента.Тип)
	|			И (СкладскаяОперацияТипДокумента.СкладскаяОперация = &СкладскаяОперация)
	|			И (ВЫБОР
	|				КОГДА ДокументыОтгрузки.ДокументОтгрузки ССЫЛКА Документ.ЗаказНаСборку
	|					ТОГДА ВЫРАЗИТЬ(ДокументыОтгрузки.ДокументОтгрузки КАК Документ.ЗаказНаСборку).ХозяйственнаяОперация
	|				КОГДА ДокументыОтгрузки.ДокументОтгрузки ССЫЛКА Документ.СборкаТоваров
	|					ТОГДА ВЫРАЗИТЬ(ДокументыОтгрузки.ДокументОтгрузки КАК Документ.СборкаТоваров).ХозяйственнаяОперация
	|				ИНАЧЕ НЕОПРЕДЕЛЕНО
	|			КОНЕЦ = СкладскаяОперацияТипДокумента.ХозяйственнаяОперация)
	|
	|УПОРЯДОЧИТЬ ПО
	|	КОтгрузке УБЫВ";
	
	ПараметрыЗапроса = Запрос.НайтиПараметры();
	
	Для Каждого СтрМас Из ПараметрыЗапроса Цикл
		Запрос.УстановитьПараметр(СтрМас.Имя, Параметры[СтрМас.Имя]);
	КонецЦикла;
	
	Распоряжения.Загрузить(Запрос.Выполнить().Выгрузить());
	
	ОтборПоОстатку = "ТолькоСОстатками";
	УстановитьОтборПоОстатку();
	
КонецПроцедуры

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

#Область ОбработчикиСобытийЭлементовШапкиФормы

&НаКлиенте
Процедура ОтборПоОстаткуПриИзменении(Элемент)
	УстановитьОтборПоОстатку()
КонецПроцедуры

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

#Область ОбработчикиСобытийЭлементовТаблицыФормыРаспоряжения

&НаКлиенте
Процедура РаспоряженияВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	ТекущиеДанные = Элементы.Распоряжения.ТекущиеДанные;
	ОповеститьОВыборе(ТекущиеДанные.Распоряжение);
КонецПроцедуры

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

#Область ОбработчикиКомандФормы

&НаКлиенте
Процедура Выбрать(Команда)
	ТекущиеДанные = Элементы.Распоряжения.ТекущиеДанные;
	
	Если ТекущиеДанные = Неопределено Тогда
		ТекстПредупрежедения = НСтр("ru = 'Выберите распоряжение.'");
		ПоказатьПредупреждение(,ТекстПредупрежедения);
		Возврат;
	КонецЕсли;
		
	ОповеститьОВыборе(ТекущиеДанные.Распоряжение);
КонецПроцедуры

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

#Область СлужебныеПроцедурыИФункции

&НаСервере
Процедура УстановитьОтборПоОстатку()
	Если ОтборПоОстатку = "Все" Тогда
		Элементы.Распоряжения.ОтборСтрок = Неопределено;
	Иначе
		Элементы.Распоряжения.ОтборСтрок = Новый ФиксированнаяСтруктура("ЕстьКОтгрузке", Истина);
	КонецЕсли;	
КонецПроцедуры

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

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