Запрос коммерческих предложений у поставщиков / Загрузка итогов бидзаар / Модуль формы

файл

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

&НаКлиенте
Перем ХронологияПереключенияСтраниц;

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

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

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

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	ХронологияПереключенияСтраниц = Новый Массив;
	СменитьСтраницуШаги(Элементы.СтраницаКонтрагенты);
	ПерейтиНаСледующийШаг("ОткрытиеФормы");
	
КонецПроцедуры

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

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

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

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

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

&НаКлиенте
Процедура ОтборСопоставленияНоменклатурыПриИзменении(Элемент)

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

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

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

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

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

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

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

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

	ТекущиеДанные.ИспользованиеХарактеристик = Ложь;
	ТекущиеДанные.ЕдиницаИзмерения           = Неопределено;
	ТекущиеДанные.ВидНоменклатуры            = Неопределено;
	
КонецПроцедуры

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

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

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

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

	ТекущиеДанные = Элементы.ДокументыПоставщиков.ТекущиеДанные;

	Если ТекущиеДанные = Неопределено Тогда
		Возврат;
	КонецЕсли;

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

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

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

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

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

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

&НаКлиенте
Процедура КонтрагентыКонтрагентСоздание(Элемент, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
	
	ТекущиеДанные = Элементы.Контрагенты.ТекущиеДанные;

	ИмяФормыНовогоКонтрагента = ИмяФормыКонтрагента(ТипЗнч(ТекущиеДанные.Контрагент));

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

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

&НаКлиенте
Процедура КонтрагентыНаименованиеКонтрагентаОчистка(Элемент, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
КонецПроцедуры

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

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

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

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

&НаКлиенте
Процедура КонтрагентыКонтрагентПриИзменении(Элемент)
	ОчиститьСообщения();
КонецПроцедуры

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

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

#Область СтраницаДлительнаяОперация

&НаКлиенте
Процедура ПовторитьТекущуюДлительнуюОперацию(Команда)
	
	Если Не ПустаяСтрока(ТекущийШаг) И Не ПустаяСтрока(СледующийШаг) Тогда
		ВыполнитьДлительнуюОперацию(Элементы[ТекущийШаг], Элементы[СледующийШаг]);
	КонецЕсли;
	
КонецПроцедуры

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

#Область КомандыНавигации

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

&НаКлиенте
Процедура ГотовоЗавершение(Результат, ДополнительныеПараметры) Экспорт

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

	Закрыть();

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

&НаКлиенте
Процедура Далее(Команда)

	ПерейтиНаСледующийШаг();

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

&НаКлиенте
Процедура Назад(Команда)

	ОтменитьАктивныеФоновыеОперации();

	ВернутьсяНаПредыдущуюСтраницу();

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

&НаКлиенте
Процедура Отмена(Команда)
	
	ОтменитьАктивныеФоновыеОперации();
	Закрыть();
	
КонецПроцедуры

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

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

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

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

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

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

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

&НаКлиенте
Процедура ПроверкаЗаполненияСтраницаКонтрагенты(Отказ)

	Для ТекИндекс = 0 По Контрагенты.Количество() - 1 Цикл

		ТекущаяСтрока = Контрагенты[ТекИндекс];

		Если Не ЗначениеЗаполнено(ТекущаяСтрока.Контрагент) Тогда

			ТекстШаблонаОшибки = НСтр("ru='Не заполнено поле %1 в строке %2.'");
			ТекстОшибки = СтрШаблон(ТекстШаблонаОшибки, Элементы.КонтрагентыКонтрагент.Заголовок, ТекИндекс + 1);

			ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибки, , ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти(
				"Контрагенты", ТекИндекс + 1, "Контрагент"), , Отказ);
		КонецЕсли;
	КонецЦикла;

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

&НаКлиенте
Процедура ПроверкаЗаполненияСтраницаТовары(Отказ)

	ПроверкаСпискаТоваров(Отказ, ЕстьРаботаСНоменклатурой);

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

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

&НаСервереБезКонтекста
Функция ИмяФормыКонтрагента(ТипКонтрагента)
	МетаТип = Метаданные.НайтиПоТипу(ТипКонтрагента);
	
	Возврат "Справочник." + МетаТип.Имя + ".Форма." + МетаТип.формы.ФормаЭлемента.Имя;
КонецФункции

&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьСопоставленныеПозиции(СписокВыбораОтбораСопоставления, Знач ТаблицаНоменклатуры)
	
	ОтборСопоставленияВсе = СписокВыбораОтбораСопоставления.НайтиПоЗначению("Все");
	ОтборСопоставленияВсе.Представление = СтрШаблон(НСтр("ru = 'Все (%1)'"), ТаблицаНоменклатуры.Количество());
	
	ОтборСопоставленияСопоставленные = СписокВыбораОтбораСопоставления.НайтиПоЗначению("Сопоставленные");
	ОтборСопоставленияСопоставленные.Представление = СтрШаблон(НСтр("ru = 'Сопоставленные (%1)'"), 
		ТаблицаНоменклатуры.НайтиСтроки(Новый Структура("ТоварнаяПозицияСопоставлена", Истина)).Количество());
	
	ОтборСопоставленияНесопоставленные = СписокВыбораОтбораСопоставления.НайтиПоЗначению("Несопоставленные");
	ОтборСопоставленияНесопоставленные.Представление = СтрШаблон(НСтр("ru = 'Несопоставленные (%1)'"),
		ТаблицаНоменклатуры.НайтиСтроки(Новый Структура("ТоварнаяПозицияСопоставлена", Ложь)).Количество());
	
КонецПроцедуры

#Область Навигация

&НаКлиенте
Процедура СменитьСтраницуШаги(Знач НоваяСтраница)
	
	Элементы.КомандыНавигации.Доступность = Истина;
	
	Если НоваяСтраница = Элементы.СтраницаКонтрагенты Тогда
		
		Элементы.НадписьШаг.Заголовок = НСтр("ru = 'Шаг 1 из 2. Сопоставление контрагентов'");

		СменитьСтраницуКомандНавигации(Элементы.ДалееОтмена);
		
	ИначеЕсли НоваяСтраница = Элементы.СтраницаТовары Тогда
		
		Элементы.НадписьШаг.Заголовок = НСтр("ru = 'Шаг 2 из 2. Сопоставление номенклатуры'");
		СменитьСтраницуКомандНавигации(Элементы.НазадДалееОтмена);

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

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

&НаКлиенте
Процедура ВернутьсяНаПредыдущуюСтраницу()
	
	ПредыдущийШаг = ХронологияПереключенияСтраниц[ХронологияПереключенияСтраниц.ВГраница()];
	ХронологияПереключенияСтраниц.Удалить(ХронологияПереключенияСтраниц.ВГраница());
	СменитьСтраницуШаги(ПредыдущийШаг);
	
КонецПроцедуры

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

		ДлительнаяОперация = Истина;
		СледующаяСтраница = Элементы.СтраницаКонтрагенты;

	ИначеЕсли Элементы.Шаги.ТекущаяСтраница = Элементы.СтраницаКонтрагенты Тогда
		
		ПроверкаЗаполненияСтраницаКонтрагенты(Отказ);
		Если Отказ Тогда
			Возврат;
		КонецЕсли;

		ХронологияПереключенияСтраниц.Добавить(Элементы.СтраницаКонтрагенты);
		СледующаяСтраница  = Элементы.СтраницаТовары;
		ДлительнаяОперация = Истина;

	ИначеЕсли Элементы.Шаги.ТекущаяСтраница = Элементы.СтраницаТовары Тогда
		
		ПроверкаЗаполненияСтраницаТовары(Отказ);
		Если Отказ Тогда
			Возврат;
		КонецЕсли;
		
		ХронологияПереключенияСтраниц.Добавить(Элементы.СтраницаТовары);
		СледующаяСтраница  = Элементы.СтраницаСозданныеДокументы;
		ДлительнаяОперация = Истина;
		
	КонецЕсли;
	
	Если СледующаяСтраница <> Неопределено Тогда
		Если ДлительнаяОперация Тогда
			ВыполнитьДлительнуюОперацию(Элементы.Шаги.ТекущаяСтраница, СледующаяСтраница);
		Иначе
			СменитьСтраницуШаги(СледующаяСтраница);
			СменитьСтраницуКомандНавигации(СтраницаКомандНавигации);
		КонецЕсли;
	КонецЕсли;
	
КонецПроцедуры

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

#Область РаботаСФоновымиЗаданиями

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

	ИдентификаторЗадания = ДлительнаяОперация.ИдентификаторЗадания;
	
	ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация,
		ДлительнаяОперацияЗавершение,
		ПараметрыОжидания);
	
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура ФормированиеКоммерческихПредложенийЗавершение(Результат, ДополнительныеПараметры) Экспорт

	Отказ = Ложь;
	Если Результат = Неопределено Тогда
		Отказ = Истина;
	КонецЕсли;

	Если Не Отказ Тогда
		РезультатСозданияКП = ПолучитьИзВременногоХранилища(Результат.АдресРезультата);

		Если РезультатСозданияКП = Неопределено Тогда
			Отказ = Истина;
		ИначеЕсли ТипЗнч(РезультатСозданияКП.СозданныеДокументы) <> Тип("Массив") Тогда
			Отказ = Истина;
		ИначеЕсли РезультатСозданияКП.СозданныеДокументы.Количество() = 0 Тогда
			Отказ = Истина;
		КонецЕсли;
	КонецЕсли;

	Если Отказ Тогда
		ДлительнаяОперацияЗавершение = Новый ОписаниеОповещения("ДлительнаяОперацияЗавершение", ЭтотОбъект,
			ДополнительныеПараметры);

		ВыполнитьОбработкуОповещения(ДлительнаяОперацияЗавершение, Результат);
		Возврат;
	КонецЕсли;
	
	//Заполним табличную часть ДокументыПоставщиков
	КоммерческиеПредложенияДляТаблицыПоставщиков = Новый Массив;
	ЗаказыДляТаблицыПоставщиков = Новый Массив;

	Для Каждого РезультатСозданияДокумента Из РезультатСозданияКП.СозданныеДокументы Цикл
		Если ЗначениеЗаполнено(РезультатСозданияДокумента.КоммерческоеПредложение) Тогда
			КоммерческиеПредложенияДляТаблицыПоставщиков.Добавить(РезультатСозданияДокумента.КоммерческоеПредложение);
		КонецЕсли;
	КонецЦикла;

	ДанныеДляТаблицыПоставщиков = ДанныеДляТаблицыПоставщиков(КоммерческиеПредложенияДляТаблицыПоставщиков,
		ЗаказыДляТаблицыПоставщиков);

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

	Задание = Новый Структура("ИмяПроцедуры, Наименование, ПараметрыПроцедуры");

	Задание.ПараметрыПроцедуры = Новый Структура;

	ОписанияФайловДляПолучения = Новый Соответствие;
	Для Каждого СтрокаДокументыПоставщиков Из ДокументыПоставщиков Цикл

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

		ОтборОписанийФайлов = Новый Структура("ИдентификаторПредложенияСервиса",
			СтрокаДокументыПоставщиков.ИдентификаторПредложенияСервиса);
		НайденныеОписанияФайлов = ФайлыПоставщиков.НайтиСтроки(ОтборОписанийФайлов);

		Если НайденныеОписанияФайлов.Количество() > 0 Тогда
			ИдентификаторыФайлов = Новый Массив;

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

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

	Задание.ПараметрыПроцедуры.Вставить("ОписанияФайлов", ОписанияФайловДляПолучения);

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

	ДлительнаяОперацияЗавершение = Новый ОписаниеОповещения("ПолучениеФайловКоммерческихПредложенийБидзаарЗавершение",
		ЭтотОбъект, ДополнительныеПараметры);

	ДлительнаяОперация = ВыполнитьПолучениеФайловКоммерческихПредложенийВФоне(Задание, УникальныйИдентификатор);

	ИдентификаторЗадания = ДлительнаяОперация.ИдентификаторЗадания;

	ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ДлительнаяОперацияЗавершение, ПараметрыОжидания);
	
	// Перенесем информацию из созданных коммерческих предложений в документ "Запрос коммерческих предложений"
	Элементы.НазваниеТекущейДлительнойОперации.Заголовок = НСтр(
		"ru = 'Перенос данных коммерческих предложений в запрос'");

	Задание = Новый Структура("ИмяПроцедуры, Наименование, ПараметрыПроцедуры");

	Задание.ПараметрыПроцедуры = Новый Структура;

	Задание.ПараметрыПроцедуры.Вставить("ДокументИсточник", ЗапросКоммерческихПредложений);
	Задание.ПараметрыПроцедуры.Вставить("Валюта", ДополнительныеПараметры.Валюта);

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

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

	ДлительнаяОперация = ВыполнитьПереносДанныхКоммерческихПредложенийВФоне(Задание, УникальныйИдентификатор);

	ИдентификаторЗадания = ДлительнаяОперация.ИдентификаторЗадания;

	ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ДлительнаяОперацияЗавершение, ПараметрыОжидания);

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

