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