Коммерческое предложение поставщика / Форма документа / Модуль формы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ЗаполнитьВидыЦенПоставщика(Команда)
	
	ВыбратьВидЦеныПоставщика();
	
КонецПроцедуры

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

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

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

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

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

&НаКлиенте
Процедура РегистрироватьЦеныПоставщикаПриИзменении(Элемент)
	
	НастроитьЭлементыФормыНоменклатурыИВидовЦен();
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область Комментарии

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

&НаКлиенте
Процедура КомментарийВнутреннийНачалоВыбора()

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

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

&НаКлиенте
Процедура ОткрытьДопИнформациюПоставщика()

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

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

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

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

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

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

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

#Область ФормированиеПредставлений

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

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

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

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

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

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

&НаСервере
Процедура СформироватьИнформационнуюСтрокуПоОхватуПодвал(СтрокиОхваченныеПолностью, СтрокиОхваченныеЧастично, КоличествоРассматриваемыхСтрок)
	
	КоличествоПоЗапросу       = 0;
	КоличествоПоПредложению   = 0;
	ЕстьРассматриваемыеСтроки = Ложь;
	НомерСтрокиСЗапрашиваемойПозицией = 0;
	
	ТекущийИдентификаторСтрокиЗапроса = "";
	
	Инд = 0;
	
	Для Каждого СтрокаТовары Из Объект.Товары Цикл
		
		Если ТекущийИдентификаторСтрокиЗапроса <> СтрокаТовары.ИдентификаторСтрокиЗапроса Тогда
			
			Если Не ПустаяСтрока(ТекущийИдентификаторСтрокиЗапроса) Тогда
				
				Если КоличествоПоЗапросу > КоличествоПоПредложению Тогда
					СтрокиОхваченныеЧастично = СтрокиОхваченныеЧастично + 1;
				Иначе
					СтрокиОхваченныеПолностью = СтрокиОхваченныеПолностью + 1;
				КонецЕсли;
				
				Если ЕстьРассматриваемыеСтроки Тогда
					КоличествоРассматриваемыхСтрок = КоличествоРассматриваемыхСтрок + 1;
				КонецЕсли;
				
				Объект.Товары[НомерСтрокиСЗапрашиваемойПозицией].НетРассматриваемыхПредложений = Не ЕстьРассматриваемыеСтроки;
				
			КонецЕсли;
			
			ТекущийИдентификаторСтрокиЗапроса = СтрокаТовары.ИдентификаторСтрокиЗапроса;
			
			Если ПустаяСтрока(ТекущийИдентификаторСтрокиЗапроса) Тогда
				Продолжить;
			Иначе
				
				КоличествоПоЗапросу       = СтрокаТовары.ЗапросКоличество;
				КоличествоПоПредложению   = 0;
				ЕстьРассматриваемыеСтроки = Ложь;
				
			КонецЕсли;
			
			НомерСтрокиСЗапрашиваемойПозицией = Инд;
			
		КонецЕсли;
		
		Если Не СтрокаТовары.СнятСРассмотрения Тогда
			ЕстьРассматриваемыеСтроки = Истина;
		КонецЕсли;
		
		КоличествоПоПредложению = КоличествоПоПредложению + СтрокаТовары.Количество;
		
		Инд = Инд + 1;
		
	КонецЦикла;
	
	Если КоличествоПоЗапросу > КоличествоПоПредложению Тогда
		СтрокиОхваченныеЧастично = СтрокиОхваченныеЧастично + 1;
	Иначе
		СтрокиОхваченныеПолностью = СтрокиОхваченныеПолностью + 1;
	КонецЕсли;
	
	Если ЕстьРассматриваемыеСтроки Тогда
		КоличествоРассматриваемыхСтрок = КоличествоРассматриваемыхСтрок + 1;
	КонецЕсли;
	
	Объект.Товары[НомерСтрокиСЗапрашиваемойПозицией].НетРассматриваемыхПредложений = Не ЕстьРассматриваемыеСтроки;
	
	МассивСтрок = Новый Массив;
	Если КоличествоСтрокВЗапросе > КоличествоСтрокЗапросаСПредложениями Тогда
		
		ПроцентОхвата = Окр((КоличествоСтрокЗапросаСПредложениями / КоличествоСтрокВЗапросе) * 100, 0, РежимОкругления.Окр15как10);
		ТекстЦифрыОхвата = СтрШаблон(НСтр("ru = '%1 из %2 (%3 %4)'"), КоличествоСтрокЗапросаСПредложениями, КоличествоСтрокВЗапросе, ПроцентОхвата, "%");
		
		МассивСтрок.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'Охват'"), Новый Шрифт(,,Истина)));
		МассивСтрок.Добавить(" ");
		МассивСтрок.Добавить(НСтр("ru = 'позиций запроса'"));
		МассивСтрок.Добавить(" ");
		МассивСтрок.Добавить(Новый ФорматированнаяСтрока(ТекстЦифрыОхвата, Новый Шрифт(,,Истина)));
		
	Иначе
		МассивСтрок.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'Все позиции запроса охвачены'"), Новый Шрифт(,,Истина)));
	КонецЕсли;
	
	Если СтрокиОхваченныеПолностью = КоличествоСтрокВЗапросе Тогда
		
		МассивСтрок.Добавить(" ");
		МассивСтрок.Добавить(НСтр("ru = 'полностью'"));
		МассивСтрок.Добавить(".");
		
	Иначе
		
		МассивСтрок.Добавить(",");
		МассивСтрок.Добавить(" ");
		МассивСтрок.Добавить(НСтр("ru = 'из них'"));
		МассивСтрок.Добавить(" ");
		
		Если СтрокиОхваченныеПолностью > 0 Тогда
			ТекстПодстроки = СтрШаблон(НСтр("ru = 'полностью - %1'"), СтрокиОхваченныеПолностью);
			МассивСтрок.Добавить(Новый ФорматированнаяСтрока(ТекстПодстроки, Новый Шрифт(,,Истина)));
		КонецЕсли;
		
		Если СтрокиОхваченныеЧастично > 0 Тогда
			Если СтрокиОхваченныеПолностью > 0 Тогда
				МассивСтрок.Добавить(", ");
			КонецЕсли;
			ТекстПодстроки = СтрШаблон(НСтр("ru = 'частично - %1'"), СтрокиОхваченныеЧастично);
			МассивСтрок.Добавить(Новый ФорматированнаяСтрока(ТекстПодстроки, Новый Шрифт(,,Истина)));
		КонецЕсли;
		
		МассивСтрок.Добавить(".");
		
	КонецЕсли;
	
	МассивСтрок.Добавить(" ");
	
	Если КоличествоРассматриваемыхСтрок = КоличествоСтрокЗапросаСПредложениями Тогда
		
		ТекстПодстроки = НСтр("ru = 'Все строки рассматриваются.'");
		МассивСтрок.Добавить(Новый ФорматированнаяСтрока(ТекстПодстроки, Новый Шрифт(,,Истина)));
		
	Иначе
		
		МассивСтрок.Добавить(НСтр("ru = 'Отмечено'"));
		МассивСтрок.Добавить(" ");
		ТекстПодстроки = СтрШаблон(НСтр("ru = 'к рассмотрению - %1 из %2'"), КоличествоРассматриваемыхСтрок, КоличествоСтрокЗапросаСПредложениями);
		МассивСтрок.Добавить(Новый ФорматированнаяСтрока(ТекстПодстроки, Новый Шрифт(,,Истина)));
		
	КонецЕсли;
	
	МассивСтрок.Добавить(".");
	
	ИнформацияОбОхватеИПолнотеПредложения = Новый ФорматированнаяСтрока(МассивСтрок);

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

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

