Контрагенты / Модуль объекта

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

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

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

Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
	
	ПартнерыИКонтрагенты.ПроверитьКорректностьЗаполненияКонтрагента(ЭтотОбъект, Ссылка, Отказ);
	
КонецПроцедуры

Процедура ПередЗаписью(Отказ)
	
	Если ОбменДанными.Загрузка Тогда
		Возврат;
	КонецЕсли;

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

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

Процедура ПриКопировании(ОбъектКопирования)
	
	Если ОбъектКопирования.ГоловнойКонтрагент = ОбъектКопирования.Ссылка Тогда
		ГоловнойКонтрагент = Справочники.Контрагенты.ПустаяСсылка();
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

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