&НаСервереБезКонтекста
Функция ВыполнитьПереносДанныхКоммерческихПредложенийВФоне(Знач Задание, УникальныйИдентификатор)

	ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
	ПараметрыВыполнения.НаименованиеФоновогоЗадания = Задание.Наименование;
	ПараметрыВыполнения.ЗапуститьВФоне = Истина;

	РеквизитыДокумента = Задание.ПараметрыПроцедуры.ДокументИсточник.ПолучитьОбъект();

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

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

	Возврат ДлительныеОперации.ВыполнитьВФоне(Задание.ИмяПроцедуры, Задание.ПараметрыПроцедуры, ПараметрыВыполнения);

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

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

	ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
	ПараметрыВыполнения.НаименованиеФоновогоЗадания = Задание.Наименование;
	ПараметрыВыполнения.ЗапуститьВФоне = Истина;

	Возврат ДлительныеОперации.ВыполнитьВФоне(Задание.ИмяПроцедуры, Задание.ПараметрыПроцедуры, ПараметрыВыполнения);

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

&НаКлиенте
Процедура ВыполнитьПереносДанныхКоммерческихПредложенийЗавершение(Результат, ДополнительныеПараметры) Экспорт

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

	ИдентификаторЗадания = ДлительнаяОперация.ИдентификаторЗадания;
	
	ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация,
		ДлительнаяОперацияЗавершение,
		ПараметрыОжидания);
	
