#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ИндексТовараИзСправочника = КоммерческиеПредложенияСлужебный.ИсточникДобавленияТовараЗКПВнутреннийСправочник();
ИндексТовараИзСервиса = КоммерческиеПредложенияСлужебный.ИсточникДобавленияТовараЗКП1СНоменклатура();
ИндексРучногоТовара = КоммерческиеПредложенияСлужебный.ИсточникДобавленияТовараЗКПРучнойТовар();
УстановитьУсловноеОформление();
Если Объект.Ссылка.Пустая() Тогда
ПриСозданииЧтенииНаСервере();
Если ЗначениеЗаполнено(Объект.ДокументОснование) И Объект.Товары.Количество() Тогда
НачатьЗаполнениеПредставленийКатегорийВТабличнойЧасти();
КонецЕсли;
КонецЕсли;
Если Не ПустаяСтрока(Параметры.ТекущаяСтраница) Тогда
Если Параметры.ТекущаяСтраница = "УсловияЗакупки" Тогда
Элементы.СтраницыДокумента.ТекущаяСтраница = Элементы.СтраницаУсловияЗакупки;
КонецЕсли;
КонецЕсли;
ПолучитьДоступныеИсточники();
ПолучитьСостояниеДокумента();
ЗаполнитьПоставщикаВыбранныхПредложения();
КоммерческиеПредложенияДокументыПереопределяемый.ПриСозданииНаСервере(ЭтотОбъект, Отказ, СтандартнаяОбработка);
ИнтеграцияСЭлектроннымиТорговымиПлощадками.ПриСозданииНаСервере(ЭтотОбъект, Отказ, СтандартнаяОбработка);
ПроверитьРегистрациюОрганизаций();
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
ДополнительныеПараметры.Вставить("ОтложеннаяИнициализация", Истина);
УправлениеСвойствами.ПриСозданииНаСервере(ЭтотОбъект, ДополнительныеПараметры);
ТорговыеПредложения.ПриСозданииПодсказокФормы(ЭтотОбъект, Элементы.ПодсказкиБизнесСеть);
Если Не ЗначениеЗаполнено(Объект.ДатаКурса) Тогда
Объект.ДатаКурса = ТекущаяДатаСеанса();
КонецЕсли;
ДоступностьФормыПриОткрытии = Не ТолькоПросмотр И ПравоДоступа("Редактирование",
Метаданные.Документы.ЗапросКоммерческихПредложенийПоставщиков);
ОбновитьЭлементыФормы();
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
КоммерческиеПредложенияДокументыПереопределяемый.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
УправлениеСвойствами.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ЗаполнитьОформленоЗаказов();
ПриСозданииЧтенииНаСервере();
ВернутьДанныеОПредложенияхИзКеша();
УказатьЗаполненностьИзображенияТовары(Объект.Товары);
УстановитьПризнакиКэшированияИзображенийСтрок(Объект.Товары, ИспользоватьСервисРаботаСНоменклатурой);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если Объект.Проведен Тогда
ЗаполнитьПоступившиеПредложения();
КонецЕсли;
Если ЗаданиеЗаполненияДанныхСервиса <> Неопределено Тогда
ЗаполнитьПредставленийКатегорийВТабличнойЧасти();
КонецЕсли;
ИзменитьЭтап();
ОбновитьНаименованияНоменклатуры();
ОбновитьЗаголовокГруппыАнализируемыеИсточники();
ОбновитьИтогиПодвала();
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
ТорговыеПредложенияКлиент.ОбновитьПодсказкуФормы(ЭтотОбъект);
ПроверитьСвязьСЭТПБидзаар();
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
ОчиститьСообщения();
Если Объект.ЗапрашиватьПредложенияПоставщиков = 1
И Объект.СписокСкрытыхПоставщиков.Количество() > 0 Тогда
Объект.СписокСкрытыхПоставщиков.Очистить();
ИначеЕсли Объект.ЗапрашиватьПредложенияПоставщиков = 0
И Объект.СписокПолучателейЗапроса.Количество() > 0 Тогда
Объект.СписокПолучателейЗапроса.Очистить();
ИначеЕсли Объект.ЗапрашиватьПредложенияПоставщиков = 1
И Объект.СписокПолучателейЗапроса.Количество() = 0 Тогда
Элементы.ГруппаСписокПоставщиковКОтправке.Показать();
ТекстОшибки = НСтр("ru = 'Не заполнены получатели запроса'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибки, Объект.Ссылка, "СписокПолучателейЗапроса", "Объект", Отказ);
ИначеЕсли Объект.СкрыватьЗапросОтПоставщиков
И Объект.СписокСкрытыхПоставщиков.Количество() = 0 Тогда
Элементы.ГруппаСписокПоставщиков.Показать();
ТекстОшибки = НСтр("ru = 'Не заполнен черный список поставщиков.'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибки, Объект.Ссылка, "СписокСкрытыхПоставщиков", "Объект", Отказ);
КонецЕсли;
Объект.НастройкиАнализа.Очистить();
Для Каждого Источник Из АнализируемыеИсточникиПредложений Цикл
НоваяСтрока = Объект.НастройкиАнализа.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Источник);
КонецЦикла;
Если ТипЗнч(Объект.Склад) = Тип("Строка") Тогда
Объект.АдресДоставки = Объект.Склад;
Объект.АдресДоставкиЗначенияПолей = Объект.СкладЗначенияПолей;
КонецЕсли;
КоммерческиеПредложенияДокументыКлиентПереопределяемый.ПередЗаписью(ЭтотОбъект, Отказ, ПараметрыЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
ИзменитьЭтап();
ОбновитьИтогиПодвала();
ПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом");
МодульУправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецЕсли;
ПолучитьСостояниеДокумента();
КоммерческиеПредложенияДокументы.ВосстановитьДанныеТаблицы("Товары", Объект.Товары, ПараметрыЗаписи);
ОбновитьЭлементыФормы();
СохранитьИзмененныеИзображенияТоварныхПозиций();
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если Источник = Объект.Ссылка И (ИмяСобытия = "ОтправкаЗапросаКоммерческихПредложений" Или ИмяСобытия
= "ОтменаЗапросаКоммерческихПредложений") И Параметр <> Неопределено Тогда
ПолучитьСостояниеДокумента(Параметр);
ИзменитьЭтап();
Если ИмяСобытия = "ОтправкаЗапросаКоммерческихПредложений" Тогда
ЗаполнитьПоступившиеПредложения();
КонецЕсли;
ИначеЕсли Источник = Объект.Ссылка И ИмяСобытия = "КоммерческиеПредложения_СформированЗаказПоставщику" Тогда
ПрикрепитьЗаказКЗапросу(Объект.Ссылка, Параметр);
ЗаполнитьОформленоЗаказов();
ИначеЕсли Источник = Объект.Ссылка И ИмяСобытия = "КоммерческиеПредложения_УдалениеЗаказовПоставщику" Тогда
ОткрепитьЗаказОтЗапроса(Объект.Ссылка, Параметр);
ЗаполнитьОформленоЗаказов();
ИначеЕсли ИмяСобытия = "Запись_Файл" Тогда
Если Параметр.Свойство("ВладелецФайла") Тогда
Если Параметр.ВладелецФайла <> Объект.Ссылка Тогда
Возврат;
КонецЕсли;
КонецЕсли;
ПолучитьСостояниеДокумента();
ИзменитьЭтап();
ИначеЕсли ИмяСобытия = КоммерческиеПредложенияДокументыКлиент.ИмяСобытияЗаписатьНовыйДокументЗКПП() Тогда
ЗаписатьНовыйДокументЗКПП(Параметр);
ИначеЕсли ИмяСобытия = "БизнесСеть_РегистрацияОрганизаций" Тогда
ПроверитьРегистрациюОрганизаций();
ИначеЕсли ИмяСобытия = "Бидзаар_УчетнаяЗаписьАктивация" Или ИмяСобытия = "Бидзаар_УчетнаяЗаписьДеактивация"
И ТипЗнч(Параметр) = Тип("Структура") Тогда
ВидЭТП = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметр, "ВидЭТП");
РазделУчета = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметр, "РазделУчета", "");
Организация = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметр, "Организация");
Если Объект.Организация = Организация И (ВидЭТП = ПредопределенноеЗначение(
"Перечисление.ВидыЭлектронныхТорговыхПлощадок.БидзаарПокупатели")
Или РазделУчета = ИнтеграцияСЭлектроннымиТорговымиПлощадкамиКлиентСервер.РазделУчетаПокупатели()) Тогда
РезультатАвторизации = ИмяСобытия = "Бидзаар_УчетнаяЗаписьАктивация";
ПроверитьРегистрациюОрганизаций(РезультатАвторизации);
КонецЕсли;
ИначеЕсли ИмяСобытия = "Запись_НаборКонстант" Тогда
ИспользоватьСервисРаботаСНоменклатурой = ИспользоватьСервисРаботаСНоменклатурой();
ИначеЕсли ИмяСобытия = "Бидзаар_ПроверкаСвязиСЭТП" И Источник = Объект.Ссылка И ТипЗнч(Параметр) = Тип("Структура") Тогда
Организация = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметр, "Организация");
Если Организация = Объект.Организация Тогда
Результат = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметр, "Результат", Новый Структура);
КодСостояния = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Результат, "КодСостояния", "");
Если КодСостояния = ИнтеграцияСЭлектроннымиТорговымиПлощадкамиКлиентСервер.КодОтветаОК() Тогда
ПроверитьРегистрациюОрганизаций(Истина);
Если ЗначениеЗаполнено(Объект.Ссылка) И Не ТребуетсяРегистрацияОрганизации Тогда
ИнтеграцияСЭлектроннымиТорговымиПлощадкамиКлиент.ПолучитьСостоянияБидзаар(Объект.Ссылка);
КонецЕсли;
КонецЕсли;
КонецЕсли;
ИначеЕсли ИмяСобытия = "Бидзаар_ОтправкаЗапросаКоммерческихПредложений" И Источник = Объект.Ссылка
И Параметр <> Неопределено Тогда
Если Не ПустаяСтрока(Параметр.Идентификатор) Тогда
Объект.ИдентификаторВСервисе = Параметр.Идентификатор;
Записать();
КонецЕсли;
ОповещениеОтправкаЗапросаКоммерческихПредложенийБидзаар(Параметр.СостояниеДокумента, ОбщегоНазначенияКлиент.ДатаСеанса());
ОбновитьИтогиПодвала();
ИзменитьЭтап();
ИначеЕсли ИмяСобытия = "ПолучитьСостояниеБидзаар" И Источник = Объект.Ссылка И Параметр <> Неопределено Тогда
Если Параметр.Состояние = "" Тогда
Если ПустаяСтрока(Объект.ИдентификаторВСервисе) Тогда
Элементы.СтатусВСервисе.Заголовок = ИнтеграцияСЭлектроннымиТорговымиПлощадкамиКлиентСервер.СостояниеНеопределено();
Иначе
Элементы.СтатусВСервисе.Заголовок = ИнтеграцияСЭлектроннымиТорговымиПлощадкамиКлиентСервер.СостояниеЧерновик();
КонецЕсли;
Иначе
Элементы.СтатусВСервисе.Заголовок = Параметр.Состояние;
КонецЕсли;
Если ТребуетсяРегистрацияОрганизации Тогда
ПроверитьРегистрациюОрганизаций(Истина);
КонецЕсли;
ПолучитьСостояниеДокумента();
ИзменитьЭтап();
ИначеЕсли Источник = Объект.Ссылка И ИмяСобытия = "ПереносДанныхКоммерческихПредложенийБидзаар" И Параметр <> Неопределено Тогда
ЗаписатьДанныеПредложенийБидзаар(Параметр);
ИспользоватьЗаказыПоставщикам = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(НастройкиУчета,
"ИспользоватьЗаказыПоставщикам", Истина);
Если Не ИспользоватьЗаказыПоставщикам Тогда
ИзменитьЭтап();
КонецЕсли;
ИначеЕсли Источник = Объект.Ссылка И ИмяСобытия = "Бидзаар_СформированыЗаказыПоставщикам" Тогда
ЗаполнитьОформленоЗаказов();
ИзменитьЭтап();
ИначеЕсли Источник = Объект.Ссылка И ИмяСобытия = "ИзмененоСостояниеДокумента" Тогда
ПолучитьСостояниеДокумента(Параметр);
ИзменитьЭтап();
КонецЕсли;
Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтотОбъект, ИмяСобытия, Параметр) Тогда
ОбновитьЭлементыДополнительныхРеквизитов();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
КоммерческиеПредложенияДокументыКлиентПереопределяемый.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр,
Источник);
КонецПроцедуры
&НаСервере
Процедура ОповещениеОтправкаЗапросаКоммерческихПредложенийБидзаар(СостояниеДокумента, ДатаСобытия)
ПолучитьСостояниеДокумента(СостояниеДокумента);
ОбновитьЭлементыФормы();
КонецПроцедуры
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПараметрыЗаписи.Вставить("Новый", Истина);
КонецЕсли;
ПараметрыКэширования = Новый Структура;
ПараметрыКэширования.Вставить("ИмяТаблицы", "Товары");
ПараметрыКэширования.Вставить("Реквизиты" , "ХарактеристикиИспользуются, Поступило,
|КЗаказу, Внимание, Поставщик, Сумма, ВыбранКЗаказу, КоличествоПредложений");
КоммерческиеПредложенияДокументы.КэшироватьДанныеТаблицы(Объект.Товары, ПараметрыКэширования, ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
ПроверитьИзменениеДаты("ДатаОкончанияПубликации", Отказ);
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект);
Отбор = Новый Структура("ТребуетсяСоздатьФайлИзображения", Истина);
СтрокиТребующиеСозданиеИзображения = Объект.Товары.НайтиСтроки(Отбор);
ТекущийОбъект.ДополнительныеСвойства.Вставить("СтрокиТребующиеСозданиеИзображения",
СтрокиТребующиеСозданиеИзображения);
КонецПроцедуры
&НаКлиенте
Процедура ВнешнееСобытие(Источник, Событие, Данные)
КоммерческиеПредложенияДокументыКлиентПереопределяемый.ВнешнееСобытие(ЭтотОбъект, Источник, Событие, Данные);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ДекорацияОтбораПоступившиеПредложенияНадписьОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
СнятьОтборыУТаблиц();
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияЗаказыНажатие(Элемент)
МассивСсылок = ПолучитьЗаказыЗапросаКоммерческихПредложений(Объект.Ссылка);
Если МассивСсылок.Количество() > 0 Тогда
КоммерческиеПредложенияДокументыКлиентПереопределяемый.ОткрытьФормуСпискаЗаказаПоставщику(МассивСсылок);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВалютаПриИзменении(Элемент)
ПересчитатьЦеныВДокументе();
ОбновитьЭлементыФормы();
ИзменитьЭтап();
ОбновитьИтогиПодвала();
ПоказатьОповещениеПользователя(НСтр("ru = 'Пересчет выполнен'"),,
СтрШаблон(НСтр("ru = 'Сумма позиций выбранных к заказу пересчитана в валюту %1'"), Объект.Валюта),
БиблиотекаКартинок.Информация32);
КонецПроцедуры
&НаКлиенте
Процедура СкладНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Если ТипЗнч(Объект.Склад) = Тип("Строка") Тогда
СтандартнаяОбработка = Ложь;
ВидКонтактнойИнформации = ПараметрыВидаКонтактнойИнформации(
ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Адрес"));
ВидКонтактнойИнформации.Вставить("РедактированиеТолькоВДиалоге", Истина);
ВидКонтактнойИнформации.Вставить("ОбязательноеЗаполнение", Истина);
ВидКонтактнойИнформации.Вставить("Наименование", НСтр("ru = 'Введите адрес доставки'"));
ВидКонтактнойИнформации.НастройкиПроверки.ВключатьСтрануВПредставление = Истина;
ВидКонтактнойИнформации.НастройкиПроверки.ПроверятьКорректность = Истина;
ПараметрыОткрытия = УправлениеКонтактнойИнформациейКлиент.ПараметрыФормыКонтактнойИнформации(
ВидКонтактнойИнформации, Объект.СкладЗначенияПолей, Объект.Склад,,
ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Адрес"));
ПараметрыЗавершения = Новый Структура;
ПараметрыЗавершения.Вставить("ИмяРеквизита", "Склад");
Оповещение = Новый ОписаниеОповещения("ОткрытьФормуКонтактнойИнформацииЗавершение", ЭтотОбъект, ПараметрыЗавершения);
УправлениеКонтактнойИнформациейКлиент.ОткрытьФормуКонтактнойИнформации(ПараметрыОткрытия, , Оповещение);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФормуКонтактнойИнформацииЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если ТипЗнч(Результат) = Тип("Структура") Тогда
ИмяРеквизита = "";
ДополнительныеПараметры.Свойство("ИмяРеквизита", ИмяРеквизита);
Модифицированность = Истина;
Объект[ИмяРеквизита + "ЗначенияПолей"] = Результат.Значение;
Объект[ИмяРеквизита] = Результат.Представление;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СкладОчистка(Элемент, СтандартнаяОбработка)
Объект.СкладЗначенияПолей = "";
КонецПроцедуры
&НаКлиенте
Процедура ВариантУказанияСрокаПоставкиПриИзменении(Элемент)
ОбновитьЭлементыФормы();
ИзменитьЭтап();
ОбновитьИтогиПодвала();
КонецПроцедуры
&НаКлиенте
Процедура ЗапрашиватьПредложенияПоставщиковПриИзменении(Элемент)
Модифицированность = Истина;
ПроверитьРегистрациюОрганизаций();
ОбновитьЭлементыФормы();
ИзменитьЭтап();
ОбновитьИтогиПодвала();
Если Объект.ЗапрашиватьПредложенияПоставщиков = 2 Тогда
ПроверитьСвязьСЭТПБидзаар();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СкрыватьЗапросОтПоставщиковПриИзменении(Элемент)
ОбновитьЭлементыФормы();
ИзменитьЭтап();
ОбновитьИтогиПодвала();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьАнализируемыеИсточники(Элемент)
Если Не ТолькоПросмотр Тогда
Модифицированность = Истина;
КонецЕсли;
Если Не Элемент = Элементы.ЦенаВключаетНДС Тогда
ОбновитьЗначенияВыбораАнализируемыхИсточников();
КонецЕсли;
ОбновитьЗаголовокГруппыАнализируемыеИсточники();
КонецПроцедуры
&НаКлиенте
Процедура ВопросСохранитьДокументЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Истина Тогда
ОткрытьПрисоединенныеФайлы();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВопросСохранитьДокументЗавершениеПереходСостояний(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Истина Тогда
ВыполнитьДействиеПриПереходеСостояний(
ДополнительныеПараметры.ТекущееСостояниеДокумента, ДополнительныеПараметры.НовоеСостояниеДокумента);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьВопросСохраненияДокумента(ОписаниеОкончания, Провести = Ложь)
ТекстВопроса = НСтр("ru = 'Для продолжения операции необходимо записать документ.
|Записать документ?'");
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Провести", Провести);
ДополнительныеПараметры.Вставить("ОписаниеОкончания", ОписаниеОкончания);
ОписаниеОповещения = Новый ОписаниеОповещения("ВопросСохраненияДокументаЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Да);
КонецПроцедуры
&НаКлиенте
Процедура ВопросСохраненияДокументаЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = КодВозвратаДиалога.Да Тогда
Выполнен = Записать(Новый Структура("РежимЗаписи", ?(ДополнительныеПараметры.Провести, РежимЗаписиДокумента.Проведение, РежимЗаписиДокумента.Запись)));
ВыполнитьОбработкуОповещения(ДополнительныеПараметры.ОписаниеОкончания, Выполнен);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьВопросЗавершенияДокумента()
СборПредложений = ТекущееСостояние = ПредопределенноеЗначение(
"Перечисление.СостоянияЗапросаКоммерческихПредложений.СборПредложений");
ЗагрузкаИтоговыхДанных = ТекущееСостояние = ПредопределенноеЗначение(
"Перечисление.СостоянияЗапросаКоммерческихПредложений.ЗагрузкаИтоговыхДанныхБидзаар");
Если СборПредложений И Элементы.СтатусВСервисе.Заголовок
= ИнтеграцияСЭлектроннымиТорговымиПлощадкамиКлиентСервер.СостояниеЧерновик() Тогда
ТекстВопроса = НСтр("ru = 'Коммерческое предложение в сервисе Бидзаар не было опубликовано.
|После завершения станут недоступны обновление состояний и подведение итогов.
|Завершить коммерческое предложение?'");
ИначеЕсли ЗагрузкаИтоговыхДанных Тогда
ТекстВопроса = НСтр("ru = 'После завершения станет недоступно обновление состояний и подведение итогов.
|Завершить коммерческое предложение?'");
ИначеЕсли Не ПустаяСтрока(Объект.ИдентификаторВСервисе) Тогда
ТекстВопроса = НСтр("ru = 'Данная операция производится в сервисе Бидзаар.
|Перейти в сервис Бидзаар?'");
Иначе
ТекстОшибки = НСтр("ru = 'Коммерческое предложение в текущем состоянии невозможно завершить.'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибки);
Возврат;
КонецЕсли;
ОписаниеОповещения = Новый ОписаниеОповещения("ВопросЗавершенияДокументЗавершение", ЭтотОбъект);
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Да);
КонецПроцедуры
&НаКлиенте
Процедура ВопросЗавершенияДокументЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = КодВозвратаДиалога.Да Тогда
СборПредложений = ТекущееСостояние = ПредопределенноеЗначение(
"Перечисление.СостоянияЗапросаКоммерческихПредложений.СборПредложений");
ЗагрузкаИтоговыхДанных = ТекущееСостояние = ПредопределенноеЗначение(
"Перечисление.СостоянияЗапросаКоммерческихПредложений.ЗагрузкаИтоговыхДанныхБидзаар");
Если ЗагрузкаИтоговыхДанных Или (СборПредложений И Элементы.СтатусВСервисе.Заголовок
= ИнтеграцияСЭлектроннымиТорговымиПлощадкамиКлиентСервер.СостояниеЧерновик()) Тогда
Завершено = ПредопределенноеЗначение("Перечисление.СостоянияЗапросаКоммерческихПредложений.Завершено");
ОбновитьСостояниеДокумента(Объект.Ссылка, Завершено, Завершено);
ПолучитьСостояниеДокумента();
ИзменитьЭтап();
Иначе
ВидЭТП = ПредопределенноеЗначение("Перечисление.ВидыЭлектронныхТорговыхПлощадок.БидзаарПокупатели");
НавигационнаяСсылка = ИнтеграцияСЭлектроннымиТорговымиПлощадкамиКлиент.СтрокаПодключенияКСервису(ВидЭТП,
ИнтеграцияСЭлектроннымиТорговымиПлощадкамиКлиентСервер.РазделУчетаПокупатели()) + СсылкаНаСтраницуЗапроса();
ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку(НавигационнаяСсылка);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПрисоединенныеФайлы()
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ВладелецФайла", Объект.Ссылка);
ПараметрыФормы.Вставить("ТолькоПросмотр", ТолькоПросмотр);
ФиксированныеНастройки = Новый НастройкиКомпоновкиДанных;
ИзображенияТоварныхПозиций = ИзображенияРучныхТоварныхПозиций(Объект.Ссылка);
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(ФиксированныеНастройки.Отбор, "Ссылка",
ИзображенияТоварныхПозиций, ВидСравненияКомпоновкиДанных.НеВСписке);
ПараметрыФормы.Вставить("ФиксированныеНастройки", ФиксированныеНастройки);
ОписаниеОповещения = Новый ОписаниеОповещения("ЗакончитьРедактированиеФайлов", ЭтотОбъект);
ИмяФормыПрисоединенныхФайлов = "Обработка.РаботаСФайлами.Форма.ПрисоединенныеФайлы";
ОткрытьФорму(ИмяФормыПрисоединенныхФайлов, ПараметрыФормы, УникальныйИдентификатор,,,, ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ЗакончитьРедактированиеФайлов(Результат, ДополнительныеПараметры) Экспорт
ОбновитьКоличествоФайлов();
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияОсталосьВыбратьОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
СнятьОтборыУТаблиц();
Если НавигационнаяСсылкаФорматированнойСтроки = "Осталось" Тогда
УстановитьОтборПоНоменклатуреКЗаказу(Ложь);
ИначеЕсли НавигационнаяСсылкаФорматированнойСтроки = "Выбрано" Тогда
УстановитьОтборПоНоменклатуреКЗаказу(Истина);
ИначеЕсли НавигационнаяСсылкаФорматированнойСтроки = "Поставщики" Тогда
УстановитьОтборПоВыбраннымКЗаказуПоставщикам();
Иначе
Возврат;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияОшибкаТекстОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
Если НавигационнаяСсылкаФорматированнойСтроки = "ПричиныПроблемы" Тогда
СтандартнаяОбработка = Ложь;
ПараметрыОткрытия = ПолучитьОшибкиПоступившихПредложений(ПоступившиеПредложения);
ОткрытьФорму("Документ.ЗапросКоммерческихПредложенийПоставщиков.Форма.ФормаПросмотраОшибок",
ПараметрыОткрытия, ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДатаКурсаПриИзменении(Элемент)
ПересчитатьЦеныВДокументе();
ОбновитьЭлементыФормы();
ИзменитьЭтап();
ОбновитьИтогиПодвала();
ПоказатьОповещениеПользователя(НСтр("ru = 'Пересчет выполнен'"), ,
СтрШаблон(НСтр("ru = 'Сумма позиций выбранных к заказу пересчитаны по курсу на %1'"),
Формат(Объект.ДатаКурса,"ДЛФ=D")),
БиблиотекаКартинок.Информация32);
КонецПроцедуры
&НаКлиенте
Процедура ДатаКурсаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ДатаСеанса = ОбщегоНазначенияКлиент.ДатаСеанса();
Если Не ЗначениеЗаполнено(ВыбранноеЗначение) Тогда
ВыбранноеЗначение = ДатаСеанса;
КонецЕсли;
Если НачалоДня(ВыбранноеЗначение) > НачалоДня(ДатаСеанса) Тогда
ВыбранноеЗначение = ДатаСеанса;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
ПроверитьРегистрациюОрганизаций();
ПроверитьСвязьСЭТПБидзаар();
КонецПроцедуры
&НаКлиенте
Процедура ЗавершеноОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
ОчиститьСообщения();
СтандартнаяОбработка = Ложь;
Состояние = ПредопределенноеЗначение("Перечисление.СостоянияЗапросаКоммерческихПредложений.Завершено");
ВыполнитьДействиеПриПереходеСостояний(ТекущееСостояние, Состояние);
КонецПроцедуры
&НаКлиенте
Процедура СборПредложенийОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
ОчиститьСообщения();
СтандартнаяОбработка = Ложь;
Если ТребуетсяРегистрацияОрганизации И Не Объект.Организация.Пустая() Тогда
ПараметрыМетода = Новый Структура;
ПараметрыМетода.Вставить("НавигационнаяСсылкаФорматированнойСтроки", НавигационнаяСсылкаФорматированнойСтроки);
Если Объект.ЗапрашиватьПредложенияПоставщиков = 2 Тогда
Оповещение = Новый ОписаниеОповещения("ПодключениеОрганизацииБидзаарПродолжение", ЭтотОбъект, ПараметрыМетода);
ИнтеграцияСЭлектроннымиТорговымиПлощадкамиКлиент.ОткрытьФормуПодключенияОрганизацииБидзаар(Объект.Организация,
ЭтотОбъект, Оповещение);
Иначе
Оповещение = Новый ОписаниеОповещения("ПодключениеОрганизацииПродолжение", ЭтотОбъект, ПараметрыМетода);
БизнесСетьСлужебныйКлиент.ОткрытьФормуПодключенияОрганизации(Объект.Организация, ЭтотОбъект, Оповещение);
КонецЕсли;
Иначе
СборПредложенийОбработкаНавигационнойСсылкиПродолжить(НавигационнаяСсылкаФорматированнойСтроки);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияСостояниеВыполнениеОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОбработатьИзмененияШапки(НавигационнаяСсылкаФорматированнойСтроки);
КонецПроцедуры
&НаКлиенте
Процедура УсловияДоставкиТекстОткрытие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияКомментария(Элементы.УсловияДоставкиТекст.ТекстРедактирования,
ЭтотОбъект,
"Объект.УсловиеПоставкиТекст",
НСтр("ru = 'Условия поставки'"));
КонецПроцедуры
&НаКлиенте
Процедура УсловияОплатыТекстОткрытие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияКомментария(Элементы.УсловияОплатыТекст.ТекстРедактирования,
ЭтотОбъект,
"Объект.УсловияОплатыТекст",
НСтр("ru = 'Условия оплаты'"));
КонецПроцедуры
&НаКлиенте
Процедура КомментарийОткрытие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияКомментария(Элементы.Комментарий.ТекстРедактирования,
ЭтотОбъект,
"Объект.Комментарий",
НСтр("ru = 'Комментарий'"));
КонецПроцедуры
&НаКлиенте
Процедура ПрочаяДополнительнаяИнформацияОткрытие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияКомментария(Элементы.ПрочаяДополнительнаяИнформация.ТекстРедактирования,
ЭтотОбъект,
"Объект.ПрочаяДополнительнаяИнформацияТекст",
НСтр("ru = 'Прочие условия'"));
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьВопросВыбораИсточникаКЗаказу(ОписаниеОкончания, Провести = Ложь)
ТекстВопроса = НСтр("ru = 'Выбор прочих коммерческих предложений будет сброшен.
|Продолжить?'");
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ОписаниеОкончания", ОписаниеОкончания);
ОписаниеОповещения = Новый ОписаниеОповещения("ВопросВыбораИсточникаКЗаказуЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Да);
КонецПроцедуры
&НаКлиенте
Процедура ВопросВыбораИсточникаКЗаказуЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = КодВозвратаДиалога.Да Тогда
ВыполнитьОбработкуОповещения(ДополнительныеПараметры.ОписаниеОкончания);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДатаОкончанияПубликацииПриИзменении(Элемент)
Объект.ДатаОкончанияПубликации = КонецДня(Объект.ДатаОкончанияПубликации);
КонецПроцедуры
&НаКлиенте
Процедура ПодключениеОрганизацииПродолжение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Если Результат.СтатусПодключения = "Подключена" Тогда
ПроверитьРегистрациюОрганизаций();
Если ДополнительныеПараметры <> Неопределено
И ДополнительныеПараметры.Свойство("НавигационнаяСсылкаФорматированнойСтроки") Тогда
СборПредложенийОбработкаНавигационнойСсылкиПродолжить(ДополнительныеПараметры.НавигационнаяСсылкаФорматированнойСтроки);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПодключениеОрганизацииБидзаарПродолжение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
УспешнаяАвторизация = Ложь;
Если ТипЗнч(Результат) = Тип("Структура") Тогда
РезультатАвторизации = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Результат, "УспешнаяАвторизация", Ложь);
КонецЕсли;
ПроверитьРегистрациюОрганизаций(РезультатАвторизации);
Если ТипЗнч(ДополнительныеПараметры) = Тип("Структура") Тогда
НавигационнаяСсылкаФорматированнойСтроки = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(
ДополнительныеПараметры, "НавигационнаяСсылкаФорматированнойСтроки", "");
СборПредложенийОбработкаНавигационнойСсылкиПродолжить(НавигационнаяСсылкаФорматированнойСтроки);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияРегистрацияОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если Объект.Организация.Пустая() Тогда
Возврат;
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ПодключениеОрганизацииПродолжение", ЭтотОбъект);
БизнесСетьКлиент.ОткрытьФормуПодключенияОрганизации(Объект.Организация, ЭтотОбъект, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ДекорацияРегистрацияБидзаарОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если Объект.Организация.Пустая() Тогда
Возврат;
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ПодключениеОрганизацииБидзаарПродолжение", ЭтотОбъект);
ИнтеграцияСЭлектроннымиТорговымиПлощадкамиКлиент.ОткрытьФормуПодключенияОрганизацииБидзаар(Объект.Организация, ЭтотОбъект, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура МенеджерКонтактныеДанныеПредставлениеНажатие(Элемент)
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Менеджер", Объект.Менеджер);
ПараметрыФормы.Вставить("Email", Объект.МенеджерEmail);
ПараметрыФормы.Вставить("Телефон", Объект.МенеджерНомерТелефона);
ПараметрыФормы.Вставить("ТолькоПросмотр", ТолькоПросмотр);
ОповещениеЗакрытияФормы = Новый ОписаниеОповещения("ПриИзмененииКонтактнойИнформацииМенеджера", ЭтотОбъект);
ОткрытьФорму("Документ.ЗапросКоммерческихПредложенийПоставщиков.форма.ВводКонтактнойИнформации", ПараметрыФормы, , ,
, , ОповещениеЗакрытияФормы, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ПриИзмененииКонтактнойИнформацииМенеджера(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Если Объект.МенеджерEmail <> Результат.Email Или Объект.МенеджерНомерТелефона <> Результат.Телефон Тогда
Модифицированность = Истина
КонецЕсли;
Объект.МенеджерEmail = Результат.Email;
Объект.МенеджерНомерТелефона = Результат.Телефон;
Элементы.МенеджерКонтактныеДанныеПредставление.Заголовок = ПредставленияКИМенеджера(Объект.Менеджер, Объект.МенеджерEmail,
Объект.МенеджерНомерТелефона);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиНачалоВыбора(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ВидКонтактнойИнформации = ПараметрыВидаКонтактнойИнформации(
ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Адрес"));
ВидКонтактнойИнформации.Вставить("РедактированиеТолькоВДиалоге", Истина);
ВидКонтактнойИнформации.Вставить("ОбязательноеЗаполнение", Истина);
ВидКонтактнойИнформации.Вставить("Наименование", НСтр("ru = 'Введите адрес доставки'"));
ВидКонтактнойИнформации.НастройкиПроверки.ВключатьСтрануВПредставление = Истина;
ВидКонтактнойИнформации.НастройкиПроверки.ПроверятьКорректность = Истина;
ПараметрыОткрытия = УправлениеКонтактнойИнформациейКлиент.ПараметрыФормыКонтактнойИнформации(
ВидКонтактнойИнформации, Объект.АдресДоставкиЗначенияПолей, Объект.АдресДоставки,,
ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Адрес"));
ПараметрыЗавершения = Новый Структура;
ПараметрыЗавершения.Вставить("ИмяРеквизита", "АдресДоставки");
Оповещение = Новый ОписаниеОповещения("ОткрытьФормуКонтактнойИнформацииЗавершение", ЭтотОбъект, ПараметрыЗавершения);
УправлениеКонтактнойИнформациейКлиент.ОткрытьФормуКонтактнойИнформации(ПараметрыОткрытия,,Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура МенеджерПриИзменении(Элемент)
ЗаполнениеКИМенеджера(Объект.Менеджер, Объект.МенеджерEmail, Объект.МенеджерНомерТелефона);
Элементы.МенеджерКонтактныеДанныеПредставление.Заголовок = ПредставленияКИМенеджера(Объект.Менеджер, Объект.МенеджерEmail,
Объект.МенеджерНомерТелефона);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПриИзменении(Элемент)
Объект.АдресДоставкиЗначенияПолей = "";
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыТовары
&НаКлиенте
Процедура АдресКартинкиНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если ТолькоПросмотр Тогда
Возврат
КонецЕсли;
Если ЗначениеЗаполнено(АдресКартинки) Тогда
ПросмотретьИзображениеОбработчик();
ИначеЕсли ДобавлениеИзображенияКТоваруРазрешено Тогда
ДобавитьИзображениеОбработчик();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриАктивизацииСтроки(Элемент)
АдресКартинки = "";
ТекущиеДанные = Элемент.ТекущиеДанные;
Если ОтсутствуютТекущиеДанныеТЧТовары(ТекущиеДанные) Тогда
Возврат;
КонецЕсли;
УстановитьАдресКартинки(АдресКартинки, ТекущиеДанные.Изображение, ТекущиеДанные.ИзображениеАдресДвоичныхДанных,
ПанельОтображается, УникальныйИдентификатор);
УстановитьВидимостьПодсказкиИзображения(ТекущиеДанные);
УстановитьТекстНевыбраннойКартинки(ТекущиеДанные);
УстановитьДоступностьКомандИзображения(ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
Если Копирование Тогда
ТекущийРежимДобавленияТовара = Элементы.Товары.ТекущиеДанные.ИсточникДобавленияТовара;
Иначе
ТекущийРежимДобавленияТовара = Объект.ТекущийРежимДобавленияТовара;
КонецЕсли;
Если ТекущийРежимДобавленияТовара = 0 Тогда
Элементы.Товары.ТекущийЭлемент = Элементы.ТоварыНоменклатура;
ИначеЕсли ТекущийРежимДобавленияТовара = 1 Тогда
Элементы.Товары.ТекущийЭлемент = Элементы.ТоварыНоменклатураВСервисеПредставление;
Иначе
Элементы.Товары.ТекущийЭлемент = Элементы.ТоварыИсточникДобавленияТовараТекстом;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если НоваяСтрока Тогда
ТекущиеДанные.ИдентификаторСтрокиЗапроса = Новый УникальныйИдентификатор;
ТекущиеДанные.КлючСинхронизации = Новый УникальныйИдентификатор;
Если Не Копирование Тогда
ТекущиеДанные.ИсточникДобавленияТовара = Объект.ТекущийРежимДобавленияТовара;
КонецЕсли;
Если ТекущиеДанные.ИсточникДобавленияТовара = ИндексТовараИзСправочника
И Не ПустаяСтрока(ТекущиеДанные.ИдентификаторЗадания) Тогда
ТекущиеДанные.ОшибкаПолученияКатегории = Ложь;
ТекущиеДанные.ИдентификаторЗадания = Неопределено;
ЗаполнитьПредставлениеКатегории(ТекущиеДанные);
КонецЕсли;
ИначеЕсли ПустаяСтрока(ТекущиеДанные.ИдентификаторСтрокиЗапроса) Тогда
ТекущиеДанные.ИдентификаторСтрокиЗапроса = Новый УникальныйИдентификатор;
КонецЕсли;
Если Копирование Тогда
ТекущийРежимДобавленияТовара = ТекущиеДанные.ИсточникДобавленияТовара;
ИначеЕсли НоваяСтрока Тогда
ТекущийРежимДобавленияТовара = Объект.ТекущийРежимДобавленияТовара;
Иначе
Возврат;
КонецЕсли;
Если ТекущийРежимДобавленияТовара = 0 Тогда
Элементы.Товары.ТекущийЭлемент = Элементы.ТоварыНоменклатура;
ИначеЕсли ТекущийРежимДобавленияТовара = 1 Тогда
Элементы.Товары.ТекущийЭлемент = Элементы.ТоварыНоменклатураВСервисеПредставление;
Иначе
Элементы.Товары.ТекущийЭлемент = Элементы.ТоварыИсточникДобавленияТовараТекстом;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПослеУдаления(Элемент)
Если Объект.Товары.Количество() = 0 Тогда
Объект.ТекущийРежимДобавленияТовара = 0;
КонецЕсли;
ОбновитьЭлементыФормы();
ИзменитьЭтап();
ОбновитьИтогиПодвала();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураВСервисеПредставлениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если Не ИспользоватьСервисРаботаСНоменклатурой Тогда
ОписаниеПродолжения = Новый ОписаниеОповещения("ОткрытьПодборНоменклатурыИзСервисаПродолжение", ЭтотОбъект);
ВключитьИспользованиеСервисаРаботыСНоменклатурой(ОписаниеПродолжения)
Иначе
ОткрытьПодборНоменклатурыИзСервиса();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыКатегорияВСервисеПредставлениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОчиститьСообщения();
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ОтсутствуютТекущиеДанныеТЧТовары(ТекущиеДанные) Тогда
Возврат;
КонецЕсли;
ПараметрыФормыВыбора = РаботаСНоменклатуройКлиент.ПараметрыФормыЗагрузкиКатегорий();
Если ЗначениеЗаполнено(ТекущиеДанные.КатегорияВСервисеИдентификатор) Тогда
ПараметрыФормыВыбора.ИдентификаторыВыбранныхКатегорий.Добавить(
Формат(Число(ТекущиеДанные.КатегорияВСервисеИдентификатор),"ЧГ="));
КонецЕсли;
ПараметрыФормыВыбора.РежимВыбораКатегорий = Истина;
ПараметрыФормыВыбора.СкрыватьОписаниеКатегорий = Истина;
ПараметрыФормыВыбора.ОдиночныйРежимВыбора = Истина;
ПараметрыФормыВыбора.ЗаголовокФормы = НСтр("ru = 'Выбор категории'");
Оповещение = Новый ОписаниеОповещения("КатегорияПослеВыбора", ЭтотОбъект);
РаботаСНоменклатуройКлиент.ОткрытьФормуЗагрузкиКатегорий(ПараметрыФормыВыбора, ЭтотОбъект,
Оповещение, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыВыборПредложенийВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ОценкаПроизводительностиКлиент.ЗамерВремени("Документ.ЗапросКоммерческихПредложенийПоставщиков.Форма.СравнениеИВыборПредложений.СравнениеИВыборПредложений",
Ложь, Истина);
Если Не Поле = Элементы.ТоварыВыборПредложенийПоступило Или ТолькоПросмотр Тогда
Возврат;
КонецЕсли;
СтандартнаяОбработка = Ложь;
ТекущиеДанные = Элементы.ТоварыВыборПредложений.ТекущиеДанные;
Если ТекущиеДанные = Неопределено
Или ТолькоПросмотр Тогда
Возврат;
КонецЕсли;
Если ЗначениеЗаполнено(ТекущиеДанные.Номенклатура) Тогда
НаименованиеДляПоиска = Строка(ТекущиеДанные.Номенклатура);
ИначеЕсли Не ПустаяСтрока(ТекущиеДанные.НоменклатураВСервисеПредставление) Тогда
НаименованиеДляПоиска = ТекущиеДанные.НоменклатураВСервисеПредставление;
Иначе
НаименованиеДляПоиска = ТекущиеДанные.НоменклатураТекстом;
КонецЕсли;
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("ИдентификаторСтрокиЗапроса" , ТекущиеДанные.ИдентификаторСтрокиЗапроса);
ПараметрыОткрытия.Вставить("НоменклатураНаименование" , ТекущиеДанные.НаименованиеСтрокой);
ПараметрыОткрытия.Вставить("НаименованиеДляПоиска" , НаименованиеДляПоиска);
ПараметрыОткрытия.Вставить("Количество" , ТекущиеДанные.Количество);
ПараметрыОткрытия.Вставить("ЕдиницаИзмерения" , ТекущиеДанные.ЕдиницаИзмерения);
ПараметрыОткрытия.Вставить("Валюта" , Объект.Валюта);
ПараметрыОткрытия.Вставить("ДокументИсточник" , Объект.Ссылка);
ПараметрыОткрытия.Вставить("ЦенаВключаетНДС" , Объект.ЦенаВключаетНДС);
ПараметрыОткрытия.Вставить("ИдентификаторКатегории" , ТекущиеДанные.КатегорияВСервисеИдентификатор);
ПараметрыОткрытия.Вставить("ЦенаДо" , ТекущиеДанные.МаксимальнаяЦена);
ПараметрыОткрытия.Вставить("ДатаКурса" , Объект.ДатаКурса);
ПараметрыОткрытия.Вставить("Организация" , Объект.Организация);
ЗаполнитьПараметрыНаСервере(ПараметрыОткрытия, УникальныйИдентификатор, Объект.ВыбранныеИсточники, АнализируемыеИсточникиПредложений);
Оповещение = Новый ОписаниеОповещения("ВыборПредложенийЗавершение", ЭтотОбъект, Элементы.ТоварыВыборПредложений.ТекущаяСтрока);
ОткрытьФорму("Документ.ЗапросКоммерческихПредложенийПоставщиков.Форма.СравнениеИВыборПредложений",
ПараметрыОткрытия,
УникальныйИдентификатор,,,,
Оповещение,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриИзменении(Элемент)
Если Элементы.Товары.ТекущийЭлемент = Неопределено Тогда
Возврат;
КонецЕсли;
Если Не Элементы.ГруппаТоварыНоменклатура.ПодчиненныеЭлементы.Найти(Элементы.Товары.ТекущийЭлемент.Имя) = Неопределено Тогда
ОбновитьНаименованияНоменклатуры();
КонецЕсли;
ОбновитьИтогиПодвала();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
ОбновитьНаименованияНоменклатуры();
ОбновитьДанныеВКешеСтрок();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПередУдалением(Элемент, Отказ)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ОтсутствуютТекущиеДанныеТЧТовары(ТекущиеДанные) Тогда
Возврат;
КонецЕсли;
Отбор = Новый Структура("ИдентификаторСтрокиЗапроса", ТекущиеДанные.ИдентификаторСтрокиЗапроса);
НайденныеСтроки = Объект.ВыбранныеИсточники.НайтиСтроки(Отбор);
Для Каждого СтрокаКоллекции Из НайденныеСтроки Цикл
Объект.ВыбранныеИсточники.Удалить(Объект.ВыбранныеИсточники.Индекс(СтрокаКоллекции));
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураВСервисеПредставлениеОткрытие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ОтсутствуютТекущиеДанныеТЧТовары(ТекущиеДанные)
Или Не ЗначениеЗаполнено(ТекущиеДанные.НоменклатураВСервисеИдентификатор) Тогда
Возврат;
КонецЕсли;
РежимВыбораКарточкиНоменклатуры = Истина;
ОткрытьФормуКарточкиНоменклатурыИзСервиса(ТекущиеДанные, РежимВыбораКарточкиНоменклатуры);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураВСервисеПредставлениеПриИзменении(Элемент)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ОтсутствуютТекущиеДанныеТЧТовары(ТекущиеДанные) Тогда
Возврат;
КонецЕсли;
КоммерческиеПредложенияДокументыКлиентПереопределяемый.ПриИзмененииНоменклатуры(ЭтотОбъект, ТекущиеДанные, "НоменклатураВСервисеПредставление");
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураТекстомНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ОтсутствуютТекущиеДанныеТЧТовары(ТекущиеДанные) Тогда
Возврат;
КонецЕсли;
ОткрытьФормуОписаниеВручную();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыЕдиницаИзмеренияПриИзменении(Элемент)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ОтсутствуютТекущиеДанныеТЧТовары(ТекущиеДанные) Тогда
Возврат;
КонецЕсли;
КоммерческиеПредложенияДокументыКлиентПереопределяемый.ПриИзмененииЕдиницыИзмерения(ЭтотОбъект, ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыКоличествоПриИзменении(Элемент)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ОтсутствуютТекущиеДанныеТЧТовары(ТекущиеДанные) Тогда
Возврат;
КонецЕсли;
КоммерческиеПредложенияДокументыКлиентПереопределяемый.ПриИзмененииКоличества(ЭтотОбъект, ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыМаксимальнаяЦенаПриИзменении(Элемент)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ОтсутствуютТекущиеДанныеТЧТовары(ТекущиеДанные) Тогда
Возврат;
КонецЕсли;
КоммерческиеПредложенияДокументыКлиентПереопределяемый.ПриИзмененииЦены(ЭтотОбъект, ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ОтсутствуютТекущиеДанныеТЧТовары(ТекущиеДанные) Тогда
Возврат;
КонецЕсли;
ПриИзмененииНоменклатуры(ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыХарактеристикаПриИзменении(Элемент)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ОтсутствуютТекущиеДанныеТЧТовары(ТекущиеДанные) Тогда
Возврат;
КонецЕсли;
ТекущиеДанные.КлючСинхронизации = Новый УникальныйИдентификатор;
ТекущиеДанные.ОшибкаПолученияКатегории = Ложь;
ТекущиеДанные.НоменклатураВСервисеИдентификатор = Неопределено;
ТекущиеДанные.ХарактеристикаВСервисеИдентификатор = Неопределено;
ТекущиеДанные.Изображение = Неопределено;
ТекущиеДанные.ИзображениеАдресДвоичныхДанных = "";
ТекущиеДанные.ИзображениеВыбрано = Ложь;
АдресКартинки = "";
КортежСсылок = Новый Структура("Номенклатура, Характеристика");
ЗаполнитьЗначенияСвойств(КортежСсылок, ТекущиеДанные);
Отбор = Новый Соответствие;
Отбор.Вставить(ТекущиеДанные.ИдентификаторСтрокиЗапроса, КортежСсылок);
ИдентификаторыСервиса = ИдентификаторыНоменклатурыИХарактеристикиСервиса(Отбор);
Если ИдентификаторыСервиса.Количество() Тогда
ИдентификаторыКортежа = ИдентификаторыСервиса.Получить(ТекущиеДанные.ИдентификаторСтрокиЗапроса);
ТекущиеДанные.НоменклатураВСервисеИдентификатор = ИдентификаторыКортежа.ИдентификаторНоменклатуры;
ТекущиеДанные.ХарактеристикаВСервисеИдентификатор = ИдентификаторыКортежа.ИдентификаторХарактеристики;
КонецЕсли;
ЗаполнитьПредставлениеКатегории(ТекущиеДанные);
Если Не ПустаяСтрока(ТекущиеДанные.НоменклатураВСервисеИдентификатор) Тогда
ВнешниеАдресаИзображений = АдресаИзображенийНоменклатурыИзСервиса1СН(
ТекущиеДанные.НоменклатураВСервисеИдентификатор);
Если ВнешниеАдресаИзображений.Количество() > 0 Тогда
ЗаполнитьИзображениеВСтрокеПоВнешнемуАдресу(ТекущиеДанные, ВнешниеАдресаИзображений[0]);
КонецЕсли;
Иначе
ТекущиеДанные.Изображение = КоммерческиеПредложенияСлужебныйВызовСервера.ПодобранноеИзображениеТовараЗКП(
ТекущиеДанные.Номенклатура, ТекущиеДанные.Характеристика);
КонецЕсли;
ПриИзмененииИзображения(ТекущиеДанные);
УстановитьВидимостьПодсказкиИзображения(ТекущиеДанные);
УстановитьТекстНевыбраннойКартинки(ТекущиеДанные);
УстановитьДоступностьКомандИзображения(ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияПодсказкиИзображенийОбработкаНавигационнойСсылки(Элемент,
НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ОтсутствуютТекущиеДанныеТЧТовары(ТекущиеДанные) Тогда
Возврат;
КонецЕсли;
Если ПустаяСтрока(ТекущиеДанные.НоменклатураВСервисеИдентификатор) Тогда
Возврат;
КонецЕсли;
РежимВыбораКарточкиНоменклатуры = Ложь;
ОткрытьФормуКарточкиНоменклатурыИзСервиса(ТекущиеДанные, РежимВыбораКарточкиНоменклатуры);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыПоступившиеПредложения
&НаКлиенте
Процедура ПоступившиеПредложенияВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ТекущиеДанные = Элементы.ПоступившиеПредложения.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
Если Поле = Элементы.ПоступившиеПредложенияИсточникПредставление Тогда
СтандартнаяОбработка = Ложь;
Если ЗначениеЗаполнено(ТекущиеДанные.Источник) Тогда
ПоказатьЗначение(,ТекущиеДанные.Источник);
ИначеЕсли ТекущиеДанные.ИмяИсточника = "БизнесСеть"
И Не ТекущиеДанные.Внимание Тогда
Если Не ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЭлектронноеВзаимодействие.ТорговыеПредложения") Тогда
Возврат;
КонецЕсли;
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("Идентификатор", ТекущиеДанные.ИдентификаторСтрокиИсточника);
ПараметрыОткрытия.Вставить("Валюта", Объект.Валюта);
Если ТребуетсяРегистрацияОрганизации Тогда
Оповещение = Новый ОписаниеОповещения("ВопросРегистрацииОрганизацииПродолжение", ЭтотОбъект, ПараметрыОткрытия);
ПоказатьВопрос(Оповещение,
НСтр("ru = 'Для просмотра информации необходимо зарегистрироваться в сервисе 1С:Бизнес-сеть. Продолжить?'"),
РежимДиалогаВопрос.ДаНет);
Возврат;
КонецЕсли;
МодульТорговыеПредложенияКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ТорговыеПредложенияКлиент");
МодульТорговыеПредложенияКлиент.ОткрытьТорговоеПредложение(ПараметрыОткрытия, ЭтотОбъект,
ТекущиеДанные.ИдентификаторСтрокиИсточника);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура СравнитьУсловияПоставки(Команда)
ОценкаПроизводительностиКлиент.ЗамерВремени("Документ.ЗапросКоммерческихПредложенийПоставщиков.Форма.СравнениеУсловийПредложений.СравнитьУсловияПоставки",
Ложь, Истина);
СписокТоваров = Новый Соответствие;
Для Каждого СтрокаТовары Из Объект.Товары Цикл
СписокТоваров.Вставить(СтрокаТовары.ИдентификаторСтрокиЗапроса, СтрокаТовары.НаименованиеСтрокой);
КонецЦикла;
ВыбранныеИсточники = Новый Массив;
Если Элементы.ПоступившиеПредложения.ВыделенныеСтроки.Количество() > 1 Тогда
Для Каждого СтрокаИсточник Из Элементы.ПоступившиеПредложения.ВыделенныеСтроки Цикл
ТекущаяСтрока = Элементы.ПоступившиеПредложения.ДанныеСтроки(СтрокаИсточник);
Если ЗначениеЗаполнено(ТекущаяСтрока.Источник) Тогда
ВыбранныеИсточники.Добавить(ТекущаяСтрока.Источник);
КонецЕсли;
КонецЦикла;
КонецЕсли;
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("Валюта" , Объект.Валюта);
ПараметрыОткрытия.Вставить("ДокументИсточник" , Объект.Ссылка);
ПараметрыОткрытия.Вставить("СписокТоваров" , СписокТоваров);
ПараметрыОткрытия.Вставить("ТолькоПросмотр" , ТолькоПросмотр);
ПараметрыОткрытия.Вставить("ВыбранныеИсточники" , ВыбранныеИсточники);
ПараметрыОткрытия.Вставить("ДатаОкончанияРассмотрения" , Объект.ДатаОкончанияРассмотрения);
ПараметрыОткрытия.Вставить("КоличествоСтрок " , Объект.Товары.Количество());
Оповещение = Новый ОписаниеОповещения("СравнениеУсловийЗавершение", ЭтотОбъект);
ОткрытьФорму("Документ.ЗапросКоммерческихПредложенийПоставщиков.Форма.СравнениеУсловийПредложений",
ПараметрыОткрытия,
УникальныйИдентификатор,,,,
Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьИсточникКЗаказу(Команда)
ОчиститьСообщения();
Если Элементы.ПоступившиеПредложения.ВыделенныеСтроки.Количество() > 1 Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Действие допустимо только для одной строки'"), Объект.Ссылка);
Возврат;
ИначеЕсли Элементы.ПоступившиеПредложения.ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
Описание = Новый ОписаниеОповещения("ВыбратьИсточникКЗаказуЗавершение", ЭтотОбъект);
ПоказатьВопросВыбораИсточникаКЗаказу(Описание);
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьИзСправочникаНоменклатура(Команда)
Объект.ТекущийРежимДобавленияТовара = 0;
ИзменитьРежимДобавленияИДобавитьСтроку();
ДобавитьСтроку();
ОткрытьФормуВыбораСправочникаНоменклатура();
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьИзСервисаРаботаСНоменклатурой(Команда)
Если Не ИспользоватьСервисРаботаСНоменклатурой Тогда
ОписаниеПродолжения = Новый ОписаниеОповещения("ДобавитьИзСервисаРаботаСНоменклатуройПродолжение", ЭтотОбъект);
ВключитьИспользованиеСервисаРаботыСНоменклатурой(ОписаниеПродолжения)
Иначе
ВыбратьНоменклатуруИзСервиса();
ОткрытьПодборНоменклатурыИзСервиса();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьОписаниеВручную(Команда)
Объект.ТекущийРежимДобавленияТовара = 2;
ИзменитьРежимДобавленияИДобавитьСтроку();
ДобавитьСтроку();
ОткрытьФормуОписаниеВручную();
КонецПроцедуры
&НаКлиенте
Процедура УказатьСрокПоставки(Команда)
Если Объект.ВариантУказанияСрокаПоставки = ПредопределенноеЗначение("Перечисление.ВариантыСроковПоставкиКоммерческихПредложений.УказываетсяВДняхСМоментаЗаказа") Тогда
Оповещение = Новый ОписаниеОповещения("СрокПоставкиЗавершение", ЭтотОбъект, Истина);
ПоказатьВводЧисла(Оповещение, 1, НСтр("ru = 'Введите срок поставки'"), 3, 0);
ИначеЕсли Объект.ВариантУказанияСрокаПоставки = ПредопределенноеЗначение("Перечисление.ВариантыСроковПоставкиКоммерческихПредложений.УказываетсяНаОпределеннуюДату") Тогда
Оповещение = Новый ОписаниеОповещения("СрокПоставкиЗавершение", ЭтотОбъект, Ложь);
ПоказатьВводДаты(Оповещение, Объект.ДатаОкончанияРассмотрения,
НСтр("ru = 'Введите дату поставки'"), ЧастиДаты.Дата);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УказатьКатегорию(Команда)
СтрокиПодлежащиеОбработке = Новый Массив;
Для Каждого ИндексСтроки Из Элементы.Товары.ВыделенныеСтроки Цикл
ДанныеСтроки = Элементы.Товары.ДанныеСтроки(ИндексСтроки);
Если ЗначениеЗаполнено(ДанныеСтроки.НоменклатураВСервисеИдентификатор) Тогда
Продолжить;
КонецЕсли;
СтрокиПодлежащиеОбработке.Добавить(ДанныеСтроки);
КонецЦикла;
Если Не ЗначениеЗаполнено(СтрокиПодлежащиеОбработке) Тогда
Возврат;
КонецЕсли;
ОбработчикВыбораКатегории = Новый ОписаниеОповещения(
"УказатьКатегориюЗавершение",
ЭтотОбъект,
Новый Структура("СтрокиПодлежащиеОбработке", СтрокиПодлежащиеОбработке));
ПараметрыФормыВыбора = РаботаСНоменклатуройКлиент.ПараметрыФормыЗагрузкиКатегорий();
ПараметрыФормыВыбора.РежимВыбораКатегорий = Истина;
ПараметрыФормыВыбора.СкрыватьОписаниеКатегорий = Истина;
ПараметрыФормыВыбора.ОдиночныйРежимВыбора = Истина;
ПараметрыФормыВыбора.ЗаголовокФормы = НСтр("ru = 'Выбор категории'");
РаботаСНоменклатуройКлиент.ОткрытьФормуЗагрузкиКатегорий(ПараметрыФормыВыбора,
ЭтотОбъект,
ОбработчикВыбораКатегории,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьПоступившиеПредложенияКоманда(Команда)
ЗаполнитьПоступившиеПредложения();
ОбновитьИтогиПодвала();
КонецПроцедуры
&НаКлиенте
Процедура ОтменитьВыбор(Команда)
Для Каждого Выбрано Из Элементы.ТоварыВыборПредложений.ВыделенныеСтроки Цикл
ДанныеСтроки = Элементы.ТоварыВыборПредложений.ДанныеСтроки(Выбрано);
ДанныеСтроки.Внимание = Ложь;
Отбор = Новый Структура("ИдентификаторСтрокиЗапроса", ДанныеСтроки.ИдентификаторСтрокиЗапроса);
НайденныеСтроки = Объект.ВыбранныеИсточники.НайтиСтроки(Отбор);
Для Каждого НайденнаяСтрока Из НайденныеСтроки Цикл
Объект.ВыбранныеИсточники.Удалить(НайденнаяСтрока);
КонецЦикла;
КонецЦикла;
ПерезаполнитьТаблицыПослеВыбора();
ОтобразитьГруппуОшибки();
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьПоМинимальнойЦене(Команда)
МассивСтрок = Новый Массив;
Для Каждого Выбрано Из Элементы.ТоварыВыборПредложений.ВыделенныеСтроки Цикл
ДанныеСтроки = Элементы.ТоварыВыборПредложений.ДанныеСтроки(Выбрано);
МассивСтрок.Добавить(ДанныеСтроки.ИдентификаторСтрокиЗапроса);
КонецЦикла;
Если МассивСтрок.Количество() > 0 Тогда
ВыбратьПредложения(Элементы.ВыбратьПоМинимальнойЦене, , МассивСтрок, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьПоМинимальнымСрокам(Команда)
МассивСтрок = Новый Массив;
Для Каждого Выбрано Из Элементы.ТоварыВыборПредложений.ВыделенныеСтроки Цикл
ДанныеСтроки = Элементы.ТоварыВыборПредложений.ДанныеСтроки(Выбрано);
МассивСтрок.Добавить(ДанныеСтроки.ИдентификаторСтрокиЗапроса);
КонецЦикла;
Если МассивСтрок.Количество() > 0 Тогда
ВыбратьПредложения(Элементы.ВыбратьПоМинимальнымСрокам, , МассивСтрок, Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат) Экспорт
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Объект, Результат);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьИЗакрыть(Команда)
Записать();
Закрыть();
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьВыбранныеИзИсточника(Команда)
ОчиститьСообщения();
Если Элементы.ПоступившиеПредложения.ВыделенныеСтроки.Количество() > 1 Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Действие допустимо только для одной строки'"), Объект.Ссылка);
Возврат;
ИначеЕсли Элементы.ПоступившиеПредложения.ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Элементы.ПоступившиеПредложения.ТекущиеДанные;
Если Не ТекущиеДанные.ВыбранКЗаказу Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'У источника нет выбранных позиций'"), Объект.Ссылка);
Возврат;
КонецЕсли;
СнятьОтборыУТаблиц();
Результат = УстановитьОтборПоИсточнику(ТекущиеДанные.ИмяИсточника, ТекущиеДанные.Источник, ТекущиеДанные.ИдентификаторСтрокиИсточника);
Если Результат Тогда
УстановитьОтборПоНоменклатуреИсточника(ТекущиеДанные.ИсточникПредставление);
Элементы.СтраницыДокумента.ТекущаяСтраница = Элементы.СтраницаВыборПредложений;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОформитьЗаказы(Элемент, НавигационнаяСсылкаФорматированнойСтроки,
СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если Объект.ЗапрашиватьПредложенияПоставщиков = 2 Тогда
ОформитьЗаказыБидзаар(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
Возврат;
КонецЕсли;
АдресКэшаВыбранныхИсточников = ЗакэшироватьВыбранныеИсточники(Объект.ВыбранныеИсточники, УникальныйИдентификатор);
Если Модифицированность
Или Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПараметрыОповещения = Новый Структура();
ПараметрыОповещения.Вставить("АдресКэшаВыбранныхИсточников", АдресКэшаВыбранныхИсточников);
Описание = Новый ОписаниеОповещения("ОформитьЗаказыЗавершение", ЭтотОбъект, ПараметрыОповещения);
ПоказатьВопросСохраненияДокумента(Описание);
Возврат;
КонецЕсли;
ПерейтиКОформлениюЗаказов(АдресКэшаВыбранныхИсточников);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ЗакэшироватьВыбранныеИсточники(Знач ВыбранныеИсточники, Знач УникальныйИдентификатор)
Возврат ПоместитьВоВременноеХранилище(ВыбранныеИсточники.Выгрузить(), УникальныйИдентификатор)
КонецФункции
&НаКлиенте
Процедура ЗаполнитьВыборПредложений(Команда)
ЗапуститьПроверкуВыбранныхПредложенийВБизнесСеть();
КонецПроцедуры
&НаКлиенте
Процедура ОтменитьВыборПредложения(Команда)
ЗаказПоставщику = Ложь;
МассивПараметров = Новый Массив;
Для Каждого ПредложениеИдентификатор Из Элементы.ПоступившиеПредложения.ВыделенныеСтроки Цикл
Предложение = Элементы.ПоступившиеПредложения.ДанныеСтроки(ПредложениеИдентификатор);
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("ИмяИсточника", Предложение.ИмяИсточника);
СтруктураПараметров.Вставить("Источник" , Предложение.Источник);
СтруктураПараметров.Вставить("ИдентификаторСтрокиИсточника", Предложение.ИдентификаторСтрокиИсточника);
МассивПараметров.Добавить(СтруктураПараметров);
ЗаказПоставщику = Макс(ЗаказПоставщику, Предложение.ЗаказПоставщику);
КонецЦикла;
ОтменитьВыборПредложенияЗавершение(МассивПараметров);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьПредложения(Команда)
ЗаполнитьПоступившиеПредложения();
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьИзображение(Команда)
ДобавитьИзображениеОбработчик();
КонецПроцедуры
&НаКлиенте
Процедура ОчиститьИзображение(Команда)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ОтсутствуютТекущиеДанныеТЧТовары(ТекущиеДанные)
Или Не ЗначениеЗаполнено(ТекущиеДанные.Изображение) Тогда
Возврат;
КонецЕсли;
ТекущиеДанные.Изображение = Неопределено;
ТекущиеДанные.ИзображениеАдресДвоичныхДанных = "";
ПриИзмененииИзображения(ТекущиеДанные);
УстановитьТекстНевыбраннойКартинки(ТекущиеДанные);
УстановитьДоступностьКомандИзображения(ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ПросмотретьИзображение(Команда)
ПросмотретьИзображениеОбработчик();
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьКартинкуИзПрисоединенныхФайлов(Команда)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ОтсутствуютТекущиеДанныеТЧТовары(ТекущиеДанные) Тогда
Возврат;
КонецЕсли;
АдресТаблицыИзображений = КоммерческиеПредложенияСлужебныйВызовСервера.АдресТаблицыПодобранныхИзображений(
ТекущиеДанные.Номенклатура, ТекущиеДанные.Характеристика, УникальныйИдентификатор);
ДополнительныеПараметры = Новый Структура("ИдентификаторСтрокиЗапроса", ТекущиеДанные.ИдентификаторСтрокиЗапроса);
ОписаниеОповещения = Новый ОписаниеОповещения(
"ВыбратьКартинкуИзПрисоединенныхФайловЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ПараметрыФормы = КоммерческиеПредложенияДокументыКлиент.НовыеПараметрыОткрытияФормыВыбораИзображений(
АдресТаблицыИзображений, УникальныйИдентификатор, ТекущиеДанные.Изображение);
КоммерческиеПредложенияДокументыКлиент.ОткрытьФормуВыбораИзображенийИзПрисоединенныхФайлов(
ЭтотОбъект, ПараметрыФормы, ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ПанельИзображение(Команда)
ПанельОтображается = Не ПанельОтображается;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы, "ГруппаТоварыИзображение", "Видимость", ПанельОтображается);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы, "ПанельИзображение", "Пометка", ПанельОтображается);
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ОтсутствуютТекущиеДанныеТЧТовары(ТекущиеДанные) Тогда
Возврат;
КонецЕсли;
НастройкаПанелиИзображенийНаСервере(ИмяФормы, ПанельОтображается, АдресКартинки, ТекущиеДанные.Изображение,
ТекущиеДанные.ИзображениеАдресДвоичныхДанных, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьВСервисе(Команда)
ОчиститьСообщения();
Если ПустаяСтрока(Объект.ИдентификаторВСервисе) Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(
НСтр("ru = 'Идентификатор в сервисе неопределен, невозможно перейти по ссылке.'"));
Возврат;
КонецЕсли;
ВидЭТП = ПредопределенноеЗначение("Перечисление.ВидыЭлектронныхТорговыхПлощадок.БидзаарПокупатели");
НавигационнаяСсылка = ИнтеграцияСЭлектроннымиТорговымиПлощадкамиКлиент.СтрокаПодключенияКСервису(ВидЭТП,
ИнтеграцияСЭлектроннымиТорговымиПлощадкамиКлиентСервер.РазделУчетаПокупатели()) + СсылкаНаСтраницуЗапроса();
ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку(НавигационнаяСсылка);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьДанныеДокумента(Команда)
Прочитать();
Если Объект.ЗапрашиватьПредложенияПоставщиков = 2 Тогда
Если Не НастройкиУчета.ИспользоватьИнтеграциюСЭТПБидзаарДляПокупателей Тогда
ПроверитьСвязьСЭТПБидзаар();
ИначеЕсли Не ПустаяСтрока(Объект.ИдентификаторВСервисе) Тогда
ИнтеграцияСЭлектроннымиТорговымиПлощадкамиКлиент.ПолучитьСостоянияБидзаар(Объект.Ссылка);
КонецЕсли;
КонецЕсли;
ИзменитьЭтап();
ОбновитьЭлементыФормы();
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область ИнтеграцияСПодсистемами
&НаКлиенте
Процедура Подключаемый_ПодсказкиБизнесСетьНажатие(Элемент)
ТорговыеПредложенияКлиент.ОткрытьФормуПодсказок(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура СвойстваВыполнитьОтложеннуюИнициализацию()
УправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область ВизуальноеОформлениеФормы
&НаКлиенте
Процедура ЗаполнитьПредставлениеКатегории(ТекущиеДанные)
Если Не ПустаяСтрока(ТекущиеДанные.ИдентификаторЗадания) Тогда
ИнтеграцияБСПБЭДВызовСервера.ОтменитьВыполнениеЗадания(ТекущиеДанные.ИдентификаторЗадания);
ТекущиеДанные.ИдентификаторЗадания = Неопределено;
КонецЕсли;
Если ПустаяСтрока(ТекущиеДанные.НоменклатураВСервисеИдентификатор) Тогда
Результат = ПолучитьКатегорию1СНПоНоменклатуре(ТекущиеДанные.Номенклатура);
ЗаполнитьЗначенияСвойств(ТекущиеДанные, Результат);
Возврат;
КонецЕсли;
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ПараметрыОжидания.ВыводитьОкноОжидания = Ложь;
ПараметрыОжидания.ОповещениеПользователя.Показать = Ложь;
ПараметрыОжидания.ВыводитьСообщения = Истина;
ПараметрыОжидания.Интервал = 1;
ПараметрыОперации = Новый Структура;
ПараметрыОперации.Вставить("Идентификаторы", ТекущиеДанные.НоменклатураВСервисеИдентификатор);
Задание = ПолучитьПредставлениеКатегорииВФоне(ПараметрыОперации, УникальныйИдентификатор);
ТекущиеДанные.ИдентификаторЗадания = Задание.ИдентификаторЗадания;
ТекущиеДанные.ОшибкаПолученияКатегории = Ложь;
ВыполнениеОперацииЗавершение = Новый ОписаниеОповещения(
"ЗаполнитьПредставлениеКатегорииЗавершение", ЭтотОбъект,
Новый Структура("ИдентификаторСтроки,КлючСинхронизации",
ТекущиеДанные.ИдентификаторСтрокиЗапроса, ТекущиеДанные.КлючСинхронизации));
ДлительныеОперацииКлиент.ОжидатьЗавершение(Задание,
ВыполнениеОперацииЗавершение,
ПараметрыОжидания);
КонецПроцедуры
&НаСервере
Процедура НачатьЗаполнениеПредставленийКатегорийВТабличнойЧасти()
ИдентификаторыНоменклатуры = Новый Массив;
СтрокиВОбработке = Новый Массив;
Для Каждого СтрокаТабличнойЧасти Из Объект.Товары Цикл
Если Не ПустаяСтрока(СтрокаТабличнойЧасти.НоменклатураВСервисеИдентификатор) Тогда
ИдентификаторыНоменклатуры.Добавить(СтрокаТабличнойЧасти.НоменклатураВСервисеИдентификатор);
СтрокиВОбработке.Добавить(СтрокаТабличнойЧасти);
КонецЕсли;
КонецЦикла;
ИдентификаторыНоменклатуры = ОбщегоНазначенияКлиентСервер.СвернутьМассив(ИдентификаторыНоменклатуры);
ЗаданиеЗаполненияДанныхСервиса = ПолучитьПредставлениеКатегорииВФоне(
Новый Структура("Идентификаторы", ИдентификаторыНоменклатуры), УникальныйИдентификатор);
Для Каждого СтрокаТабличнойЧасти Из СтрокиВОбработке Цикл
СтрокаТабличнойЧасти.ИдентификаторЗадания = ЗаданиеЗаполненияДанныхСервиса.ИдентификаторЗадания;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьПредставленийКатегорийВТабличнойЧасти()
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ПараметрыОжидания.ВыводитьОкноОжидания = Ложь;
ПараметрыОжидания.ОповещениеПользователя.Показать = Ложь;
ПараметрыОжидания.ВыводитьСообщения = Истина;
ПараметрыОжидания.Интервал = 1;
ВыполнениеОперацииЗавершение = Новый ОписаниеОповещения(
"ЗаполнитьДанныеСервисаВТабличнойЧастиЗавершение", ЭтотОбъект);
ДлительныеОперацииКлиент.ОжидатьЗавершение(ЗаданиеЗаполненияДанныхСервиса,
ВыполнениеОперацииЗавершение,
ПараметрыОжидания);
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьИзмененияШапки(НавигационнаяСсылкаФорматированнойСтроки)
Если Не ПроверитьГотовностьКОтправке(Объект.Ссылка) Тогда
Возврат;
КонецЕсли;
Если НавигационнаяСсылкаФорматированнойСтроки = "Повторить"
И ЗначениеЗаполнено(НовоеСостояние) Тогда
НовоеСостояниеПерехода = НовоеСостояние;
ИначеЕсли НавигационнаяСсылкаФорматированнойСтроки = "Отменить" Тогда
НовоеСостояниеПерехода = ТекущееСостояние;
ИначеЕсли НавигационнаяСсылкаФорматированнойСтроки = "Причина" Тогда
ПараметрыОткрытия = ПолучитьОшибкиСинхронизации(Объект.Ссылка);
ОткрытьФорму("Документ.ЗапросКоммерческихПредложенийПоставщиков.Форма.ФормаПросмотраОшибок",
ПараметрыОткрытия, ЭтотОбъект);
Возврат;
Иначе
НовоеСостояниеПерехода = ВернутьНовоеСостояние(ТекущееСостояние, НавигационнаяСсылкаФорматированнойСтроки,
Объект.ЗапрашиватьПредложенияПоставщиков);
КонецЕсли;
СтатусОтправления =
ПредопределенноеЗначение("Перечисление.СостоянияСинхронизацииЗапросовКоммерческихПредложений.ПустаяСсылка");
ВыполнитьДействиеПриПереходеСостояний(ТекущееСостояние, НовоеСостояниеПерехода);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ОбновитьСостояниеДокумента(Знач Документ, Знач ТекущееСостояние, Знач НовоеСостояние, Действие = "")
СтатусПоУмолчанию = Документы.ЗапросКоммерческихПредложенийПоставщиков.СтатусПоУмолчанию();
Если ТекущееСостояние = Неопределено Тогда
ТекущееСостояние = СтатусПоУмолчанию;
КонецЕсли;
Если НовоеСостояние = Неопределено Тогда
НовоеСостояние = СтатусПоУмолчанию;
КонецЕсли;
СостояниеДокумента = РегистрыСведений.СостоянияЗапросовКоммерческихПредложений.ТекущееСостояние(Документ);
СостояниеДокумента.ТекущееСостояние = ТекущееСостояние;
СостояниеДокумента.НовоеСостояние = НовоеСостояние;
СостояниеДокумента.Действие = Действие;
РегистрыСведений.СостоянияЗапросовКоммерческихПредложений.ЗаписатьСтатус(Документ, СостояниеДокумента);
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьДействиеПриПереходеСостояний(ТекущееСостояниеДокумента, НовоеСостояниеДокумента)
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ТекущееСостояниеДокумента", ТекущееСостояниеДокумента);
ДополнительныеПараметры.Вставить("НовоеСостояниеДокумента" , НовоеСостояниеДокумента);
Если Модифицированность Тогда
Описание = Новый ОписаниеОповещения("ВопросСохранитьДокументЗавершениеПереходСостояний", ЭтотОбъект, ДополнительныеПараметры);
ПоказатьВопросСохраненияДокумента(Описание);
Возврат;
КонецЕсли;
Если НовоеСостояниеДокумента = ПредопределенноеЗначение("Перечисление.СостоянияЗапросаКоммерческихПредложений.СборПредложений") Тогда
Если ПроверитьЗаполнение() Тогда
ОпубликоватьЗапрос(ТекущееСостояниеДокумента, НовоеСостояниеДокумента);
Иначе
Возврат;
КонецЕсли;
ИначеЕсли Объект.ЗапрашиватьПредложенияПоставщиков = 2 И
НовоеСостояниеДокумента = ПредопределенноеЗначение("Перечисление.СостоянияЗапросаКоммерческихПредложений.Завершено") Тогда
ПолучитьСостояниеДокумента();
ПоказатьВопросЗавершенияДокумента();
Возврат;
Иначе
ОтменитьПубликациюЗапроса(ТекущееСостояниеДокумента, НовоеСостояниеДокумента);
КонецЕсли;
ИзменитьЭтап();
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьЗначенияВыбораАнализируемыхИсточников()
ПолучитьПредложенияТорговыхПредложений = Ложь;
Для Каждого Источник Из АнализируемыеИсточникиПредложений Цикл
Если Источник.ИмяИсточника = "БизнесСеть"
И Не Источник.Использовать = ЭтотОбъект[Источник.ИмяРеквизита] Тогда
ПолучитьПредложенияТорговыхПредложений = ЭтотОбъект[Источник.ИмяРеквизита];
Если НЕ ЭтотОбъект[Источник.ИмяРеквизита]
И Не ПустаяСтрока(ИдентификаторЗадания) Тогда
ПодключитьОбработчикОжидания("ОтменитьФоновоеЗаданиеПоискаТорговыхПредложений", 0.1, Истина);
КонецЕсли;
КонецЕсли;
Источник.Использовать = ЭтотОбъект[Источник.ИмяРеквизита];
КонецЦикла;
СписокИсточников = ПолучитьВыбранныеИсточникиДокумента(АнализируемыеИсточникиПредложений, Ложь);
Для Каждого Товар Из Объект.Товары Цикл
Товар.Поступило = СформироватьТекстПоступилоПредложений(Товар.КоличествоПредложений, СписокИсточников);
КонецЦикла;
Если ПолучитьПредложенияТорговыхПредложений Тогда
ПодключитьОбработчикОжидания("ЗапуститьПроверкуВыбранныхПредложенийВБизнесСеть", 0.1, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьРежимДобавленияИДобавитьСтроку()
ОбновитьЭлементыФормы();
ИзменитьЭтап();
ОбновитьИтогиПодвала();
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьСтроку()
Элементы.Товары.ДобавитьСтроку();
АдресКартинки = "";
УказатьЗаполненностьИзображенияВСтроке(Элементы.Товары.ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьЗаголовокГруппыАнализируемыеИсточники()
ЗаголовокГруппы = "";
Отбор = Новый Структура("Использовать", Истина);
НайденныеСтроки = АнализируемыеИсточникиПредложений.НайтиСтроки(Отбор);
Если НайденныеСтроки.Количество() = АнализируемыеИсточникиПредложений.Количество() Тогда
ЗаголовокГруппы = НСтр("ru = 'все источники'")
ИначеЕсли НайденныеСтроки.Количество() = 0 Тогда
ЗаголовокГруппы = НСтр("ru = 'предложения по текущему запросу'")
Иначе
МассивСтрок = Новый Массив;
Для Каждого Источник Из НайденныеСтроки Цикл
МассивСтрок.Добавить(Источник.КраткоеПредставление);
КонецЦикла;
ЗаголовокГруппы = СтрСоединить(МассивСтрок, ", ");
КонецЕсли;
ОписаниеНДС = ?(Объект.ЦенаВключаетНДС, НСтр("ru = 'цены с учетом НДС'"), НСтр("ru = 'цены без учета НДС'"));
Элементы.ГруппаНастройкаАнализа.Заголовок = СтрШаблон(НСтр("ru = 'Анализируются %1, %2'"), ЗаголовокГруппы, ОписаниеНДС);
Элементы.ГруппаНастройкаАнализа.Ширина = СтрДлина(Элементы.ГруппаНастройкаАнализа.Заголовок) / 1.40;
КонецПроцедуры
&НаСервере
Процедура ОбновитьЭлементыФормы()
КартинкаГруппы = Неопределено;
ГруппаСправочникНоменклатура = Ложь;
ГруппаСервисНоменклатура = Ложь;
ГруппаТекстовоеОписание = Ложь;
Элементы.ФормаОбновитьДанныеДокумента.Доступность = Не Объект.Ссылка.Пустая();
Если Объект.ТекущийРежимДобавленияТовара = 2 Тогда
КартинкаГруппы = БиблиотекаКартинок.ПроизвольноеОписаниеКоммерческиеПредложения;
ГруппаТекстовоеОписание = Истина;
ИначеЕсли Объект.ТекущийРежимДобавленияТовара = 1 Тогда
КартинкаГруппы = БиблиотекаКартинок.ИконкаБелыйФонРаботаСНоменклатурой;
ГруппаСервисНоменклатура = Истина;
Иначе
КартинкаГруппы = БиблиотекаКартинок.Справочник;
ГруппаСправочникНоменклатура = Истина;
КонецЕсли;
Элементы.ТоварыДобавить.Картинка = КартинкаГруппы;
Элементы.ГруппаСправочникНоменклатура.Видимость = Объект.Товары.Количество() > 0 Или ГруппаСправочникНоменклатура;
Элементы.ГруппаСервисНоменклатура.Видимость = Объект.Товары.Количество() > 0 Или ГруппаСервисНоменклатура;
Элементы.ГруппаТекстовоеОписание.Видимость = Объект.Товары.Количество() > 0 Или ГруппаТекстовоеОписание;
КоммерческиеПредложенияДокументыКлиентСервер.УправлениеКолонкойСрокПоставки(Объект.ВариантУказанияСрокаПоставки, Элементы.ТоварыСрокПоставки, Элементы.УказатьСрокПоставки);
КоммерческиеПредложенияДокументыКлиентСервер.ОчиститьСрокПоставкиЕслиНеСоответствуетВарианту(Объект.Товары, "СрокПоставки", Объект.ВариантУказанияСрокаПоставки);
Элементы.ГруппаСкрытыеПоставщики.Доступность = Объект.ЗапрашиватьПредложенияПоставщиков = 0;
Элементы.ГруппаСписокПоставщиковКОтправке.Доступность = Объект.ЗапрашиватьПредложенияПоставщиков = 1
Или Объект.ЗапрашиватьПредложенияПоставщиков = 2;
Элементы.ГруппаСписокПоставщиков.Доступность = Объект.СкрыватьЗапросОтПоставщиков;
Элементы.ПоступившиеПредложенияОхват.Заголовок = СтрШаблон(НСтр("ru = 'Охват (из %1)'"), Объект.Товары.Количество());
Элементы.ПоступившиеПредложенияСуммаВсего.Заголовок = СтрШаблон(НСтр("ru = 'Сумма (%1)'"), Строка(Объект.Валюта));
ОбновитьКоличествоФайлов();
Валюта = Ложь;
Для Каждого Источник Из Объект.ВыбранныеИсточники Цикл
Если Источник.ВалютаПредложения <> Объект.Валюта Тогда
Валюта = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Элементы.ДатаКурса.Видимость = Валюта;
Если ТипЗнч(Объект.Склад) = Тип("Строка") Тогда
Элементы.Склад.Заголовок = НСтр("ru='Адрес доставки'");
Элементы.АдресДоставки.Видимость = Ложь;
Иначе
Элементы.Склад.Заголовок = НСтр("ru='Склад'");
Элементы.АдресДоставки.Видимость = Истина;
КонецЕсли;
Элементы.ГруппаПубличныйЗапрос.Видимость = Объект.ЗапрашиватьПредложенияПоставщиков = 0;
Элементы.ГруппаЗапросНапрямую.Видимость = Объект.ЗапрашиватьПредложенияПоставщиков = 1
Или Объект.ЗапрашиватьПредложенияПоставщиков = 2;
Если Объект.ЗапрашиватьПредложенияПоставщиков = 2 Тогда
Элементы.ГруппаСписокПоставщиковКОтправке.Заголовок = НСтр("ru='Пригласить поставщиков из списка'");
Элементы.ДекорацияСтатусВСервисе.Заголовок = НСтр("ru='Статус Бидзаар:'");
Элементы.ГруппаСтатусВСервисе.Видимость = ЗначениеЗаполнено(ТекущееСостояние) И ТекущееСостояние
<> ПредопределенноеЗначение("Перечисление.СостоянияЗапросаКоммерческихПредложений.Подготовка");
Элементы.ЦенаВключаетНДС.Заголовок = НСтр("ru='Цена включает НДС'");
Элементы.ЦенаВключаетНДС.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Право;
Элементы.Переместить(Элементы.ЦенаВключаетНДС, Элементы.ГруппаВалюты);
Иначе
Элементы.ГруппаСписокПоставщиковКОтправке.Заголовок = НСтр("ru='У поставщиков из списка'");
Элементы.ДекорацияСтатусВСервисе.Заголовок = НСтр("ru='Статус в сервисе'");
Элементы.ГруппаСтатусВСервисе.Видимость = Ложь;
Элементы.ЦенаВключаетНДС.Заголовок = НСтр("ru='Сравнивать цены позиций с учетом НДС'");
Элементы.ЦенаВключаетНДС.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
Элементы.Переместить(Элементы.ЦенаВключаетНДС, Элементы.ГруппаСравненийЦенПредложений, Элементы.ДекорацияИмя);
КонецЕсли;
Элементы.СписокПолучателейЗапросаСтатусЭДО.Видимость = Объект.ЗапрашиватьПредложенияПоставщиков <> 2;
Элементы.ЗапрашиватьПредложенияУПоставщиков.Доступность = (ТекущееСостояние = Перечисления.СостоянияЗапросаКоммерческихПредложений.Подготовка Или
ТекущееСостояние = Перечисления.СостоянияЗапросаКоммерческихПредложений.ПустаяСсылка());
Элементы.МенеджерКонтактныеДанныеПредставление.Заголовок = ПредставленияКИМенеджера(Объект.Менеджер,
Объект.МенеджерEmail, Объект.МенеджерНомерТелефона);
Если Объект.ЗапрашиватьПредложенияПоставщиков = 2 И Не НастройкиУчета.ИспользоватьИнтеграциюСЭТПБидзаарДляПокупателей Тогда
Элементы.СборПредложений.Доступность = Ложь;
Элементы.ОформитьЗаказы.Доступность = Ложь;
Элементы.ОткрытьВСервисе.Доступность = Ложь;
Иначе
Элементы.СборПредложений.Доступность = Истина;
Элементы.ОформитьЗаказы.Доступность = Истина;
Элементы.ОткрытьВСервисе.Доступность = Истина;
КонецЕсли;
Элементы.МожетОбеспечиватьсяЧастично.СписокВыбора.ТипЗначения = Новый ОписаниеТипов("Число",,,Новый КвалификаторыЧисла(2, 0, ДопустимыйЗнак.Неотрицательный));
ДоступныеЗначенияМожетОбеспечиватьсяЧастично = Новый СписокЗначений();
ДоступныеЗначенияМожетОбеспечиватьсяЧастично.Добавить(0);
ДоступныеЗначенияМожетОбеспечиватьсяЧастично.Добавить(1);
Если Объект.ЗапрашиватьПредложенияПоставщиков = 2 Тогда
ДоступныеЗначенияМожетОбеспечиватьсяЧастично.Добавить(2);
КонецЕсли;
Элементы.МожетОбеспечиватьсяЧастично.СписокВыбора.ДоступныеЗначения = ДоступныеЗначенияМожетОбеспечиватьсяЧастично;
Если ДоступныеЗначенияМожетОбеспечиватьсяЧастично.НайтиПоЗначению(Объект.МожетОбеспечиватьсяЧастично) = Неопределено Тогда
Объект.МожетОбеспечиватьсяЧастично = 1;
КонецЕсли;
УказатьЗаполненностьИзображенияТовары(Объект.Товары);
УстановитьПризнакиКэшированияИзображенийСтрок(Объект.Товары, ИспользоватьСервисРаботаСНоменклатурой);
КонецПроцедуры
&НаСервере
Процедура ОбновитьКоличествоФайлов()
Ответ = КоммерческиеПредложенияСлужебный.КоличествоИРазмерПрисоединенныхФайловЗКППоставщика(Объект.Ссылка);
Строки = Новый Массив;
Размер = Окр(Ответ.Размер / 1024 / 1024, 0);
Цвет = ?(Размер > 30, ЦветаСтиля.ПросроченныеДанныеЦвет, ЦветаСтиля.ПоясняющийТекст);
Если ЗначениеЗаполнено(Ответ.КоличествоФайлов) Тогда
Строки.Добавить(Новый ФорматированнаяСтрока(СтрШаблон(НСтр("ru = 'Файлы (%1)'"), Ответ.КоличествоФайлов),,,,"Открыть"));
Строки.Добавить(". ");
Строки.Добавить(Новый ФорматированнаяСтрока(СтрШаблон(НСтр("ru = '%1 Мб.'"), Размер),,Цвет));
Иначе
Строки.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'Файлы'"),,,,"Открыть"));
КонецЕсли;
Элементы.ДекорацияФайлы.Заголовок = Новый ФорматированнаяСтрока(Строки);
Элементы.ДекорацияФайлы.ОтображениеПодсказки = ?(Размер > 30, ОтображениеПодсказки.Кнопка, ОтображениеПодсказки.Нет);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьИтогиПодвала()
ФорматированныйМассив = Новый Массив;
НеВыбрано = Объект.Товары.НайтиСтроки(Новый Структура("КЗаказу", 0)).Количество();
Если НеВыбрано > 0 Тогда
ФорматированныйМассив.Добавить(НСтр("ru = 'Осталось выбрать'"));
Осталось = СтроковыеФункцииКлиентСервер.СтрокаСЧисломДляЛюбогоЯзыка(
НСтр("ru = ';%1 позиций;;%1 позиции;%1 позиций;%1 позиции'"),
НеВыбрано);
ФорматированныйМассив.Добавить(" ");
ФорматированныйМассив.Добавить(Новый ФорматированнаяСтрока(Осталось,,,,"Осталось"));
ФорматированныйМассив.Добавить(НСтр("ru = '.'"));
КонецЕсли;
КолВыбрано = Объект.Товары.Количество() - НеВыбрано;
Если КолВыбрано > 0 Тогда
Выбрано = СтроковыеФункцииКлиентСервер.СтрокаСЧисломДляЛюбогоЯзыка(
НСтр("ru = ';Выбрана;;Выбрано;Выбрано;Выбрано'"),
КолВыбрано);
ФорматированныйМассив.Добавить(СтрШаблон(" %1 ", Выбрано));
Выбрано = СтроковыеФункцииКлиентСервер.СтрокаСЧисломДляЛюбогоЯзыка(
НСтр("ru = ';%1 позиция;;%1 позиции;%1 позиций;%1 позиции'"),
КолВыбрано);
ФорматированныйМассив.Добавить(Новый ФорматированнаяСтрока(Выбрано,,,,"Выбрано"));
ФорматированныйМассив.Добавить(" ");
ФорматированныйМассив.Добавить(НСтр("ru = 'у'"));
ФорматированныйМассив.Добавить(" ");
Поставщики = ПолучитьКоличествоПоставщиков(Объект.ВыбранныеИсточники);
Поставщики = СтроковыеФункцииКлиентСервер.СтрокаСЧисломДляЛюбогоЯзыка(
НСтр("ru = ';%1 поставщика;;%1 поставщиков;%1 поставщиков;%1 поставщиков'"),
Поставщики);
ФорматированныйМассив.Добавить(Новый ФорматированнаяСтрока(Поставщики,,,,"Поставщики"));
ФорматированныйМассив.Добавить(" ");
ФорматированныйМассив.Добавить(НСтр("ru = 'на сумму'"));
ФорматированныйМассив.Добавить(" ");
Сумма = Объект.ВыбранныеИсточники.Итог("СуммаВВалютеЗапроса");
ФорматированныйМассив.Добавить(Новый ФорматированнаяСтрока(Формат(Сумма, "ЧЦ=15; ЧДЦ=2; ЧРД=.; ЧРГ=' '; ЧН=0"), Новый Шрифт(,, Истина)));
КонецЕсли;
Элементы.ДекорацияОсталосьВыбрать.Заголовок = Новый ФорматированнаяСтрока(ФорматированныйМассив);
Элементы.ДекорацияОсталосьВыбрать.Видимость = Элементы.СтраницаПоступившиеПредложения.Видимость;
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = 'В наличии'"));
ОтборЭлемента = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПоступившиеПредложения.СрокПоставки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = 0;
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ПоступившиеПредложенияСрокПоставки");
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
ОтборЭлемента = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ИсточникДобавленияТовара");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ТоварыИсточникДобавленияТовараСервис");
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ТоварыИсточникДобавленияТовараСервисВыбор");
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ТоварыНоменклатураВСервисеПредставление");
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ТоварыНоменклатураВСервисеПредставлениеВыбор");
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ТоварыНоменклатураВСервисеИдентификатор");
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ТоварыНоменклатураВСервисеИдентификаторВыбор");
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ТоварыХарактеристикаВСервисеИдентификатор");
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ТоварыХарактеристикаВСервисеИдентификаторВыбор");
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ТоварыИсточникДобавленияТовараТекстом");
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ТоварыИсточникДобавленияТовараТекстомВыбор");
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ТоварыНоменклатураТекстом");
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ТоварыНоменклатураТекстомВыбор");
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
ОтборЭлемента = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ИсточникДобавленияТовара");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = 1;
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ТоварыИсточникДобавленияТовараСправочник");
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ТоварыНоменклатура");
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ТоварыХарактеристика");
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ТоварыИсточникДобавленияТовараТекстом");
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ТоварыНоменклатураТекстом");
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
ОтборЭлемента = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ИсточникДобавленияТовара");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = 2;
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ТоварыИсточникДобавленияТовараСервис");
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ТоварыНоменклатураВСервисеПредставление");
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ТоварыНоменклатураВСервисеИдентификатор");
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ТоварыХарактеристикаВСервисеИдентификатор");
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ТоварыИсточникДобавленияТовараСправочник");
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ТоварыНоменклатура");
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ТоварыХарактеристика");
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = 'Нет предложений'"));
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Доступность", Ложь);
ОтборЭлемента = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Поступило");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = "";
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("ТоварыВыборПредложенийПоступило");
КоммерческиеПредложенияДокументыПереопределяемый.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(ЭтотОбъект);
КоммерческиеПредложенияДокументыПереопределяемый.ПриУстановкеУсловногоОформления(ЭтотОбъект);
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыКатегорияВСервисеПредставление.Имя);
ОтборЭлемента = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ИдентификаторЗадания");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветПустойГиперссылки);
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = 'Получение категории...'"));
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыКатегорияВСервисеПредставление.Имя);
ОтборЭлемента = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ОшибкаПолученияКатегории");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветОсобогоТекста);
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = 'Ошибка получения категории'"));
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыКатегорияВСервисеПредставление.Имя);
ОтборЭлемента = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.НоменклатураВСервисеИдентификатор");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыКатегорияВСервисеПредставление.Имя);
ГруппаЭлементовОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаЭлементовОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ИдентификаторЗадания");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ОшибкаПолученияКатегории");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КатегорияВСервисеИдентификатор");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.НоменклатураВСервисеИдентификатор");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаЗапрошеноКоммерческиеПредложения);
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = 'Автоматически из 1С:Номенклатура'"));
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьОписаниеИсточникаПоИмени(Знач Источники, Знач ИмяИсточника, Знач Источник = Неопределено)
Источники = Источники.Выгрузить();
Источники.Индексы.Добавить("ИмяИсточника");
Отбор = Новый Структура("ИмяИсточника", ИмяИсточника);
НайденнаяСтрока = Источники.НайтиСтроки(Отбор);
СтруктураОтвет = Неопределено;
Если НайденнаяСтрока.Количество() > 0 Тогда
СтруктураОтвет = ОбщегоНазначения.СтрокаТаблицыЗначенийВСтруктуру(НайденнаяСтрока[0]);
КонецЕсли;
Если ЗначениеЗаполнено(Источник) Тогда
Если Метаданные.ОпределяемыеТипы.КоммерческоеПредложениеПоставщика.Тип.СодержитТип(ТипЗнч(Источник)) Тогда
РеквизитыИсточника = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Источник, "Номер, Дата", Истина);
Если РеквизитыИсточника.Номер = Неопределено Тогда
ПредставлениеИсточника = НСтр("ru = '<Не достаточно прав для просмотра предложения>'")
Иначе
ПредставлениеИсточника = СтрШаблон(НСтр("ru = 'Ком. предложение №%1 от %2'"), РеквизитыИсточника.Номер, РеквизитыИсточника.Дата);
КонецЕсли;
СтруктураОтвет.ПредставлениеИсточника = ПредставлениеИсточника;
Иначе
СтруктураОтвет.ПредставлениеИсточника = Строка(Источник);
КонецЕсли;
КонецЕсли;
Возврат СтруктураОтвет;
КонецФункции
&НаКлиенте
Процедура ИзменитьЭтап()
ТекущаяДата = ОбщегоНазначенияКлиент.ДатаСеанса();
ЭтоЭТПБидзаар = Объект.ЗапрашиватьПредложенияПоставщиков
= КоммерческиеПредложенияДокументыКлиентСервер.СпособРазмещенияБидзаар();
Элементы.СтраницаПоступившиеПредложения.Видимость = Не ЭтоЭТПБидзаар
И ТекущееСостояние <> ПредопределенноеЗначение("Перечисление.СостоянияЗапросаКоммерческихПредложений.Подготовка");
Элементы.СтраницаВыборПредложений.Видимость = Не ЭтоЭТПБидзаар
И ТекущееСостояние <> ПредопределенноеЗначение("Перечисление.СостоянияЗапросаКоммерческихПредложений.Подготовка");
Элементы.ДекорацияОжидание.Видимость = Ложь;
Ошибка = Ложь;
ТребуетсяСинхронизация = Ложь;
Состояние = ТекущееСостояние;
СостояниеОтправки = СтатусОтправления;
Если ПустаяСтрока(ВыполняемоеДействие) Тогда
ТекстСостояния = Строка(Состояние);
Иначе
ТекстСостояния = ВыполняемоеДействие;
ВыполняетсяКоманда = Истина;
КонецЕсли;
Если СостояниеОтправки = ПредопределенноеЗначение("Перечисление.СостоянияСинхронизацииЗапросовКоммерческихПредложений.Ошибка") Тогда
Цвет = WebЦвета.Красный;
Ошибка = Истина;
ИначеЕсли СостояниеОтправки = ПредопределенноеЗначение("Перечисление.СостоянияСинхронизацииЗапросовКоммерческихПредложений.Требуется") Тогда
Цвет = WebЦвета.ТемноОранжевый;
ТребуетсяСинхронизация = Истина;
ТекстСостояния = СтрШаблон( НСтр("ru = '%1 (Требуется повторная синхронизация)'"), ТекстСостояния);
ИначеЕсли СостояниеОтправки = ПредопределенноеЗначение("Перечисление.СостоянияСинхронизацииЗапросовКоммерческихПредложений.Выполняется") Тогда
Элементы.ДекорацияОжидание.Видимость = Истина;
Иначе
Цвет = Новый Цвет;
КонецЕсли;
МассивСтрокВыполнение = Новый Массив;
Если ВыполняетсяКоманда Тогда
МассивСтрокВыполнение.Добавить(Новый ФорматированнаяСтрока(ТекстСостояния,
Новый Шрифт(Элементы.Подготовка.Шрифт,,, Истина), Цвет));
Если Ошибка Тогда
МассивСтрокВыполнение.Добавить(" ");
МассивСтрокВыполнение.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = '('"),, Цвет));
МассивСтрокВыполнение.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'Ошибка'"),, Цвет,, "Причина"));
МассивСтрокВыполнение.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = ')'"),, Цвет));
КонецЕсли;
Элементы.ДекорацияОжидание.Видимость = Истина;
Если Ошибка Или ТребуетсяСинхронизация Тогда
Элементы.ДекорацияОжидание.Видимость = Ложь;
МассивСтрокВыполнение.Добавить(Новый ФорматированнаяСтрока(", "));
МассивСтрокВыполнение.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'Повторить'"),,,, "Повторить"));
КонецЕсли;
Элементы.ГруппаДекорации.ТекущаяСтраница = Элементы.СтраницаВыполнение;
Элементы.ДекорацияОжидание.Видимость = Истина;
ИначеЕсли ТребуетсяСинхронизация
И (ЗначениеЗаполнено(Объект.ДатаОкончанияРассмотрения)
И Состояние = ПредопределенноеЗначение("Перечисление.СостоянияЗапросаКоммерческихПредложений.СборПредложений")
И ТекущаяДата < Объект.ДатаОкончанияРассмотрения) Тогда
Элементы.ГруппаДекорации.ТекущаяСтраница = Элементы.СтраницаВыполнение;
Элементы.ДекорацияОжидание.Видимость = Ложь;
МассивСтрокВыполнение.Добавить(Новый ФорматированнаяСтрока(ТекстСостояния,
Новый Шрифт(Элементы.Подготовка.Шрифт,,, Истина), Цвет));
МассивСтрокВыполнение.Добавить(Новый ФорматированнаяСтрока(", "));
МассивСтрокВыполнение.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'Повторить'"),,,,"Повторить"));
ИначеЕсли Ошибка Тогда
Элементы.ГруппаДекорации.ТекущаяСтраница = Элементы.СтраницаВыполнение;
Элементы.ДекорацияОжидание.Видимость = Ложь;
МассивСтрокВыполнение.Добавить(Новый ФорматированнаяСтрока(ТекстСостояния,
Новый Шрифт(Элементы.Подготовка.Шрифт,,, Истина), Цвет));
МассивСтрокВыполнение.Добавить(" ");
МассивСтрокВыполнение.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = '('"),,Цвет));
МассивСтрокВыполнение.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'Ошибка'"),,Цвет,,"Причина"));
МассивСтрокВыполнение.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = ')'"),,Цвет));
МассивСтрокВыполнение.Добавить(Новый ФорматированнаяСтрока(", "));
МассивСтрокВыполнение.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'Повторить'"),,,,"Повторить"));
Иначе
Элементы.ГруппаДекорации.ТекущаяСтраница = Элементы.СтраницаВыполнено;
Если ЗначениеЗаполнено(Объект.ДатаОкончанияПубликации) Тогда
Шаблон = НСтр("ru = 'Сбор предложений (до %1)'");
ТекстЗаголовка = СтрШаблон(Шаблон, Формат(Объект.ДатаОкончанияПубликации, "ДЛФ=D"));
Элементы.СборПредложений.Заголовок = ТекстЗаголовка;
Иначе
Элементы.СборПредложений.Заголовок = НСтр("ru = 'Сбор предложений'");
КонецЕсли;
Если ЗначениеЗаполнено(Объект.ДатаОкончанияРассмотрения) Тогда
Шаблон = НСтр("ru = 'Анализ предложений (до %1)'");
ТекстЗаголовка = СтрШаблон(Шаблон, Формат(Объект.ДатаОкончанияРассмотрения, "ДЛФ=D"));
Элементы.АнализПредложений.Заголовок = ТекстЗаголовка;
Иначе
Элементы.АнализПредложений.Заголовок = НСтр("ru = 'Анализ предложений'");
КонецЕсли;
Если ЭтоЭТПБидзаар Тогда
ОформитьЗаказыЗаголовок = НСтр("ru = 'Оформить документы'");
Иначе
ОформитьЗаказыЗаголовок = НСтр("ru = 'Оформить заказы'");
КонецЕсли;
Элементы.Подготовка.Шрифт = Новый Шрифт(Элементы.Подготовка.Шрифт,,, Ложь);
Элементы.СборПредложений.Шрифт = Новый Шрифт(Элементы.СборПредложений.Шрифт,,, Ложь);
Элементы.АнализПредложений.Шрифт = Новый Шрифт(Элементы.АнализПредложений.Шрифт,,, Ложь);
Элементы.Завершено.Шрифт = Новый Шрифт(Элементы.Завершено.Шрифт,,, Ложь);
Элементы.Завершено.Заголовок = Новый ФорматированнаяСтрока(НСтр("ru = 'Завершено'"));
Если ЭтоЭТПБидзаар Тогда
Элементы.ОформитьЗаказы.Шрифт = Новый Шрифт(Элементы.ОформитьЗаказы.Шрифт, , , Ложь);
Элементы.ОформитьЗаказы.Заголовок = Новый ФорматированнаяСтрока(ОформитьЗаказыЗаголовок);
Иначе
Элементы.ОформитьЗаказы.Заголовок = Новый ФорматированнаяСтрока(ОформитьЗаказыЗаголовок,
Новый Шрифт(Элементы.ОформитьЗаказы.Шрифт, , , Истина), , , "ОформитьЗаказы");
КонецЕсли;
Если Состояние = ПредопределенноеЗначение("Перечисление.СостоянияЗапросаКоммерческихПредложений.Подготовка") Тогда
Элементы.Подготовка.Шрифт = Новый Шрифт(Элементы.Подготовка.Шрифт,,,Истина);
Элементы.СборПредложений.Заголовок = Новый ФорматированнаяСтрока(НСтр("ru = 'Начать сбор предложений'"),,,,"Далее");
ТолькоПросмотр = Ложь;
ИначеЕсли Состояние = ПредопределенноеЗначение("Перечисление.СостоянияЗапросаКоммерческихПредложений.СборПредложений") Тогда
Элементы.Завершено.Заголовок = Новый ФорматированнаяСтрока(НСтр("ru = 'Завершить'"),,,, "Завершить");
Если ТекущаяДата > Объект.ДатаОкончанияПубликации Тогда
Элементы.АнализПредложений.Шрифт = Новый Шрифт(Элементы.АнализПредложений.Шрифт,,,Истина);
Иначе
Элементы.СборПредложений.Шрифт = Новый Шрифт(Элементы.СборПредложений.Шрифт,,,Истина);
КонецЕсли;
ТолькоПросмотр = Ложь;
ИначеЕсли Состояние = ПредопределенноеЗначение("Перечисление.СостоянияЗапросаКоммерческихПредложений.АнализПредложений") Тогда
Элементы.Завершено.Заголовок = Новый ФорматированнаяСтрока(НСтр("ru = 'Завершить'"),,,, "Завершить");
Элементы.АнализПредложений.Шрифт = Новый Шрифт(Элементы.АнализПредложений.Шрифт,,,Истина);
ТолькоПросмотр = Ложь;
ИначеЕсли Состояние = ПредопределенноеЗначение("Перечисление.СостоянияЗапросаКоммерческихПредложений.ЗагрузкаИтоговыхДанныхБидзаар") Тогда
ЕстьПобедители = Элементы.СтатусВСервисе.Заголовок
<> ИнтеграцияСЭлектроннымиТорговымиПлощадкамиКлиентСервер.СостояниеСборПредложенийЗавершенБезПобедителя();
ИспользоватьЗаказыПоставщикам = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(НастройкиУчета,
"ИспользоватьЗаказыПоставщикам", Истина);
Если ЕстьПобедители И (Не ЕстьОформленныеКоммерческиеПредложения(Объект.Ссылка)
Или (ИспользоватьЗаказыПоставщикам И КоличествоСозданныхЗаказов = 0)) Тогда
Элементы.ОформитьЗаказы.Заголовок = Новый ФорматированнаяСтрока(ОформитьЗаказыЗаголовок,
Новый Шрифт(Элементы.ОформитьЗаказы.Шрифт, , , Истина), , , "ОформитьЗаказыБидзаар");
Элементы.Завершено.Заголовок = Новый ФорматированнаяСтрока(НСтр("ru = 'Завершить'"), , , , "Завершить");
Иначе
Элементы.ОформитьЗаказы.Заголовок = ОформитьЗаказыЗаголовок;
Элементы.Завершено.Заголовок = Новый ФорматированнаяСтрока(НСтр("ru = 'Завершить'"),
Новый Шрифт(Элементы.Завершено.Шрифт, , , Истина), , , "Завершить");
КонецЕсли;
ТолькоПросмотр = Ложь;
ИначеЕсли Состояние = ПредопределенноеЗначение("Перечисление.СостоянияЗапросаКоммерческихПредложений.Завершено") Тогда
Элементы.Завершено.Заголовок = Новый ФорматированнаяСтрока(НСтр("ru = 'Завершено'"),
Новый Шрифт(Элементы.Завершено.Шрифт, , , Истина));
ТолькоПросмотр = Истина;
КонецЕсли;
КонецЕсли;
Элементы.ДекорацияСостояниеВыполнение.Заголовок = Новый ФорматированнаяСтрока(МассивСтрокВыполнение);
Если Не ЭтоЭТПБидзаар И Объект.ВыбранныеИсточники.Количество() И Не ТолькоПросмотр Тогда
Элементы.ОформитьЗаказы.Заголовок = Новый ФорматированнаяСтрока(ОформитьЗаказыЗаголовок, , , , "ОформитьЗаказы");
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция УстановитьОтборПоИсточнику(ИмяИсточника, Источник, ИдентификаторСтрокиИсточника)
Ответ = Ложь;
МассивСтрок = Новый Массив;
Отбор = Новый Структура();
Отбор.Вставить("ИмяИсточника" , ИмяИсточника);
Отбор.Вставить("Источник" , Источник);
Если Не ЗначениеЗаполнено(Источник) Тогда
Отбор.Вставить("ИдентификаторСтрокиИсточника", ИдентификаторСтрокиИсточника);
КонецЕсли;
НайденныеСтроки = Объект.ВыбранныеИсточники.НайтиСтроки(Отбор);
Если НайденныеСтроки.Количество() > 0 Тогда
Для Каждого НайденнаяСтрока Из НайденныеСтроки Цикл
МассивСтрок.Добавить(НайденнаяСтрока.ИдентификаторСтрокиЗапроса);
КонецЦикла;
Для Каждого Товар Из Объект.Товары Цикл
Товар.ОтборПоИсточнику = МассивСтрок.Найти(Товар.ИдентификаторСтрокиЗапроса) <> Неопределено;
КонецЦикла;
Ответ = Истина;
КонецЕсли;
Возврат Ответ;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура УказатьЗаполненностьИзображенияТовары(Товары)
Для Каждого СтрокаТаблицыТоваров Из Товары Цикл
УказатьЗаполненностьИзображенияВСтроке(СтрокаТаблицыТоваров);
КонецЦикла;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УказатьЗаполненностьИзображенияВСтроке(СтрокаТаблицыТоваров)
СтрокаТаблицыТоваров.ИзображениеВыбрано = ЗначениеЗаполнено(СтрокаТаблицыТоваров.Изображение)
Или Не ПустаяСтрока(СтрокаТаблицыТоваров.ИзображениеАдресДвоичныхДанных);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьПризнакиКэшированияИзображенийСтрок(Товары, ИспользоватьСервисРаботаСНоменклатурой)
Для Каждого СтрокаТаблицыТоваров Из Товары Цикл
УстановитьПризнакКэшированияИзображенияСтроки(
СтрокаТаблицыТоваров, ИспользоватьСервисРаботаСНоменклатурой);
КонецЦикла;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьПризнакКэшированияИзображенияСтроки(СтрокаТаблицыТоваров, ИспользоватьСервисРаботаСНоменклатурой)
СтрокаТаблицыТоваров.КэшироватьВыбранноеИзображение = Ложь;
Если ЗначениеЗаполнено(СтрокаТаблицыТоваров.Номенклатура) Тогда
СтрокаТаблицыТоваров.КэшироватьВыбранноеИзображение = СтрокаТаблицыТоваров.ИсточникДобавленияТовара = 0
И Не НоменклатураСопоставлена(СтрокаТаблицыТоваров.Номенклатура, ИспользоватьСервисРаботаСНоменклатурой);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиОжидания
&НаКлиенте
Процедура ЗаполнитьПредставлениеКатегорииЗавершение(Результат, ДополнительныеПараметры) Экспорт
ДанныеКатегорий = Неопределено;
СтрокиПоИдентификатору = Объект.Товары.НайтиСтроки(Новый Структура("ИдентификаторСтрокиЗапроса",
ДополнительныеПараметры.ИдентификаторСтроки));
Если Результат <> Неопределено Тогда
ДанныеКатегорий = ПолучитьИзВременногоХранилища(Результат.АдресРезультата);
КонецЕсли;
Если СтрокиПоИдентификатору.Количество() Тогда
ТекущиеДанные = СтрокиПоИдентификатору[0];
Если ТекущиеДанные.КлючСинхронизации <> ДополнительныеПараметры.КлючСинхронизации Тогда
Возврат;
КонецЕсли;
ТекущиеДанные.КатегорияВСервисеИдентификатор = Неопределено;
ТекущиеДанные.КатегорияВСервисеПредставление = Неопределено;
Если Результат.Статус = "Ошибка" Или ДанныеКатегорий = Неопределено Тогда
ТекущиеДанные.ОшибкаПолученияКатегории = Истина;
Иначе
ДанныеКатегории = ДанныеКатегорий.Получить(ТекущиеДанные.НоменклатураВСервисеИдентификатор);
Если Не ДанныеКатегории = Неопределено Тогда
ЗаполнитьЗначенияСвойств(ТекущиеДанные, ДанныеКатегории);
КонецЕсли;
КонецЕсли;
ТекущиеДанные.ИдентификаторЗадания = Неопределено;
ТекущиеДанные.КлючСинхронизации = Новый УникальныйИдентификатор;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьДанныеСервисаВТабличнойЧастиЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Для Каждого СтрокаТабличнойЧасти Из Объект.Товары Цикл
Если ПустаяСтрока(СтрокаТабличнойЧасти.ИдентификаторЗадания) Тогда
Продолжить;
КонецЕсли;
СтрокаТабличнойЧасти.КатегорияВСервисеИдентификатор = Неопределено;
СтрокаТабличнойЧасти.КатегорияВСервисеПредставление = Неопределено;
СтрокаТабличнойЧасти.ИдентификаторЗадания = Неопределено;
СтрокаТабличнойЧасти.ОшибкаПолученияКатегории = Истина;
КонецЦикла;
Возврат;
КонецЕсли;
ДанныеКатегорий = ПолучитьИзВременногоХранилища(Результат.АдресРезультата);
Для Каждого СтрокаТабличнойЧасти Из Объект.Товары Цикл
СтрокаТабличнойЧасти.ИдентификаторЗадания = Неопределено;
Если Результат.Статус = "Ошибка" Или ДанныеКатегорий = Неопределено Тогда
СтрокаТабличнойЧасти.ОшибкаПолученияКатегории = Истина;
Иначе
ДанныеКатегории = ДанныеКатегорий.Получить(СтрокаТабличнойЧасти.НоменклатураВСервисеИдентификатор);
Если Не ДанныеКатегории = Неопределено Тогда
ЗаполнитьЗначенияСвойств(СтрокаТабличнойЧасти, ДанныеКатегории);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура СравнениеУсловийЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
ВыбратьПредложения(Элементы.ПоступившиеПредложенияВыбратьИсточникКЗаказу, Результат);
КонецПроцедуры
&НаКлиенте
Процедура ВопросРегистрацииОрганизацииПродолжение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = КодВозвратаДиалога.Да Тогда
ТребуетсяРегистрацияОрганизации = Ложь;
Оповещение = Новый ОписаниеОповещения("ПослеРегистрацииОрганизации", ЭтотОбъект, ДополнительныеПараметры);
ОчиститьСообщения();
ОткрытьФорму("Обработка.БизнесСеть.Форма.РегистрацияОрганизаций",, ЭтотОбъект,,,, Оповещение, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеРегистрацииОрганизации(Результат, ПараметрыОткрытия) Экспорт
Если Не ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЭлектронноеВзаимодействие.ТорговыеПредложения") Тогда
Возврат;
КонецЕсли;
Если Результат = Истина Тогда
МодульТорговыеПредложенияКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ТорговыеПредложенияКлиент");
МодульТорговыеПредложенияКлиент.ОткрытьТорговоеПредложение(ПараметрыОткрытия, ЭтотОбъект,
ПараметрыОткрытия.Идентификатор);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьНаименованияНоменклатуры()
Если Не ДоступностьФормыПриОткрытии Тогда
Возврат;
КонецЕсли;
Для Каждого ТекущиеДанные Из Объект.Товары Цикл
Если ТекущиеДанные.ИсточникДобавленияТовара = 0 Тогда
Если ТекущиеДанные.ХарактеристикиИспользуются Тогда
Шаблон = НСтр("ru = '%1 (%2)'");
ТекущиеДанные.НаименованиеСтрокой = СтрШаблон(Шаблон, ТекущиеДанные.Номенклатура, ТекущиеДанные.Характеристика);
Иначе
ТекущиеДанные.НаименованиеСтрокой = Строка(ТекущиеДанные.Номенклатура);
КонецЕсли;
ИначеЕсли ТекущиеДанные.ИсточникДобавленияТовара = 1 Тогда
ТекущиеДанные.НаименованиеСтрокой = ТекущиеДанные.НоменклатураВСервисеПредставление;
Иначе
ТекущиеДанные.НаименованиеСтрокой = ТекущиеДанные.НоменклатураТекстом;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьЗаполненияВФонеЗавершение(Результат, ДополнительныеПараметры) Экспорт
Элементы.ПоступившиеПредложенияВыбратьИсточникКЗаказу.Доступность = Истина;
Элементы.ВыбратьПоМинимальнойЦене.Доступность = Истина;
Элементы.ВыбратьПоМинимальнойЦене.Картинка = БиблиотекаКартинок.Пустая;
Элементы.ВыбратьПоМинимальнымСрокам.Доступность = Истина;
Элементы.ВыбратьПоМинимальнымСрокам.Картинка = БиблиотекаКартинок.Пустая;
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Если Результат.Статус = "Выполнено" Тогда
КоличествоПредложений = ЗаполнитьВыбранныеИсточники(Результат.АдресРезультата);
Если КоличествоПредложений > 0 Тогда
ПоказатьОповещениеПользователя(НСтр("ru = 'Выбор предложения завершен.'"),,,
БиблиотекаКартинок.Успешно32, СтатусОповещенияПользователя.Информация);
Иначе
ПоказатьОповещениеПользователя(НСтр("ru = 'Не удалось найти ни одного предложения.'"),,,
БиблиотекаКартинок.Информация32, СтатусОповещенияПользователя.Информация);
КонецЕсли;
Иначе
ПоказатьОповещениеПользователя(НСтр("ru = 'При подборе предложения произошла ошибка.'"),,,
БиблиотекаКартинок.Ошибка32, СтатусОповещенияПользователя.Информация);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ЗаполнитьВыбранныеИсточники(АдресРезультата)
ТаблицаПредложений = ПолучитьИзВременногоХранилища(АдресРезультата);
Если Не ЗначениеЗаполнено(ТаблицаПредложений) Тогда
Возврат 0;
КонецЕсли;
Объект.ВыбранныеИсточники.Очистить();
Для Каждого СтрокаТовар Из ТаблицаПредложений Цикл
Отбор = Новый Структура("ИдентификаторСтрокиЗапроса", СтрокаТовар.ИдентификаторСтрокиЗапроса);
НайденныеСтроки = Объект.Товары.НайтиСтроки(Отбор);
Если НайденныеСтроки.Количество() = 0 Тогда
Продолжить;
КонецЕсли;
НоваяСтрока = Объект.ВыбранныеИсточники.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТовар);
НоваяСтрока.Доступен = Истина;
Если НоваяСтрока.Количество > НайденныеСтроки[0].Количество Тогда
НоваяСтрока.Количество = НайденныеСтроки[0].Количество;
КонецЕсли;
КонецЦикла;
ПерезаполнитьТаблицыПослеВыбора();
Возврат Объект.ВыбранныеИсточники.Количество();
КонецФункции
&НаКлиенте
Процедура ПолучитьПоступившиеПредложенияЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Если Результат.Статус = "Выполнено" Тогда
ЗагрузитьПоступившиеПредложения(Результат.АдресРезультата);
Элементы.ГруппаЗагрузкаПоступившихПредложений.ТекущаяСтраница = Элементы.ГруппаЗагрузкаПоступившихПредложенийВыполнено;
Элементы.ГруппаЗагрузкаВыбораПредложений.ТекущаяСтраница = Элементы.ГруппаЗагрузкаВыбораПредложенийВыполнено;
ЗапуститьПроверкуВыбранныхПредложенийВБизнесСеть();
ОтобразитьГруппуОшибки();
Иначе
Элементы.ГруппаЗагрузкаПоступившихПредложений.ТекущаяСтраница = Элементы.ГруппаЗагрузкаПоступившихПредложенийОшибка;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗапуститьПроверкуВыбранныхПредложенийВБизнесСеть()
Отбор = Новый Структура("ИмяИсточника", "БизнесСеть");
НайденныеСтроки = АнализируемыеИсточникиПредложений.НайтиСтроки(Отбор);
Если НайденныеСтроки.Количество() = 0
Или Не НайденныеСтроки[0].Использовать Тогда
Возврат;
КонецЕсли;
Элементы.ГруппаЗагрузкаВыбораПредложений.ТекущаяСтраница = Элементы.ГруппаЗагрузкаВыбораПредложенийВыполняетсяБизнесСеть;
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ПараметрыОжидания.ВыводитьОкноОжидания = Ложь;
ПараметрыОжидания.ОповещениеПользователя.Показать = Ложь;
ПараметрыОжидания.ВыводитьСообщения = Истина;
ПараметрыОжидания.Интервал = 1;
ПараметрыОперации = Новый Структура;
ПараметрыОперации.Вставить("ДокументИсточник" , Объект.Ссылка);
ПараметрыОперации.Вставить("УникальныйИдентификатор", УникальныйИдентификатор);
ПараметрыОперации.Вставить("Валюта" , Объект.Валюта);
ПараметрыОперации.Вставить("Организация" , Объект.Организация);
ДлительнаяОперация = ЗапуститьПолучениеПредложенийВБизнесСетьВФоне(ПараметрыОперации, Объект.ВыбранныеИсточники);
Если ДлительнаяОперация = Неопределено Тогда
Возврат;
КонецЕсли;
ИдентификаторЗадания = ДлительнаяОперация.ИдентификаторЗадания;
ВыполнениеОперацииЗавершение = Новый ОписаниеОповещения(
"ПроверкаВыбранныхПредложенийВБизнесСетьЗавершение", ЭтотОбъект);
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация,
ВыполнениеОперацииЗавершение,
ПараметрыОжидания);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ЗапуститьПолучениеПредложенийВБизнесСетьВФоне(Знач ПараметрыПроцедуры, Знач ВыбранныеИсточники)
ТоварыБизнесСети = ПолучитьТоварыБизнесСети(ВыбранныеИсточники);
ПараметрыПроцедуры.Вставить("ТоварыДляПроверки", ТоварыБизнесСети);
НаименованиеФоновогоЗадания = СтрШаблон(НСтр("ru = 'Актуализация торговых предложений документа %1'"), ПараметрыПроцедуры.ДокументИсточник);
ИмяПроцедуры = "Документы.ЗапросКоммерческихПредложенийПоставщиков.ПроверкаВыбранныхПредложенийТорговойПлощадки";
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(ПараметрыПроцедуры.УникальныйИдентификатор);
ПараметрыВыполнения.НаименованиеФоновогоЗадания = НаименованиеФоновогоЗадания;
ПараметрыВыполнения.ЗапуститьВФоне = Истина;
ПараметрыВыполнения.ОжидатьЗавершение = 0;
Возврат ДлительныеОперации.ВыполнитьВФоне(ИмяПроцедуры, ПараметрыПроцедуры, ПараметрыВыполнения);
КонецФункции
&НаСервереБезКонтекста
Функция ПолучитьТоварыБизнесСети(Знач ВыбранныеИсточники)
Отбор = Новый Структура("ИмяИсточника", "БизнесСеть");
Таблица = ВыбранныеИсточники.Выгрузить(Отбор, "ПоставщикИдентификатор, ИдентификаторСтрокиИсточника, ЦенаПоставщика, СрокПоставки");
Возврат ОбщегоНазначения.ТаблицаЗначенийВМассив(Таблица);
КонецФункции
&НаКлиенте
Процедура ПроверкаВыбранныхПредложенийВБизнесСетьЗавершение(Результат, ДополнительныеПараметры) Экспорт
ИдентификаторЗадания = "";
Элементы.ГруппаЗагрузкаВыбораПредложений.ТекущаяСтраница = Элементы.ГруппаЗагрузкаВыбораПредложенийВыполнено;
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Если Результат.Статус = "Выполнено" Тогда
ОбработатьПроверкуБизнесСеть(Результат.АдресРезультата);
ОбновитьДанныеВКешеСтрок();
Иначе
Элементы.ГруппаЗагрузкаВыбораПредложений.ТекущаяСтраница = Элементы.ГруппаЗагрузкаВыбораПредложенийОшибка;
Возврат;
КонецЕсли;
ОтобразитьГруппуОшибки();
КонецПроцедуры
&НаКлиенте
Процедура ОтобразитьГруппуОшибки()
Отображать = Ложь;
НайденныеСтроки = ПоступившиеПредложения.НайтиСтроки(Новый Структура("Внимание", Истина));
Для Каждого СтрокаКоллекции Из НайденныеСтроки Цикл
Если Элементы.ПоступившиеПредложения.ПроверитьСтроку(СтрокаКоллекции.ПолучитьИдентификатор()) Тогда
Отображать = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Элементы.ГруппаИнформированияОбОшибках.Видимость = Отображать;
Отображать = Ложь;
НайденныеСтроки = Объект.Товары.НайтиСтроки(Новый Структура("Внимание", Истина));
Для Каждого СтрокаКоллекции Из НайденныеСтроки Цикл
Если Элементы.ТоварыВыборПредложений.ПроверитьСтроку(СтрокаКоллекции.ПолучитьИдентификатор()) Тогда
Отображать = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Элементы.ГруппаОшибкаПолныйВыкуп.Видимость = Отображать;
КонецПроцедуры
&НаКлиенте
Процедура СрокПоставкиЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Для Каждого ИндексСтроки Из Элементы.Товары.ВыделенныеСтроки Цикл
ТекущаяСтрока = Элементы.Товары.ДанныеСтроки(ИндексСтроки);
ТекущаяСтрока.СрокПоставки = Результат;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура УказатьКатегориюЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если ТипЗнч(Результат) <> Тип("Структура") Тогда
Возврат;
КонецЕсли;
ВыбранныеОбъекты = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Результат, "ВыбранныеОбъекты");
Если Не ЗначениеЗаполнено(ВыбранныеОбъекты) Тогда
Возврат;
КонецЕсли;
Категория = ВыбранныеОбъекты[0];
Для Каждого СтрокаТаблицыТовары Из ДополнительныеПараметры.СтрокиПодлежащиеОбработке Цикл
СтрокаТаблицыТовары.КатегорияВСервисеПредставление = Категория.Наименование;
СтрокаТаблицыТовары.КатегорияВСервисеИдентификатор = Категория.Идентификатор;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещенияЗакрытиеФормыВыбораНоменклатуры(Результат, ДополнительныеПараметры) Экспорт
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ОтсутствуютТекущиеДанныеТЧТовары(ТекущиеДанные) Тогда
Возврат;
КонецЕсли;
Если Результат = Неопределено Тогда
Если Не ЗначениеЗаполнено(ТекущиеДанные.НоменклатураВСервисеПредставление) Тогда
Объект.Товары.Удалить(ТекущиеДанные);
КонецЕсли;
Возврат;
КонецЕсли;
ТекущиеДанные.Изображение = Неопределено;
ТекущиеДанные.ИзображениеАдресДвоичныхДанных = "";
ТекущиеДанные.ИзображениеВыбрано = Ложь;
АдресКартинки = "";
ДанныеНоменклатурыИзСервиса = Результат.ВыбранныеОбъекты[0];
ТекущиеДанные.НоменклатураВСервисеПредставление = ДанныеНоменклатурыИзСервиса.НаименованиеНоменклатуры;
ТекущиеДанные.НоменклатураВСервисеИдентификатор = ДанныеНоменклатурыИзСервиса.ИдентификаторНоменклатуры;
ТекущиеДанные.ХарактеристикаВСервисеИдентификатор = ДанныеНоменклатурыИзСервиса.ИдентификаторХарактеристики;
ТекущиеДанные.КатегорияВСервисеИдентификатор = ДанныеНоменклатурыИзСервиса.ИдентификаторКатегории;
ТекущиеДанные.КатегорияВСервисеПредставление = ДанныеНоменклатурыИзСервиса.НаименованиеКатегории;
РеквизитыБазовойЕдиницыИзмерения = Новый Структура;
РеквизитыБазовойЕдиницыИзмерения.Вставить("Код" , ДанныеНоменклатурыИзСервиса.КодЕдиницыИзмерения);
РеквизитыБазовойЕдиницыИзмерения.Вставить("Наименование", ДанныеНоменклатурыИзСервиса.НаименованиеЕдиницыИзмерения);
ТекущиеДанные.ЕдиницаИзмерения = ПолучитьСсылкуНаЕдиницуИзмерения(ДанныеНоменклатурыИзСервиса.КодЕдиницыИзмерения,
РеквизитыБазовойЕдиницыИзмерения);
ВнешниеАдресаИзображений = ДанныеНоменклатурыИзСервиса.ВнешниеАдресаИзображений;
Если ВнешниеАдресаИзображений.Количество() > 0 Тогда
ЗаполнитьИзображениеВСтрокеПоВнешнемуАдресу(ТекущиеДанные, ВнешниеАдресаИзображений[0]);
КонецЕсли;
ПриИзмененииИзображения(ТекущиеДанные);
УстановитьВидимостьПодсказкиИзображения(ТекущиеДанные);
УстановитьТекстНевыбраннойКартинки(ТекущиеДанные);
УстановитьДоступностьКомандИзображения(ТекущиеДанные);
КонецПроцедуры
&НаСервереБезКонтекста
Функция АдресДвоичныхДанныхИзображенияПоВнешнейСсылке(ВнешняяСсылкаИзображения)
АдресИзображенияВХранилище =
КоммерческиеПредложенияСлужебный.АдресИзображенияВХранилище(ВнешняяСсылкаИзображения, Ложь);
Возврат АдресИзображенияВХранилище;
КонецФункции
&НаСервереБезКонтекста
Функция ПолучитьСсылкуНаЕдиницуИзмерения(КодЕдИзм, РеквизитыБазовойЕдиницыИзмерения)
Возврат ОбщегоНазначенияБЭД.НайтиСсылку("ЕдиницыИзмерения", Строка(КодЕдИзм),
РеквизитыБазовойЕдиницыИзмерения);
КонецФункции
&НаКлиенте
Процедура КатегорияПослеВыбора(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
ТекущиеДанные.КатегорияВСервисеПредставление = Результат.ВыбранныеОбъекты[0].Наименование;
ТекущиеДанные.КатегорияВСервисеИдентификатор = Результат.ВыбранныеОбъекты[0].Идентификатор;
КонецПроцедуры
&НаКлиенте
Процедура ВыборПредложенийЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Отбор = Новый Структура("ИдентификаторСтрокиЗапроса", Результат.ИдентификаторСтрокиЗапроса);
НайденныеСтроки = Объект.ВыбранныеИсточники.НайтиСтроки(Отбор);
Для Каждого Строка Из НайденныеСтроки Цикл
Объект.ВыбранныеИсточники.Удалить(Строка);
КонецЦикла;
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(Результат.Предложения, Объект.ВыбранныеИсточники);
Модифицированность = Истина;
ПерезаполнитьТаблицыПослеВыбора();
ОтобразитьГруппуОшибки();
КонецПроцедуры
&НаКлиенте
Процедура ОпубликоватьЗапросЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Истина Тогда
ОбработатьИзмененияШапки(ДополнительныеПараметры);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОформитьЗаказыЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Истина Тогда
ПерейтиКОформлениюЗаказов(ДополнительныеПараметры.АдресКэшаВыбранныхИсточников);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьИсточникКЗаказуЗавершение(Результат, ДополнительныеПараметры) Экспорт
ТекущиеДанные = Элементы.ПоступившиеПредложения.ТекущиеДанные;
Если ТекущиеДанные = Неопределено
Или Не ЗначениеЗаполнено(ТекущиеДанные.Источник) Тогда
ПоказатьОповещениеПользователя(НСтр("ru = 'Выбор предложения завершен.'"),,,
БиблиотекаКартинок.Успешно32, СтатусОповещенияПользователя.Информация);
Возврат;
КонецЕсли;
Элементы.ПоступившиеПредложенияВыбратьИсточникКЗаказу.Доступность = Ложь;
Элементы.ВыбратьПоМинимальнойЦене.Доступность = Ложь;
Элементы.ВыбратьПоМинимальнымСрокам.Доступность = Ложь;
ВыбратьПредложения(Элементы.ПоступившиеПредложенияВыбратьИсточникКЗаказу, ТекущиеДанные.Источник);
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьИзСервисаРаботаСНоменклатуройПродолжение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Или Не Результат.ИспользоватьСервисРаботаСНоменклатурой Тогда
ОчиститьСообщения();
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр(
"ru='Для использования данных сервиса 1С: Номенклатура необходимо включить соответствующую опцию.'",
ОбщегоНазначенияКлиент.КодОсновногоЯзыка()));
Возврат;
КонецЕсли;
ИспользоватьСервисРаботаСНоменклатурой = Истина;
ВыбратьНоменклатуруИзСервиса();
ОткрытьПодборНоменклатурыИзСервиса();
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьНоменклатуруИзСервиса()
Объект.ТекущийРежимДобавленияТовара = 1;
ИзменитьРежимДобавленияИДобавитьСтроку();
ДобавитьСтроку();
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборНоменклатурыИзСервисаПродолжение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Или Не Результат.ИспользоватьСервисРаботаСНоменклатурой Тогда
ОчиститьСообщения();
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр(
"ru='Для использования данных сервиса 1С: Номенклатура необходимо включить соответствующую опцию.'",
ОбщегоНазначенияКлиент.КодОсновногоЯзыка()));
Возврат;
КонецЕсли;
ИспользоватьСервисРаботаСНоменклатурой = Истина;
ОткрытьПодборНоменклатурыИзСервиса();
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборНоменклатурыИзСервиса()
ПараметрыФормы = Новый Структура();
ПараметрыФормы.Вставить("РежимВыбораНоменклатуры" , Истина);
ПараметрыФормы.Вставить("ИдентификаторНоменклатуры" , Элементы.Товары.ТекущиеДанные.НоменклатураВСервисеИдентификатор);
ПараметрыФормы.Вставить("СтрокаПоиска" , Элементы.Товары.ТекущиеДанные.НоменклатураВСервисеПредставление);
ПараметрыФормы.Вставить("ВозвращатьРасширенныйНаборПолей" , Истина);
ОповещениеПриЗакрытии = Новый ОписаниеОповещения("ОбработкаОповещенияЗакрытиеФормыВыбораНоменклатуры", ЭтотОбъект);
РаботаСНоменклатуройКлиент.ОткрытьФормуЗагрузкиНоменклатуры(ПараметрыФормы, ЭтотОбъект, ОповещениеПриЗакрытии,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФормуВыбораСправочникаНоменклатура()
ИмяСправочникаНоменклатура = ОбщегоНазначенияБЭДКлиентПовтИсп.ИмяПрикладногоСправочника("Номенклатура");
ИмяФормыВыбораНоменклатуры = СтрШаблон("Справочник.%1.ФормаВыбора", ИмяСправочникаНоменклатура);
ОписаниеОповещения = Новый ОписаниеОповещения("ДобавитьИзСправочникаНоменклатураЗавершение", ЭтотОбъект);
ОткрытьФорму(ИмяФормыВыбораНоменклатуры, , ЭтотОбъект, , , , ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьИзСправочникаНоменклатураЗавершение(Результат, ДополнительныеПараметры) Экспорт
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ОтсутствуютТекущиеДанныеТЧТовары(ТекущиеДанные) Тогда
Возврат;
КонецЕсли;
Если Результат = Неопределено Тогда
Если Не ЗначениеЗаполнено(ТекущиеДанные.Номенклатура) Тогда
Объект.Товары.Удалить(ТекущиеДанные);
КонецЕсли;
Возврат;
КонецЕсли;
ТекущиеДанные.Номенклатура = Результат;
ПриИзмененииНоменклатуры(ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФормуОписаниеВручную()
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ОтсутствуютТекущиеДанныеТЧТовары(ТекущиеДанные) Тогда
Возврат;
КонецЕсли;
ИмяФормыОписания = "Документ.ЗапросКоммерческихПредложенийПоставщиков.Форма.РучноеОписаниеТовара";
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("УникальныйИдентификаторВладельца", УникальныйИдентификатор);
ПараметрыФормы.Вставить("СсылкаНаДокумент", Объект.Ссылка);
ПараметрыФормы.Вставить("Описание", ТекущиеДанные.НоменклатураТекстом);
ПараметрыФормы.Вставить("КатегорияВСервисеИдентификатор", ТекущиеДанные.КатегорияВСервисеИдентификатор);
ПараметрыФормы.Вставить("КатегорияВСервисеПредставление", ТекущиеДанные.КатегорияВСервисеПредставление);
ПараметрыФормы.Вставить("ЕдиницаИзмерения", ТекущиеДанные.ЕдиницаИзмерения);
ПараметрыФормы.Вставить("Изображение", ТекущиеДанные.Изображение);
ПараметрыФормы.Вставить("АдресКартинки", АдресКартинки);
ОписаниеОповещения = Новый ОписаниеОповещения("ДобавитьРучнымОписаниемЗавершение", ЭтотОбъект);
ЗаблокироватьДанныеФормыДляРедактирования();
ОткрытьФорму(ИмяФормыОписания, ПараметрыФормы, ЭтотОбъект, , , ,
ОписаниеОповещения, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьРучнымОписаниемЗавершение(Результат, ДополнительныеПараметры) Экспорт
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ОтсутствуютТекущиеДанныеТЧТовары(ТекущиеДанные) Тогда
Возврат;
КонецЕсли;
Если Результат = Неопределено Или Результат = КодВозвратаДиалога.Отмена Тогда
Если Не ЗначениеЗаполнено(ТекущиеДанные.НоменклатураТекстом) Тогда
Объект.Товары.Удалить(ТекущиеДанные);
КонецЕсли;
Возврат;
КонецЕсли;
ЗаполнитьЗначенияСвойств(ТекущиеДанные, Результат);
ТекущиеДанные.ИзображениеАдресДвоичныхДанных = Результат.АдресКартинки;
ПриИзмененииИзображения(ТекущиеДанные);
УстановитьВидимостьПодсказкиИзображения(ТекущиеДанные);
УстановитьТекстНевыбраннойКартинки(ТекущиеДанные);
УстановитьДоступностьКомандИзображения(ТекущиеДанные);
Модифицированность = Истина;
КонецПроцедуры
#КонецОбласти
#Область ОтборСтрок
&НаКлиенте
Процедура УстановитьОтборПоВыбраннымКЗаказуПоставщикам()
ОтборСтрок = Новый ФиксированнаяСтруктура(Новый Структура("ВыбранКЗаказу", Истина));
Элементы.ПоступившиеПредложения.ОтборСтрок = ОтборСтрок;
Элементы.ГруппаОтборПоступившиеПредложения.Видимость = Истина;
Элементы.СтраницыДокумента.ТекущаяСтраница = Элементы.СтраницаПоступившиеПредложения;
ОтобразитьГруппуОшибки();
КонецПроцедуры
&НаКлиенте
Процедура УстановитьОтборПоНоменклатуреКЗаказу(ВыбранКЗаказу)
ОтборСтрок = Новый ФиксированнаяСтруктура(Новый Структура("ВыбранКЗаказу", ВыбранКЗаказу));
Элементы.ТоварыВыборПредложений.ОтборСтрок = ОтборСтрок;
Элементы.ГруппаОтборВыборПредложений.Видимость = Истина;
Если ВыбранКЗаказу Тогда
ЗаголовокНадписи = НСтр("ru = 'Установлен отбор по позициям, выбранным к заказу'");
Иначе
ЗаголовокНадписи = НСтр("ru = 'Установлен отбор по не выбранным к заказу позициям'");
КонецЕсли;
МассивСтрок = Новый Массив;
МассивСтрок.Добавить(ЗаголовокНадписи);
МассивСтрок.Добавить(" ");
МассивСтрок.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = '(Очистить)'"),,,,"Очистить"));
Элементы.ДекорацияОтбораВыборПредложенийНадпись.Заголовок = Новый ФорматированнаяСтрока(МассивСтрок);
Элементы.СтраницыДокумента.ТекущаяСтраница = Элементы.СтраницаВыборПредложений;
ОтобразитьГруппуОшибки();
КонецПроцедуры
&НаКлиенте
Процедура УстановитьОтборПоНоменклатуреИсточника(ИсточникПредставление)
ОтборСтрок = Новый ФиксированнаяСтруктура(Новый Структура("ОтборПоИсточнику", Истина));
Элементы.ТоварыВыборПредложений.ОтборСтрок = ОтборСтрок;
Элементы.ГруппаОтборВыборПредложений.Видимость = Истина;
ЗаголовокНадписи = СтрШаблон(НСтр("ru = 'Установлен отбор по источнику: %1'"), ИсточникПредставление);
МассивСтрок = Новый Массив;
МассивСтрок.Добавить(ЗаголовокНадписи);
МассивСтрок.Добавить(" ");
МассивСтрок.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = '(Очистить)'"),,,,"Очистить"));
Элементы.ДекорацияОтбораВыборПредложенийНадпись.Заголовок = Новый ФорматированнаяСтрока(МассивСтрок);
Элементы.СтраницыДокумента.ТекущаяСтраница = Элементы.СтраницаВыборПредложений;
ОтобразитьГруппуОшибки();
КонецПроцедуры
&НаКлиенте
Процедура СнятьОтборыУТаблиц()
Элементы.ПоступившиеПредложения.ОтборСтрок = Неопределено;
Элементы.ТоварыВыборПредложений.ОтборСтрок = Неопределено;
Элементы.ГруппаОтборПоступившиеПредложения.Видимость = Ложь;
Элементы.ГруппаОтборВыборПредложений.Видимость = Ложь;
ОтобразитьГруппуОшибки();
КонецПроцедуры
#КонецОбласти
#Область ПрочиеПроцедурыИФункции
&НаСервереБезКонтекста
Функция ИдентификаторыНоменклатурыСервиса(Знач Номенклатура)
Если Не ЗначениеЗаполнено(Номенклатура) Тогда
Возврат Новый Соответствие;
КонецЕсли;
Возврат КоммерческиеПредложенияДокументы.ИдентификаторыНоменклатурыСервиса(Номенклатура);
КонецФункции
&НаСервереБезКонтекста
Функция ИдентификаторыНоменклатурыИХарактеристикиСервиса(Знач Отбор)
Возврат КоммерческиеПредложенияДокументы.ИдентификаторыНоменклатурыИХарактеристикиСервиса(Отбор);
КонецФункции
&НаСервереБезКонтекста
Функция НоменклатураСопоставлена(Номенклатура, ИспользоватьСервисРаботаСНоменклатурой)
Результат = Ложь;
Если ОбщегоНазначения.ПодсистемаСуществует("ЭлектронноеВзаимодействие.РаботаСНоменклатурой")
И ИспользоватьСервисРаботаСНоменклатурой Тогда
Результат = ИдентификаторыНоменклатурыСервиса(Номенклатура).Получить(Номенклатура) <> Неопределено;
КонецЕсли;
Возврат Результат;
КонецФункции
&НаСервереБезКонтекста
Функция ПолучитьПредставлениеКатегорииВФоне(Знач ПараметрыПроцедуры, Знач ИдентификаторФормы)
НаименованиеФоновогоЗадания = НСтр("ru = 'Получение представления категории для номенклатуры.'");
ИмяПроцедуры = "Документы.ЗапросКоммерческихПредложенийПоставщиков.ПредставлениеКатегорийПоИдентификаторамСервиса";
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(ИдентификаторФормы);
ПараметрыВыполнения.НаименованиеФоновогоЗадания = НаименованиеФоновогоЗадания;
ПараметрыВыполнения.ЗапуститьВФоне = Истина;
ПараметрыВыполнения.ОжидатьЗавершение = 0;
Возврат ДлительныеОперации.ВыполнитьВФоне(ИмяПроцедуры, ПараметрыПроцедуры, ПараметрыВыполнения);
КонецФункции
&НаСервереБезКонтекста
Процедура ЗаполнитьПараметрыНаСервере(ПараметрыОткрытия, Знач УникальныйИдентификатор,Знач ВыбранныеИсточники,Знач АнализируемыеИсточникиПредложений)
Адрес = ВыбранныеИсточникиПоИдентификатору(ПараметрыОткрытия.ИдентификаторСтрокиЗапроса, ВыбранныеИсточники, УникальныйИдентификатор);
АнализируемыеИсточники = ПолучитьАнализируемыеИсточники(АнализируемыеИсточникиПредложений, УникальныйИдентификатор);
ПараметрыОткрытия.Вставить("ВыбранныеПредложения" , Адрес);
ПараметрыОткрытия.Вставить("АнализируемыеИсточники" , АнализируемыеИсточники);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПроверитьГотовностьКОтправке(Ссылка)
РезультатПроверкиПоставщиков = АдресаЭлектроннойПочтыПолучателейЗапросаСоответствуютТребованиям(Ссылка);
Возврат РезультатПроверкиПоставщиков И КоммерческиеПредложения.ЗапросКоммерческихПредложенийПоставщиковГотовКОтправке(Ссылка);
КонецФункции
&НаСервереБезКонтекста
Функция АдресаЭлектроннойПочтыПолучателейЗапросаСоответствуютТребованиям(Ссылка)
Результат = Истина;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПолучателиЗапроса.НомерСтроки КАК НомерСтроки,
| ПолучателиЗапроса.Контрагент КАК ПолучательЗапроса,
| Представление(ПолучателиЗапроса.Контрагент) КАК ПолучательЗапросаПредставление
|ИЗ
| Документ.ЗапросКоммерческихПредложенийПоставщиков.СписокПолучателейЗапроса КАК ПолучателиЗапроса
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗапросКоммерческихПредложенийПоставщиков КАК ДокументЗКП
| ПО ДокументЗКП.Ссылка = &Ссылка
| И ДокументЗКП.ЗапрашиватьПредложенияПоставщиков = &КодИдентификацииБидзаар
| И ДокументЗКП.Ссылка = ПолучателиЗапроса.Ссылка";
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.УстановитьПараметр("КодИдентификацииБидзаар", 2);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Возврат Результат;
КонецЕсли;
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
ОтборКИ = УправлениеКонтактнойИнформацией.ОтборКонтактнойИнформации();
ОтборКИ.ТипыКонтактнойИнформации.Добавить(Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты);
ОтборКИ.Дата = Дата(1, 1, 1);
КонтактнаяИнформация = УправлениеКонтактнойИнформацией.КонтактнаяИнформация(Выборка.ПолучательЗапроса, ОтборКИ);
СтрокаКИ = КонтактнаяИнформация.Найти(Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты, "Тип");
Если СтрокаКИ <> Неопределено И ОбщегоНазначенияКлиентСервер.АдресЭлектроннойПочтыСоответствуетТребованиям(СтрокаКИ.Представление) Тогда
Продолжить;
КонецЕсли;
Результат = Ложь;
ТекстОшибки = СтрШаблон(НСтр("ru = 'Некорректный адрес электронной почты у %1'"), Выборка.ПолучательЗапросаПредставление);
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, Ссылка, "СписокПолучателейЗапроса[" + (Выборка.НомерСтроки - 1) + "].Контрагент", "Объект");
КонецЦикла;
Возврат Результат;
КонецФункции
&НаСервере
Процедура ПересчитатьЦеныВДокументе()
Для Каждого Источник Из Объект.ВыбранныеИсточники Цикл
Сумма = Документы.ЗапросКоммерческихПредложенийПоставщиков.СуммаЗаВычетомСкидки(
Источник.ПроцентСкидки, Источник.Количество * Источник.ЦенаПоставщика);
Источник.СуммаВВалютеЗапроса = РаботаСКурсамиВалют.ПересчитатьВВалюту(
Сумма, Источник.ВалютаПредложения, Объект.Валюта, Объект.ДатаКурса);
Источник.ЦенаВВалютеЗапроса = РаботаСКурсамиВалют.ПересчитатьВВалюту(
Источник.ЦенаПоставщика, Источник.ВалютаПредложения, Объект.Валюта, Объект.ДатаКурса);
КонецЦикла;
ПерезаполнитьТаблицыПослеВыбора();
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьОшибкиПоступившихПредложений(Знач ПоступившиеПредложения)
Отбор = Новый Структура("Внимание", Истина);
НайденныеСтрокиПредложения = ПоступившиеПредложения.Выгрузить(Отбор);
Если НайденныеСтрокиПредложения.Количество() = 0 Тогда
Возврат Неопределено;
КонецЕсли;
Ответ = Новый Структура;
Ответ.Вставить("Ключ", НСтр("ru = 'Выбранные предложения'"));
Ответ.Вставить("Значение", НСтр("ru = 'Описание проблемы'"));
МассивСтрок = Новый Массив;
Для Каждого СтрокаТч Из НайденныеСтрокиПредложения Цикл
НоваяСтрока = Новый Структура;
НоваяСтрока.Вставить("Картинка" , СтрокаТч.КартинкаИсточника);
НоваяСтрока.Вставить("Ключ" , СтрокаТч.ИсточникПредставление);
НоваяСтрока.Вставить("Значение" , СтрокаТч.ТекстПодсказки);
НоваяСтрока.Вставить("Поставщик" , СтрокаТч.ПоставщикПредставление);
МассивСтрок.Добавить(НоваяСтрока);
КонецЦикла;
Ответ.Вставить("ОписаниеОшибок", МассивСтрок);
Возврат Ответ;
КонецФункции
&НаСервереБезКонтекста
Функция ПолучитьОшибкиСинхронизации(Знач Документ)
Состояние = КоммерческиеПредложения.СостояниеЗапросаКоммерческихПредложенийПоставщиков(Документ);
Ответ = Новый Структура;
Ответ.Вставить("Ключ", НСтр("ru = 'Состояние синхронизации'"));
Ответ.Вставить("Значение", НСтр("ru = 'Описание проблемы'"));
МассивСтрок = Новый Массив;
Для Каждого СтрокаДетализации Из Состояние.Детализация Цикл
Если СтрокаДетализации.Значение.СостояниеСинхронизации
= Перечисления.СостоянияСинхронизацииЗапросовКоммерческихПредложений.Ошибка Тогда
НоваяСтрока = Новый Структура;
НоваяСтрока.Вставить("Ключ" , СтрокаДетализации.Значение.СостояниеСинхронизации);
НоваяСтрока.Вставить("Значение" , СтрокаДетализации.Значение.ПредставлениеОшибки);
НоваяСтрока.Вставить("Поставщик" , СтрокаДетализации.Ключ);
МассивСтрок.Добавить(НоваяСтрока);
КонецЕсли;
КонецЦикла;
Ответ.Вставить("ОписаниеОшибок", МассивСтрок);
Возврат Ответ;
КонецФункции
&НаСервере
Процедура ПроверитьРегистрациюОрганизаций(РезультатАвторизации = Неопределено)
Если Объект.ЗапрашиватьПредложенияПоставщиков = 2 Тогда
ТребуетсяРегистрацияОрганизации = Не (РезультатАвторизации = Истина);
ВидимостьГруппыБидзаар = Не Объект.Организация.Пустая() И ТребуетсяРегистрацияОрганизации;
ВидимостьГруппыБизнесСеть = Ложь;
Иначе
ТребуетсяРегистрацияОрганизации = БизнесСеть.ОрганизацияНеПодключенаТребуетсяПовторноеПодключение(Объект.Организация);
ВидимостьГруппыБизнесСеть = Не Объект.Организация.Пустая() И ТребуетсяРегистрацияОрганизации;
ВидимостьГруппыБидзаар = Ложь;
КонецЕсли;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы, "ГруппаРегистрацииБизнесСеть", "Видимость", ВидимостьГруппыБизнесСеть);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ГруппаРегистрацииБидзаар", "Видимость", ВидимостьГруппыБидзаар);
КонецПроцедуры
&НаКлиенте
Процедура ОпубликоватьЗапрос(ТекущееСостояние, НовоеСостояние)
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ТекущееСостояние", ТекущееСостояние);
ДополнительныеПараметры.Вставить("НовоеСостояние", НовоеСостояние);
Если Объект.ЗапрашиватьПредложенияПоставщиков = 0 Тогда
ТекстДействия = НСтр("ru = 'Публикация запроса'");
ИначеЕсли Объект.ЗапрашиватьПредложенияПоставщиков = 1 Тогда
ТекстДействия = НСтр("ru = 'Отправка запроса'");
ИначеЕсли Объект.ЗапрашиватьПредложенияПоставщиков = 2 Тогда
ТекстДействия = НСтр("ru = 'Публикация запроса'");
СтатусОтправления = ПредопределенноеЗначение(
"Перечисление.СостоянияСинхронизацииЗапросовКоммерческихПредложений.Выполняется");
КонецЕсли;
ОбновитьСостояниеДокумента(Объект.Ссылка, ТекущееСостояние, НовоеСостояние, ТекстДействия);
ВыполняетсяКоманда = Истина;
ВыполняемоеДействие = ТекстДействия;
Если Объект.ЗапрашиватьПредложенияПоставщиков = 2 Тогда
ИнтеграцияСЭлектроннымиТорговымиПлощадкамиКлиент.ПубликацияЗапросаКоммерческихПредложенийБидзаар(Объект.Ссылка);
Иначе
КоммерческиеПредложенияКлиент.ОтправитьЗапросКоммерческихПредложений(Объект.Ссылка);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОтменитьПубликациюЗапроса(ТекущееСостояние, НовоеСостояние)
ВыполняетсяКоманда = Истина;
Если Объект.ЗапрашиватьПредложенияПоставщиков = 0 Тогда
ТекстДействия = НСтр("ru = 'Отмена публикации запроса'");
Иначе
ТекстДействия = НСтр("ru = 'Отмена отправки запроса'");
КонецЕсли;
ВыполняетсяКоманда = Истина;
ВыполняемоеДействие = ТекстДействия;
ОбновитьСостояниеДокумента(Объект.Ссылка, ТекущееСостояние, НовоеСостояние, НСтр("ru = 'Отмена публикации запроса'"));
КоммерческиеПредложенияКлиент.ОтменитьЗапросКоммерческихПредложений(Объект.Ссылка);
КонецПроцедуры
&НаСервере
Процедура ПроверитьИзменениеДаты(Элемент = Неопределено, Отказ = Ложь)
Если Объект.ДатаНачалаПубликации > Объект.ДатаОкончанияПубликации Тогда
ОбщегоНазначения.СообщитьПользователю( НСтр("ru = 'Некорректный период публикации'"),
Объект.Ссылка,
Элемент,
"Объект",
Отказ);
КонецЕсли;
Если Объект.ДатаОкончанияПубликации > КонецДня(Объект.ДатаОкончанияРассмотрения) Тогда
ОбщегоНазначения.СообщитьПользователю( НСтр("ru = 'Дата рассмотрения не должна быть меньше даты окончания публикации'"),
Объект.Ссылка,
"ДатаОкончанияРассмотрения",
"Объект",
Отказ);
КонецЕсли;
Если Объект.ВариантУказанияСрокаПоставки = ПредопределенноеЗначение("Перечисление.ВариантыСроковПоставкиКоммерческихПредложений.УказываетсяНаОпределеннуюДату") Тогда
Для Каждого СтрокаКоллекции Из Объект.Товары Цикл
Если ЗначениеЗаполнено(СтрокаКоллекции.СрокПоставки)
И СтрокаКоллекции.СрокПоставки < Объект.ДатаОкончанияРассмотрения Тогда
ОбщегоНазначения.СообщитьПользователю( НСтр("ru = 'Дата поставки не должна быть меньше даты окончания рассмотрения'"),
Объект.Ссылка,
"Товары[" + Объект.Товары.Индекс(СтрокаКоллекции) +"].СрокПоставки",
"Объект",
Отказ);
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьПоступившиеПредложения()
Элементы.ГруппаЗагрузкаПоступившихПредложений.ТекущаяСтраница = Элементы.ГруппаЗагрузкаПоступившихПредложенийВыполняется;
Элементы.ГруппаЗагрузкаВыбораПредложений.ТекущаяСтраница = Элементы.ГруппаЗагрузкаВыбораПредложенийВыполняется;
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ПараметрыОжидания.ВыводитьОкноОжидания = Ложь;
ПараметрыОжидания.ОповещениеПользователя.Показать = Ложь;
ПараметрыОжидания.ВыводитьСообщения = Истина;
ПараметрыОжидания.Интервал = 1;
ПараметрыОперации = Новый Структура;
ПараметрыОперации.Вставить("ДокументИсточник" , Объект.Ссылка);
ПараметрыОперации.Вставить("УникальныйИдентификатор", УникальныйИдентификатор);
ПараметрыОперации.Вставить("КоличествоСтрок" , Объект.Товары.Количество());
ПараметрыОперации.Вставить("ДатаКурса" , Объект.ДатаКурса);
ПараметрыОперации.Вставить("ВыбранныеИсточники" , Объект.ВыбранныеИсточники);
ДлительнаяОперация = ВыполнитьОперациюВФоне(ПараметрыОперации, АнализируемыеИсточникиПредложений);
ВыполнениеОперацииЗавершение = Новый ОписаниеОповещения(
"ПолучитьПоступившиеПредложенияЗавершение", ЭтотОбъект);
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация,
ВыполнениеОперацииЗавершение,
ПараметрыОжидания);
КонецПроцедуры
&НаКлиенте
Процедура ОтменитьФоновоеЗаданиеПоискаТорговыхПредложений()
ИнтеграцияБСПБЭДВызовСервера.ОтменитьВыполнениеЗадания(ИдентификаторЗадания);
Элементы.ГруппаЗагрузкаВыбораПредложений.ТекущаяСтраница = Элементы.ГруппаЗагрузкаВыбораПредложенийВыполнено;
КонецПроцедуры
&НаСервере
Процедура ПерезаполнитьТаблицыПослеВыбора()
ЗаполнитьКЗаказуПоступившиеПредложения();
ЗаполнитьПоставщикаВыбранныхПредложения();
Если Объект.ЗапрашиватьПредложенияПоставщиков
<> КоммерческиеПредложенияДокументыКлиентСервер.СпособРазмещенияБидзаар() Тогда
Если Объект.ВыбранныеИсточники.Количество() И Не ТолькоПросмотр Тогда
Элементы.ОформитьЗаказы.Заголовок = Новый ФорматированнаяСтрока(НСтр("ru = 'Оформить заказы'"), , , ,
"ОформитьЗаказы");
Иначе
Элементы.ОформитьЗаказы.Шрифт = Новый Шрифт(Элементы.ОформитьЗаказы.Шрифт, , , Ложь);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьКЗаказуПоступившиеПредложения()
ШаблонСумма = НСтр("ru = '%1 - %2'");
Отбор = Новый Структура("ДобавленПриВыборе", Истина);
НайденныеСтроки = ПоступившиеПредложения.НайтиСтроки(Отбор);
Для Каждого ДобавленнаяСтрока Из НайденныеСтроки Цикл
ПоступившиеПредложения.Удалить(ДобавленнаяСтрока);
КонецЦикла;
ТаблицаИсточники = Объект.ВыбранныеИсточники.Выгрузить();
ТаблицаИсточники.Индексы.Добавить("ПоставщикИдентификатор, ПоставщикСсылка, ИмяИсточника, Источник");
Для Каждого Предложение Из ПоступившиеПредложения Цикл
Предложение.КЗаказу = 0;
Предложение.СуммаКЗаказу = 0;
Предложение.Внимание = Ложь;
Предложение.ТекстПодсказки = "";
Отбор = Новый Структура();
Отбор.Вставить("ПоставщикИдентификатор", Предложение.ПоставщикИдентификатор);
Отбор.Вставить("ПоставщикСсылка" , Предложение.ПоставщикСсылка);
Отбор.Вставить("ИмяИсточника" , Предложение.ИмяИсточника);
Отбор.Вставить("Источник" , Предложение.Источник);
НайденныеСтроки = ТаблицаИсточники.НайтиСтроки(Отбор);
Если НайденныеСтроки.Количество() > 0 Тогда
Если Не Предложение.МожетВыкупатьсяЧастично Тогда
Предложение.Внимание = Не Предложение.ВсегоСтрок = НайденныеСтроки.Количество();
Если Предложение.Внимание Тогда
Предложение.ТекстПодсказки = НСтр("ru = 'Для источника требуется выкуп всех позиций'");
КонецЕсли;
КонецЕсли;
Для Каждого НайденнаяСтрока Из НайденныеСтроки Цикл
Предложение.КЗаказу = Предложение.КЗаказу + НайденнаяСтрока.Количество;
Предложение.СуммаКЗаказу = Предложение.СуммаКЗаказу + НайденнаяСтрока.СуммаВВалютеЗапроса;
Предложение.ВыбранКЗаказу = Истина;
Отбор = Новый Структура("ИдентификаторСтрокиЗапроса", НайденнаяСтрока.ИдентификаторСтрокиЗапроса);
Товар = Объект.Товары.НайтиСтроки(Отбор);
Если Товар.Количество() > 0 Тогда
Товар[0].Внимание = Предложение.Внимание;
КонецЕсли;
ТаблицаИсточники.Удалить(НайденнаяСтрока);
КонецЦикла;
КонецЕсли;
СуммаМинимум = РаботаСКурсамиВалют.ПересчитатьВВалюту(Предложение.СуммаМинимум, Предложение.Валюта, Объект.Валюта, Объект.ДатаКурса);
СуммаМаксимум = РаботаСКурсамиВалют.ПересчитатьВВалюту(Предложение.СуммаМаксимум, Предложение.Валюта, Объект.Валюта, Объект.ДатаКурса);
Если СуммаМинимум = СуммаМаксимум Тогда
СуммаДокумента = Формат(СуммаМинимум, "ЧЦ=15; ЧДЦ=2; ЧРД=.; ЧРГ=' '");
Иначе
СуммаДокумента = СтрШаблон(ШаблонСумма,
Формат(СуммаМинимум, "ЧЦ=15; ЧДЦ=2; ЧРД=.; ЧРГ=' '"),
Формат(СуммаМаксимум, "ЧЦ=15; ЧДЦ=2; ЧРД=.; ЧРГ=' '"));
КонецЕсли;
Предложение.Сумма = СуммаДокумента;
КонецЦикла;
ТаблицаШапка = ТаблицаИсточники.Скопировать();
ТаблицаШапка.Колонки.Добавить("ВсегоСтрок");
ТаблицаШапка.ЗаполнитьЗначения(1, "ВсегоСтрок");
ТаблицаШапка.Свернуть("ПоставщикИдентификатор, ПоставщикПредставление, ПоставщикСсылка, ИмяИсточника, Источник, ИдентификаторСтрокиИсточника, ВалютаПредложения", "ВсегоСтрок");
Для Каждого СтрокаКоллекции Из ТаблицаШапка Цикл
Отбор = Новый Структура;
Отбор.Вставить("ПоставщикИдентификатор" , СтрокаКоллекции.ПоставщикИдентификатор);
Отбор.Вставить("ПоставщикПредставление" , СтрокаКоллекции.ПоставщикПредставление);
Отбор.Вставить("ПоставщикСсылка" , СтрокаКоллекции.ПоставщикСсылка);
Отбор.Вставить("ИмяИсточника" , СтрокаКоллекции.ИмяИсточника);
Отбор.Вставить("Источник" , СтрокаКоллекции.Источник);
Если Не ЗначениеЗаполнено(СтрокаКоллекции.Источник) Тогда
НоваяСтрока = ПоступившиеПредложения.Добавить();
Иначе
НайденныеПредложения = ПоступившиеПредложения.НайтиСтроки(Отбор);
Если НайденныеПредложения.Количество() > 0 Тогда
НоваяСтрока = НайденныеПредложения[0];
Иначе
НоваяСтрока = ПоступившиеПредложения.Добавить();
КонецЕсли;
КонецЕсли;
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаКоллекции);
Описание = ПолучитьОписаниеИсточникаПоИмени(АнализируемыеИсточникиПредложений, СтрокаКоллекции.ИмяИсточника, СтрокаКоллекции.Источник);
ОхватПроценты = Окр(СтрокаКоллекции.ВсегоСтрок * 100 / Объект.Товары.Количество(), 0);
НоваяСтрока.ДобавленПриВыборе = Истина;
НоваяСтрока.КартинкаИсточника = Описание.КартинкаИсточника;
НоваяСтрока.Охват = СтрШаблон(НСтр("ru = '%1 (%2%%)'"), СтрокаКоллекции.ВсегоСтрок, Формат(ОхватПроценты, "ЧДЦ=0"));
НоваяСтрока.ВыбранКЗаказу = Истина;
НоваяСтрока.Валюта = СтрокаКоллекции.ВалютаПредложения;
НоваяСтрока.ИсточникПредставление = Описание.ПредставлениеИсточника;
Отбор.Вставить("ИдентификаторСтрокиИсточника", СтрокаКоллекции.ИдентификаторСтрокиИсточника);
НайденныеСтроки = ТаблицаИсточники.НайтиСтроки(Отбор);
Сумма = 0;
СуммаКЗаказу = 0;
СуммаВВалютеЗапроса = 0;
НоваяСтрока.КЗаказу = НайденныеСтроки.Количество();
Для Каждого СтрокаКоллекцииНайденные Из НайденныеСтроки Цикл
СуммаВВалютеЗапроса = СуммаВВалютеЗапроса + СтрокаКоллекцииНайденные.СуммаВВалютеЗапроса;
СуммаКЗаказу = СуммаКЗаказу + Документы.ЗапросКоммерческихПредложенийПоставщиков.СуммаЗаВычетомСкидки(
СтрокаКоллекцииНайденные.ПроцентСкидки, СтрокаКоллекцииНайденные.Количество
* СтрокаКоллекцииНайденные.ЦенаПоставщика);
Сумма = Сумма + Документы.ЗапросКоммерческихПредложенийПоставщиков.СуммаЗаВычетомСкидки(
СтрокаКоллекцииНайденные.ПроцентСкидки, СтрокаКоллекцииНайденные.Количество
* СтрокаКоллекцииНайденные.ЦенаПоставщика);
КонецЦикла;
Если СтрокаКоллекцииНайденные.ЗаказПоставщику Тогда
НоваяСтрока.СуммаКЗаказу = СуммаВВалютеЗапроса;
НоваяСтрока.Сумма = СуммаВВалютеЗапроса;
Иначе
НоваяСтрока.СуммаКЗаказу = РаботаСКурсамиВалют.ПересчитатьВВалюту(СуммаКЗаказу,
НоваяСтрока.Валюта,
Объект.Валюта,
Объект.ДатаКурса);
НоваяСтрока.Сумма = РаботаСКурсамиВалют.ПересчитатьВВалюту(Сумма,
НоваяСтрока.Валюта,
Объект.Валюта,
Объект.ДатаКурса);
КонецЕсли;
КонецЦикла;
КоличествоПоступившихПредложений = ПоступившиеПредложения.Количество();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПоставщикаВыбранныхПредложения()
Для Каждого Товар Из Объект.Товары Цикл
Отбор = Новый Структура("ИдентификаторСтрокиЗапроса", Товар.ИдентификаторСтрокиЗапроса);
ЗаполнитьЗначенияСвойств(Товар, ПолучитьПараметрыОбновленияСтрок(Объект.ВыбранныеИсточники, Отбор));
КонецЦикла;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьПараметрыОбновленияСтрок(Знач ВыбранныеИсточники, Отбор)
Ответ = Новый Структура();
Поставщик = "";
КЗаказу = 0;
Шаблон = НСтр("ru = '%1, %2'");
УжеВыбрано = ВыбранныеИсточники.Выгрузить(Отбор, "ПоставщикПредставление, ПоставщикСсылка, Источник, Количество");
УжеВыбрано.Свернуть("ПоставщикПредставление, ПоставщикСсылка, Источник","Количество");
Если УжеВыбрано.Количество() = 1 Тогда
КЗаказу = УжеВыбрано.Итог("Количество");
ТаблицаПоставщиков = УжеВыбрано.Скопировать(,"ПоставщикПредставление");
ТаблицаПоставщиков.Свернуть("ПоставщикПредставление");
Поставщик = ТаблицаПоставщиков[0].ПоставщикПредставление;
ИначеЕсли УжеВыбрано.Количество() > 0 Тогда
КЗаказу = УжеВыбрано.Итог("Количество");
ТаблицаПоставщиков = УжеВыбрано.Скопировать(,"ПоставщикПредставление");
ТаблицаПоставщиков.Свернуть("ПоставщикПредставление");
КоличествоВыбранныхПоставщиков = СтроковыеФункцииКлиентСервер.СтрокаСЧисломДляЛюбогоЯзыка(
НСтр("ru = ';%1 поставщик;;%1 поставщика;%1 поставщиков;%1 поставщиков'"),
ТаблицаПоставщиков.Количество());
ТаблицаИсточников = УжеВыбрано.Скопировать(,"Источник");
ТаблицаИсточников.Свернуть("Источник");
КоличествоВыбранныхПредложений = СтроковыеФункцииКлиентСервер.СтрокаСЧисломДляЛюбогоЯзыка(
НСтр("ru = ';%1 предложение;;%1 предложения;%1 предложений;%1 предложений'"),
ТаблицаИсточников.Количество());
Поставщик = СтрШаблон(Шаблон, КоличествоВыбранныхПоставщиков, КоличествоВыбранныхПредложений);
КонецЕсли;
Ответ.Вставить("Поставщик" , Поставщик);
Ответ.Вставить("ВыбранКЗаказу", КЗаказу > 0);
Ответ.Вставить("КЗаказу", КЗаказу);
Возврат Ответ;
КонецФункции
&НаСервере
Процедура ОбработатьПроверкуБизнесСеть(АдресТаблицы)
ТаблицаПредложений = ПолучитьИзВременногоХранилища(АдресТаблицы);
Если ТипЗнч(ТаблицаПредложений) <> Тип("Структура") Тогда
Возврат;
КонецЕсли;
НайденныеПредложения = ТаблицаПредложений.НайденныеПредложения;
СписокИсточников = ПолучитьВыбранныеИсточникиДокумента(АнализируемыеИсточникиПредложений, Ложь);
Для Каждого Предложение Из НайденныеПредложения Цикл
Отбор = Новый Структура("ИдентификаторСтрокиЗапроса", Предложение.Ключ);
НайденныеТовары = Объект.Товары.НайтиСтроки(Отбор);
Если НайденныеТовары.Количество() > 0 Тогда
Если НайденныеТовары[0].КоличествоПредложений = Неопределено Тогда
НайденныеТовары[0].КоличествоПредложений = Новый Структура;
КонецЕсли;
НайденныеТовары[0].КоличествоПредложений.Вставить("БизнесСеть", Предложение.Значение);
НайденныеТовары[0].Поступило = СформироватьТекстПоступилоПредложений(НайденныеТовары[0].КоличествоПредложений, СписокИсточников);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ЗагрузитьПоступившиеПредложения(АдресТаблицы)
СтруктураОтвет = ПолучитьИзВременногоХранилища(АдресТаблицы);
ПолученныеПредложения = СтруктураОтвет.ПолученныеПредложения;
КоличествоПредложений = СтруктураОтвет.КоличествоПредложений;
ВыбранныеРанееИсточники = СтруктураОтвет.ВыбранныеРанееИсточники;
ПоступившиеПредложения.Очистить();
ШаблонОхват = НСтр("ru = '%1 (%2%%)'");
Для Каждого СтрокаТаблицы Из ПолученныеПредложения Цикл
НоваяСтрока = ПоступившиеПредложения.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТаблицы, , "Охват");
НоваяСтрока.Источник = СтрокаТаблицы.КоммерческоеПредложениеСсылка;
НоваяСтрока.ВсегоСтрок = СтрокаТаблицы.Охват;
НоваяСтрока.Охват = СтрШаблон(ШаблонОхват, СтрокаТаблицы.Охват, Формат(СтрокаТаблицы.ОхватПроценты, "ЧДЦ=0"));
НоваяСтрока.МожетВыкупатьсяЧастично = СтрокаТаблицы.МожетВыкупатьсяЧастично;
ОписаниеИсточника = ПолучитьОписаниеИсточникаПоИмени(АнализируемыеИсточникиПредложений, НоваяСтрока.ИмяИсточника, НоваяСтрока.Источник);
НоваяСтрока.ИсточникПредставление = ОписаниеИсточника.ПредставлениеИсточника;
Если СтрокаТаблицы.МожетВыкупатьсяЧастично Тогда
Если Не ОписаниеИсточника = Неопределено Тогда
НоваяСтрока.КартинкаИсточника = ОписаниеИсточника.КартинкаИсточника;
КонецЕсли;
Иначе
НоваяСтрока.КартинкаИсточника = БиблиотекаКартинок.СтатусТребуетсяВыкупКоммерческиеПредложения;
КонецЕсли;
КонецЦикла;
СписокИсточников = ПолучитьВыбранныеИсточникиДокумента(АнализируемыеИсточникиПредложений, Ложь);
ТаблицаТовары = Объект.Товары.Выгрузить();
ТаблицаТовары.Индексы.Добавить("ИдентификаторСтрокиЗапроса");
Идентификаторы = КоличествоПредложений.Скопировать(,"ИдентификаторСтрокиЗапроса");
Идентификаторы.Свернуть("ИдентификаторСтрокиЗапроса");
Для Каждого СтрокаТаблицы Из Идентификаторы Цикл
Отбор = Новый Структура("ИдентификаторСтрокиЗапроса", СтрокаТаблицы.ИдентификаторСтрокиЗапроса);
НайденныеСтроки = ТаблицаТовары.НайтиСтроки(Отбор);
НайденныеПредложения = КоличествоПредложений.НайтиСтроки(Отбор);
Если НайденныеСтроки.Количество() > 0 Тогда
Если НайденныеСтроки[0].КоличествоПредложений = Неопределено Тогда
НайденныеСтроки[0].КоличествоПредложений = Новый Структура;
КонецЕсли;
Для Каждого Предложение Из НайденныеПредложения Цикл
НайденныеСтроки[0].КоличествоПредложений.Вставить(Предложение.ИмяИсточника, Предложение.Количество);
КонецЦикла;
НайденныеСтроки[0].Поступило = СформироватьТекстПоступилоПредложений(НайденныеСтроки[0].КоличествоПредложений, СписокИсточников);
КонецЕсли;
КонецЦикла;
Объект.Товары.Загрузить(ТаблицаТовары);
ТаблицаВыбранныеИсточники = Объект.ВыбранныеИсточники.Выгрузить();
ТаблицаВыбранныеИсточники.Индексы.Добавить("ИдентификаторСтрокиЗапроса");
ТаблицаВыбранныеИсточники.Индексы.Добавить("ИдентификаторСтрокиИсточника");
ТаблицаВыбранныеИсточники.ЗаполнитьЗначения(Ложь, "Доступен");
Для Каждого СтрокаТаблицы Из ВыбранныеРанееИсточники Цикл
Отбор = Новый Структура();
Отбор.Вставить("ИдентификаторСтрокиЗапроса", СтрокаТаблицы.ИдентификаторСтрокиЗапроса);
Отбор.Вставить("ИдентификаторСтрокиИсточника", СтрокаТаблицы.ИдентификаторСтрокиИсточника);
НайденныеВыбранныеИсточники = ТаблицаВыбранныеИсточники.НайтиСтроки(Отбор);
Если НайденныеВыбранныеИсточники.Количество() > 0 Тогда
НайденныеВыбранныеИсточники[0].Доступен = СтрокаТаблицы.Доступен;
КонецЕсли;
КонецЦикла;
Объект.ВыбранныеИсточники.Загрузить(ТаблицаВыбранныеИсточники);
ПерезаполнитьТаблицыПослеВыбора();
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция СформироватьТекстПоступилоПредложений(Знач КоличествоПредложений, Знач МассивИменИсточников)
Если КоличествоПредложений = Неопределено Тогда
Возврат "";
КонецЕсли;
Шаблон = НСтр("ru = '%1, в 1С:Торговые предложения найдено %2'");
ШаблонПредложения = НСтр("ru = '%1'");
ИспользоватьШаблон = Ложь;
Количество = 0;
КоличествоТорговыхПредложений = 0;
Для Каждого Предложение Из КоличествоПредложений Цикл
Если МассивИменИсточников.Найти(Предложение.Ключ) <> Неопределено Тогда
Если ВРег(Предложение.Ключ) = ВРег("БизнесСеть") Тогда
ИспользоватьШаблон = Истина;
КоличествоТорговыхПредложений = КоличествоТорговыхПредложений + Предложение.Значение;
Продолжить;
КонецЕсли;
Количество = Количество + Предложение.Значение;
КонецЕсли;
КонецЦикла;
Если Количество = 0
И КоличествоТорговыхПредложений = 0 Тогда
Возврат "";
КонецЕсли;
Предложений = СтроковыеФункцииКлиентСервер.СтрокаСЧисломДляЛюбогоЯзыка(
НСтр("ru = ';%1 ком. предложение;;%1 ком. предложения;%1 ком. предложений;%1 ком. предложений'"),
Количество);
Если ИспользоватьШаблон Тогда
Ответ = СтрШаблон(Шаблон, Предложений, КоличествоТорговыхПредложений);
Иначе
Ответ = СтрШаблон(ШаблонПредложения, Предложений);
КонецЕсли;
Возврат Ответ;
КонецФункции
&НаСервере
Процедура ПолучитьДоступныеИсточники()
Источники = Неопределено;
КоммерческиеПредложенияДокументы.АнализируемыеИсточникиПредложений(Источники);
Для Каждого Источник Из Объект.НастройкиАнализа Цикл
Значение = Источники.Найти(Источник.ИмяИсточника);
Если Значение = Неопределено Тогда
Продолжить;
КонецЕсли;
Значение.Использовать = Источник.Использовать;
КонецЦикла;
АнализируемыеИсточникиПредложений.Загрузить(Источники);
КоммерческиеПредложенияДокументы.ЗаполнитьГруппуАнализируемыеИсточники(ЭтотОбъект, Истина);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ВыполнитьОперациюВФоне(Знач ПараметрыПроцедуры, Знач АнализируемыеИсточникиПредложений)
ПараметрыПроцедуры.Вставить("АнализируемыеИсточники" , ПолучитьВыбранныеИсточникиДокумента(АнализируемыеИсточникиПредложений, Истина));
ПараметрыПроцедуры.Вставить("ВыбранныеИсточники" , ПараметрыПроцедуры.ВыбранныеИсточники.Выгрузить());
НаименованиеФоновогоЗадания = СтрШаблон(НСтр("ru = 'Загрузка поступивших коммерческих предложений по документу %1'"), ПараметрыПроцедуры.ДокументИсточник);
ИмяПроцедуры = "Документы.ЗапросКоммерческихПредложенийПоставщиков.ПолучитьПредложенияПоТоварам";
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(ПараметрыПроцедуры.УникальныйИдентификатор);
ПараметрыВыполнения.НаименованиеФоновогоЗадания = НаименованиеФоновогоЗадания;
ПараметрыВыполнения.ЗапуститьВФоне = Истина;
ПараметрыВыполнения.ОжидатьЗавершение = 0;
Возврат ДлительныеОперации.ВыполнитьВФоне(ИмяПроцедуры, ПараметрыПроцедуры, ПараметрыВыполнения);
КонецФункции
&НаСервереБезКонтекста
Функция ВыполнитьОперациюЗаполненияВФоне(Знач ПараметрыПроцедуры, Знач АнализируемыеИсточникиПредложений)
ПараметрыПроцедуры.Вставить("ВыбранныеИсточники" , ПараметрыПроцедуры.ВыбранныеИсточники.Выгрузить());
ПараметрыПроцедуры.Вставить("АнализируемыеИсточники" , ПолучитьВыбранныеИсточникиДокумента(АнализируемыеИсточникиПредложений));
НаименованиеФоновогоЗадания = СтрШаблон(НСтр("ru = 'Заполнение товаров по предложению %1'"), ПараметрыПроцедуры.ДокументИсточник);
ИмяПроцедуры = "Документы.ЗапросКоммерческихПредложенийПоставщиков.ВыбратьПредложения";
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(ПараметрыПроцедуры.УникальныйИдентификатор);
ПараметрыВыполнения.НаименованиеФоновогоЗадания = НаименованиеФоновогоЗадания;
ПараметрыВыполнения.ЗапуститьВФоне = Истина;
ПараметрыВыполнения.ОжидатьЗавершение = 0;
Возврат ДлительныеОперации.ВыполнитьВФоне(ИмяПроцедуры, ПараметрыПроцедуры, ПараметрыВыполнения);
КонецФункции
&НаСервереБезКонтекста
Функция ВернутьНовоеСостояние(Знач ТекущееСостояние, Знач Направление, Знач ЗапрашиватьПредложенияПоставщиков)
ТекущийИндекс = Перечисления.СостоянияЗапросаКоммерческихПредложений.Индекс(ТекущееСостояние);
Если Направление = "Далее" Тогда
ТекущийИндекс = ТекущийИндекс + 1;
ИначеЕсли Направление = "Назад" Тогда
ТекущийИндекс = ТекущийИндекс - 1;
Иначе
ТекущийИндекс = 0;
КонецЕсли;
ТекущееСостояние = Перечисления.СостоянияЗапросаКоммерческихПредложений[ТекущийИндекс];
Если ЗапрашиватьПредложенияПоставщиков <> 2 И ТекущееСостояние
= Перечисления.СостоянияЗапросаКоммерческихПредложений.ЗагрузкаИтоговыхДанныхБидзаар Тогда
ВернутьНовоеСостояние(ТекущееСостояние, Направление, ЗапрашиватьПредложенияПоставщиков);
КонецЕсли;
Возврат ТекущееСостояние;
КонецФункции
&НаСервереБезКонтекста
Функция ПолучитьКоличествоПоставщиков(Знач ПоступившиеПредложения)
Таблица = ПоступившиеПредложения.Выгрузить(,"ПоставщикПредставление");
Таблица.Свернуть("ПоставщикПредставление");
Возврат Таблица.Количество();
КонецФункции
&НаСервереБезКонтекста
Функция ВыбранныеИсточникиПоИдентификатору(Знач ИдентификаторСтрокиЗапроса, Знач ВыбранныеИсточники, Знач ИдентификаторФормы)
ТаблицаИсточники = ВыбранныеИсточники.Выгрузить();
ТаблицаИсточники.Индексы.Добавить("ИдентификаторСтрокиЗапроса");
Отбор = Новый Структура("ИдентификаторСтрокиЗапроса", ИдентификаторСтрокиЗапроса);
ТаблицаСтрок = ТаблицаИсточники.Скопировать(Отбор);
Возврат ПоместитьВоВременноеХранилище(ТаблицаСтрок, ИдентификаторФормы);
КонецФункции
&НаСервереБезКонтекста
Функция ПолучитьАнализируемыеИсточники(Знач АнализируемыеИсточникиПредложений, Знач ИдентификаторФормы)
Возврат ПоместитьВоВременноеХранилище(АнализируемыеИсточникиПредложений.Выгрузить(), ИдентификаторФормы);
КонецФункции
&НаСервереБезКонтекста
Функция ПолучитьВыбранныеИсточникиДокумента(Знач АнализируемыеИсточникиПредложений, Знач ВсеИсточники = Ложь)
Возврат КоммерческиеПредложенияДокументы.ПолучитьВыбранныеИсточникиДокумента(АнализируемыеИсточникиПредложений, ВсеИсточники)
КонецФункции
&НаСервере
Процедура ПолучитьСостояниеДокумента(Состояние = Неопределено)
Документ = Объект.Ссылка;
СостояниеДокумента = РегистрыСведений.СостоянияЗапросовКоммерческихПредложений.ТекущееСостояние(Документ);
ТекущееСостояние = СостояниеДокумента.ТекущееСостояние;
НовоеСостояние = СостояниеДокумента.НовоеСостояние;
ВыполняемоеДействие = СостояниеДокумента.Действие;
Если Объект.ЗапрашиватьПредложенияПоставщиков = 2 Тогда
Элементы.СтатусВСервисе.Заголовок = СостояниеДокумента.СостояниеВСервисе;
Если ПустаяСтрока(Элементы.СтатусВСервисе.Заголовок) Тогда
Элементы.СтатусВСервисе.Заголовок = ИнтеграцияСЭлектроннымиТорговымиПлощадкамиКлиентСервер.СостояниеНеопределено();
КонецЕсли;
КонецЕсли;
Если Состояние = Неопределено Тогда
Состояние = КоммерческиеПредложения.СостояниеЗапросаКоммерческихПредложенийПоставщиков(Документ);
КонецЕсли;
ВыполняетсяКоманда = Ложь;
Если ТекущееСостояние = НовоеСостояние Тогда
СтатусОтправления = Перечисления.СостоянияСинхронизацииЗапросовКоммерческихПредложений.ПустаяСсылка();
ВыполняемоеДействие = "";
КонецЕсли;
СтатусОтправления = Состояние.СостояниеСинхронизации;
Для Каждого СтрокаКонтрагент Из Объект.СписокПолучателейЗапроса Цикл
Значение = Состояние.Детализация.Получить(СтрокаКонтрагент.Контрагент);
Если ЗначениеЗаполнено(Значение) Тогда
СтрокаКонтрагент.СтатусЭДО = Значение.СостояниеСинхронизации;
КонецЕсли;
КонецЦикла;
Если ТекущееСостояние = Перечисления.СостоянияЗапросаКоммерческихПредложений.Завершено Тогда
ТолькоПросмотр = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СтраницыДокументаПриСменеСтраницы(Элемент, ТекущаяСтраница)
Если Элементы.Товары.ТекущаяСтрока = Неопределено Тогда
Если Объект.Товары.Количество() > 0 Тогда
Элементы.Товары.ТекущаяСтрока = Объект.Товары[0].ПолучитьИдентификатор();
КонецЕсли;
КонецЕсли;
Если ЭтотОбъект.ПараметрыСвойств.Свойство(ТекущаяСтраница.Имя)
И Не ЭтотОбъект.ПараметрыСвойств.ВыполненаОтложеннаяИнициализация Тогда
СвойстваВыполнитьОтложеннуюИнициализацию();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьПредложения(Элемент, Предложение = Неопределено, ЗаполняемыеПозиции = Неопределено, ВыбратьПоЦене = Истина)
Если Предложение = Неопределено И ЗаполняемыеПозиции = Неопределено Тогда
Возврат;
КонецЕсли;
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ПараметрыОжидания.ВыводитьОкноОжидания = Ложь;
ПараметрыОжидания.ОповещениеПользователя.Показать = Ложь;
ПараметрыОжидания.ВыводитьСообщения = Истина;
ПараметрыОжидания.Интервал = 1;
ПараметрыОперации = Новый Структура;
ПараметрыОперации.Вставить("ДокументИсточник" , Объект.Ссылка);
ПараметрыОперации.Вставить("УникальныйИдентификатор" , УникальныйИдентификатор);
ПараметрыОперации.Вставить("Валюта" , Объект.Валюта);
ПараметрыОперации.Вставить("ЦенаВключаетНДС" , Объект.ЦенаВключаетНДС);
ПараметрыОперации.Вставить("Предложение" , Предложение);
ПараметрыОперации.Вставить("ВыбранныеИсточники" , Объект.ВыбранныеИсточники);
ПараметрыОперации.Вставить("ДатаОкончанияРассмотрения" , Объект.ДатаОкончанияРассмотрения);
ПараметрыОперации.Вставить("ВыбратьПоЦене" , ВыбратьПоЦене);
ПараметрыОперации.Вставить("ЗаполняемыеПозиции" , ЗаполняемыеПозиции);
ДлительнаяОперация = ВыполнитьОперациюЗаполненияВФоне(ПараметрыОперации, АнализируемыеИсточникиПредложений);
Если Не ДлительнаяОперация = Неопределено
И ДлительнаяОперация.Статус = "Выполняется" Тогда
Элемент.Картинка = БиблиотекаКартинок.СинхронизацияДанныхДлительнаяОперация;
КонецЕсли;
ВыполнениеОперацииЗавершение = Новый ОписаниеОповещения(
"ВыполнитьЗаполненияВФонеЗавершение", ЭтотОбъект);
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация,
ВыполнениеОперацииЗавершение,
ПараметрыОжидания);
КонецПроцедуры
&НаКлиенте
Процедура ПерейтиКОформлениюЗаказов(АдресКэшаВыбранныхИсточников)
ОчиститьСообщения();
Если Не ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЭлектронноеВзаимодействие.ТорговыеПредложения") Тогда
Возврат;
КонецЕсли;
ПараметрыОткрытия = ПолучитьТоварыДляЗаказа(АдресКэшаВыбранныхИсточников);
Если Не ЗначениеЗаполнено(ПараметрыОткрытия) Тогда
Возврат;
ИначеЕсли ПараметрыОткрытия.ТаблицаТоваров.Количество() = 0 Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Нет товаров для оформления'"));
Возврат;
ИначеЕсли ПараметрыОткрытия.ТаблицаТоваров.Количество() <> Объект.ВыбранныеИсточники.Количество() Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Не все выбранные предложения удалось добавить к оформлению'"));
КонецЕсли;
ОбщийМодуль = ОбщегоНазначенияКлиент.ОбщийМодуль("ТорговыеПредложенияКлиент");
ОбщийМодуль.ОткрытьФормуФормированияЗаказов(ПараметрыОткрытия);
КонецПроцедуры
&НаСервере
Функция ПолучитьТоварыДляЗаказа(АдресКэшаВыбранныхИсточников)
Если Не ОбщегоНазначения.ПодсистемаСуществует("ЭлектронноеВзаимодействие.ТорговыеПредложения") Тогда
Возврат Неопределено;
КонецЕсли;
ОбщийМодуль = ОбщегоНазначения.ОбщийМодуль("ТорговыеПредложенияСлужебный");
ПараметрыОткрытия = ОбщийМодуль.НовыеПараметрыФормированияЗаказов();
ПараметрыОткрытия.Вставить("РежимЗапросаЦен", Ложь);
ПараметрыОткрытия.Вставить("Организация", Объект.Организация);
ПараметрыОткрытия.Вставить("Валюта", Объект.Валюта);
ПараметрыОткрытия.Вставить("ЗапросКоммерческихПредложений", Объект.Ссылка);
НомерСтроки = 0;
ВыбранныеИсточники = ПолучитьИзВременногоХранилища(АдресКэшаВыбранныхИсточников);
Объект.ВыбранныеИсточники.Загрузить(ВыбранныеИсточники);
Для Каждого Источник Из Объект.ВыбранныеИсточники Цикл
Найдено = Объект.Товары.НайтиСтроки(Новый Структура("ИдентификаторСтрокиЗапроса", Источник.ИдентификаторСтрокиЗапроса));
Если Найдено.Количество() = 0 Тогда
Продолжить;
КонецЕсли;
НомерСтроки = НомерСтроки + 1;
Если Не Источник.Доступен Тогда
Продолжить;
КонецЕсли;
ПокупательНаименованиеНоменклатуры = ?(ЗначениеЗаполнено(Найдено[0].Номенклатура) , Найдено[0].Номенклатура , Найдено[0].НаименованиеСтрокой);
ПокупательНаименованиеХарактеристики = ?(ЗначениеЗаполнено(Найдено[0].Характеристика), Найдено[0].Характеристика, Неопределено );
ИдентификаторКатегории = СокрЛП(Найдено[0].КатегорияВСервисеИдентификатор);
Если Не ПустаяСтрока(ИдентификаторКатегории)
И СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке(ИдентификаторКатегории) Тогда
ИдентификаторКатегории = Формат(Число(ИдентификаторКатегории), "ЧГ=");
КонецЕсли;
НоваяСтрока = Новый Структура();
НоваяСтрока.Вставить("Источник" , Источник.Источник );
НоваяСтрока.Вставить("НаименованиеНоменклатуры" , Источник.НаименованиеПоставщика );
НоваяСтрока.Вставить("ПокупательНаименованиеНоменклатуры" , ПокупательНаименованиеНоменклатуры );
НоваяСтрока.Вставить("ПокупательНаименованиеХарактеристики" , ПокупательНаименованиеХарактеристики );
НоваяСтрока.Вставить("ПокупательЕдиницаИзмерения" , Найдено[0].ЕдиницаИзмерения );
НоваяСтрока.Вставить("ЕдиницаИзмерения" , Источник.ЕдиницаИзмеренияПоставщика );
НоваяСтрока.Вставить("КодЕдиницыИзмерения" , ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Источник.ЕдиницаИзмеренияПоставщика, "Код"));
НоваяСтрока.Вставить("СтавкаНДС" , Источник.СтавкаНДСПоставщика );
НоваяСтрока.Вставить("Цена" , Источник.ЦенаВВалютеЗапроса );
НоваяСтрока.Вставить("ПроцентСкидки" , Источник.ПроцентСкидки );
НоваяСтрока.Вставить("НаименованиеКонтрагента" , Источник.ПоставщикПредставление );
НоваяСтрока.Вставить("ПредложениеИдентификатор" , Источник.ИдентификаторСтрокиИсточника);
НоваяСтрока.Вставить("СрокПоставки" , Источник.СрокПоставки );
НоваяСтрока.Вставить("Количество" , Источник.Количество );
НоваяСтрока.Вставить("ЦенаВключаетНДС" , Источник.ЦенаВключаетНДС );
НоваяСтрока.Вставить("НомерСтроки" , НомерСтроки );
НоваяСтрока.Вставить("Идентификатор" , Источник.ИдентификаторСтрокиЗапроса );
НоваяСтрока.Вставить("ИННКонтрагента" , Источник.ИННКонтрагента );
НоваяСтрока.Вставить("КППКонтрагента" , Источник.КППКонтрагента );
НоваяСтрока.Вставить("Контрагент" , Источник.ПоставщикСсылка );
НоваяСтрока.Вставить("ПоставщикИдентификатор" , Источник.ПоставщикИдентификатор );
НоваяСтрока.Вставить("Пометка" , Истина);
НоваяСтрока.Вставить("ПредставлениеЕдиницыИзмерения" , Строка(Источник.ЕдиницаИзмеренияПоставщика) );
НоваяСтрока.Вставить("ИдентификаторКатегории" , ИдентификаторКатегории);
НоваяСтрока.Вставить("ИдентификаторНоменклатуры" , Источник.ИдентификаторНоменклатурыПоставщика );
НоваяСтрока.Вставить("Номенклатура" , ?(ЗначениеЗаполнено(Найдено[0].Номенклатура),
Найдено[0].Номенклатура , Неопределено));
НоваяСтрока.Вставить("Характеристика" , ?(ЗначениеЗаполнено(Найдено[0].Характеристика),
Найдено[0].Характеристика, Неопределено));
НоваяСтрока.Вставить("ИдентификаторКонтрагента" , ?(ЗначениеЗаполнено(Источник.ПоставщикИдентификатор),
Источник.ПоставщикИдентификатор, XMLСтрока(Источник.ПоставщикСсылка)));
ПараметрыОткрытия.ТаблицаТоваров.Добавить(НоваяСтрока);
КонецЦикла;
Возврат ПараметрыОткрытия;
КонецФункции
&НаКлиенте
Процедура РедактированиеНоменклатурыТекстомЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
ДанныеСтроки = Элементы.Товары.ДанныеСтроки(ДополнительныеПараметры);
Если Не ДанныеСтроки = Неопределено Тогда
ДанныеСтроки.НоменклатураТекстом = Результат;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОтменитьВыборПредложенияЗавершение(МассивПараметров)
ОтменитьВыборПредложенияНаСервере(МассивПараметров);
ОтобразитьГруппуОшибки();
КонецПроцедуры
&НаСервере
Процедура ОтменитьВыборПредложенияНаСервере(МассивПараметров)
Для Каждого СтрокаМассива Из МассивПараметров Цикл
Если ЗначениеЗаполнено(СтрокаМассива.Источник) Тогда
Отбор = Новый Структура("ИмяИсточника, Источник", СтрокаМассива.ИмяИсточника, СтрокаМассива.Источник);
Иначе
Отбор = Новый Структура("ИмяИсточника, ИдентификаторСтрокиИсточника", СтрокаМассива.ИмяИсточника, СтрокаМассива.ИдентификаторСтрокиИсточника);
КонецЕсли;
НайденныеСтроки = Объект.ВыбранныеИсточники.НайтиСтроки(Отбор);
Для Каждого Строка Из НайденныеСтроки Цикл
Объект.ВыбранныеИсточники.Удалить(Строка);
КонецЦикла;
КонецЦикла;
ПерезаполнитьТаблицыПослеВыбора();
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияФайлыОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если Модифицированность
Или Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
Описание = Новый ОписаниеОповещения("ВопросСохранитьДокументЗавершение", ЭтотОбъект);
ПоказатьВопросСохраненияДокумента(Описание);
Возврат;
КонецЕсли;
ОткрытьПрисоединенныеФайлы();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьОформленоЗаказов()
КоличествоСозданныхЗаказов = 0;
ДекорацияЗаказы = НСтр("ru = 'Нет оформленных заказов'");
Шаблон = НСтр("ru = 'Оформлено %1'");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЗаказыПоставщикамПоЗапросамКоммерческихПредложений.ЗаказПоставщику) КАК КоличествоЗаказов,
| СУММА(ЕстьNull(ЗаказыПоставщикамПоЗапросамКоммерческихПредложений.КоличествоПозиций, 0)) КАК КоличествоПозиций
|ИЗ
| РегистрСведений.ЗаказыПоставщикамПоЗапросамКоммерческихПредложений КАК
| ЗаказыПоставщикамПоЗапросамКоммерческихПредложений
|ГДЕ
| ЗаказыПоставщикамПоЗапросамКоммерческихПредложений.ЗапросКоммерческихПредложений = &ЗапросКоммерческихПредложений
| И ЗаказыПоставщикамПоЗапросамКоммерческихПредложений.ЗаказПоставщику.Проведен";
Запрос.УстановитьПараметр("ЗапросКоммерческихПредложений", Объект.Ссылка);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Если ВыборкаДетальныеЗаписи.Следующий()
И ВыборкаДетальныеЗаписи.КоличествоЗаказов > 0 Тогда
КоличествоСозданныхЗаказов = ВыборкаДетальныеЗаписи.КоличествоЗаказов;
ПредставлениеКоличестваЗаказов = СтроковыеФункцииКлиентСервер.СтрокаСЧисломДляЛюбогоЯзыка(
НСтр("ru = ';%1 заказ;;%1 заказа;%1 заказов;%1 заказа'"),
ВыборкаДетальныеЗаписи.КоличествоЗаказов);
ДекорацияЗаказы = СтрШаблон(Шаблон, ПредставлениеКоличестваЗаказов);
КонецЕсли;
Элементы.ДекорацияЗаказы.Заголовок = ДекорацияЗаказы;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ЕстьОформленныеКоммерческиеПредложения(ЗапросКоммерческихПредложений)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КоммерческоеПредложениеПоставщика.Ссылка КАК КоммерческоеПредложениеПоставщика
|ИЗ
| Документ.КоммерческоеПредложениеПоставщика КАК КоммерческоеПредложениеПоставщика
|ГДЕ
| КоммерческоеПредложениеПоставщика.ДокументОснование = &ЗапросКоммерческихПредложений
| И КоммерческоеПредложениеПоставщика.Проведен";
Запрос.УстановитьПараметр("ЗапросКоммерческихПредложений", ЗапросКоммерческихПредложений);
РезультатЗапроса = Запрос.Выполнить();
Возврат Не РезультатЗапроса.Пустой();
КонецФункции
&НаСервереБезКонтекста
Функция ПолучитьЗаказыЗапросаКоммерческихПредложений(ДокументСсылка)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗаказыПоставщикамПоЗапросамКоммерческихПредложений.ЗаказПоставщику КАК ЗаказПоставщику
|ИЗ
| РегистрСведений.ЗаказыПоставщикамПоЗапросамКоммерческихПредложений КАК ЗаказыПоставщикамПоЗапросамКоммерческихПредложений
|ГДЕ
| ЗаказыПоставщикамПоЗапросамКоммерческихПредложений.ЗапросКоммерческихПредложений = &ЗапросКоммерческихПредложений
| И ЗаказыПоставщикамПоЗапросамКоммерческихПредложений.ЗаказПоставщику.Проведен";
Запрос.УстановитьПараметр("ЗапросКоммерческихПредложений", ДокументСсылка);
РезультатЗапроса = Запрос.Выполнить();
Возврат РезультатЗапроса.Выгрузить().ВыгрузитьКолонку("ЗаказПоставщику");
КонецФункции
&НаСервере
Процедура ПриСозданииЧтенииНаСервере()
НастройкиУчета = КоммерческиеПредложенияДокументы.НастройкиУчета();
ИспользоватьСервисРаботаСНоменклатурой = ИспользоватьСервисРаботаСНоменклатурой();
НастроитьЭлементыФормы();
КонецПроцедуры
&НаСервере
Процедура НастроитьЭлементыФормы()
Элементы.Организация.Видимость = Не НастройкиУчета.ИспользуетсяЕдинственнаяОрганизация;
Элементы.Валюта.Видимость = Не НастройкиУчета.ИспользуетсяЕдинственнаяВалюта;
Элементы.ТоварыХарактеристика.Видимость = НастройкиУчета.ИспользуютсяХарактеристикиНоменклатуры;
Если Объект.ЗапрашиватьПредложенияПоставщиков = КоммерческиеПредложенияДокументыКлиентСервер.СпособРазмещенияБидзаар() Тогда
Элементы.ДекорацияЗаказы.Видимость = НастройкиУчета.ИспользоватьЗаказыПоставщикам;
КонецЕсли;
КоммерческиеПредложенияДокументы.ЗагрузитьСохраненныеНастройкиПанелиИзображенийФормы(ЭтотОбъект);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьКатегорию1СНПоНоменклатуре(Номенклатура)
Возврат КоммерческиеПредложенияДокументы.ПолучитьКатегорию1СНПоНоменклатуре(Номенклатура);
КонецФункции
&НаСервереБезКонтекста
Процедура ПрикрепитьЗаказКЗапросу(Запрос, Заказ)
МенеджерЗаписи = РегистрыСведений.ЗаказыПоставщикамПоЗапросамКоммерческихПредложений.СоздатьМенеджерЗаписи();
МенеджерЗаписи.ЗаказПоставщику = Заказ;
МенеджерЗаписи.ЗапросКоммерческихПредложений = Запрос;
УстановитьПривилегированныйРежим(Истина);
МенеджерЗаписи.Записать();
УстановитьПривилегированныйРежим(Ложь);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ОткрепитьЗаказОтЗапроса(ЗапросСсылка, Заказы)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗаказыПоставщикамПоЗапросамКоммерческихПредложений.ЗаказПоставщику КАК ЗаказПоставщику
|ИЗ
| РегистрСведений.ЗаказыПоставщикамПоЗапросамКоммерческихПредложений КАК ЗаказыПоставщикамПоЗапросамКоммерческихПредложений
|ГДЕ
| ЗаказыПоставщикамПоЗапросамКоммерческихПредложений.ЗаказПоставщику В(&СписокЗаказов)";
Запрос.УстановитьПараметр("СписокЗаказов", Заказы);
УстановитьПривилегированныйРежим(Истина);
ТаблицаЗаказов = Запрос.Выполнить().Выгрузить();
НачатьТранзакцию();
Попытка
БлокировкаДанных = Новый БлокировкаДанных;
ЭлементБлокировки = БлокировкаДанных.Добавить("РегистрСведений.ЗаказыПоставщикамПоЗапросамКоммерческихПредложений");
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
ЭлементБлокировки.ИсточникДанных = ТаблицаЗаказов;
ЭлементБлокировки.ИспользоватьИзИсточникаДанных("ЗаказПоставщику", "ЗаказПоставщику");
БлокировкаДанных.Заблокировать();
МенеджерЗначений = РегистрыСведений.ЗаказыПоставщикамПоЗапросамКоммерческихПредложений.СоздатьМенеджерЗаписи();
Для Каждого СтрокаКоллекции Из ТаблицаЗаказов Цикл
МенеджерЗначений.ЗаказПоставщику = СтрокаКоллекции.ЗаказПоставщику;
МенеджерЗначений.Удалить();
КонецЦикла;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
Информация = ИнформацияОбОшибке();
ТекстОшибки = НСтр("ru = 'Не удалось отменить привязку заказа поставщику от запроса коммерческих предложений.
|Удалите созданные заказы вручную.'");
ЭлектронноеВзаимодействие.ОбработатьОшибку(НСтр("ru = 'Открепить заказы от запроса коммерческих предложений'"), ПодробноеПредставлениеОшибки(Информация),
ТекстОшибки, "БизнесСеть", ЗапросСсылка);
КонецПопытки;
УстановитьПривилегированныйРежим(Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьДанныеВКешеСтрок()
КэшОписанияТоварнойПозиции.Очистить();
Для Каждого СтрокаТовар Из Объект.Товары Цикл
НоваяСтрока = КэшОписанияТоварнойПозиции.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТовар);
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ВернутьДанныеОПредложенияхИзКеша()
СписокИсточников = ПолучитьВыбранныеИсточникиДокумента(АнализируемыеИсточникиПредложений, Ложь);
Для Каждого СтрокаКэша Из КэшОписанияТоварнойПозиции Цикл
Отбор = Новый Структура("ИдентификаторСтрокиЗапроса", СтрокаКэша.ИдентификаторСтрокиЗапроса);
НайденныеСтроки = Объект.Товары.НайтиСтроки(Отбор);
Если НайденныеСтроки.Количество() > 0 Тогда
ЗаполнитьЗначенияСвойств(НайденныеСтроки[0], СтрокаКэша,, "ИдентификаторСтрокиЗапроса");
НайденныеСтроки[0].Поступило = СформироватьТекстПоступилоПредложений(НайденныеСтроки[0].КоличествоПредложений, СписокИсточников);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПараметрыВидаКонтактнойИнформации(ВидКонтактнойИнформации)
Возврат УправлениеКонтактнойИнформацией.ПараметрыВидаКонтактнойИнформации(ВидКонтактнойИнформации);
КонецФункции
&НаСервереБезКонтекста
Функция ИспользоватьСервисРаботаСНоменклатурой()
Возврат ПолучитьФункциональнуюОпцию("ИспользоватьСервисРаботаСНоменклатурой");
КонецФункции
&НаКлиенте
Процедура ВключитьИспользованиеСервисаРаботыСНоменклатурой(ОписаниеПродолжения)
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("Раздел", "НастройкиРаботаСНоменклатурой");
ПараметрыОткрытия.Вставить("Заголовок", НСтр("ru = 'Сервис 1С:Номенклатура'"));
ПараметрыОткрытия.Вставить("ОписаниеРаздела",
НСтр("ru = 'Необходимо включить использование сервиса 1С:Номенклатура.'",
ОбщегоНазначенияКлиент.КодОсновногоЯзыка()));
ОткрытьФорму("Обработка.РаботаСНоменклатурой.Форма.ПанельАдминистрирования", ПараметрыОткрытия, ЭтотОбъект,,,,
ОписаниеПродолжения,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьИзображениеОбработчик()
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ОтсутствуютТекущиеДанныеТЧТовары(ТекущиеДанные) Тогда
Возврат;
КонецЕсли;
ДобавитьИзображениеСПроверкойЗаписи();
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьИзображениеСПроверкойЗаписи()
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ТекстВопроса = НСтр("ru='Для добавления изображения необходимо записать документ. Записать?'",
ОбщегоНазначенияКлиент.КодОсновногоЯзыка());
Оповещение = Новый ОписаниеОповещения("ДобавитьИзображениеОбработчикПослеВопроса", ЭтотОбъект);
ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ДобавитьИзображениеНаКлиентеЗавершение();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьИзображениеОбработчикПослеВопроса(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> КодВозвратаДиалога.Да Тогда
Возврат;
КонецЕсли;
Записать();
ДобавитьИзображениеНаКлиентеЗавершение();
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьИзображениеНаКлиентеЗавершение()
ЗаблокироватьДанныеФормыДляРедактирования();
ПараметрыЗагрузки = ФайловаяСистемаКлиент.ПараметрыЗагрузкиФайла();
ПараметрыЗагрузки.ИдентификаторФормы = УникальныйИдентификатор;
ПараметрыЗагрузки.Диалог.Фильтр = КоммерческиеПредложенияКлиент.ФильтрФайловИзображений();
ПараметрыЗагрузки.Диалог.МножественныйВыбор = Ложь;
ПараметрыЗагрузки.Диалог.Заголовок = НСтр("ru = 'Выберите изображение'",
ОбщегоНазначенияКлиент.КодОсновногоЯзыка());
Оповещение = Новый ОписаниеОповещения("ОбработатьДобавлениеИзображения", ЭтотОбъект, ПараметрыЗагрузки);
ФайловаяСистемаКлиент.ЗагрузитьФайл(Оповещение, ПараметрыЗагрузки);
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьДобавлениеИзображения(ПомещенныйФайл, ДополнительныеПараметры) Экспорт
Если ПомещенныйФайл = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
ЭтоТоварРучногоОписания = ТекущиеДанные.ИсточникДобавленияТовара = ИндексРучногоТовара;
РезультатОбработкиИзображения = ОбработатьДобавлениеИзображенияНаСервере(Объект.Ссылка, ТекущиеДанные.Номенклатура,
ТекущиеДанные.Характеристика, ПомещенныйФайл, ЭтоТоварРучногоОписания);
Если РезультатОбработкиИзображения.Отказ Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(РезультатОбработкиИзображения.Ошибки);
Возврат;
КонецЕсли;
ТекущиеДанные.Изображение = РезультатОбработкиИзображения.Изображение;
ТекущиеДанные.ИзображениеАдресДвоичныхДанных = ПомещенныйФайл.Хранение;
ПриИзмененииИзображения(ТекущиеДанные);
УстановитьТекстНевыбраннойКартинки(ТекущиеДанные);
УстановитьДоступностьКомандИзображения(ТекущиеДанные);
Модифицированность = Истина;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ОбработатьДобавлениеИзображенияНаСервере(
ДокументСсылка, Номенклатура, Характеристика, ПомещенныйФайл, ЭтоТоварРучногоОписания)
ИмяФайлаИРасширение = КоммерческиеПредложенияСлужебный.ИмяФайлаИРасширение(ПомещенныйФайл.Имя);
ДанныеДляДобавленияФайла = КоммерческиеПредложенияСлужебный.НовыеДанныеДляДобавленияИзображенияИзФайловойСистемы(
Номенклатура, Характеристика, ПомещенныйФайл.Хранение, ИмяФайлаИРасширение.ИмяБезРасширения,
ИмяФайлаИРасширение.РасширениеБезТочки);
РезультатОбработкиИзображения = КоммерческиеПредложенияСлужебный.ОбработатьДобавлениеИзображения(
ДокументСсылка, ДанныеДляДобавленияФайла, ЭтоТоварРучногоОписания);
Возврат РезультатОбработкиИзображения;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьАдресКартинки(
АдресКартинки, Изображение, АдресДвоичныхДанных, ПанельОтображается, УникальныйИдентификатор)
АдресКартинки = АдресДвоичныхДанных;
КоммерческиеПредложенияДокументыКлиентСервер.УстановитьАдресКартинки(Изображение, АдресКартинки,
ПанельОтображается, УникальныйИдентификатор);
АдресДвоичныхДанных = АдресКартинки;
КонецПроцедуры
&НаКлиенте
Процедура ПриИзмененииНоменклатуры(ТекущиеДанные)
КоммерческиеПредложенияДокументыКлиентПереопределяемый.ПриИзмененииНоменклатуры(
ЭтотОбъект, ТекущиеДанные, "Номенклатура");
ТекущиеДанные.КлючСинхронизации = Новый УникальныйИдентификатор;
ТекущиеДанные.ОшибкаПолученияКатегории = Ложь;
ТекущиеДанные.НоменклатураВСервисеИдентификатор = Неопределено;
ТекущиеДанные.ХарактеристикаВСервисеИдентификатор = Неопределено;
ТекущиеДанные.Изображение = Неопределено;
ТекущиеДанные.ИзображениеАдресДвоичныхДанных = "";
ТекущиеДанные.ИзображениеВыбрано = Ложь;
АдресКартинки = "";
УстановитьПризнакКэшированияИзображенияСтроки(ТекущиеДанные, ИспользоватьСервисРаботаСНоменклатурой);
Если Не ТекущиеДанные.ХарактеристикиИспользуются Тогда
ИдентификаторыСервиса = ИдентификаторыНоменклатурыСервиса(ТекущиеДанные.Номенклатура);
ТекущиеДанные.НоменклатураВСервисеИдентификатор = ИдентификаторыСервиса.Получить(ТекущиеДанные.Номенклатура);
ЗаполнитьПредставлениеКатегории(ТекущиеДанные);
Если Не ПустаяСтрока(ТекущиеДанные.НоменклатураВСервисеИдентификатор) Тогда
ВнешниеАдресаИзображений = АдресаИзображенийНоменклатурыИзСервиса1СН(
ТекущиеДанные.НоменклатураВСервисеИдентификатор);
Если ВнешниеАдресаИзображений.Количество() > 0 Тогда
ЗаполнитьИзображениеВСтрокеПоВнешнемуАдресу(ТекущиеДанные, ВнешниеАдресаИзображений[0]);
КонецЕсли;
Иначе
ТекущиеДанные.Изображение = КоммерческиеПредложенияСлужебныйВызовСервера.ПодобранноеИзображениеТовараЗКП(
ТекущиеДанные.Номенклатура, ТекущиеДанные.Характеристика);
КонецЕсли;
ПриИзмененииИзображения(ТекущиеДанные);
УстановитьВидимостьПодсказкиИзображения(ТекущиеДанные);
УстановитьТекстНевыбраннойКартинки(ТекущиеДанные);
УстановитьДоступностьКомандИзображения(ТекущиеДанные);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьИзображениеВСтрокеПоВнешнемуАдресу(ТекущиеДанные, ВнешнийАдресИзображения)
ТекущиеДанные.РасширениеИзображения =
ОбщегоНазначенияКлиентСервер.ПолучитьРасширениеИмениФайла(ВнешнийАдресИзображения);
ТекущиеДанные.ТребуетсяСоздатьФайлИзображения = Истина;
ТекущиеДанные.ИзображениеАдресДвоичныхДанных =
АдресДвоичныхДанныхИзображенияПоВнешнейСсылке(ВнешнийАдресИзображения);
КонецПроцедуры
&НаСервереБезКонтекста
Функция АдресаИзображенийНоменклатурыИзСервиса1СН(ИдентификаторВСервисе)
Результат = Новый Массив;
ТаблицаДанныхНоменклатурыИзСервиса = РаботаСНоменклатурой.ДанныеНоменклатурыСервиса(ИдентификаторВСервисе);
Если ТаблицаДанныхНоменклатурыИзСервиса.Количество() = 0 Тогда
Возврат Результат;
КонецЕсли;
ДанныеНоменклатурыИзСервиса = ТаблицаДанныхНоменклатурыИзСервиса[0];
Изображения = ДанныеНоменклатурыИзСервиса.Изображения;
Результат = Изображения.ВыгрузитьКолонку("ИзображениеURL");
Возврат Результат;
КонецФункции
&НаКлиенте
Процедура ПриИзмененииИзображения(ТекущиеДанные)
УстановитьАдресКартинки(АдресКартинки, ТекущиеДанные.Изображение, ТекущиеДанные.ИзображениеАдресДвоичныхДанных,
ПанельОтображается, УникальныйИдентификатор);
УказатьЗаполненностьИзображенияВСтроке(ТекущиеДанные);
Если ТекущиеДанные.КэшироватьВыбранноеИзображение Тогда
Отбор = Новый Структура("Номенклатура, Характеристика");
ЗаполнитьЗначенияСвойств(Отбор, ТекущиеДанные);
НайденныеСтрокиИзмененныхИзображений = ИзмененныеИзображения.НайтиСтроки(Отбор);
Если НайденныеСтрокиИзмененныхИзображений.Количество() > 0 Тогда
СтрокаИзмененныхЗначений = НайденныеСтрокиИзмененныхИзображений[0];
Иначе
СтрокаИзмененныхЗначений = ИзмененныеИзображения.Добавить();
КонецЕсли;
ЗаполнитьЗначенияСвойств(СтрокаИзмененныхЗначений, ТекущиеДанные, "Номенклатура, Характеристика, Изображение");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПросмотретьИзображениеОбработчик()
ОчиститьСообщения();
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ОтсутствуютТекущиеДанныеТЧТовары(ТекущиеДанные) Тогда
Возврат;
КонецЕсли;
Если ЗначениеЗаполнено(ТекущиеДанные.Изображение) Тогда
ДанныеФайла = РаботаСФайламиКлиент.ДанныеФайла(ТекущиеДанные.Изображение, УникальныйИдентификатор);
РаботаСФайламиКлиент.ОткрытьФайл(ДанныеФайла);
ИначеЕсли Не ПустаяСтрока(ТекущиеДанные.ИзображениеАдресДвоичныхДанных) Тогда
ФайловаяСистемаКлиент.ОткрытьФайл(ТекущиеДанные.ИзображениеАдресДвоичныхДанных, ,
ТекущиеДанные.РасширениеИзображения);
Иначе
ТекстСообщения = НСтр("ru='Отсутствует изображение для просмотра'", ОбщегоНазначенияКлиент.КодОсновногоЯзыка());
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения);
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ИзображенияРучныхТоварныхПозиций(Знач ДокументСсылка)
Возврат КоммерческиеПредложенияСлужебный.ИзображенияРучныхТоварныхПозицийЗКППоставщика(ДокументСсылка, Ложь);
КонецФункции
&НаСервере
Процедура СохранитьИзмененныеИзображенияТоварныхПозиций()
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияПроцедуры();
ПараметрыВыполнения.ЗапуститьВФоне = Истина;
ИмяДлительнойПроцедуры = "КоммерческиеПредложенияСлужебный.СохранитьВыбранныеИзображенияТоварныхПозицийЗКП";
Отбор = Новый Структура("Номенклатура, Характеристика, Изображение");
ТаблицаИзмененныхИзображений = ИзмененныеИзображения.Выгрузить().СкопироватьКолонки();
Для Каждого Строка Из ИзмененныеИзображения Цикл
ЗаполнитьЗначенияСвойств(Отбор, Строка);
Если Объект.Товары.НайтиСтроки(Отбор).Количество() = 0 Тогда
Продолжить;
КонецЕсли;
ЗаполнитьЗначенияСвойств(ТаблицаИзмененныхИзображений.Добавить(), Строка);
КонецЦикла;
ДлительныеОперации.ВыполнитьПроцедуру(ПараметрыВыполнения, ИмяДлительнойПроцедуры, ТаблицаИзмененныхИзображений);
ИзмененныеИзображения.Очистить();
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьКартинкуИзПрисоединенныхФайловЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Не ЗначениеЗаполнено(Результат)
Или Результат = КодВозвратаДиалога.Отмена Тогда
Возврат;
КонецЕсли;
Отбор = Новый Структура("ИдентификаторСтрокиЗапроса", ДополнительныеПараметры.ИдентификаторСтрокиЗапроса);
НайденныеСтроки = Объект.Товары.НайтиСтроки(Отбор);
Если НайденныеСтроки.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Строка = НайденныеСтроки[0];
Строка.Изображение = Результат;
Строка.ИзображениеАдресДвоичныхДанных = "";
ПриИзмененииИзображения(Строка);
УстановитьТекстНевыбраннойКартинки(Строка);
УстановитьДоступностьКомандИзображения(Строка);
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьНовыйДокументЗКПП(Параметр)
Если ТипЗнч(Параметр) <> Тип("Структура") Тогда
Возврат;
КонецЕсли;
Идентификатор = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметр, "Идентификатор", "");
Если Идентификатор <> УникальныйИдентификатор Тогда
Возврат;
КонецЕсли;
Если Записать() Тогда
ИмяСобытия = КоммерческиеПредложенияДокументыКлиент.ИмяСобытияНовыйДокументЗКППЗаписан();
Оповестить(ИмяСобытия, Параметр, Объект.Ссылка);
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ОтсутствуютТекущиеДанныеТЧТовары(ТекущиеДанные)
Возврат ТекущиеДанные = Неопределено Или Не ЗначениеЗаполнено(ТекущиеДанные.ИдентификаторСтрокиЗапроса);
КонецФункции
&НаСервереБезКонтекста
Процедура НастройкаПанелиИзображенийНаСервере(
ИмяФормы, ПанельОтображается, АдресКартинки, Изображение, АдресДвоичныхДанных, УникальныйИдентификатор)
КоммерческиеПредложенияДокументы.СохранитьНастройкиПанелиИзображенийФормы(ИмяФормы, ПанельОтображается);
УстановитьАдресКартинки(
АдресКартинки, Изображение, АдресДвоичныхДанных, ПанельОтображается, УникальныйИдентификатор);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ЗаполнениеКИМенеджера(Менеджер, МенеджерEmail, МенеджерНомерТелефона)
Документы.ЗапросКоммерческихПредложенийПоставщиков.ЗаполнитьКИМенеджера(Менеджер, МенеджерEmail, МенеджерНомерТелефона);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ПредставленияКИМенеджера(Менеджер, МенеджерEmail, МенеджерНомерТелефона)
ЧастиКИ = Новый Массив;
Если ЗначениеЗаполнено(МенеджерEmail) Тогда
ЧастиКИ.Добавить(НСтр("ru ='email'") + ": " + МенеджерEmail);
КонецЕсли;
Если ЗначениеЗаполнено(МенеджерНомерТелефона) Тогда
ЧастиКИ.Добавить(НСтр("ru ='телефон'") + ": " + МенеджерНомерТелефона);
КонецЕсли;
Если ЗначениеЗаполнено(Менеджер) И ЧастиКИ.Количество() = 0 Тогда
ЧастиКИ.Добавить(НСтр("ru ='укажите контактную информацию'"));
КонецЕсли;
Возврат СтрСоединить(ЧастиКИ, "; ");
КонецФункции
&НаКлиенте
Функция СсылкаНаСтраницуЗапроса()
Возврат СтрШаблон("/process/light/%1",
Объект.ИдентификаторВСервисе);
КонецФункции
&НаСервере
Процедура ЗаписатьДанныеПредложенийБидзаар(АдресРезультата)
ТаблицаПредложений = ПолучитьИзВременногоХранилища(АдресРезультата);
Если ТаблицаПредложений.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Объект.ВыбранныеИсточники.Очистить();
Для Каждого СтрокаТовар Из ТаблицаПредложений Цикл
Отбор = Новый Структура("ИдентификаторСтрокиЗапроса", СтрокаТовар.ИдентификаторСтрокиЗапроса);
НайденныеСтроки = Объект.Товары.НайтиСтроки(Отбор);
Если НайденныеСтроки.Количество() = 0 Тогда
Продолжить;
КонецЕсли;
НоваяСтрока = Объект.ВыбранныеИсточники.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТовар);
Если НоваяСтрока.Количество > НайденныеСтроки[0].Количество Тогда
НоваяСтрока.Количество = НайденныеСтроки[0].Количество;
КонецЕсли;
КонецЦикла;
Записать();
КонецПроцедуры
&НаКлиенте
Процедура СборПредложенийОбработкаНавигационнойСсылкиПродолжить(НавигационнаяСсылкаФорматированнойСтроки)
Если ПустаяСтрока(НавигационнаяСсылкаФорматированнойСтроки) Тогда
Возврат;
КонецЕсли;
Если НачалоДня(Объект.ДатаНачалаПубликации) <> НачалоДня(ОбщегоНазначенияКлиент.ДатаСеанса()) Тогда
Объект.ДатаНачалаПубликации = ОбщегоНазначенияКлиент.ДатаСеанса();
Модифицированность = Истина;
КонецЕсли;
Если Модифицированность Или Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
Описание = Новый ОписаниеОповещения("ОпубликоватьЗапросЗавершение", ЭтотОбъект,
НавигационнаяСсылкаФорматированнойСтроки);
ПоказатьВопросСохраненияДокумента(Описание, Истина);
Возврат;
Иначе
Если Не Записать(Новый Структура("РежимЗаписи", РежимЗаписиДокумента.Проведение)) Тогда
Возврат;
КонецЕсли;
КонецЕсли;
ОбработатьИзмененияШапки(НавигационнаяСсылкаФорматированнойСтроки);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьСвязьСЭТПБидзаар()
Если Объект.ЗапрашиватьПредложенияПоставщиков = 2 И Не Объект.Организация.Пустая() Тогда
ПараметрыОперации = Новый Структура;
ПараметрыОперации.Вставить("Источник", Объект.Ссылка);
ПараметрыОперации.Вставить("Организация", Объект.Организация);
ПараметрыОперации.Вставить("ВидЭТП", ПредопределенноеЗначение(
"Перечисление.ВидыЭлектронныхТорговыхПлощадок.БидзаарПокупатели"));
ИнтеграцияСЭлектроннымиТорговымиПлощадкамиКлиент.ПроверитьСвязьСЭТПБидзаар(ПараметрыОперации);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОформитьЗаказыБидзаар(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПриЗавершенииСохранения = Новый ОписаниеОповещения("ОформитьЗаказыПослеСохраненияДокументаБидзаар", ЭтотОбъект,
НавигационнаяСсылкаФорматированнойСтроки);
Если Модифицированность Или Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПоказатьВопросСохраненияДокумента(ПриЗавершенииСохранения, Истина);
Возврат;
Иначе
Если Не Записать(Новый Структура("РежимЗаписи", РежимЗаписиДокумента.Проведение)) Тогда
Возврат;
КонецЕсли;
КонецЕсли;
ВыполнитьОбработкуОповещения(ПриЗавершенииСохранения, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ОформитьЗаказыПослеСохраненияДокументаБидзаар(Результат, ДополнительныеПараметры) Экспорт
Если Не Результат Тогда
Возврат;
КонецЕсли;
ПриЗавершенииСозданияЗаказовБидзаар = Новый ОписаниеОповещения("ПослеЗавершенияСозданияЗаказовБидзаар", ЭтотОбъект);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ЗапросКоммерческихПредложений", Объект.Ссылка);
ПараметрыФормы.Вставить("ИдентификаторВсервисе", Объект.ИдентификаторВСервисе);
ПараметрыФормы.Вставить("ИспользоватьЗаказыПоставщикам", ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(НастройкиУчета,
"ИспользоватьЗаказыПоставщикам", Истина));
ОткрытьФорму("Документ.ЗапросКоммерческихПредложенийПоставщиков.Форма.ЗагрузкаИтоговБидзаар", ПараметрыФормы,
ЭтотОбъект, , , , ПриЗавершенииСозданияЗаказовБидзаар, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗавершенияСозданияЗаказовБидзаар(Результат, ДополнительныеПараметры) Экспорт
ОбновитьОтображениеДанных();
КонецПроцедуры
&НаКлиенте
Процедура УстановитьДоступностьКомандИзображения(ТекущиеДанные)
ДобавлениеИзображенияКТоваруРазрешено = Ложь;
ОчисткаРазрешена = Ложь;
ВыборИзПрисоединенныхФайловРазрешен = Ложь;
ПросмотрРазрешен = Не ПустаяСтрока(АдресКартинки);
ЭтоТоварИзВнутреннегоСправочника = ЭтоТоварИзСправочника(ТекущиеДанные);
ЭтоРучнойТовар = ЭтоРучнойТовар(ТекущиеДанные);
НоменклатураСопоставлена = Не ПустаяСтрока(ТекущиеДанные.НоменклатураВСервисеИдентификатор);
Если ЭтоТоварИзВнутреннегоСправочника И Не НоменклатураСопоставлена Тогда
ДобавлениеИзображенияКТоваруРазрешено = ПозволятьДобавлениеФайлаИзСистемыДляВнутреннейНоменклатуры;
ОчисткаРазрешена = Не ПустаяСтрока(АдресКартинки);
ВыборИзПрисоединенныхФайловРазрешен = Истина;
ИначеЕсли ЭтоРучнойТовар Тогда
ДобавлениеИзображенияКТоваруРазрешено = Истина;
ОчисткаРазрешена = Не ПустаяСтрока(АдресКартинки);
КонецЕсли;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
"ДобавитьИзображение", "Доступность", ДобавлениеИзображенияКТоваруРазрешено);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
"ОчиститьИзображение", "Доступность", ОчисткаРазрешена);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
"ВыбратьКартинкуИзПрисоединенныхФайлов", "Доступность", ВыборИзПрисоединенныхФайловРазрешен);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
"ПросмотретьИзображение", "Доступность", ПросмотрРазрешен);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьВидимостьПодсказкиИзображения(ТекущиеДанные)
НоменклатураСопоставлена = Не ПустаяСтрока(ТекущиеДанные.НоменклатураВСервисеИдентификатор);
ПоказыватьПодсказкуИзображения = Ложь;
Если Не ПустаяСтрока(АдресКартинки) Тогда
ПоказыватьПодсказкуИзображения = ЭтоТоварИзСервиса(ТекущиеДанные)
Или ЭтоТоварИзСправочника(ТекущиеДанные) И НоменклатураСопоставлена;
КонецЕсли;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ГруппаПодсказкиИзображения", "Видимость",
ПоказыватьПодсказкуИзображения);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьТекстНевыбраннойКартинки(ТекущиеДанные)
Если Не ПустаяСтрока(АдресКартинки) Тогда
Возврат;
КонецЕсли;
НоменклатураСопоставлена = Не ПустаяСтрока(ТекущиеДанные.НоменклатураВСервисеИдентификатор);
Если ЭтоТоварИзСервиса(ТекущиеДанные)
Или ЭтоТоварИзСправочника(ТекущиеДанные) И НоменклатураСопоставлена Тогда
ТекстНевыбраннойКартинки = НСтр("ru = 'Для этой карточки 1С:Номенклатура изображения отсутствуют'",
ОбщегоНазначенияКлиент.КодОсновногоЯзыка());
Иначе
ТекстНевыбраннойКартинки = НСтр("ru = 'Выберите изображение'", ОбщегоНазначенияКлиент.КодОсновногоЯзыка());
КонецЕсли;
Если ТекстНевыбраннойКартинки = Элементы.АдресКартинки Тогда
Возврат;
КонецЕсли;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "АдресКартинки",
"ТекстНевыбраннойКартинки", ТекстНевыбраннойКартинки);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФормуКарточкиНоменклатурыИзСервиса(ТекущиеДанные, РежимВыбораКарточкиНоменклатуры)
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("РежимВыбора", РежимВыбораКарточкиНоменклатуры);
ИдентификаторыНоменклатуры = Новый Структура;
ИдентификаторыНоменклатуры.Вставить("ИдентификаторНоменклатуры", ТекущиеДанные.НоменклатураВСервисеИдентификатор);
ИдентификаторыНоменклатуры.Вставить("ИдентификаторХарактеристики", ТекущиеДанные.ХарактеристикаВСервисеИдентификатор);
Идентификаторы = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ИдентификаторыНоменклатуры);
РаботаСНоменклатуройКлиент.ОткрытьФормуКарточкиНоменклатуры(Идентификаторы, ЭтотОбъект, , , ПараметрыФормы);
КонецПроцедуры
&НаКлиенте
Функция ЭтоТоварИзСервиса(ТекущиеДанные)
Возврат ТекущиеДанные.ИсточникДобавленияТовара = ИндексТовараИзСервиса;
КонецФункции
&НаКлиенте
Функция ЭтоТоварИзСправочника(ТекущиеДанные)
Возврат ТекущиеДанные.ИсточникДобавленияТовара = ИндексТовараИзСправочника;
КонецФункции
&НаКлиенте
Функция ЭтоРучнойТовар(ТекущиеДанные)
Возврат ТекущиеДанные.ИсточникДобавленияТовара = ИндексРучногоТовара;
КонецФункции
#КонецОбласти
#КонецОбласти