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

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

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

	//++ Локализация
	ИнтеграцияСМаркетплейсамиСервер.ПриСозданииФормыЭлементаСертификатаНоменклатуры(ЭтотОбъект);
	//-- Локализация

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

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	ОбновитьПредставление();
		
	Если ТекущееИзображение > 0 Тогда
		ОбновитьАдресКартинки(Изображения[ТекущееИзображение - 1].АдресФайлаВХранилище,
								Изображения[ТекущееИзображение - 1].ПриПолученииДанныхКартинкиВозниклаОшибка);

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

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

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

// Обход ошибки платформы 20020193
// Неправильно отображается представление.
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
	Объект.Наименование = Объект.ПредставлениеСертификата;
КонецПроцедуры

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

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

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

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

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

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

&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
	
	// СтандартныеПодсистемы.Свойства
	УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
	// Конец СтандартныеПодсистемы.Свойства
	
КонецПроцедуры

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

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

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

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

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

&НаКлиенте
Процедура НомерПриИзменении(Элемент)
	ОбновитьПредставление(Истина);
	//++ Локализация
	ОбновитьСтатусРосаккредитацииФоновоеЗадание();
	//-- Локализация
КонецПроцедуры

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

&НаКлиенте
Процедура БессрочныйПриИзменении(Элемент)
	
	Если Объект.Бессрочный Тогда
		
		Объект.ДатаОкончанияСрокаДействия = Дата(1, 1, 1);
		Элементы.ДатаОкончанияСрокаДействия.Доступность = Ложь;
		
	Иначе
		Элементы.ДатаОкончанияСрокаДействия.Доступность = Истина;
	КонецЕсли;
	
	//++ Локализация
	ОбновитьПредставление();
	ОбновитьСтатусРосаккредитацииФоновоеЗадание();
	//-- Локализация
	
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура ХарактеристикаПриИзменении(Элемент)
	Элементы.Серия.Доступность = ЗначениеЗаполнено(Номенклатура) И (ЗначениеЗаполнено(Характеристика)
	Или Не ХарактеристикиИспользуются) И СерииИспользуются;
	ПриИзмененииОбластиДействия();
КонецПроцедуры

&НаКлиенте
Процедура СерияПриИзменении(Элемент)
	ПриИзмененииОбластиДействия();
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура ДатаОкончанияСрокаДействияПриИзменении(Элемент)
	
	ОбновитьПредставление();
	
	//++ Локализация
	ОбновитьСтатусРосаккредитацииФоновоеЗадание();
	//-- Локализация
	
КонецПроцедуры

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

