Сертификаты номенклатуры / Форма списка / Модуль формы

файл

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

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

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

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

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

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

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

&НаКлиенте
Процедура НоменклатураОтборПриИзменении(Элемент)
	
	УстановитьОтборыПриИзмененииНоменклатуры();
	
КонецПроцедуры

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

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

КонецПроцедуры

&НаКлиенте
Процедура ТолькоДействующиеНаДатуПриИзменении(Элемент)
	
	Если ТолькоДействующиеНаДату Тогда
		Элементы.Дата.Доступность = Истина;
	Иначе
		Элементы.Дата.Доступность = Ложь;
	КонецЕсли;
	
	УстановитьОтборПоТолькоДействующимНаДату();
	
КонецПроцедуры

&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
	
	УстановитьОтборПоТолькоДействующимНаДату();
	
КонецПроцедуры

&НаКлиенте
Процедура ПриИзмененииРеквизитаФормы(Элемент)
	
	НоменклатураКлиентЛокализация.ПриИзмененииРеквизита_СертификатыНоменклатуры_ФормаСписка(Элемент, ЭтотОбъект);
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура СертификатыНоменклатурыПриАктивизацииСтроки(Элемент)
	
	ПодключитьОбработчикОжидания("СертификатыНоменклатурыАктивизацияСтроки", 0.1, Истина);
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
	
КонецПроцедуры

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

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

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

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

&НаКлиенте
Процедура ОбластьДействияВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
КонецПроцедуры

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ВыполнитьКомандуФормы(Команда)
	
	НоменклатураКлиентЛокализация.ВыполнитьКоманду_СертификатыНоменклатуры_ФормаСписка(Команда, ЭтотОбъект);
	
КонецПроцедуры

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

// ИнтеграцияС1СДокументооборотом
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
	
	ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(Команда, ЭтотОбъект, Элементы.Список);
	
КонецПроцедуры
// Конец ИнтеграцияС1СДокументооборотом

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

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

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

&НаСервереБезКонтекста
Функция СформироватьСписокВыбораТиповСертификатов()
	
	Возврат Справочники.СертификатыНоменклатуры.СформироватьСписокВыбораТиповСертификатов();
	
КонецФункции

&НаСервере
Функция ВидНоменклатуры(Номенклатура)
	
	Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Номенклатура, "ВидНоменклатуры");
	
КонецФункции

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

&НаСервереБезКонтекста
Функция СформироватьСписокТипов(Текст)
	
	Возврат Справочники.СертификатыНоменклатуры.АвтоПодборТиповСертификатов(Текст);
	
КонецФункции

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

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

КонецПроцедуры

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

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

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

// Параметры:
//	ПользовательскиеНастройки - ПользовательскиеНастройкиКомпоновкиДанных - 
//	ИмяНастройки - Строка - 
//	Параметр - Структура - содержит:
//	* Использование - Булево -
//	* Значение - Дата -
//
&НаКлиенте
Процедура УстановитьПараметрПользовательскойНастройки(ПользовательскиеНастройки, ИмяНастройки, Параметр)
	
	ПолеКомпоновкиПараметр = Новый ПараметрКомпоновкиДанных(ИмяНастройки);
	
	Для Каждого Элемент Из ПользовательскиеНастройки.Элементы Цикл
		Если Элемент.Параметр = ПолеКомпоновкиПараметр Тогда
			Элемент.Значение = Параметр.Значение;
			Элемент.Использование = Параметр.Использование;
			
			Прервать;
		КонецЕсли;
	КонецЦикла;
	
КонецПроцедуры

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

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

&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат) Экспорт
	ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Элементы.СертификатыНоменклатуры, Результат);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
	ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Элементы.СертификатыНоменклатуры);
КонецПроцедуры
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

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

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