Внутреннее потребление / Форма выбора распоряжения / Модуль формы

файл

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

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

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

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

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

&НаКлиенте
Процедура Выбрать(Команда)
	
	Если ОбщегоНазначенияУТКлиент.ПроверитьНаличиеВыделенныхВСпискеСтрок(Элементы.Список) Тогда
		Закрыть(Элементы.Список.ТекущиеДанные.Ссылка);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
	
	СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
	
КонецПроцедуры

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

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