&НаКлиенте
Процедура ГиперссылкаНаСертификатРосаккредитацииНажатие(Элемент)
	ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку(Объект.СсылкаНаСертификатРосаккредитации);
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	ОткрытьФорму("Справочник.СертификатыНоменклатуры.Форма.ФормаПодбораОбластиДействияСерия",ПараметрыФормы,,,,, Неопределено, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура СледующиеИзображение(Команда)
	
	Если ТекущееИзображение < ВсегоИзображений Тогда
		ТекущееИзображение = ТекущееИзображение + 1;
		
		ОбновитьАдресКартинки(Изображения[ТекущееИзображение - 1].АдресФайлаВХранилище,
				Изображения[ТекущееИзображение - 1].ПриПолученииДанныхКартинкиВозниклаОшибка);
		
		ОбновитьСчетчикИзображений();
		
		Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
			ПрисоединенныйФайл = Изображения[ТекущееИзображение - 1].Ссылка;
			ОбновитьВидимостьКомандИзображения(ПрисоединенныйФайл);
		КонецЕсли;

	КонецЕсли;	
	
КонецПроцедуры

&НаКлиенте
Процедура ПредыдущееИзображение(Команда)
	
	Если ТекущееИзображение > 1 Тогда
		ТекущееИзображение = ТекущееИзображение - 1;
		
		ОбновитьАдресКартинки(Изображения[ТекущееИзображение - 1].АдресФайлаВХранилище,
				Изображения[ТекущееИзображение - 1].ПриПолученииДанныхКартинкиВозниклаОшибка);
				
		ОбновитьСчетчикИзображений();
		
		Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
			ПрисоединенныйФайл = Изображения[ТекущееИзображение - 1].Ссылка;
			ОбновитьВидимостьКомандИзображения(ПрисоединенныйФайл);
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ДобавитьИзображение(Команда)
	
	ПриДобавленииИзображения();
	
КонецПроцедуры

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

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

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

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

&НаКлиенте
Процедура ОбновитьСтатусРосаккредитации(Команда)
	//++ Локализация
	ОбновитьСтатусРосаккредитацииФоновоеЗадание();
	//-- Локализация
КонецПроцедуры

&НаКлиенте
Процедура РаскрытьГруппуРосаккредитация(Команда)
	//++ Локализация
	Элементы.ГруппаРосаккредитацияСворачиваемая.Видимость = Не Элементы.ГруппаРосаккредитацияСворачиваемая.Видимость;
	Если Элементы.ГруппаРосаккредитацияСворачиваемая.Видимость Тогда
		ОбновитьСтатусРосаккредитацииФоновоеЗадание();
	КонецЕсли;
	//-- Локализация
КонецПроцедуры

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

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

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

// СтандартныеПодсистемы.Свойства

&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
	
	УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
	УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры

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

// Конец СтандартныеПодсистемы.Свойства

&НаСервере
Процедура УстановитьУсловноеОформление()

	УсловноеОформление.Элементы.Очистить();

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОбластьДействияХарактеристика.Имя);

	ГруппаОтбораИ = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
	ГруппаОтбораИ.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
	
	ОтборЭлемента = ГруппаОтбораИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОбластьДействия.ВидНоменклатуры");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;

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

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОбластьДействияХарактеристика.Имя);

	ГруппаОтбораИ = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
	ГруппаОтбораИ.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
	
	ОтборЭлемента = ГруппаОтбораИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОбластьДействия.Характеристика");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;

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

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОбластьДействияСерия.Имя);

	ГруппаОтбораИ = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
	ГруппаОтбораИ.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
	
	ОтборЭлемента = ГруппаОтбораИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОбластьДействия.ВидНоменклатуры");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;

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

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОбластьДействияСерия.Имя);

	ГруппаОтбораИ = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
	ГруппаОтбораИ.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
	
	ОтборЭлемента = ГруппаОтбораИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОбластьДействия.ВидНоменклатуры");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;

	ОтборЭлемента = ГруппаОтбораИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОбластьДействия.СерииИспользуются");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
	ОтборЭлемента.ПравоеЗначение = Истина;
	
	ОтборЭлемента = ГруппаОтбораИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОбластьДействия.Серия");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;

	Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаОтмененнойСтрокиДокумента);
	Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<для всех серий>'"));

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОбластьДействияНоменклатура.Имя);

	ГруппаОтбораИ = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
	ГруппаОтбораИ.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
	
	ОтборЭлемента = ГруппаОтбораИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОбластьДействия.ВидНоменклатуры");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
	
	ОтборЭлемента = ГруппаОтбораИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОбластьДействия.Номенклатура");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;

	Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаОтмененнойСтрокиДокумента);
	Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<для всей номенклатуры>'"));

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОбластьДействияХарактеристика.Имя);

	ГруппаОтбораИЛИ = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
	ГруппаОтбораИЛИ.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИЛИ;
	
	ОтборЭлемента = ГруппаОтбораИЛИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОбластьДействия.ВидНоменклатуры");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
	
	ОтборЭлемента = ГруппаОтбораИЛИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОбластьДействия.Номенклатура");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;

	Элемент.Оформление.УстановитьЗначениеПараметра("Доступность", Ложь);
	
	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОбластьДействияСерия.Имя);

	ГруппаОтбораИЛИ = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
	ГруппаОтбораИЛИ.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИЛИ;
	
	ОтборЭлемента = ГруппаОтбораИЛИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОбластьДействия.ВидНоменклатуры");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
	
	ОтборЭлемента = ГруппаОтбораИЛИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОбластьДействия.Номенклатура");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;

	ГруппаОтбораИ = ГруппаОтбораИЛИ.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
	ГруппаОтбораИ.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
	
	ОтборЭлемента = ГруппаОтбораИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОбластьДействия.Характеристика");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;

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

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

