#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьУсловноеОформление();
Если Параметры.Свойство("АнализируемыеИсточники") Тогда
ВсеИсточники = ПолучитьИзВременногоХранилища(Параметры.АнализируемыеИсточники);
АнализируемыеИсточникиПредложений.Загрузить(ВсеИсточники);
КонецЕсли;
Если Параметры.Свойство("ВыбранныеПредложения") Тогда
Предложения = ПолучитьИзВременногоХранилища(Параметры.ВыбранныеПредложения);
Если Не Предложения = Неопределено Тогда
ВыбранныеИсточники.Загрузить(Предложения);
КонецЕсли;
КонецЕсли;
Параметры.Свойство("НаименованиеДляПоиска" , НаименованиеДляПоиска);
Параметры.Свойство("ИдентификаторСтрокиЗапроса", ИдентификаторСтрокиЗапроса);
Параметры.Свойство("НоменклатураНаименование" , НоменклатураНаименование);
Параметры.Свойство("Количество" , Количество);
Параметры.Свойство("ЕдиницаИзмерения" , ЕдиницаИзмерения);
Параметры.Свойство("Валюта" , Валюта);
Параметры.Свойство("ЦенаВключаетНДС" , ЦенаВключаетНДС);
Параметры.Свойство("ДокументИсточник" , ДокументИсточник);
Параметры.Свойство("ИдентификаторКатегории" , ИдентификаторКатегории);
Параметры.Свойство("ЦенаДо" , ЦенаДо);
Параметры.Свойство("ДатаКурса" , ДатаКурса);
Параметры.Свойство("Организация" , Организация);
ТекстЗаголовок = СтрШаблон(НСтр("ru = '. Требуется %1 %2. Цены пересчитаны в валюту %3 и %4'"),
Количество,
ЕдиницаИзмерения,
Валюта,
?(ЦенаВключаетНДС, НСтр("ru = 'включают НДС'") , НСтр("ru = 'не включают НДС'")));
МассивЗаголовка = Новый Массив;
МассивЗаголовка.Добавить(Новый ФорматированнаяСтрока("Для ",, ЦветаСтиля.ПоясняющийТекст));
МассивЗаголовка.Добавить(Новый ФорматированнаяСтрока(НоменклатураНаименование, Новый Шрифт(, 9, Истина), ЦветаСтиля.ГиперссылкаЦвет));
МассивЗаголовка.Добавить(Новый ФорматированнаяСтрока(ТекстЗаголовок,, ЦветаСтиля.ПоясняющийТекст));
Элементы.ДекорацияЗаголовок.Заголовок = Новый ФорматированнаяСтрока(МассивЗаголовка);
СформироватьЗаголовокИтоги(ЭтотОбъект);
КоммерческиеПредложенияДокументы.ЗаполнитьГруппуАнализируемыеИсточники(ЭтотОбъект, Ложь);
ОбновитьЛегендуАнализируемыхИсточников();
СтрокаИтого = СтрШаблон(НСтр("ru = '%1 %2'"), Количество, ЕдиницаИзмерения);
МассивСтрок = Новый Массив;
МассивСтрок.Добавить(НСтр("ru = 'из'"));
МассивСтрок.Добавить(" ");
МассивСтрок.Добавить(Новый ФорматированнаяСтрока(СтрокаИтого, Новый Шрифт( , , Истина)));
Элементы.ДекорацияИз.Заголовок = Новый ФорматированнаяСтрока(МассивСтрок);
ЭтоПолноправныйПользователь = Пользователи.ЭтоПолноправныйПользователь(,, Ложь);
Элементы.ГруппаЖурналРегистрации.Видимость = ЭтоПолноправныйПользователь;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
УстановитьОтображениеСтрокСнятыхСРассмотрения();
ПодключитьОбработчикОжидания("НачатьПолучениеСпискаПредложений", 0.1, Истина);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ДекорацияЗаголовокОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура ОтображатьСнятыеСРассмотренияПриИзменении(Элемент)
УстановитьОтображениеСтрокСнятыхСРассмотрения();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыИсточники
&НаКлиенте
Процедура ИсточникиКЗаказуПриИзменении(Элемент)
ТекущиеДанные = Элементы.Источники.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
КЗаказу = Количество - Источники.Итог("КЗаказу");
Если КЗаказу < 0 Тогда
ТекущиеДанные.КЗаказу = Макс(0, ТекущиеДанные.КЗаказу + КЗаказу);
КонецЕсли;
Если ТекущиеДанные.КЗаказу > ТекущиеДанные.Доступно Тогда
ТекущиеДанные.КЗаказу = ТекущиеДанные.Доступно;
КонецЕсли;
Если ТекущиеДанные.КЗаказу > 0
И Не ТекущиеДанные.Выбрано Тогда
ТекущиеДанные.Выбрано = Истина;
ИначеЕсли ТекущиеДанные.КЗаказу = 0
И ТекущиеДанные.Выбрано Тогда
ТекущиеДанные.Выбрано = Ложь;
КонецЕсли;
СформироватьЗаголовокИтогиКлиент();
КонецПроцедуры
&НаКлиенте
Процедура ИсточникиВыбраноПриИзменении(Элемент)
ТекущиеДанные = Элементы.Источники.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
КЗаказу = Количество - Источники.Итог("КЗаказу");
Если КЗаказу <= 0 Тогда
ТекущиеДанные.Выбрано = Ложь;
КонецЕсли;
Если ТекущиеДанные.Выбрано Тогда
КЗаказу = Количество - Источники.Итог("КЗаказу");
ТекущиеДанные.КЗаказу = Мин(КЗаказу, ТекущиеДанные.Доступно);
Иначе
ТекущиеДанные.КЗаказу = 0;
КонецЕсли;
СформироватьЗаголовокИтоги(ЭтотОбъект);
НачатьПолучениеИнформацииПоТорговомуПредложению(ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ИсточникиПриАктивизацииСтроки(Элемент)
ТекущиеДанные = Элементы.Источники.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
Если ТекущиеДанные.ПоказатьЕще Тогда
Элементы.Источники.ТекущаяСтрока = ТекущаяСтрока;
Элементы.Источники.Обновить();
Возврат;
КонецЕсли;
ПодключитьОбработчикОжидания("НачатьРисоватьТаблицуСравненияВФоне", 0.2, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ИсточникиПередУдалением(Элемент, Отказ)
Отказ = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ИсточникиКомментарийОткрытие(Элемент, СтандартнаяОбработка)
ТекущиеДанные = Элементы.Источники.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
СтандартнаяОбработка = Ложь;
Описание = Новый ОписаниеОповещения("РедактированиеКомментарияЗавершение", ЭтотОбъект);
ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияМногострочногоТекста(Описание,Элементы.ИсточникиКомментарий.ТекстРедактирования,
НСтр("ru = 'Мой комментарий'"));
КонецПроцедуры
&НаКлиенте
Процедура ИсточникиКомментарийПриИзменении(Элемент)
ТекущиеДанные = Элементы.Источники.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущиеДанные.Изменен = Истина;
Модифицированность = Истина;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура Обновить(Команда)
Страница = 0;
НачатьСохранениеИзменений();
ПодключитьОбработчикОжидания("НачатьПолучениеСпискаПредложений", 0.5, Истина);
КонецПроцедуры
&НаКлиенте
Процедура СнятьСРассмотрения(Команда)
ОтметитьКРассмотрению(Истина);
КонецПроцедуры
&НаКлиенте
Процедура КРассмотрению(Команда)
ОтметитьКРассмотрению(Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьПредложения(Команда)
НачатьСохранениеИзменений();
СнятСРассмотрения = Ложь;
СтруктураОтвет = СформироватьОтвет(Источники, СнятСРассмотрения, ИдентификаторСтрокиЗапроса);
Если СнятСРассмотрения Тогда
Описание = Новый ОписаниеОповещения("ВопросСнятСРассмотрения", ЭтотОбъект, СтруктураОтвет);
ПоказатьВопрос(Описание, НСтр("ru = 'Выбраны предложения снятые с рассмотрения. Продолжить?'"),
РежимДиалогаВопрос.ДаНет,
,
КодВозвратаДиалога.Нет,
НСтр("ru = 'Внимание'"));
Иначе
Закрыть(СтруктураОтвет);
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция СформироватьОтвет(Знач Источники, СнятСРассмотрения, ИдентификаторСтрокиЗапроса)
Отбор = Новый Структура("Выбрано", Истина);
ВыбранныеПредложения = Источники.НайтиСтроки(Отбор);
МассивОтвет = Новый Массив;
СнятСРассмотрения = Ложь;
Для Каждого Предложение Из ВыбранныеПредложения Цикл
СтруктураОтвет = Новый Структура();
СтруктураОтвет.Вставить("ИдентификаторСтрокиЗапроса" , ИдентификаторСтрокиЗапроса);
СтруктураОтвет.Вставить("ИмяИсточника" , Предложение.ИмяИсточника);
СтруктураОтвет.Вставить("ПоставщикСсылка" , Предложение.ПоставщикСсылка);
СтруктураОтвет.Вставить("ПоставщикПредставление" , Предложение.ПоставщикПредставление);
СтруктураОтвет.Вставить("ПоставщикИдентификатор" , Предложение.ПоставщикИдентификатор);
СтруктураОтвет.Вставить("Источник" , Предложение.Источник);
СтруктураОтвет.Вставить("ИсточникПредставление" , Предложение.ИсточникПредставление);
СтруктураОтвет.Вставить("ИдентификаторСтрокиИсточника" , Предложение.ИдентификаторСтрокиИсточника);
СтруктураОтвет.Вставить("Количество" , Предложение.КЗаказу);
СтруктураОтвет.Вставить("ПроцентСкидки" , Предложение.ПроцентСкидки);
СтруктураОтвет.Вставить("МожетОбеспечиватьсяЧастично" , Предложение.МожетОбеспечиватьсяЧастично);
СтруктураОтвет.Вставить("СрокПоставки" , Предложение.СрокПоставки);
СтруктураОтвет.Вставить("НаименованиеПоставщика" , Предложение.НоменклатураПоставщика);
СтруктураОтвет.Вставить("ИННКонтрагента" , Предложение.ИННКонтрагента);
СтруктураОтвет.Вставить("КППКонтрагента" , Предложение.КППКонтрагента);
СтруктураОтвет.Вставить("ИдентификаторНоменклатурыПоставщика", Предложение.ИдентификаторНоменклатурыПоставщика);
СтруктураОтвет.Вставить("Доступен" , Истина);
СтруктураОтвет.Вставить("ЦенаВключаетНДС" , Предложение.ЦенаВключаетНДС);
ЕдиницаИзмерения = Неопределено;
Представление = Неопределено;
ТорговыеПредложенияПереопределяемый.ПолучитьПараметрыЕдиницыИзмерения(Предложение.ДоступноЕдиницаИзмеренияКод,
ЕдиницаИзмерения, Представление);
СтруктураОтвет.Вставить("ЕдиницаИзмеренияПоставщика", ЕдиницаИзмерения);
СтруктураОтвет.Вставить("СтавкаНДСПоставщика", Предложение.СтавкаНДС);
СтруктураОтвет.Вставить("ЦенаПоставщика", Предложение.Цена);
СтруктураОтвет.Вставить("Сумма", Документы.ЗапросКоммерческихПредложенийПоставщиков.СуммаЗаВычетомСкидки(
Предложение.ПроцентСкидки, Предложение.Цена * Предложение.КЗаказу));
СтруктураОтвет.Вставить("ВалютаПредложения", Предложение.ВалютаПредложения);
СтруктураОтвет.Вставить("ЦенаВВалютеЗапроса", Предложение.ЦенаВВалютеЗапроса);
СтруктураОтвет.Вставить("СуммаВВалютеЗапроса",
Документы.ЗапросКоммерческихПредложенийПоставщиков.СуммаЗаВычетомСкидки(Предложение.ПроцентСкидки,
Предложение.ЦенаВВалютеЗапроса * Предложение.КЗаказу));
МассивОтвет.Добавить(СтруктураОтвет);
СнятСРассмотрения = Макс(СнятСРассмотрения, Предложение.СнятСРассмотрения);
КонецЦикла;
СтруктураОтвет = Новый Структура();
СтруктураОтвет.Вставить("ИдентификаторСтрокиЗапроса" , ИдентификаторСтрокиЗапроса);
СтруктураОтвет.Вставить("Предложения" , МассивОтвет);
Возврат СтруктураОтвет;
КонецФункции
&НаКлиенте
Процедура СохранитьИзменения(Команда)
Если Модифицированность Тогда
Элементы.СохранитьИзменения.Доступность = Ложь;
ПодключитьОбработчикОжидания("НачатьСохранениеИзменений", 0.1, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьЖурнал(Команда)
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Уровень", "Ошибка");
ЖурналРегистрацииКлиент.ОткрытьЖурналРегистрации(ПараметрыФормы);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаКлиенте
Процедура НачатьПолучениеИнформацииПоТорговомуПредложению(ТекущаяСтрока)
Если Не ТекущаяСтрока.Выбрано
Или ТекущаяСтрока.ИмяИсточника <> "БизнесСеть" Тогда
Возврат;
КонецЕсли;
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ПараметрыОжидания.ВыводитьОкноОжидания = Ложь;
ПараметрыОжидания.ОповещениеПользователя.Показать = Ложь;
ПараметрыОжидания.ВыводитьСообщения = Истина;
ПараметрыОперации = Новый Структура;
ПараметрыОперации.Вставить("УникальныйИдентификатор" , УникальныйИдентификатор);
ПараметрыОперации.Вставить("Валюта" , Валюта);
ПараметрыОперации.Вставить("Идентификатор" , ТекущаяСтрока.ИдентификаторСтрокиИсточника);
ПараметрыОперации.Вставить("Организация" , Организация);
ДлительнаяОперация = ВыполнитьПолучениеДанныхТорговогоПредложенияВФоне(ПараметрыОперации);
ВыполнениеОперацииЗавершение = Новый ОписаниеОповещения(
"ПолучениеТорговогоПредложения", ЭтотОбъект, ТекущаяСтрока.ИдентификаторСтрокиИсточника);
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация,
ВыполнениеОперацииЗавершение,
ПараметрыОжидания);
КонецПроцедуры
&НаКлиенте
Процедура ВопросСнятСРассмотрения(Результат, ДополнительныеПараметры) Экспорт
ИдентификаторЗадания = Неопределено;
Если Результат = КодВозвратаДиалога.Да Тогда
Закрыть(ДополнительныеПараметры);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НачатьРисоватьТаблицуСравненияВФоне()
ТекущиеДанные = Элементы.Источники.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Условия = "";
Возврат;
КонецЕсли;
ПодстрокиУсловия = Новый Массив;
ПодстрокиУсловия.Добавить("ru = '<HTML><HEAD><style> html, body { overflow: hidden;} </style></HEAD>");
ШаблонСтроки = "<P><FONT face=Arial><FONT size=2><FONT color=#1c55ae><STRONG>%1:</STRONG></FONT><BR>%2</FONT></FONT></P>";
Если ТекущиеДанные.ПоляДляСравненияУсловий <> Неопределено Тогда
Налогообложение = ?(ТекущиеДанные.ПоляДляСравненияУсловий.Налогообложение, НСтр("ru = 'Продажа облагается НДС'"),
НСтр("ru = 'Продажа не облагается НДС'"));
ДобавитьУсловиеПоПредложению(ПодстрокиУсловия, "Оплата", ТекущиеДанные.ПоляДляСравненияУсловий.УсловияОплатыТекст);
ДобавитьУсловиеПоПредложению(ПодстрокиУсловия, "Доставка", ТекущиеДанные.ПоляДляСравненияУсловий.УсловияПоставкиТекст);
ДобавитьУсловиеПоПредложению(ПодстрокиУсловия, "Налогообложение", Налогообложение);
ДобавитьУсловиеПоПредложению(ПодстрокиУсловия, "Прочее", ТекущиеДанные.ПоляДляСравненияУсловий.УсловиеПрочееТекст);
КонецЕсли;
Если ТекущиеДанные.ПроцентСкидки > 0 Тогда
ДобавитьУсловиеПоПредложению(ПодстрокиУсловия, "Ценообразование", СтрШаблон(НСтр("ru = 'Предоставлена скидка %1'"),
Формат(ТекущиеДанные.ПроцентСкидки,"ЧЦ=3; ЧДЦ=0; ЧФ=Ч%")));
КонецЕсли;
ПодстрокиУсловия.Добавить("</BODY></HTML>'");
Если ПодстрокиУсловия.Количество() <=2 Тогда
Условия = "";
Возврат;
КонецЕсли;
Условия = НСтр(СтрСоединить(ПодстрокиУсловия, Символы.ПС));
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьУсловиеПоПредложению(ПодстрокиУсловия, Представление, Текст)
Если ПустаяСтрока(Текст) Тогда
Возврат;
КонецЕсли;
ПодстрокиУсловия.Добавить(
СтрШаблон("<P><FONT face=Arial><FONT size=2><FONT color=#1c55ae><STRONG>%1:</STRONG></FONT><BR>%2</FONT></FONT></P>",
Представление, Текст));
КонецПроцедуры
&НаКлиенте
Процедура СформироватьЗаголовокИтогиКлиент()
СформироватьЗаголовокИтоги(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОтметитьКРассмотрению(Установить)
ОчиститьСообщения();
НеСохраняемыеИсточники = Новый Соответствие;
Для Каждого ИндексИсточника Из Элементы.Источники.ВыделенныеСтроки Цикл
Источник = Элементы.Источники.ДанныеСтроки(ИндексИсточника);
Если Источник.ОтметкиИКомментарииНеДоступны Тогда
Если НеСохраняемыеИсточники.Получить(Источник.ИмяИсточника) = Неопределено Тогда
НеСохраняемыеИсточники.Вставить(Источник.ИмяИсточника, Источник.ИсточникПредставление);
КонецЕсли;
Продолжить;
КонецЕсли;
Источник.СнятСРассмотрения = Установить;
Источник.Изменен = Истина;
Если Установить Тогда
Источник.КЗаказу = 0;
Источник.Выбрано = Ложь;
КонецЕсли;
КонецЦикла;
Если НеСохраняемыеИсточники.Количество() > 0 Тогда
Шаблон = НСтр("ru = 'Для источника ''%1'' операция не поддерживается'");
Для Каждого Источник Из НеСохраняемыеИсточники Цикл
ОбщегоНазначенияКлиент.СообщитьПользователю(СтрШаблон(Шаблон, Источник.Значение));
КонецЦикла;
КонецЕсли;
УстановитьОтображениеСтрокСнятыхСРассмотрения();
СформироватьЗаголовокИтоги(ЭтотОбъект);
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Процедура УстановитьОтображениеСтрокСнятыхСРассмотрения()
Отбор = Новый Структура("СнятСРассмотрения", Ложь);
Элементы.Источники.ОтборСтрок = ?(ОтображатьСнятыеСРассмотрения, Неопределено, Новый ФиксированнаяСтруктура(Отбор));
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Шрифт", Новый Шрифт(Элементы.Источники.Шрифт,,,,,, Истина));
ОтборЭлемента = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Источники.СнятСРассмотрения");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ИсточникиКартинкаИсточника");
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ИсточникиПоставщикНаименование");
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ИсточникиПредставлениеИсточника");
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ИсточникиНоменклатураПоставщика");
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ИсточникиВыбрано");
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ИсточникиКЗаказу");
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ИсточникиДоступно");
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ИсточникиДоступноЕдиницаИзмерения");
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ИсточникиЦена");
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ИсточникиСрокПоставки");
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Доступность", Ложь);
ОтборЭлемента = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Источники.Выбрано");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Блок");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ИсточникиВыбрано");
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ИсточникиКЗаказу");
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
ОтборЭлемента = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Источники.ПоказатьЕще");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ИсточникиПоказатьЕще");
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Видимость" , Ложь);
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Доступность", Ложь);
ОтборЭлемента = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Источники.ПоказатьЕще");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ИсточникиКартинкаИсточника");
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ИсточникиПоставщикНаименование");
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ИсточникиПредставлениеИсточника");
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ИсточникиНоменклатураПоставщика");
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ИсточникиВыбрано");
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ИсточникиКЗаказу");
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ИсточникиДоступно");
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ИсточникиДоступноЕдиницаИзмерения");
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ИсточникиЦена");
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ИсточникиСрокПоставки");
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = 'В наличии'"));
ОтборЭлемента = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Источники.СрокПоставки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = 0;
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ИсточникиСрокПоставки");
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветГиперссылкиБЭД);
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Шрифт", Новый Шрифт(,,,,Истина));
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ГоризонтальноеПоложение", ГоризонтальноеПоложение.Центр);
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Видимость", Истина);
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = 'Показать еще'"));
ОтборЭлемента = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Источники.ПоказатьЕще");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ИсточникиПоказатьЕще");
КонецПроцедуры
&НаКлиенте
Процедура НачатьПолучениеСпискаПредложений()
Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.СтраницаОжидание;
Элементы.Обновить.Доступность = Ложь;
Элементы.ГруппаНастройкаАнализа.ТолькоПросмотр = Истина;
Модифицированность = Ложь;
Источники.Очистить();
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ПараметрыОжидания.ВыводитьОкноОжидания = Ложь;
ПараметрыОжидания.ОповещениеПользователя.Показать = Ложь;
ПараметрыОжидания.ВыводитьСообщения = Истина;
ПараметрыОперации = Новый Структура;
ПараметрыОперации.Вставить("ДокументИсточник" , ДокументИсточник);
ПараметрыОперации.Вставить("УникальныйИдентификатор" , УникальныйИдентификатор);
ПараметрыОперации.Вставить("ИдентификаторСтрокиЗапроса", ИдентификаторСтрокиЗапроса);
ПараметрыОперации.Вставить("Валюта" , Валюта);
ПараметрыОперации.Вставить("ЦенаВключаетНДС" , ЦенаВключаетНДС);
ПараметрыОперации.Вставить("ДатаКурса" , ДатаКурса);
ДлительнаяОперация = ВыполнитьПоискДоступныхПредложенийВФоне(ПараметрыОперации, АнализируемыеИсточникиПредложений, ИдентификаторЗадания);
Если Не ДлительнаяОперация = Неопределено Тогда
ИдентификаторЗадания = ДлительнаяОперация.ИдентификаторЗадания;
КонецЕсли;
ВыполнениеОперацииЗавершение = Новый ОписаниеОповещения(
"ЗаполнитьВыборПредложенийЗавершение", ЭтотОбъект);
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация,
ВыполнениеОперацииЗавершение,
ПараметрыОжидания);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ВыполнитьПоискДоступныхПредложенийВФоне(Знач ПараметрыПроцедуры, Знач АнализируемыеИсточникиПредложений, ИдентификаторЗадания)
Если Не ПустаяСтрока(ИдентификаторЗадания) Тогда
ДлительныеОперации.ОтменитьВыполнениеЗадания(ИдентификаторЗадания);
ИдентификаторЗадания = Неопределено;
КонецЕсли;
ПараметрыПроцедуры.Вставить("АнализируемыеИсточники" , ПолучитьВыбранныеИсточникиДокумента(АнализируемыеИсточникиПредложений));
НаименованиеФоновогоЗадания = СтрШаблон(НСтр("ru = 'Поиск доступных предложений по документу %1'"), ПараметрыПроцедуры.ДокументИсточник);
ИмяПроцедуры = "Документы.ЗапросКоммерческихПредложенийПоставщиков.ПолучитьПредложенияПоТовару";
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(ПараметрыПроцедуры.УникальныйИдентификатор);
ПараметрыВыполнения.НаименованиеФоновогоЗадания = НаименованиеФоновогоЗадания;
ПараметрыВыполнения.ЗапуститьВФоне = Истина;
ПараметрыВыполнения.ОжидатьЗавершение = 0;
Возврат ДлительныеОперации.ВыполнитьВФоне(ИмяПроцедуры, ПараметрыПроцедуры, ПараметрыВыполнения);
КонецФункции
&НаКлиенте
Процедура ЗаполнитьВыборПредложенийЗавершение(Результат, ДополнительныеПараметры) Экспорт
ИдентификаторЗадания = Неопределено;
Элементы.ГруппаНастройкаАнализа.ТолькоПросмотр = Ложь;
Если Результат <> Неопределено И Результат.Статус = "Выполнено" Тогда
ЗаполнитьВыборПредложенийОбработка(Результат.АдресРезультата);
Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.СтраницаВыбора;
Элементы.ГруппаЗагрузкаПоступившихПредложений.ТекущаяСтраница = Элементы.ГруппаЗагрузкаПоступившихПредложенийВыполняется;
Страница = 0;
НачатьПоискТорговыхПредложений();
Иначе
Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.СтраницаОшибка;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НачатьПоискТорговыхПредложений()
Отбор = Новый Структура("ИмяИсточника", "БизнесСеть");
НайденныеСтроки = АнализируемыеИсточникиПредложений.НайтиСтроки(Отбор);
Если НайденныеСтроки.Количество() = 0
Или Не НайденныеСтроки[0].Использовать Тогда
Элементы.ГруппаЗагрузкаПоступившихПредложений.ТекущаяСтраница = Элементы.ГруппаЗагрузкаПоступившихПредложенийВыполнено;
Элементы.Обновить.Доступность = Истина;
Возврат;
КонецЕсли;
Если ЗначениеЗаполнено(ИдентификаторЗадания) Тогда
Возврат;
КонецЕсли;
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ПараметрыОжидания.ВыводитьОкноОжидания = Ложь;
ПараметрыОжидания.ОповещениеПользователя.Показать = Ложь;
ПараметрыОжидания.ВыводитьСообщения = Истина;
ПараметрыОперации = Новый Структура;
ПараметрыОперации.Вставить("УникальныйИдентификатор" , УникальныйИдентификатор);
ПараметрыОперации.Вставить("Валюта" , Валюта);
ПараметрыОперации.Вставить("ИдентификаторКатегории" , ИдентификаторКатегории);
ПараметрыОперации.Вставить("ЦенаДо" , ЦенаДо);
ПараметрыОперации.Вставить("Наименование" , НаименованиеДляПоиска);
ПараметрыОперации.Вставить("Страница" , Страница);
ПараметрыОперации.Вставить("РегионыПоиска" , РегионыПоиска);
ДлительнаяОперация = ВыполнитьПоискТорговыхПредложенийВФоне(ПараметрыОперации);
ИдентификаторЗадания = ДлительнаяОперация.ИдентификаторЗадания;
ВыполнениеОперацииЗавершение = Новый ОписаниеОповещения(
"ПоискПредложенийЗавершение", ЭтотОбъект);
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация,
ВыполнениеОперацииЗавершение,
ПараметрыОжидания);
КонецПроцедуры
&НаКлиенте
Процедура ПолучениеТорговогоПредложения(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Если Результат.Статус = "Выполнено" Тогда
ЗаполнитьДанныеТорговогоПредложения(Результат.АдресРезультата);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДанныеТорговогоПредложения(АдресРезультата)
ТоварИзБизнесСети = ПолучитьИзВременногоХранилища(АдресРезультата);
Если ТоварИзБизнесСети = Неопределено Тогда
Возврат;
КонецЕсли;
Строки = Источники.НайтиСтроки(Новый Структура("ИдентификаторСтрокиИсточника", ТоварИзБизнесСети.Идентификатор));
Если Строки.Количество() > 0 Тогда
Строки[0].ИдентификаторНоменклатурыПоставщика = ТоварИзБизнесСети.ВнутреннийИдентификатор;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПоискПредложенийЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
ИдентификаторЗадания = Неопределено;
Если Результат.Статус = "Выполнено" Тогда
Страница = 0;
ЗагрузитьТорговыеПредложения(Результат.АдресРезультата);
Иначе
Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.СтраницаОшибка;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗагрузитьТорговыеПредложения(АдресРезультата)
Элементы.ГруппаЗагрузкаПоступившихПредложений.ТекущаяСтраница = Элементы.ГруппаЗагрузкаПоступившихПредложенийВыполнено;
Элементы.Обновить.Доступность = Истина;
Элементы.ГруппаНастройкаАнализа.ТолькоПросмотр = Ложь;
ТоварыИзБизнесСети = ПолучитьИзВременногоХранилища(АдресРезультата);
Если ТоварыИзБизнесСети = Неопределено Тогда
Возврат;
КонецЕсли;
Источник = ПолучитьОписаниеИсточникаПоИмени(АнализируемыеИсточникиПредложений, "БизнесСеть");
Для Каждого Товар Из ТоварыИзБизнесСети.Список Цикл
НоваяСтрока = Источники.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Товар);
НоваяСтрока.ПоставщикПредставление = Товар.НаименованиеКонтрагента;
НоваяСтрока.ПоставщикСсылка = Товар.НаименованиеКонтрагента;
НоваяСтрока.ПоставщикИдентификатор = Товар.ИдентификаторКонтрагента;
НоваяСтрока.ИмяИсточника = "БизнесСеть";
НоваяСтрока.Источник = Неопределено;
НоваяСтрока.НоменклатураПоставщика = Товар.НаименованиеНоменклатуры;
НоваяСтрока.Доступно = Количество;
НоваяСтрока.ДоступноЕдиницаИзмерения = Товар.ЕдиницаИзмерения;
НоваяСтрока.ДоступноЕдиницаИзмеренияКод = Товар.КодЕдиницыИзмерения;
НоваяСтрока.ЦенаДляАнализа = Товар.Цена;
НоваяСтрока.Цена = Товар.ЦеныВВалютеПредложения[0].Цена;
НоваяСтрока.ЦенаВВалютеЗапроса = Товар.Цена;
НоваяСтрока.ИдентификаторСтрокиИсточника = Товар.Идентификатор;
НоваяСтрока.ОтметкиИКомментарииНеДоступны = Истина;
НоваяСтрока.ИсточникПредставление = Источник.ПредставлениеИсточника;
НоваяСтрока.КартинкаИсточника = Источник.КартинкаИсточника;
НоваяСтрока.ИдентификаторНоменклатурыПоставщика = Товар.Идентификатор;
Если Товар.ЦенаВключаетНДС И Не ЦенаВключаетНДС Тогда
НоваяСтрока.ЦенаДляАнализа = Документы.ЗапросКоммерческихПредложенийПоставщиков.ИсключитьНДСИзСуммы(
НоваяСтрока.ЦенаДляАнализа, Товар.СтавкаНДС);
КонецЕсли;
Отбор = Новый Структура("ПоставщикПредставление, ИдентификаторСтрокиИсточника");
Отбор.Вставить("ПоставщикПредставление" , Товар.НаименованиеКонтрагента);
Отбор.Вставить("ИдентификаторСтрокиИсточника", НоваяСтрока.ИдентификаторСтрокиИсточника);
НайденныеСтроки = ВыбранныеИсточники.НайтиСтроки(Отбор);
Если НайденныеСтроки.Количество() > 0 Тогда
НоваяСтрока.КЗаказу = НайденныеСтроки[0].Количество;
НоваяСтрока.ИдентификаторНоменклатурыПоставщика = НайденныеСтроки[0].ИдентификаторНоменклатурыПоставщика;
НоваяСтрока.Выбрано = Истина;
КонецЕсли;
КонецЦикла;
КоличествоСтраниц = ТоварыИзБизнесСети.Страницы.КоличествоСтраниц - 1;
Страница = ТоварыИзБизнесСети.Страницы.Страница;
Если КоличествоСтраниц <> Страница Тогда
НоваяСтрока = Источники.Добавить();
НоваяСтрока.ПоказатьЕще = Истина;
КонецЕсли;
СформироватьЗаголовокИтоги(ЭтотОбъект);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьВыбранныеИсточникиДокумента(Знач АнализируемыеИсточникиПредложений)
Возврат КоммерческиеПредложенияДокументы.ПолучитьВыбранныеИсточникиДокумента(АнализируемыеИсточникиПредложений)
КонецФункции
&НаСервере
Процедура ЗаполнитьВыборПредложенийОбработка(АдресТаблицы)
ТаблицаПредложений = ПолучитьИзВременногоХранилища(АдресТаблицы);
ТаблицаТовары = ВыбранныеИсточники.Выгрузить();
ТаблицаТовары.Индексы.Добавить("ПоставщикСсылка, ПоставщикПредставление, Источник, ИдентификаторСтрокиИсточника, ИдентификаторНоменклатурыПоставщика");
Для Каждого СтрокаТаблицы Из ТаблицаПредложений Цикл
Отбор = Новый Структура("ПоставщикСсылка, ПоставщикПредставление, Источник, ИдентификаторСтрокиИсточника");
Отбор.Вставить("ПоставщикСсылка", СтрокаТаблицы.ПоставщикСсылка);
Отбор.Вставить("ПоставщикПредставление", СтрокаТаблицы.ПоставщикПредставление);
Отбор.Вставить("Источник", ?(ТипЗнч(СтрокаТаблицы.Источник) = Тип("Строка"),
Метаданные.ОпределяемыеТипы.ИсточникАнализаКоммерческихПредложений.Тип.ПривестиЗначение(), СтрокаТаблицы.Источник));
Отбор.Вставить("ИдентификаторСтрокиИсточника", СтрокаТаблицы.ИдентификаторСтрокиИсточника);
НайденныеСтроки = ТаблицаТовары.НайтиСтроки(Отбор);
НоваяСтрока = Источники.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТаблицы);
Если НайденныеСтроки.Количество() > 0 Тогда
НоваяСтрока.КЗаказу = НайденныеСтроки[0].Количество;
НоваяСтрока.ИдентификаторНоменклатурыПоставщика = НайденныеСтроки[0].ИдентификаторНоменклатурыПоставщика;
НоваяСтрока.Выбрано = Истина;
КонецЕсли;
Источник = ПолучитьОписаниеИсточникаПоИмени(АнализируемыеИсточникиПредложений, СтрокаТаблицы.ИмяИсточника);
НоваяСтрока.ОтметкиИКомментарииНеДоступны = Не Источник.ПоддерживаетСохранение;
Если СтрокаТаблицы.МожетВыкупатьсяЧастично Тогда
НоваяСтрока.КартинкаИсточника = Источник.КартинкаИсточника;
Иначе
НоваяСтрока.КартинкаИсточника = БиблиотекаКартинок.СтатусТребуетсяВыкупКоммерческиеПредложения;
КонецЕсли;
КонецЦикла;
СформироватьЗаголовокИтоги(ЭтотОбъект);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура СформироватьЗаголовокИтоги(Форма)
Форма.КоличествоВыбрано = Форма.Источники.Итог("КЗаказу");
Если Форма.Количество = Форма.КоличествоВыбрано Тогда
Форма.Блок = Истина;
Иначе
Форма.Блок = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ИсточникиПриАктивизацииЯчейки(Элемент)
Если Источники.Количество() > 1 И Элемент.ТекущийЭлемент = Элементы.ИсточникиПоказатьЕще Тогда
Элементы.Источники.ТекущаяСтрока = Источники[Источники.Количество() - 2].ПолучитьИдентификатор();
Источники.Удалить(Источники.Количество() - 1);
Элемент.ТекущийЭлемент = Элементы.ИсточникиПоставщикНаименование;
Страница = Страница + 1;
НачатьПоискТорговыхПредложений();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьАнализируемыеИсточники(Элемент)
Если Модифицированность Тогда
ЭтотОбъект[Элемент.Имя] = Не ЭтотОбъект[Элемент.Имя];
Описание = Новый ОписаниеОповещения("ПослеВопросаОСохранении", ЭтотОбъект, Элемент);
ПоказатьВопрос(Описание, НСтр("ru = 'Для выполнения этого действия нужно записать внесенные изменения.
|Продолжить?'"), РежимДиалогаВопрос.ДаНет);
Возврат;
КонецЕсли;
Для Каждого Источник Из АнализируемыеИсточникиПредложений Цикл
Источник.Использовать = ЭтотОбъект[Источник.ИмяРеквизита];
КонецЦикла;
ПодключитьОбработчикОжидания("НачатьПолучениеСпискаПредложений", 0.1, Истина);
ОбновитьЛегендуАнализируемыхИсточников();
КонецПроцедуры
&НаСервере
Процедура ОбновитьЛегендуАнализируемыхИсточников()
УдаляемыеЭлементы = Новый Массив;
Для Каждого Элемент Из Элементы.ЛегендаЭлементы.ПодчиненныеЭлементы Цикл
УдаляемыеЭлементы.Добавить(Элемент);
КонецЦикла;
Для Каждого УдаляемыйЭлемент Из УдаляемыеЭлементы Цикл
Элементы.Удалить(УдаляемыйЭлемент);
КонецЦикла;
Элементы.ЛегендаПолныйВыкуп.Видимость = Ложь;
Элементы.ЛегендаЧастичныйВыкуп.Видимость = Ложь;
Отбор = Новый Структура("Использовать", Истина);
НайденныеСтроки = АнализируемыеИсточникиПредложений.НайтиСтроки(Отбор);
Для Каждого Источник Из НайденныеСтроки Цикл
Если Источник.ИмяИсточника = КоммерческиеПредложенияДокументы.ИмяИсточникаПодчиненныеКоммерческиеПредложения()
Или Источник.ИмяИсточника = КоммерческиеПредложенияДокументы.ИмяИсточникаДругиеКоммерческиеПредложения() Тогда
Элементы.ЛегендаПолныйВыкуп.Видимость = Истина;
Элементы.ЛегендаЧастичныйВыкуп.Видимость = Истина;
Продолжить;
КонецЕсли;
ДобавитьНовыйЭлементЛегенды(ЭтотОбъект, Источник, Элементы.ЛегендаЭлементы);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеКомментарияЗавершение(ВведенныйТекст, ДополнительныеПараметры) Экспорт
ТекущиеДанные = Элементы.Источники.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
Если ВведенныйТекст = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущиеДанные.Комментарий = ВведенныйТекст;
ТекущиеДанные.Изменен = Истина;
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Процедура НачатьСохранениеИзменений()
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ПараметрыОжидания.ВыводитьОкноОжидания = Ложь;
ПараметрыОжидания.ОповещениеПользователя.Показать = Ложь;
ПараметрыОжидания.ВыводитьСообщения = Истина;
ПараметрыОперации = Новый Структура;
ПараметрыОперации.Вставить("УникальныйИдентификатор", УникальныйИдентификатор);
ПараметрыОперации.Вставить("ДокументИсточник" , ДокументИсточник);
ВыполнитьСохранениеИзмененийВДокументахВФоне(Источники, ПараметрыОперации);
Модифицированность = Ложь;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьИзмененныеСтроки(Знач Источники)
Отбор = Новый Структура("Изменен", Истина);
ТаблицаСИзменениями = Источники.Выгрузить(Отбор, "Источник, ИдентификаторСтрокиИсточника, СнятСРассмотрения, Комментарий");
Возврат ТаблицаСИзменениями;
КонецФункции
&НаСервереБезКонтекста
Функция ВыполнитьСохранениеИзмененийВДокументахВФоне(Знач Источники, Знач ПараметрыПроцедуры)
ПараметрыПроцедуры.Вставить("Источники" , ПолучитьИзмененныеСтроки(Источники));
НаименованиеФоновогоЗадания = СтрШаблон(НСтр("ru = 'Сохранение изменений сделанных при выборе предложений в документе %1'"), ПараметрыПроцедуры.ДокументИсточник);
ИмяПроцедуры = "КоммерческиеПредложенияДокументы.СохранитьПользовательскиеИзмененияВДокументахИсточниках";
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(ПараметрыПроцедуры.УникальныйИдентификатор);
ПараметрыВыполнения.НаименованиеФоновогоЗадания = НаименованиеФоновогоЗадания;
ПараметрыВыполнения.ЗапуститьВФоне = Истина;
ПараметрыВыполнения.ОжидатьЗавершение = 0;
Возврат ДлительныеОперации.ВыполнитьВФоне(ИмяПроцедуры, ПараметрыПроцедуры, ПараметрыВыполнения);
КонецФункции
&НаСервереБезКонтекста
Функция ВыполнитьПолучениеДанныхТорговогоПредложенияВФоне(Знач ПараметрыПроцедуры)
НаименованиеФоновогоЗадания = НСтр("ru = 'Получение торгового предложения'");
ИмяПроцедуры = "Документы.ЗапросКоммерческихПредложенийПоставщиков.ПолучениеДанныхТорговогоПредложения";
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(ПараметрыПроцедуры.УникальныйИдентификатор);
ПараметрыВыполнения.НаименованиеФоновогоЗадания = НаименованиеФоновогоЗадания;
ПараметрыВыполнения.ЗапуститьВФоне = Истина;
ПараметрыВыполнения.ОжидатьЗавершение = 0;
Возврат ДлительныеОперации.ВыполнитьВФоне(ИмяПроцедуры, ПараметрыПроцедуры, ПараметрыВыполнения);
КонецФункции
&НаСервереБезКонтекста
Функция ВыполнитьПоискТорговыхПредложенийВФоне(Знач ПараметрыПроцедуры)
ПараметрыПоиска = ИнтеграцияКоммерческиеПредложения.НовыеПараметрыПоискаТорговыхПредложенийСОтборами();
ПараметрыПоиска.Наименование = ПараметрыПроцедуры.Наименование;
ПараметрыПоиска.ЦенаОт = 0.1;
ПараметрыПоиска.Сортировка = "СортировкаЦенаВозрастание";
ПараметрыПоиска.Валюта = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ПараметрыПроцедуры.Валюта, "Код");
ПараметрыПоиска.Страница = ПараметрыПроцедуры.Страница;
ПараметрыПоиска.РазмерСтраницы = 25;
Если ПараметрыПроцедуры.ЦенаДо > 0 Тогда
ПараметрыПоиска.ЦенаДо = ПараметрыПроцедуры.ЦенаДо*100;
Иначе
ПараметрыПоиска.ЦенаДо = 0;
КонецЕсли;
НаименованиеЗадания = НСтр("ru = 'Получение доступных товаров из 1С:Торговая площадка'");
ИмяПроцедуры = "Документы.ЗапросКоммерческихПредложенийПоставщиков.ПоискТорговыхПредложенийПоОтбору";
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(ПараметрыПроцедуры.УникальныйИдентификатор);
ПараметрыВыполнения.НаименованиеФоновогоЗадания = НаименованиеЗадания;
ПараметрыВыполнения.ОжидатьЗавершение = 0;
Возврат ДлительныеОперации.ВыполнитьВФоне(ИмяПроцедуры, ПараметрыПоиска, ПараметрыВыполнения);
КонецФункции
&НаСервереБезКонтекста
Функция ПолучитьОписаниеИсточникаПоИмени(Знач Источники, Знач ИмяИсточника)
Источники = Источники.Выгрузить();
Источники.Индексы.Добавить("ИмяИсточника");
Отбор = Новый Структура("ИмяИсточника", ИмяИсточника);
НайденнаяСтрока = Источники.НайтиСтроки(Отбор);
СтруктураОтвет = Неопределено;
Если НайденнаяСтрока.Количество() > 0 Тогда
СтруктураОтвет = ОбщегоНазначения.СтрокаТаблицыЗначенийВСтруктуру(НайденнаяСтрока[0]);
КонецЕсли;
Возврат СтруктураОтвет;
КонецФункции
&НаКлиенте
Процедура ИсточникиВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ТекущиеДанные = Элементы.Источники.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
Если Поле = Элементы.ИсточникиПоказатьЕще
Или Поле = Элементы.ИсточникиПоставщикНаименование
Или Поле = Элементы.ИсточникиКЗаказу
Или Поле = Элементы.ИсточникиВыбрано Тогда
Возврат;
КонецЕсли;
СтандартнаяОбработка = Ложь;
Если ЗначениеЗаполнено(ТекущиеДанные.Источник) Тогда
ПоказатьЗначение(,ТекущиеДанные.Источник);
ИначеЕсли ТекущиеДанные.ИмяИсточника = "БизнесСеть" Тогда
Если Не ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЭлектронноеВзаимодействие.ТорговыеПредложения") Тогда
Возврат;
КонецЕсли;
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("Идентификатор", ТекущиеДанные.ИдентификаторСтрокиИсточника);
ПараметрыОткрытия.Вставить("Валюта", Валюта);
МодульТорговыеПредложенияКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ТорговыеПредложенияКлиент");
МодульТорговыеПредложенияКлиент.ОткрытьТорговоеПредложение(ПараметрыОткрытия, ЭтотОбъект,
ТекущиеДанные.ИдентификаторСтрокиИсточника);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
Если ЗавершениеРаботы Тогда
Возврат;
КонецЕсли;
Если Модифицированность Тогда
Описание = Новый ОписаниеОповещения("ТребуетсяСохранениеИзменений", ЭтотОбъект);
ПоказатьВопрос(Описание, НСтр("ru = 'Данные были изменены. Сохранить изменения?'"), РежимДиалогаВопрос.ДаНетОтмена);
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТребуетсяСохранениеИзменений(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено
Или Результат = КодВозвратаДиалога.Отмена Тогда
Возврат;
КонецЕсли;
ИдентификаторЗадания = Неопределено;
Если Результат = КодВозвратаДиалога.Да Тогда
НачатьСохранениеИзменений();
КонецЕсли;
Модифицированность = Ложь;
Закрыть();
КонецПроцедуры
&НаКлиенте
Процедура ИсточникиДополнительнаяИнформацияОтПоставщикаОткрытие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущиеДанные = Элементы.Источники.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("Заголовок", НСтр("ru = 'Комментарий поставщика'"));
ПараметрыОткрытия.Вставить("Текст" , ТекущиеДанные.ДополнительнаяИнформацияОтПоставщика);
ОткрытьФорму("Документ.ЗапросКоммерческихПредложенийПоставщиков.Форма.ПросмотрКомментария", ПараметрыОткрытия);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ДобавитьНовыйЭлементЛегенды(Форма, Источник, Группа)
ГруппаИсточника = Форма.Элементы.Добавить("ГруппаЛегенда_" + Источник.ИмяИсточника, Тип("ГруппаФормы"),Группа);
ГруппаИсточника.Вид = ВидГруппыФормы.ОбычнаяГруппа;
ГруппаИсточника.ОтображатьЗаголовок = Ложь;
ГруппаИсточника.Отображение = ОтображениеОбычнойГруппы.Нет;
ГруппаИсточника.ГоризонтальныйИнтервал = ИнтервалМеждуЭлементамиФормы.Половинный;
ГруппаИсточника.Группировка = ГруппировкаПодчиненныхЭлементовФормы.ГоризонтальнаяВсегда;
ЭлементКартинка = Форма.Элементы.Добавить("Легенда_" + Источник.ИмяРеквизита + "Картинка", Тип("ДекорацияФормы"), ГруппаИсточника);
ЭлементКартинка.Вид = ВидДекорацииФормы.Картинка;
ЭлементКартинка.Картинка = Источник.КартинкаИсточника;
ЭлементНадпись = Форма.Элементы.Добавить("Легенда_" + Источник.ИмяРеквизита + "Надпись", Тип("ДекорацияФормы"), ГруппаИсточника);
ЭлементНадпись.Вид = ВидДекорацииФормы.Надпись;
ЭлементНадпись.Заголовок = Источник.ПредставлениеИсточника;
КонецПроцедуры
&НаКлиенте
Процедура ПослеВопросаОСохранении(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> КодВозвратаДиалога.Да Тогда
Возврат;
КонецЕсли;
НачатьСохранениеИзменений();
ЭтотОбъект[ДополнительныеПараметры.Имя] = Не ЭтотОбъект[ДополнительныеПараметры.Имя];
Подключаемый_ОбновитьАнализируемыеИсточники(ДополнительныеПараметры);
КонецПроцедуры
#КонецОбласти