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