&НаСервере
Процедура ОбновитьТаблицуИзображений()
	
	СформироватьТаблицуИзображений();
	
	Если ВсегоИзображений > 0 Тогда
		ПрисоединенныйФайл = Изображения[ТекущееИзображение - 1].Ссылка;
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

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

	Если ИзменятьПредставление Тогда
		Объект.ПредставлениеСертификата = ПредставлениеСертификата;
	КонецЕсли;
	
	//++ Локализация
	УстановитьВидимостьДоступностьРосаккредитации();
	ОбновитьТекстыРосаккредитации();
	//-- Локализация
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// Параметры:
// 	ПараметрыВыбора - Структура:
// 		* Область - Строка
&НаКлиенте
Процедура ПодборОбластиДействия(ПараметрыВыбора)
	
	Если ПараметрыВыбора.Область = "ВидНоменклатуры" Тогда
		
		НоваяСтрокаОбластиДействия = ОбластьДействия.Добавить();
		НоваяСтрокаОбластиДействия.ВидНоменклатуры = ПараметрыВыбора.ВидНоменклатуры;
		НоваяСтрокаОбластиДействия.СерииИспользуются = ПараметрыВыбора.СерииИспользуются;
		
	ИначеЕсли ПараметрыВыбора.Область = "Номенклатура" Тогда	
		
		НоваяСтрокаОбластиДействия = ОбластьДействия.Добавить();
		НоваяСтрокаОбластиДействия.ВидНоменклатуры = ПараметрыВыбора.ВидНоменклатуры;
		НоваяСтрокаОбластиДействия.Номенклатура = ПараметрыВыбора.Номенклатура;
		НоваяСтрокаОбластиДействия.ХарактеристикиИспользуются = ПараметрыВыбора.ХарактеристикиИспользуются;
		НоваяСтрокаОбластиДействия.СерииИспользуются = ПараметрыВыбора.СерииИспользуются;
		
	ИначеЕсли ПараметрыВыбора.Область = "Характеристика" Тогда	
		
		НоваяСтрокаОбластиДействия = ОбластьДействия.Добавить();
		НоваяСтрокаОбластиДействия.ВидНоменклатуры = ПараметрыВыбора.ВидНоменклатуры;
		НоваяСтрокаОбластиДействия.Номенклатура = ПараметрыВыбора.Номенклатура;
		НоваяСтрокаОбластиДействия.Характеристика = ПараметрыВыбора.Характеристика;
		НоваяСтрокаОбластиДействия.ХарактеристикиИспользуются = ПараметрыВыбора.ХарактеристикиИспользуются;
		НоваяСтрокаОбластиДействия.СерииИспользуются = ПараметрыВыбора.СерииИспользуются;

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

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

&НаКлиенте
Процедура ДобавитьТоварыПоОтборуЗавершение(АдресВоВременномХранилище, ДополнительныеПараметры) Экспорт
	
	Если ЗначениеЗаполнено(АдресВоВременномХранилище) Тогда
		ДобавитьТоварыПоОтборуНаСервере(АдресВоВременномХранилище);
	КонецЕсли;
	
КонецПроцедуры

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

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

	КонецЦикла;
		
КонецПроцедуры

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

#Область РаботаСИзображениями

&НаКлиенте
Процедура ОбновитьСчетчикИзображений()
	
	ТекстДекорации = НСтр("ru='%ТекущееИзображение% из %ВсегоИзображений%'");
	ТекстДекорации = СтрЗаменить(ТекстДекорации, "%ТекущееИзображение%",	ТекущееИзображение);
	ТекстДекорации = СтрЗаменить(ТекстДекорации, "%ВсегоИзображений%",		ВсегоИзображений);
	
	СчетчикИзображений = ТекстДекорации;
	
КонецПроцедуры

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

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

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

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

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

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

&НаСервере
Процедура УстановитьПометкуУдаленияИзображения(ПрисоединенныйФайлСсылка, Пометка)
	
	ПрисоединенныйФайлОбъект = ПрисоединенныйФайлСсылка.ПолучитьОбъект();
	ПрисоединенныйФайлОбъект.УстановитьПометкуУдаления(Пометка);
	ПрисоединенныйФайлОбъект.Записать();
	
КонецПроцедуры

&НаСервере
Процедура УстановитьПометкуУдаленияДляДобавленныхИзображений()

	Для Каждого Изображение Из ИзображенияПомеченныеНаУдаление Цикл
		Если Не Изображение.Пометка Тогда
			УстановитьПометкуУдаленияИзображения(Изображение.Ссылка,Истина);	
		КонецЕсли;	
	КонецЦикла;
	
