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

файл

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

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

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

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

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

	Закрыть(ИнформацияПоЗаказу);
	
КонецПроцедуры

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

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

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

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

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

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

&НаСервере
Процедура ЗаполнитьСписокРаспоряжений()

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

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

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