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