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

файл

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

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

	Элементы.РасходныеОрдераТранспортноеСредство.Видимость = ОтгрузкаПоЗаданиюНаПеревозку;
	Элементы.РасходныеОрдераЗаданиеНаПеревозкуНомер.Видимость = ОтгрузкаПоЗаданиюНаПеревозку;
	
	ОтборПоРаспоряжениям = "ОрдераПоРаспоряжениям";
	
	ЗаполнитьСписокОрдеров();
КонецПроцедуры

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

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

&НаКлиенте
Процедура ОтборПоРаспоряжениямПриИзменении(Элемент)
	ЗаполнитьСписокОрдеров();
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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