КонецПроцедуры

&НаКлиенте
Процедура ОбработатьЗаписиФайла(ИмяСобытия, Параметр, Источник)
	
	Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
		Возврат;
	КонецЕсли;
	
	Если ТипЗнч(Источник) = Тип("Массив")
		И Источник.Количество() > 0 Тогда
		
		СсылкаНаФайл = Источник[0];
		
	Иначе
		СсылкаНаФайл = Источник;
	КонецЕсли;
	
	Если ТипЗнч(СсылкаНаФайл) = Тип("СправочникСсылка.СертификатыНоменклатурыПрисоединенныеФайлы") Тогда
		
		Если ТекущееИзображение > 0 Тогда
			
			ОтборСтрок = Новый Структура("Ссылка", СсылкаНаФайл);
			СтрокиИзображений = Изображения.НайтиСтроки(ОтборСтрок);
			
			Если СтрокиИзображений.Количество() > 0 Тогда
				АктуализироватьИзображенияСертификата();
				
				Возврат;
			КонецЕсли;
			
		КонецЕсли;
		
		РеквизитыФайла = РеквизитыИзображения(СсылкаНаФайл);
		
		Если РеквизитыФайла.ВладелецФайла <> Объект.Ссылка Тогда
			Возврат;
		КонецЕсли;
		
		Модифицированность = Истина;
		
		НовоеИзображение = Изображения.Вставить(ВсегоИзображений);
		ЗаполнитьЗначенияСвойств(НовоеИзображение, РеквизитыФайла);
		
		НовоеИзображение.Ссылка = СсылкаНаФайл;
		ОбновитьАдресКартинки(РеквизитыФайла.АдресФайлаВХранилище,
								РеквизитыФайла.ПриПолученииДанныхКартинкиВозниклаОшибка);
		
		ВсегоИзображений	= ВсегоИзображений + 1;
		ТекущееИзображение	= ВсегоИзображений;
		
		ОбновитьСчетчикИзображений();
		
		ПрисоединенныйФайл = Изображения[ТекущееИзображение - 1].Ссылка;
		
		ОбновитьВидимостьКомандИзображения(ПрисоединенныйФайл);
	Иначе
		АктуализироватьИзображенияСертификата();
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура АктуализироватьИзображенияСертификата()
	
	Модифицированность = Истина;
	
	АктуализироватьИзображенияСертификатаСервер();
	
	Если ВсегоИзображений = 0 Тогда
		ОбновитьАдресКартинки("", Ложь);
	Иначе
		ОбновитьАдресКартинки(Изображения[ТекущееИзображение - 1].АдресФайлаВХранилище,
								Изображения[ТекущееИзображение - 1].ПриПолученииДанныхКартинкиВозниклаОшибка);
	КонецЕсли;
	
КонецПроцедуры

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

&НаКлиенте
Процедура ОбновитьВидимостьКомандИзображения(ФайлСсылка)
	
	Если ЗначениеЗаполнено(ФайлСсылка) Тогда
		Результат = РаботаСФайламиКлиент.ДанныеФайла(ФайлСсылка);
		Расширение = Результат.Расширение;
		Если Расширение <> "bpm" И Расширение <> "dib" И Расширение <> "emf" И Расширение <> "gif" 
			И Расширение <> "ico" И Расширение <> "jpeg" И Расширение <> "jpg" И Расширение <> "png" 
			И Расширение <> "svg" И Расширение <> "tif" И Расширение <> "wmf" Тогда
			Элементы.ПодменюПечать.Видимость = Ложь;
		Иначе
			Элементы.ПодменюПечать.Видимость = Истина;
		КонецЕсли; 
	Иначе
		Элементы.ПодменюПечать.Видимость = Истина;
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

//++ Локализация
#Область Росаккредитация

&НаКлиенте
Процедура ОбновитьСтатусРосаккредитацииФоновоеЗадание()
	Если ИТСПодключен Тогда
		ОбновитьСтатусРосаккредитацииНаСервере();
		ПодключитьОбработчикОповещенияСтатусРосаккредитации(); 
	КонецЕсли;
КонецПроцедуры

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

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

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

