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