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