Запрос коммерческого предложения от клиента / Форма документа / Модуль формы

файл
#Область ОписаниеПеременных

// ИнтернетПоддержкаПользователей.РаботаСКонтрагентами
&НаКлиенте
Перем ПроверкаКонтрагентовПараметрыОбработчикаОжидания Экспорт;

&НаКлиенте
Перем ФормаДлительнойОперации Экспорт;
// Конец ИнтернетПоддержкаПользователей.РаботаСКонтрагентами

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

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

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

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

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

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

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

	// ЭлектронноеВзаимодействие.ОбменСКонтрагентами
	ПараметрыЭДОПриСоздании = ОбменСКонтрагентами.ПараметрыПриЧтенииНаСервере_ФормаДокумента();
	ПараметрыЭДОПриСоздании.Форма = ЭтотОбъект;
	ПараметрыЭДОПриСоздании.ДокументСсылка = Объект.Ссылка;
	ПараметрыЭДОПриСоздании.МестоРазмещенияКоманд = Элементы.КомандыЭДО;
	ПараметрыЭДОПриСоздании.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
	ПараметрыЭДОПриСоздании.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
	ОбменСКонтрагентами.ПриЧтенииНаСервере_ФормаДокумента(ПараметрыЭДОПриСоздании);
	// Конец ЭлектронноеВзаимодействие.ОбменСКонтрагентами

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	ОткрытьФорму("Обработка.РаботаСФайлами.Форма.ПрисоединенныеФайлы", ПараметрыФормы, УникальныйИдентификатор);
	
КонецПроцедуры

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

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

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

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

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

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

&НаКлиенте
Процедура ТоварыПриАктивизацииСтроки(Элемент)

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура ПроверитьКонтрагентовФоновоеЗадание(ПараметрыФоновогоЗадания) Экспорт
	ПроверкаКонтрагентов.ПроверитьКонтрагентовВДокументеФоновоеЗадание(ЭтотОбъект, ПараметрыФоновогоЗадания);
КонецПроцедуры

// Конец ИнтернетПоддержкаПользователей.РаботаСКонтрагентами

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

// Конец ЭлектронноеВзаимодействие.ОбменСКонтрагентами

&НаКлиенте
Процедура СнятьСРассмотрения(Команда)
	УстановитьПометкуРассмотрения(Истина);
КонецПроцедуры

&НаКлиенте
Процедура КРассмотрению(Команда)
	УстановитьПометкуРассмотрения(Ложь);
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

#Область СтандартныеПодсистемы

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

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

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

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

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

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

#Область ИнициализацияДанныхФормы

&НаСервере
Процедура ПриСозданииЧтенииНаСервере()

	НастройкиУчета = КоммерческиеПредложенияДокументы.НастройкиУчета();
	
	НастроитьЭлементыФормы();
	
КонецПроцедуры

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

#Область УсловноеОформлениеФормы

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

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

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

#Область ДекорацияСоздатьПредложение

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


&НаКлиенте
Процедура ПослеВопросаОСохранении(Результат, ДополнительныеПараметры) Экспорт
	Если Результат <> КодВозвратаДиалога.Да Тогда
		Возврат;
	КонецЕсли;
	
	Если Записать() Тогда
		ОткрытьФормуКПДляЗаполнения();
	КонецЕсли;

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

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

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

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

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

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

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

&НаСервереБезКонтекста
Функция ИзображенияТоварныхПозиций(Знач Изображения)
	Возврат Изображения.Выгрузить().ВыгрузитьКолонку("ФайлИзображения");
КонецФункции

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

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

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

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

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

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