&НаСервере
Процедура УстановитьТекстРосаккредитацияДетальнаяИнформация(ДетальнаяИнформация = Неопределено)
	
	ШаблонПереносСтроки = Символы.ПС;
	ШаблонИдетЗапросИнформации = НСтр("ru='Идет запрос информации...'");
	ШаблонНеНайдено = НСтр("ru='<b>Не найдено.</b>'");
	ШаблонНетИнформации = НСтр("ru='<b>Нет информации.</b>'");
	ШаблонСтатус = НСтр("ru='<b>Статус:</b> %1'");
	ШаблонИзготовитель = НСтр("ru='<b>Изготовитель:</b> %1'");
	ШаблонПродукция = НСтр("ru='<b>Продукция:</b> %1'");
	ШаблонЗаявитель= НСтр("ru='<b>Заявитель:</b> %1'");
	ШаблонТехническиеРегламенты = НСтр("ru='<b>Технические регламенты:</b> %1'");
	ШаблонКодыТНВЭД = НСтр("ru='<b>Коды ТН ВЭД:</b> %1'");
	ШаблонШтрихкоды = НСтр("ru='<b>Штрихкоды (GTIN):</b> %1'");
	ШаблонСтрокаСОтступом = НСтр("ru = '%1'") + Символы.ПС;
	
	НаборИнформации = Новый Массив();
	Если ДетальнаяИнформация = Неопределено Тогда
		НаборИнформации.Добавить(СтроковыеФункции.ФорматированнаяСтрока(ШаблонИдетЗапросИнформации));
	ИначеЕсли Не ПустаяСтрока(ДетальнаяИнформация.ТекстОшибки) Тогда
		НаборИнформации.Добавить(СтроковыеФункции.ФорматированнаяСтрока(ШаблонНеНайдено));
	Иначе
		
		Производители = Новый Массив();
		Для Каждого Изготовитель Из ДетальнаяИнформация.НаименованиеИзготовителя Цикл
			Производители.Добавить(СтрШаблон(ШаблонСтрокаСОтступом, Изготовитель));
		КонецЦикла;
		
		ТехническиеРегламенты = Новый Массив();
		Для Каждого ТехническийРегламент Из ДетальнаяИнформация.ТехническиеРегламенты Цикл
			ТехническиеРегламенты.Добавить(СтрШаблон(ШаблонСтрокаСОтступом, ТехническийРегламент));
		КонецЦикла;
		
		ТНВЭД = Новый Массив();
		Для Каждого СтрокаТНВЭД Из ДетальнаяИнформация.ТНВЭД Цикл
			Если ЗначениеЗаполнено(СокрЛП(СтрокаТНВЭД)) Тогда
				ТНВЭД.Добавить(СтрШаблон(ШаблонСтрокаСОтступом, СтрокаТНВЭД));
			КонецЕсли;
		КонецЦикла;
		
		Штрихкоды = Новый Массив();
		Для Каждого Штрихкод Из ДетальнаяИнформация.Штрихкоды Цикл
			Если ЗначениеЗаполнено(СокрЛП(Штрихкод)) Тогда
				Штрихкоды.Добавить(СтрШаблон(ШаблонСтрокаСОтступом, Штрихкод));
			КонецЕсли;
		КонецЦикла;
		
		СтатусСтрокой = Строка(Объект.СтатусРосаккредитации);
		Если ПустаяСтрока(СтатусСтрокой) Тогда
			СтатусСтрокой = ШаблонНетИнформации;
		КонецЕсли;
		
		НаборИнформации.Добавить(СтроковыеФункции.ФорматированнаяСтрока(
			ШаблонСтатус, СтатусСтрокой));
		НаборИнформации.Добавить(ШаблонПереносСтроки);
		НаборИнформации.Добавить(СтроковыеФункции.ФорматированнаяСтрока(
			ШаблонИзготовитель, СтрСоединить(Производители)));
		НаборИнформации.Добавить(ШаблонПереносСтроки);
		НаборИнформации.Добавить(СтроковыеФункции.ФорматированнаяСтрока(
			ШаблонПродукция, ДетальнаяИнформация.НаименованиеПродукции));
		НаборИнформации.Добавить(ШаблонПереносСтроки);
		НаборИнформации.Добавить(СтроковыеФункции.ФорматированнаяСтрока(
			ШаблонЗаявитель, ДетальнаяИнформация.НаименованиеЗаявителя));
		НаборИнформации.Добавить(ШаблонПереносСтроки);
		НаборИнформации.Добавить(СтроковыеФункции.ФорматированнаяСтрока(
			ШаблонТехническиеРегламенты, ?(ТехническиеРегламенты.Количество() > 0,
				СтрСоединить(ТехническиеРегламенты),
				ШаблонНетИнформации)));
		НаборИнформации.Добавить(ШаблонПереносСтроки);
		НаборИнформации.Добавить(СтроковыеФункции.ФорматированнаяСтрока(
			ШаблонКодыТНВЭД, ?(ТНВЭД.Количество() > 0,
				СтрСоединить(ТНВЭД),
				ШаблонНетИнформации)));
		НаборИнформации.Добавить(ШаблонПереносСтроки);
		НаборИнформации.Добавить(СтроковыеФункции.ФорматированнаяСтрока(
			ШаблонШтрихкоды, ?(Штрихкоды.Количество() > 0,
				СтрСоединить(Штрихкоды),
				ШаблонНетИнформации)));
		
	КонецЕсли;		
	РосаккредитацияДетальнаяИнформация.УстановитьФорматированнуюСтроку(Новый ФорматированнаяСтрока(НаборИнформации));
	
