Коммерческое предложение поставщика / Модуль объекта

файл
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

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

Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
	
	МассивНепроверяемыхРеквизитов = Новый Массив;
	
	НастройкиУчета = КоммерческиеПредложенияДокументы.НастройкиУчета();

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

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

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

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

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

Процедура ОбработкаПроведения(Отказ, РежимПроведения)
	
	 КоммерческиеПредложенияДокументыПереопределяемый.ОбработкаПроведения(ЭтотОбъект, Отказ, РежимПроведения);
	
КонецПроцедуры

Процедура ОбработкаУдаленияПроведения(Отказ)
	
	 КоммерческиеПредложенияДокументыПереопределяемый.ОбработкаУдаленияПроведения(ЭтотОбъект, Отказ);
	
КонецПроцедуры

Процедура ПриКопировании(ОбъектКопирования)
	ИдентификаторВСервисе = "";
КонецПроцедуры

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

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

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

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

#КонецЕсли

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