Корректировка назначения товаров / Выбор назначения / Модуль формы

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	Если ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоОрганизаций") Тогда
		Организация = Параметры.Организация;
	КонецЕсли;
	
	МогутБытьНазначенияБезЗаказа = Документы.КорректировкаНазначенияТоваров.ДопустимыНазначенияБезЗаказа();
	
	ИспользоватьУчетЗатратПоНаправлениямДеятельности = ПолучитьФункциональнуюОпцию("ИспользоватьУчетЗатратПоНаправлениямДеятельности");
	
	ТолькоЗаказыОрганизации = ЗначениеЗаполнено(Организация)
		И ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоОрганизаций");
	Элементы.ТолькоЗаказыОрганизации.Видимость = ТолькоЗаказыОрганизации;
	Элементы.ТолькоЗаказыОрганизации.Заголовок = СтрЗаменить(НСтр("ru = 'Только заказы организации ""%1""'"), "%1", Организация);
	
	Элементы.НаправлениеДеятельности.Видимость = ИспользоватьУчетЗатратПоНаправлениямДеятельности;
	Если МогутБытьНазначенияБезЗаказа Тогда
		Заголовок = НСтр("ru = 'Выбор назначения'");
	Иначе
		Заголовок = НСтр("ru = 'Выбор заказа'");
	КонецЕсли;
	
	ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, "Организация", Организация,,, ТолькоЗаказыОрганизации);
	
	ТекстЗапроса =
		"ВЫБРАТЬ
		|	ВсеНазначения.Ссылка КАК Ссылка,
		|	ВсеНазначения.Заказ КАК Заказ,
		|	ВЫБОР
		|		КОГДА РеестрДокументов.Ссылка ЕСТЬ NULL
		|			ТОГДА
		|				ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)
		|		ИНАЧЕ РеестрДокументов.Организация
		|	КОНЕЦ КАК Организация,
		|	ВЫБОР
		|		КОГДА РеестрДокументов.Ссылка ЕСТЬ NULL
		|			ТОГДА
		|				ВЫРАЗИТЬ("""" КАК СТРОКА(50))
		|		ИНАЧЕ ВЫРАЗИТЬ(РеестрДокументов.Комментарий КАК СТРОКА(50))
		|	КОНЕЦ КАК Комментарий,
		|	ВсеНазначения.НаправлениеДеятельности КАК НаправлениеДеятельности,
		|	ВсеНазначения.Партнер КАК Партнер,
		|	ВсеНазначения.Договор КАК Договор,
		|	ВЫБОР
		|		КОГДА ВсеНазначения.НаправлениеДеятельности = ЗНАЧЕНИЕ(Справочник.НаправленияДеятельности.ПустаяСсылка)
		|			ТОГДА
		|				ИСТИНА
		|		ИНАЧЕ ЛОЖЬ
		|	КОНЕЦ КАК БезНаправленияДеятельности,
		|	ВЫБОР
		|		КОГДА ВсеНазначения.Заказ = Неопределено
		|			ТОГДА
		|				ИСТИНА
		|		ИНАЧЕ ЛОЖЬ
		|	КОНЕЦ КАК БезЗаказа,
		|	ВЫБОР
		|		КОГДА ВсеНазначения.Партнер = ЗНАЧЕНИЕ(Справочник.Партнеры.ПустаяСсылка)
		|			ТОГДА
		|				ИСТИНА
		|		ИНАЧЕ ЛОЖЬ
		|	КОНЕЦ КАК БезПартнера,
		|	ВЫБОР
		|		КОГДА ВсеНазначения.Договор = ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)
		|			ТОГДА
		|				ИСТИНА
		|		ИНАЧЕ ЛОЖЬ
		|	КОНЕЦ КАК БезДоговора
		|ИЗ
		|	Справочник.Назначения КАК ВсеНазначения
		|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РеестрДокументов КАК РеестрДокументов
		|		ПО ВсеНазначения.Заказ = РеестрДокументов.Ссылка
		|			И (РеестрДокументов.ДополнительнаяЗапись = ЛОЖЬ)
		|ГДЕ
		|	НЕ ВсеНазначения.ПометкаУдаления
		|	И ЕСТЬNULL(ВсеНазначения.НаправлениеДеятельности.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыНаправленияДеятельности.Используется), ИСТИНА)
		|	И &ОтображатьПереработчиков";
		
	ОтображатьПереработчиков = "ИСТИНА";
	//++ НЕ УТ

	//++ Устарело_Переработка24
	Если Не ПолучитьФункциональнуюОпцию("ИспользоватьПроизводствоНаСтороне") Тогда
	//-- Устарело_Переработка24
		ОтображатьПереработчиков =
		"НЕ(ВсеНазначения.ТипНазначения = ЗНАЧЕНИЕ(Перечисление.ТипыНазначений.Собственное)
		|	И НЕ ВсеНазначения.Партнер = ЗНАЧЕНИЕ(Справочник.Партнеры.ПустаяСсылка)
		|	И НЕ ВсеНазначения.Договор = ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка))";
	//++ Устарело_Переработка24
	КонецЕсли;
	//-- Устарело_Переработка24

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

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

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

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

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

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

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

&НаСервере
Процедура УстановитьВидимостьКолонокДинамическогоСпискаПоФункциональнымОпциям()
	
	Если Не ПолучитьФункциональнуюОпцию("УправлениеПредприятием")
		Или (Истина
			//++ НЕ УТ
			
			//++ Устарело_Переработка24
			И Не ПолучитьФункциональнуюОпцию("ИспользоватьПроизводствоНаСтороне")
			//-- Устарело_Переработка24
			И Не ПолучитьФункциональнуюОпцию("ИспользоватьПроизводствоНаСтороне2_5")
			//-- НЕ УТ
			
			И Истина) Тогда
		
		Элементы.Партнер.Видимость = Ложь;
		Элементы.Договор.Видимость = Ложь;
		
	КонецЕсли;
	
КонецПроцедуры

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

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