КонецПроцедуры

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

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

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

&НаСервере
Процедура ЗаполнитьОбластьДействияНаСервереПоДаннымВременногоХранилища()
	ДанныеДляЗаполнения = ПолучитьИзВременногоХранилища(АдресРезультатаЗаполненияПоДаннымРосаккредитации);
	ЗаполнитьОбластьДействияНаСервереПоДаннымДляЗаполнения(ДанныеДляЗаполнения);
	НоменклатураПриИзмененииСервер();
КонецПроцедуры

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

&НаСервере
Процедура ОбновитьТекстыРосаккредитации()
	
	ШаблонСтатусДействителен = НСтр("ru='<span style=""color: ЦветТекстаУспех; font: ВажнаяНадписьШрифт"">%1</span> (актуально на: %2)'");
	ШаблонСтатусНеДействителен = НСтр("ru='<span style=""color: ЦветШрифтаОшибки; font: ВажнаяНадписьШрифт"">%1</span> (актуально на: %2)'");
	ШаблонСтатусНетИнформации = НСтр("ru='<span style=""font: ВажнаяНадписьШрифт"">Нет информации</span>'");
	
	ДействительныеСтатусыРосаккредитации = НоменклатураКлиентСерверЛокализация.ДействительныеСтатусыРосаккредитации();
	
	ДатаОбновленияСтатусаРосаккредитацииСтрокой = Формат(Объект.ДатаОбновленияСтатусаРосаккредитации, "ДЛФ=D; ДП=-;");
	
	Если Не ЗначениеЗаполнено(Объект.СтатусРосаккредитации) Тогда
		СтатусРосаккредитацияПодробно = СтроковыеФункции.ФорматированнаяСтрока(ШаблонСтатусНетИнформации);
	ИначеЕсли ДействительныеСтатусыРосаккредитации.Найти(Объект.СтатусРосаккредитации) <> Неопределено Тогда
		СтатусРосаккредитацияПодробно = СтроковыеФункции.ФорматированнаяСтрока(ШаблонСтатусДействителен, Объект.СтатусРосаккредитации, ДатаОбновленияСтатусаРосаккредитацииСтрокой);
	Иначе
		СтатусРосаккредитацияПодробно = СтроковыеФункции.ФорматированнаяСтрока(ШаблонСтатусНеДействителен, Объект.СтатусРосаккредитации, ДатаОбновленияСтатусаРосаккредитацииСтрокой);
	КонецЕсли;
	
	ШаблонПерейтиНаСтраницуСертификата = НСтр("ru='перейти на страницу сертификата'");
	ШаблонПерейтиНаСтраницуДекларации = НСтр("ru='перейти на страницу декларации'");
	
	Элементы.ГиперссылкаНаСертификатРосаккредитации.Заголовок = ?(Объект.ТипСертификата = НСтр("ru = 'Сертификат соответствия'"),
																	ШаблонПерейтиНаСтраницуСертификата,
																	ШаблонПерейтиНаСтраницуДекларации);
	
КонецПроцедуры

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

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

#КонецОбласти
//-- Локализация

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

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