#Область ИнформацияЗапрошеноПредложено

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

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

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

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

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

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

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

	Если КоличествоИзмененныхСтрок = 0 Тогда
		
		Если СнятьСРассмотрения Тогда
			
			ТекстЗаголовка  = НСтр("ru = 'Снятие с рассмотрения не выполнено.'");
			ТекстОповещения = НСтр("ru = 'Ни одна из преложенных позиций не снята с рассмотрения.'");
			
		Иначе
			
			ТекстЗаголовка  = НСтр("ru = 'Принятие к рассмотрению не выполнено'");
			ТекстОповещения = НСтр("ru = 'Ни одна из преложенных позиций не принята к рассмотрению.'");
			
		КонецЕсли;
		
	Иначе
		
		Если СнятьСРассмотрения Тогда
			
			ТекстЗаголовка  = НСтр("ru = 'Снятие с рассмотрения.'");
			ТекстОповещения = СтрШаблон(НСтр("ru = 'Снято с рассмотрения позиций: %1 из %2.'"),КоличествоИзмененныхСтрок, ВсегоСтрок);
			
		Иначе
			
			ТекстЗаголовка  = НСтр("ru = 'Принятие к рассмотрению'");
			ТекстОповещения = СтрШаблон(НСтр("ru = 'Принято к рассмотрению позиций: %1 из %2.'"),КоличествоИзмененныхСтрок, ВсегоСтрок);
			
		КонецЕсли;
		
	КонецЕсли;
	
	ПоказатьОповещениеПользователя(ТекстЗаголовка, , ТекстОповещения, БиблиотекаКартинок.Информация32);

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

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

#Область СобытияФормы

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

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

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

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

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

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

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

#Область РасчетПоказателейФормы

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

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

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

	КоллекцияТовары = Форма.Объект.Товары;
	
	Форма.СуммаНДС           = КоллекцияТовары.Итог("СуммаНДС");
	Форма.СуммаДокументаСНДС = КоллекцияТовары.Итог("СуммаСНДС");
	СуммаБезНДС              = КоллекцияТовары.Итог("Сумма");
	
	Форма.СуммаСкидки = КоллекцияТовары.Итог("СуммаСкидки");
	
	Если СуммаБезНДС > 0 Тогда
		Форма.ПроцентСкидки   = Форма.СуммаСкидки * 100 / (СуммаБезНДС + Форма.СуммаСкидки);
	ИначеЕсли Форма.СуммаСкидки > 0 Тогда
		Форма.ПроцентСкидки       = 100;
	Иначе
		Форма.ПроцентСкидки       = 0;
	КонецЕсли;
	
	Если Форма.Объект.Налогообложение Тогда
		Форма.Элементы.ГруппаСтраницыНДС.ТекущаяСтраница   = Форма.Элементы.СтраницаСНДС;
		Форма.Элементы.ГруппаСтраницыВсего.ТекущаяСтраница = Форма.Элементы.СтраницаВсегоСНДС;
	Иначе
		Форма.Элементы.ГруппаСтраницыНДС.ТекущаяСтраница   = Форма.Элементы.СтраницаБезНДС;
		Форма.Элементы.ГруппаСтраницыВсего.ТекущаяСтраница = Форма.Элементы.СтраницаВсегоБезНДС;
	КонецЕсли;

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

&НаКлиентеНаСервереБезКонтекста
Функция ПоЗапросу(ДокументОснование)

	Возврат ЗначениеЗаполнено(ДокументОснование) 
		И ТипЗнч(ДокументОснование) = Тип("ДокументСсылка.ЗапросКоммерческихПредложенийПоставщиков");

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

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

#Область Прочее

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

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

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

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

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

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