КонецПроцедуры

&НаКлиенте
Процедура ПолучениеФайловКоммерческихПредложенийБидзаарЗавершение(Результат, ДополнительныеПараметры) Экспорт
	Возврат;
КонецПроцедуры

&НаСервереБезКонтекста
Функция ВыполнитьСозданиеЗаказовПоставщикуВФоне(Знач Задание, УникальныйИдентификатор)

	ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
	ПараметрыВыполнения.НаименованиеФоновогоЗадания = Задание.Наименование;
	ПараметрыВыполнения.ЗапуститьВФоне = Истина;

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

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

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

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

	Задание.ПараметрыПроцедуры.Вставить("ДополнительныеПараметры", ДополнительныеПараметры);

	Возврат ДлительныеОперации.ВыполнитьВФоне(Задание.ИмяПроцедуры, Задание.ПараметрыПроцедуры, ПараметрыВыполнения);

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

&НаКлиенте
Процедура ВыполнитьСозданиеЗаказовПоставщикамЗавершение(Результат, ДополнительныеПараметры) Экспорт

	Отказ = Ложь;

	Если Результат = Неопределено Тогда
		Отказ = Истина;
	КонецЕсли;

	Если Не Отказ Тогда

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

		ДанныеДляТаблицыПоставщиков = ДанныеДляТаблицыПоставщиков(КоммерческиеПредложенияДляТаблицыПоставщиков,
			ЗаказыДляТаблицыПоставщиков);

		КоличествоСозданныхЗаказов = ЗаказыДляТаблицыПоставщиков.Количество();

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

	КонецЕсли;

	ДлительнаяОперацияЗавершение = Новый ОписаниеОповещения("ДлительнаяОперацияЗавершение", ЭтотОбъект,
		ДополнительныеПараметры);

	ВыполнитьОбработкуОповещения(ДлительнаяОперацияЗавершение, Результат);

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

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

		МенеджерЗаписи = РегистрыСведений.ЗаказыПоставщикамПоЗапросамКоммерческихПредложений.СоздатьМенеджерЗаписи();
		МенеджерЗаписи.ЗаказПоставщику = ДанныеЗаказа.Ссылка;
		МенеджерЗаписи.ЗапросКоммерческихПредложений = ЗапросКоммерческихПредложений;
		МенеджерЗаписи.ИдентификаторПредложенияВСервисе = ДанныеЗаказа.ИдентификаторПредложенияСервиса;

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

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

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

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

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

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

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

		ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
		ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ДокументыПоставщиков.Имя);

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

		ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона",
			ЦветаСтиля.ЦветФонаПоясненияОшибкиБИП);
	КонецЕсли;
	/////////////////////////////////////////////////////////////////////////////////////////////////////////
	ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
	
	ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ДокументыПоставщиковЗаказТекст.Имя);

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

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

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

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

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

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

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

&НаКлиенте
Процедура ПроверкаСпискаТоваров(Отказ, ПроверкаЕстьРаботаСНоменклатурой = Ложь)

	// Проверка
	Для ТекИндекс = 0 По Товары.Количество() - 1 Цикл

		ТекущаяСтрока = Товары[ТекИндекс];
		НомерСтроки = ТекИндекс + 1;

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

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

	КонецЦикла;

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

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

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

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

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

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

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