Запрос коммерческих предложений у поставщиков / Ручное описание товара / Модуль формы

файл

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ОК(Команда)
	
	Если ПроверитьЗаполнение() Тогда
		Закрыть(ДанныеВозврата());
	КонецЕсли;
		
КонецПроцедуры

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

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

&НаКлиенте
Процедура ПросмотретьИзображение(Команда)

	ПросмотретьИзображениеОбработчик();
	
КонецПроцедуры

&НаКлиенте
Процедура ОчиститьИзображение(Команда)

	Изображение = Неопределено;
	АдресКартинки = "";
	
	УстановитьДоступностьКомандИзображения();

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервереБезКонтекста
Функция ПолучитьДанныеФайла(ФайлКартинки, ИдентификаторФормы)

	ДополнительныеПараметры = РаботаСФайламиКлиентСервер.ПараметрыДанныхФайла();
	ДополнительныеПараметры.ВызыватьИсключение = Ложь;
	ДополнительныеПараметры.ИдентификаторФормы = ИдентификаторФормы;
	
	Возврат РаботаСФайлами.ДанныеФайла(ФайлКартинки, ИдентификаторФормы);

КонецФункции 

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

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

КонецФункции

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

	Если ТипЗнч(Параметр) <> Тип("Структура") Тогда
		Возврат;	
	КонецЕсли;

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

	СсылкаНаДокумент = Источник;	
	
	ДобавитьИзображениеПослеЗаписиДокумента(Параметр);
		
КонецПроцедуры

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

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

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


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

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