Партнеры / Помощник нового / Модуль формы

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

&НаКлиенте
Перем ВыполняетсяЗакрытие;

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

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

	УстановитьУсловноеОформление();
	
	Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
		Возврат;
	КонецЕсли;

	Если Параметры.Свойство("РежимВыбора") И Параметры.РежимВыбора Тогда
		ДляВыбора = Истина;
	КонецЕсли;

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

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

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	ОтключитьОтметкуНезаполненного();
	
	УправлениеСтраницамиПодвал();
	
КонецПроцедуры

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

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

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

#Область ОбработчикиСобытийЭлементовШапкиФормы

#Область ОбработчикиКонтактнойИнформации

#Область КонтактнаяИнформацияКонтактногоЛица

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

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

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

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

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

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

&НаКлиенте
Процедура АдресЭПКЛПриИзменении(Элемент)
	ОтключитьОтметкуНезаполненного();
КонецПроцедуры

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

#Область КонтактнаяИнформацияКомпании

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

&НаКлиенте
Процедура ТелефонПартнераПриИзменении(Элемент)
	
	ОбработкаСобытияЭлементаКИТелефон(
		Элемент,
		ПредопределенноеЗначение("Справочник.ВидыКонтактнойИнформации.ТелефонПартнера"),
		"ТелефонПартнера",
		"ТелефонПартнераЗначенияПолей",
		"ПриИзменении");
	
КонецПроцедуры

&НаКлиенте
Процедура ТелефонПартнераОчистка(Элемент, СтандартнаяОбработка)
	
	ОбработкаСобытияЭлементаКИТелефон(
		Элемент,
		ПредопределенноеЗначение("Справочник.ВидыКонтактнойИнформации.ТелефонПартнера"),
		"ТелефонПартнера",
		"ТелефонПартнераЗначенияПолей",
		"Очистка");
	
КонецПроцедуры

&НаКлиенте
Процедура АдресЭППартнераПриИзменении(Элемент)
	ОтключитьОтметкуНезаполненного();
КонецПроцедуры

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

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

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

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

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

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

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

#Область КонтактнаяИнформацияЧастноеЛицо

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

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

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

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

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

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

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

#Область КонтактнаяИнформацияГоловногоКонтрагента

&НаКлиенте
Процедура ФактическийАдресГоловногоКонтрагентаПриИзменении(Элемент)
	
	ОбработкаСобытияЭлементаКИАдрес(Элемент,
	                                ПредопределенноеЗначение("Справочник.ВидыКонтактнойИнформации.ФактАдресКонтрагента"),
	                                "ФактическийАдресГоловногоКонтрагента",
	                                "ФактическийАдресГоловногоКонтрагентаЗначенияПолей",
	                                "ПриИзменении");
	
КонецПроцедуры

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

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

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

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

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

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

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

#Область ОбработчикиБанковскихРеквизитов

#Область БанковскийСчетПартнера

&НаКлиенте
Процедура УказатьБанковскийСчетКонтрагентаПриИзменении(Элемент)
	
	УправлениеДоступностьюРасчетныйСчет(УказатьБанковскийСчетКонтрагента);
	
КонецПроцедуры

&НаКлиенте
Процедура НомерСчетаПриИзменении(Элемент)
	
	НомерСчетаПриИзмененииКлиент();
	
КонецПроцедуры

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

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

	ПриИзмененииIBAN();
	
КонецПроцедуры

&НаКлиенте
Процедура БанкПриИзменении(Элемент)
	
	ПриИзмененииБанка();
	
КонецПроцедуры

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

&НаКлиенте
Процедура БанкВГруппеПриИзменении(Элемент)
	
	ПриИзмененииБанка();
	
КонецПроцедуры

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

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

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

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

&НаКлиенте
Процедура СчетВБанкеДляРасчетовПриИзменении(Элемент)

	ЗаполнитьОсновныеРеквизитыБанка(ЭтотОбъект)

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

&НаКлиенте
Процедура НаименованиеБанкаПриИзменении(Элемент)
	
	ЗаполнитьОсновныеРеквизитыБанка(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура СВИФТБанкаПриИзменении(Элемент)
	
	ЗаполнитьОсновныеРеквизитыБанка(ЭтотОбъект)

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

&НаКлиенте
Процедура НаименованиеБанкаМеждународноеПриИзменении(Элемент)

	ЗаполнитьОсновныеРеквизитыБанка(ЭтотОбъект);

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

&НаКлиенте
Процедура ВалютаДенежныхСредствПриИзменении(Элемент)
	
	ОтключитьОтметкуНезаполненного();
	УправлениеЭлементамиБанковскийСчет(ЭтотОбъект);
	
КонецПроцедуры

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

&НаКлиенте
Процедура БанкДляРасчетовПриИзменении(Элемент)
	
	ПриИзмененииБанкаДляРасчетов();
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура БИКБанкаДляРасчетовПриИзменении(Элемент)

	ЗаполнитьОсновныеРеквизитыБанкаДляРасчетов(ЭтотОбъект)

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

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

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

&НаКлиенте
Процедура СВИФТБанкаДляРасчетовПриИзменении(Элемент)
	
	ЗаполнитьОсновныеРеквизитыБанкаДляРасчетов(ЭтотОбъект)

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

&НаКлиенте
Процедура НаименованиеБанкаДляРасчетовМеждународноеПриИзменении(Элемент)
	
	ЗаполнитьОсновныеРеквизитыБанкаДляРасчетов(ЭтотОбъект)

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

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

#Область БанковскийСчетГоловногоКонтрагента

&НаКлиенте
Процедура УказатьБанковскийСчетГоловногоКонтрагентаПриИзменении(Элемент)
	
	УправлениеДоступностьюРасчетныйСчет(УказатьБанковскийСчетГоловногоКонтрагента, Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура НомерСчетаГоловнойКонтрагентПриИзменении(Элемент)
	
	НомерСчетаПриИзмененииКлиент(Истина);
	
КонецПроцедуры

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

&НаКлиенте
Процедура ЭтоIBANГоловнойКонтрагентПриИзменении(Элемент)

	ПриИзмененииIBAN(Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура БанкГоловнойКонтрагентПриИзменении(Элемент)
	
	ПриИзмененииБанка(Истина);

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

&НаКлиенте
Процедура СпособУказанияБанкаГоловнойКонтрагентПриИзменении(Элемент)
	
	ПриИзмененииРучноеИзменениеРеквизитовБанка(Истина)
	
КонецПроцедуры

&НаКлиенте
Процедура БанкВГруппеГоловнойКонтрагентПриИзменении(Элемент)
	
	ПриИзмененииБанка(Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура БИКБанкаГоловнойКонтрагентПриИзменении(Элемент)
	
	ЗаполнитьОсновныеРеквизитыБанка(ЭтотОбъект, Истина)

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

&НаКлиенте
Процедура КоррСчетБанкаГоловнойКонтрагентПриИзменении(Элемент)
	
	ЗаполнитьОсновныеРеквизитыБанка(ЭтотОбъект, Истина)

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

&НаКлиенте
Процедура СчетВБанкеДляРасчетовГоловнойКонтрагентПриИзменении(Элемент)

	ЗаполнитьОсновныеРеквизитыБанка(ЭтотОбъект, Истина)

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

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

&НаКлиенте
Процедура СВИФТБанкаГоловнойКонтрагентПриИзменении(Элемент)
	
	ЗаполнитьОсновныеРеквизитыБанка(ЭтотОбъект, Истина)

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

&НаКлиенте
Процедура НаименованиеБанкаМеждународноеГоловнойКонтрагентПриИзменении(Элемент)

	ЗаполнитьОсновныеРеквизитыБанка(ЭтотОбъект, Истина);

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

&НаКлиенте
Процедура ВалютаДенежныхСредствГоловнойКонтрагентПриИзменении(Элемент)
	
	ОтключитьОтметкуНезаполненного();
	УправлениеЭлементамиБанковскийСчет(ЭтотОбъект, Истина);
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура СпособУказанияБанкаДляРасчетовГоловнойКонтрагентПриИзменении(Элемент)
	
	ПриИзмененииРучноеИзменениеРеквизитовБанкаДляРасчетов(Истина)
	
КонецПроцедуры

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

&НаКлиенте
Процедура БИКБанкаДляРасчетовГоловнойКонтрагентПриИзменении(Элемент)

	ЗаполнитьОсновныеРеквизитыБанкаДляРасчетов(ЭтотОбъект, Истина)

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

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

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


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

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

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

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

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

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

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

#Область ТаблицаНайдено

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

&НаКлиенте
Процедура ДеревоНайденоПриАктивизацииСтроки(Элемент)
	
	ПодключитьОбработчикОжидания("ЗаполнитьДеревоСравненияПартнеров", 0.2, Истина);
	
КонецПроцедуры

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

#Область ДеревоСравненияПартнеров

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

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

#Область ОбособленныеПодразделения

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

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

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

#Область ОбработчикиПрочихРеквизитов

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

&НаКлиенте
Процедура Подключаемый_ОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, Параметры, СтандартнаяОбработка)
	
	ПартнерыИКонтрагентыЛокализацияКлиент.ОкончаниеВводаТекста_Контрагент(Элемент,
		Текст,
		ДанныеВыбора,
		Параметры,
		СтандартнаяОбработка,
		ЭтотОбъект);
		
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ПриИзмененииРеквизита(Элемент)
	ПартнерыИКонтрагентыЛокализацияКлиент.ПриИзмененииРеквизита_Контрагент(
		Элемент,
		ЭтотОбъект);
КонецПроцедуры

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

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

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

&НаСервере
Процедура ПриОкончанииИзмененияРеквизитаЛокализацииНаСервере(ИмяЭлемента, ПараметрыОбработки)
	
	ПартнерыИКонтрагентыЛокализация.ПриОкончанииИзмененияРеквизита_Контрагент(ИмяЭлемента, ЭтотОбъект);
	ВидимостьСтраницПервичнаяИнформация();
КонецПроцедуры

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

&НаКлиенте
Процедура ИННПриИзменении(Элемент)
	ПартнерыИКонтрагентыЛокализацияКлиент.ПроверитьИНН(ЭтотОбъект);
КонецПроцедуры

&НаКлиенте
Процедура ОГРНПриИзменении(Элемент)

	ПартнерыИКонтрагентыЛокализацияКлиент.ПроверитьОГРН(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура ОГРНИППриИзменении(Элемент)

	ПартнерыИКонтрагентыЛокализацияКлиент.ПроверитьОГРН(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура ЭтоКомпанияПриИзменении(Элемент)
	
	ВидимостьСтраницПервичнаяИнформация();
	
	Элементы.ВидЮрЛицо.Доступность = УказыватьЮридическиеРеквизиты;
	ЮрФизЛицо                       = ТипЮрФизЛицаПартнера(ЭтоКомпания);
	
КонецПроцедуры

&НаКлиенте
Процедура СокрЮрНаименованиеКонтрагентаПриИзменении(Элемент)

	Подключаемый_ПриИзмененииРеквизита(Элемент);
	ПартнерыИКонтрагентыКлиент.СокрЮрНаименованиеПриИзменении(НаименованиеКонтрагента, ПолноеЮридическоеНаименование);
	
КонецПроцедуры

&НаКлиенте
Процедура СокрЮридическоеНаименованиеТолькоПартнерыПриИзменении(Элемент)
	
	Подключаемый_ПриИзмененииРеквизита(Элемент);
	ПартнерыИКонтрагентыКлиент.СокрЮрНаименованиеПриИзменении(ПолноеНаименование, ПолноеЮридическоеНаименование);
	Название = ПолноеНаименование;
	ОтключитьОтметкуНезаполненного();

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

&НаКлиенте
Процедура ПубличноеНаименованиеПриИзменении(Элемент)
	
	ОтключитьОтметкуНезаполненного();
	
КонецПроцедуры

&НаКлиенте
Процедура ДействиеПоРезультатамНайденоПриИзменении(Элемент)
	
	УправлениеСтраницамиПодвал();
	
КонецПроцедуры

&НаКлиенте
Процедура ДействиеСКонтрагентомПриИзменении(Элемент)
	
	УправлениеСтраницамиПодвал();
	
КонецПроцедуры

&НаКлиенте
Процедура ВидКомпанииПриИзменении(Элемент)
	
	УправлениеДоступностьюПервичнаяИнформация();
	ПартнерыИКонтрагентыЛокализацияКлиент.ПроверитьИНН(ЭтотОбъект, Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура УказыватьЮридическиеРеквизитыЧастноеЛицоПриИзменении(Элемент)
	
	ВидимостьСтраницПервичнаяИнформация();
	
	Элементы.ВидЮрЛицо.Доступность = УказыватьЮридическиеРеквизиты;
	
КонецПроцедуры

&НаКлиенте
Процедура УказыватьЮридическиеРеквизитыПриИзменении(Элемент)
	
	ВидимостьСтраницПервичнаяИнформация();
	
	Элементы.ВидЮрЛицо.Доступность = УказыватьЮридическиеРеквизиты;
	
КонецПроцедуры

&НаКлиенте
Процедура УказатьДанныеКонтактногоЛицаПриИзменении(Элемент)
	
	ОтключитьОтметкуНезаполненного();
	
	УстановитьДоступностьДанныхКонтактногоЛица(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура КаналПервичногоИнтересаПриИзменении(Элемент)
	
	УправлениеЭлементамиПервичногоИнтереса(ЭтотОбъект);
	Если НЕ ЗначениеЗаполнено(КаналПервичногоИнтереса) Тогда
		ИсточникПервичногоИнтереса = Неопределено;
	КонецЕсли;
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура ГруппаДоступаЧастноеЛицоПриИзменении(Элемент)
	
	ОтключитьОтметкуНезаполненного();
	
КонецПроцедуры

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

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

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

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

&НаКлиенте
Процедура ФамилияКЛПриИзменении(Элемент)
	
	ОтключитьОтметкуНезаполненного();
	
КонецПроцедуры

&НаКлиенте
Процедура ИмяКЛПриИзменении(Элемент)
	
	ОтключитьОтметкуНезаполненного();
	
КонецПроцедуры

&НаКлиенте
Процедура УказатьДокументУдостоверяющийЛичностьПриИзменении(Элемент)
	
	УстановитьДоступностьДанныхДокументаФизлица(ЭтотОбъект);
	ОтключитьОтметкуНезаполненного();
	
КонецПроцедуры

&НаКлиенте
Процедура ВидДокументаПриИзменении(Элемент)
	
	ОтключитьОтметкуНезаполненного();
	
КонецПроцедуры

&НаКлиенте
Процедура ВыбратьГоловногоКонтрагентаПриИзменении(Элемент)
	
	ПартнерыИКонтрагентыЛокализацияКлиентСервер.УправлениеДоступностьюГоловнойКонтрагент(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура ПолноеНаименованиеГоловногоКонтрагентаПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
	ПартнерыИКонтрагентыКлиент.СокрЮрНаименованиеПриИзменении(
		НаименованиеГоловнойКонтрагент, ПолноеНаименованиеГоловногоКонтрагента);
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуЛокализации(Команда)
	
	ПартнерыИКонтрагентыЛокализацияКлиент.ВыполнитьКомандуЛокализации(Команда, ЭтотОбъект);
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура Далее(Команда)
	
	ВыполнитьПереходПоСтраницам(Неопределено, Команда);
	
КонецПроцедуры

&НаКлиенте
Процедура Назад(Команда)
	
	ВыполнитьПереходПоСтраницам(Неопределено, Команда);
	
КонецПроцедуры

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

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

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

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

&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
	
	СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтотОбъект, Команда);
	
КонецПроцедуры

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

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

#Область ФормированиеИтоговойИнформации

&НаСервере
Процедура ЗаполнитьИтоговуюИнформацию()
	
	ИтоговаяИнформация = Справочники.Партнеры.ПолучитьМакет("Макет").ПолучитьТекст();
	
	Если КлиентскоеПриложение.ТекущийВариантИнтерфейса() = ВариантИнтерфейсаКлиентскогоПриложения.Такси Тогда
		ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#fcfaeb", "#ffffff");
	КонецЕсли;
	
	Если ДействиеПоРезультатамНайдено <> 0 Тогда
		
		ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#PD#", "");
		ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация,"#TitlePartnerName#",
			?(ИспользуютсяТолькоПартнеры, НСтр("ru = 'Сокращенное юр. наименование'"), НСтр("ru = 'Публичное наименование'")));
		ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#PartnerName#", НаименованиеПартнера());
		Если ЭтоКомпания = 1 Тогда
			ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#DateOfBirth#", ?(ДатаРождения = Дата(1,1,1), "", Формат(ДатаРождения,"ДЛФ=D")));
			ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#Gender#", ?(ЗначениеЗаполнено(Пол),Пол,""));
			ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#IND#", "");
		Иначе
			ОбщегоНазначенияУТКлиентСервер.УдалитьИзСтрокиПодстроку(ИтоговаяИнформация, "#IND#");
		КонецЕсли;
		ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#WorkingNameOfThePartner#", ?(ЭтоКомпания = 0, Название,ФИО_ОднойСтрокой(ФамилияПартнера, ИмяПартнера, ОтчествоПартнера)));
		Если ИспользуютсяТолькоПартнеры Тогда
			ОбщегоНазначенияУТКлиентСервер.УдалитьИзСтрокиПодстроку(ИтоговаяИнформация, "#PC#");
		Иначе
			ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#Parent#", Родитель);
			ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#PC#", "");
		КонецЕсли;
		ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#RelationshipType#", ПолучитьСтрокуТипОтношений());
		ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#Email#", ?(ЭтоКомпания = 0, АдресЭППартнера, АдресЭППартнераФизЛицо));
		ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#Phone#", ?(ЭтоКомпания = 0, ТелефонПартнера, ТелефонПартнераФизЛицо));
		Если ИспользуютсяТолькоПартнеры И УказыватьЮридическиеРеквизиты Тогда
			ОбщегоНазначенияУТКлиентСервер.УдалитьИзСтрокиПодстроку(ИтоговаяИнформация,"#AP#");
		Иначе
			Если ЭтоКомпания = 0 Тогда
				ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#AddressName#", НСтр("ru = 'Фактический адрес'"));
			Иначе
				ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#AddressName#", НСтр("ru = 'Адрес проживания'"));
			КонецЕсли;
			ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#Address#", ФактическийАдрес);
			ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#AP#", "");
		КонецЕсли; 
		ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#Address#", ФактическийАдрес);
		
		Если ПолучитьФункциональнуюОпцию("ИспользоватьГруппыДоступаПартнеров") Тогда
			ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#AccessGroup#", ГруппаДоступа);
			ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#AG#", "");
		Иначе
			ОбщегоНазначенияУТКлиентСервер.УдалитьИзСтрокиПодстроку(ИтоговаяИнформация,"#AG#");
		КонецЕсли;
		ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#ResponsibleManager#", ОсновнойМенеджер);
		
		Если ПолучитьФункциональнуюОпцию("ИспользоватьБизнесРегионы") Тогда
			ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#BusinessRegion#", БизнесРегион);
			ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#BR#", "");
		Иначе
			ОбщегоНазначенияУТКлиентСервер.УдалитьИзСтрокиПодстроку(ИтоговаяИнформация, "#BR#");
		КонецЕсли;
		
		Если ПолучитьФункциональнуюОпцию("ФиксироватьПервичныйИнтерес") Тогда
			ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#ChannelOfInitialRequest#", КаналПервичногоИнтереса);
			ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#SourceOfInitialRequest#", ИсточникПервичногоИнтереса);
			ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#IR#", "");
		Иначе
			ОбщегоНазначенияУТКлиентСервер.УдалитьИзСтрокиПодстроку(ИтоговаяИнформация, "#IR#");
		КонецЕсли;
		
		Если ЕстьПравоВключенияВСегмент И ПолучитьФункциональнуюОпцию("ИспользоватьСегментыПартнеров") Тогда
			ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#Segment#", Сегмент);
			ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#SG#", "");
		Иначе
			ОбщегоНазначенияУТКлиентСервер.УдалитьИзСтрокиПодстроку(ИтоговаяИнформация, "#SG#");
		КонецЕсли;
		
	Иначе
		ОбщегоНазначенияУТКлиентСервер.УдалитьИзСтрокиПодстроку(ИтоговаяИнформация, "#PD#");
	КонецЕсли;
	
	Если (ИспользуютсяТолькоПартнеры Или ДействиеСКонтрагентом = 1) И УказыватьЮридическиеРеквизиты Тогда
		ИННВывод = ?(ЭтоКомпания = 0, ИНН, ИННПартнерФизЛицо);
		
		Если НЕ ЕстьДубльПоОснРеквизитам Тогда
			Элементы.Далее2.Доступность =Истина;
			ОбщегоНазначенияУТКлиентСервер.УдалитьИзСтрокиПодстроку(ИтоговаяИнформация, "#ID#");
			ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#RepresentationOfTheTypeOfLegalEntityIndividual#", ПредставлениеТипаЮрФизЛица());
			Если ИспользуютсяТолькоПартнеры Тогда
				ОбщегоНазначенияУТКлиентСервер.УдалитьИзСтрокиПодстроку(ИтоговаяИнформация, "#AN#");
			Иначе
				ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#FullNameOfTheCounterparty#",
				                     ?(ЭтоКомпания = 0, ПолноеЮридическоеНаименование, ФИО_ОднойСтрокой(ФамилияПартнера, ИмяПартнера, ОтчествоПартнера)));
				ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#AN#", "");
			КонецЕсли;
			Если ВидКомпании = 3 Тогда
				ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#NameOfTheHeadCounterparty#",
				                     ?(ИспользуютсяТолькоПартнеры Или ВыбратьГоловногоКонтрагента = 0,
				                     ГоловнойКонтрагент,
				                     ?(ВыбратьГоловногоКонтрагента = 1, НаименованиеГоловнойКонтрагент, "")));
				ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#SGK#", "");
			Иначе
				ОбщегоНазначенияУТКлиентСервер.УдалитьИзСтрокиПодстроку(ИтоговаяИнформация, "#SGK#");
			КонецЕсли;
			ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#TIN#", ИННВывод);
			
			ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#LegalAddress#", ЮридическийАдрес);
			ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#PhysicalAddress#", ФактическийАдрес);
			ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#RD#", "");
			
			Если ЭтоКомпания = 1 И УказатьДокументУдостоверяющийЛичность Тогда
				ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#DocumentKind#" ,ВидДокумента);
				ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#DocumentSeries#", СерияДокумента);
				ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#DocumentNumber#", НомерДокумента);
				ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#DateOfIssue#", Формат(ДатаВыдачи,"ДЛФ=D"));
				ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#ValidityPeriod#", Формат(СрокДействия,"ДЛФ=D"));
				ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#IssuedBy#", КемВыданДокумент);
				ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#IssuingAuthorityCode#",КодПодразделения);
				ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#DD#", "");
			Иначе
				ОбщегоНазначенияУТКлиентСервер.УдалитьИзСтрокиПодстроку(ИтоговаяИнформация, "#DD#");
			КонецЕсли;
			
			Если УказатьБанковскийСчетКонтрагента Тогда
				ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#AccountNumber#", НомерСчета);
				ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#CashCurrency#", ВалютаДенежныхСредств);
				Если Не ИностранныйБанк Тогда
					ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#Bank#", НаименованиеБанка);
					ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#CorrBankAccount#", КоррСчетБанка);
					Если ИспользуетсяБанкДляРасчетов Тогда
						ИтоговаяИнформация = СтрЗаменить(
							ИтоговаяИнформация, "#BankForSettlements#", НаименованиеБанкаДляРасчетов);
						ИтоговаяИнформация = СтрЗаменить(
							ИтоговаяИнформация, "#OffsetBankAccountForSettlements#", КоррСчетБанкаДляРасчетов);
					Иначе
						ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#BankForSettlements#", "");
						ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#OffsetBankAccountForSettlements#", "");
					КонецЕсли;
				Иначе
					ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#Bank#",
						СВИФТБанка + ", " + НаименованиеБанка + ", " + АдресБанка);
					ВалютныйСчет = (ЗначениеЗаполнено(ВалютаДенежныхСредств)
									И ВалютаДенежныхСредств <> ВалютаРеглУчета);
					Если ВалютныйСчет Тогда
						ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#CorrBankAccount#", СчетВБанкеДляРасчетов);
					Иначе
						ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#CorrBankAccount#", КоррСчетБанка);
					КонецЕсли;
					Если ИспользуетсяБанкДляРасчетов Тогда
						ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#BankForSettlements#",
							СВИФТБанкаДляРасчетов + ", " + НаименованиеБанкаДляРасчетов + ", " + АдресБанкаДляРасчетов);
						ИтоговаяИнформация = СтрЗаменить(
							ИтоговаяИнформация, "#OffsetBankAccountForSettlements#", КоррСчетБанкаДляРасчетов);
					Иначе
						ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#BankForSettlements#", "");
						ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#OffsetBankAccountForSettlements#", "");
					КонецЕсли;
				КонецЕсли;
				ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#BA#", "")
			Иначе
				ОбщегоНазначенияУТКлиентСервер.УдалитьИзСтрокиПодстроку(ИтоговаяИнформация, "#BA#");
			КонецЕсли;
			
		КонецЕсли;
		
	Иначе
		ОбщегоНазначенияУТКлиентСервер.УдалитьИзСтрокиПодстроку(ИтоговаяИнформация, "#RD#");
		ОбщегоНазначенияУТКлиентСервер.УдалитьИзСтрокиПодстроку(ИтоговаяИнформация, "#ID#");
		ОбщегоНазначенияУТКлиентСервер.УдалитьИзСтрокиПодстроку(ИтоговаяИнформация, "#DD#");
	КонецЕсли;
	
	Если ВидКомпании = 3 И Не ИспользуютсяТолькоПартнеры И ВыбратьГоловногоКонтрагента = 1 Тогда
		
		ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#DHC#", "");
		ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#FullNameOfTheHeadCounterparty#",
			ПолноеНаименованиеГоловногоКонтрагента);
		Если ЗначениеЗаполнено(ПартнерГоловногоКонтрагента) Тогда
			ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#PartnerOfTheHeadCounterparty#", ПартнерГоловногоКонтрагента);
			ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#PHC#", "");
		Иначе
			ОбщегоНазначенияУТКлиентСервер.УдалитьИзСтрокиПодстроку(ИтоговаяИнформация, "#PHC#");
		КонецЕсли;
		ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#LegalAddressOfMainCounterparty#",
			ЮридическийАдресГоловногоКонтрагента);
		ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#ActualAddressOfTheHeadCounterparty#",
			ФактическийАдресГоловногоКонтрагента);
		
		Если УказатьБанковскийСчетГоловногоКонтрагента Тогда
			ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#AccountNumberOfTheHeadCounterparty#",
				НомерСчетаГоловнойКонтрагент);
			ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#CurrencyOfTheHeadCounterpartySFunds#",
				ВалютаДенежныхСредствГоловнойКонтрагент);
				
			Если Не ИностранныйБанкГоловнойКонтрагент Тогда
				ИтоговаяИнформация = СтрЗаменить(
					ИтоговаяИнформация, "#BankOfTheMainCounterparty#", НаименованиеБанкаГоловнойКонтрагент);
				ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#CorrespondentBankAccountOfTheHeadCounterparty#",
					КоррСчетБанкаГоловнойКонтрагент);
				Если ИспользуетсяБанкДляРасчетовГоловнойКонтрагент Тогда
					ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#BankForSettlementsOfTheMainCounterparty#",
						НаименованиеБанкаДляРасчетовГоловнойКонтрагент);
					ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация,
						"#CorrespondentAccountOfTheBankForTheCalculationsOfTheHeadContractor#", КоррСчетБанкаДляРасчетовГоловнойКонтрагент);
				Иначе
					ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#BankForSettlementsOfTheMainCounterparty#", "");
					ИтоговаяИнформация = СтрЗаменить(
						ИтоговаяИнформация, "#CorrespondentAccountOfTheBankForTheCalculationsOfTheHeadContractor#", "");
				КонецЕсли;
			Иначе
				ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#BankOfTheMainCounterparty#",
					СВИФТБанкаГоловнойКонтрагент + ", " + НаименованиеБанкаГоловнойКонтрагент + ", "
					+ АдресБанкаГоловнойКонтрагент);
				ИтоговаяИнформация = СтрЗаменить(
					ИтоговаяИнформация, "#CorrespondentBankAccountOfTheHeadCounterparty#", КоррСчетБанкаГоловнойКонтрагент);
				
				Если ИспользуетсяБанкДляРасчетовГоловнойКонтрагент Тогда
					ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#BankForSettlementsOfTheMainCounterparty#",
						СВИФТБанкаДляРасчетовГоловнойКонтрагент + ", " + НаименованиеБанкаДляРасчетовГоловнойКонтрагент
						+ ", " + АдресБанкаДляРасчетовГоловнойКонтрагент);
					ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация,
						"#CorrespondentAccountOfTheBankForTheCalculationsOfTheHeadContractor#", КоррСчетБанкаДляРасчетовГоловнойКонтрагент);
				Иначе
					ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#BankForSettlementsOfTheMainCounterparty#", "");
					ИтоговаяИнформация = СтрЗаменить(
						ИтоговаяИнформация, "#CorrespondentAccountOfTheBankForTheCalculationsOfTheHeadContractor#", "");
				КонецЕсли;
			КонецЕсли;
			ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#BAHC#", "")
		Иначе
			ОбщегоНазначенияУТКлиентСервер.УдалитьИзСтрокиПодстроку(ИтоговаяИнформация, "#BAHC#");
		КонецЕсли;
		
	Иначе
		ОбщегоНазначенияУТКлиентСервер.УдалитьИзСтрокиПодстроку(ИтоговаяИнформация, "#DHC#");
	КонецЕсли;
	
	Если ДействиеПоРезультатамНайдено <> 0 И ЭтоКомпания = 0 И УказатьДанныеКонтактногоЛица Тогда
		ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#FULLNAME#",ФИО_ОднойСтрокой(ФамилияКЛ, ИмяКЛ, ОтчествоКЛ));
		ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#EmailCP#" ,АдресЭПКЛ);
		ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#PhoneCP#", ТелефонКЛ);
		ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#MobilePhoneCP#", МобильныйТелефонКЛ);
		Если ПолучитьФункциональнуюОпцию("ИспользоватьРолиКонтактныхЛицПартнеров") Тогда
			ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#Role#", Роль);
			ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#RCP#", "");
		Иначе
			ОбщегоНазначенияУТКлиентСервер.УдалитьИзСтрокиПодстроку(ИтоговаяИнформация, "#RCP#");
		КонецЕсли;
		ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#DCP#", "");
	Иначе
		ОбщегоНазначенияУТКлиентСервер.УдалитьИзСтрокиПодстроку(ИтоговаяИнформация, "#DCP#");
	КонецЕсли;
	
	ВидимостьСтраныРегистрации = (ИспользуютсяТолькоПартнеры ИЛИ УказыватьЮридическиеРеквизиты) И ВидКомпании = 1;
	Если ВидимостьСтраныРегистрации Тогда
		ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#CountryOfResidence#",    СтранаРегистрации);
		ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#RegistrationNumber#", РегистрационныйНомер);
		ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#НалоговыйНомер#",       НалоговыйНомер);
		ИтоговаяИнформация = СтрЗаменить(ИтоговаяИнформация, "#NRI#", "");
	Иначе
		ОбщегоНазначенияУТКлиентСервер.УдалитьИзСтрокиПодстроку(ИтоговаяИнформация, "#NRI#");
	КонецЕсли;
	ПартнерыИКонтрагентыЛокализация.ЗаполнитьИтоговуюИнформацию(ИтоговаяИнформация, ЭтотОбъект);
	
	НачалоТегHTML = СтрНайти(ИтоговаяИнформация, "<html");
	Если НачалоТегHTML <> 0 Тогда
		ИтоговаяИнформация = Прав(ИтоговаяИнформация, СтрДлина(ИтоговаяИнформация) - НачалоТегHTML + 1);
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Функция ПолучитьСтрокуТипОтношений()
	
	СтрокаТипОтношений = ?(Клиент,НСтр("ru = 'Клиент'"),"") + ?(Поставщик, НСтр("ru = ', Поставщик'"),"") + ?(Перевозчик, НСтр("ru = ', Перевозчик'"),"") + ?(Конкурент, НСтр("ru = ', Конкурент'"),"") + ?(ПрочиеОтношения, НСтр("ru = ', Прочие отношения'"),"");
	Если Лев(СтрокаТипОтношений, 2) = ", " Тогда
		СтрокаТипОтношений = Прав(СтрокаТипОтношений, СтрДлина(СтрокаТипОтношений)-2);
	КонецЕсли;
	
	Возврат СтрокаТипОтношений;
	
КонецФункции

&НаСервере
Функция НаименованиеПартнера()
	
	Если ЭтоКомпания = 0 Тогда
		Возврат ?(ИспользуютсяТолькоПартнеры, ПолноеЮридическоеНаименование, ПолноеНаименование)
	Иначе
		Возврат ФИО_ОднойСтрокой(ФамилияПартнера, ИмяПартнера, ОтчествоПартнера);
	КонецЕсли;
	
КонецФункции

&НаСервере
Функция НаименованиеКонтрагента()
	
	Если ЭтоКомпания = 0 Тогда
		Возврат НаименованиеКонтрагента;
	Иначе
		Возврат ФИО_ОднойСтрокой(ФамилияПартнера, ИмяПартнера, ОтчествоПартнера);
	КонецЕсли;
	
КонецФункции


&НаСервере
Функция ПредставлениеТипаЮрФизЛица()
	
	Если ЭтоКомпания = 0 Тогда
		Если ВидКомпании = 0 Тогда
			Возврат НСтр("ru='Юридическое лицо'");
		ИначеЕсли ВидКомпании = 1 Тогда
			Возврат НСтр("ru='Юридическое лицо(за пределами РФ)'");
		ИначеЕсли ВидКомпании = 2 Тогда
			Возврат НСтр("ru='Индивидуальный предприниматель(ПБОЮЛ)'");
		Иначе
			Возврат НСтр("ru='Обособленное подразделение'");
		КонецЕсли;
	Иначе
		Возврат НСтр("ru='Физическое лицо'");
	КонецЕсли;
	
КонецФункции

&НаКлиентеНаСервереБезКонтекста
Функция ТипЮрФизЛицаПартнера(ЭтоКомпания)
	
	Если ЭтоКомпания = 0 Тогда
		Возврат ПредопределенноеЗначение("Перечисление.КомпанияЧастноеЛицо.Компания");
	Иначе
		Возврат ПредопределенноеЗначение("Перечисление.КомпанияЧастноеЛицо.ЧастноеЛицо");
	КонецЕсли;
	
КонецФункции

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

#Область УправлениеВидимостьюИДоступностьюЭлементовФормы

&НаКлиенте
Процедура УправлениеСтраницамиПодвал()
	
	ПредыдущаяСтраницаПодвал = Элементы.СтраницыПодвал.ТекущаяСтраница;
	
	Если Элементы.СтраницыПомощника.ТекущаяСтраница = Элементы.СтраницаПервичнаяИнформация Тогда
		Элементы.СтраницыПодвал.ТекущаяСтраница = Элементы.СтраницаКнопкиДалее;
	ИначеЕсли Элементы.СтраницыПомощника.ТекущаяСтраница = Элементы.СтраницаНайдено Тогда
		Элементы.СтраницыПодвал.ТекущаяСтраница =
			?(ДействиеПоРезультатамНайдено = 0 И (ИспользуютсяТолькоПартнеры Или ДействиеСКонтрагентом = 0),
			Элементы.СтраницаКнопкиГотово,
			Элементы.СтраницаКнопкиНазадДалее);
	ИначеЕсли Элементы.СтраницыПомощника.ТекущаяСтраница = Элементы.СтраницаФинальная Тогда
		Элементы.СтраницыПодвал.ТекущаяСтраница = Элементы.СтраницаКнопкиСоздать;
	Иначе
		Элементы.СтраницыПодвал.ТекущаяСтраница = Элементы.СтраницаКнопкиНазадДалее;
	КонецЕсли;
	
	Если ПредыдущаяСтраницаПодвал <> Элементы.СтраницыПодвал.ТекущаяСтраница Тогда
		Если Элементы.СтраницыПодвал.ТекущаяСтраница = Элементы.СтраницаКнопкиДалее Тогда
			Элементы.Далее.КнопкаПоУмолчанию = Истина;
		ИначеЕсли Элементы.СтраницыПодвал.ТекущаяСтраница = Элементы.СтраницаКнопкиГотово Тогда
			Элементы.Далее1.КнопкаПоУмолчанию = Истина;
		ИначеЕсли Элементы.СтраницыПодвал.ТекущаяСтраница = Элементы.СтраницаКнопкиСоздать Тогда
			Элементы.Далее2.КнопкаПоУмолчанию = Истина;
		ИначеЕсли Элементы.СтраницыПодвал.ТекущаяСтраница = Элементы.СтраницаКнопкиНазадДалее Тогда
			Элементы.Далее3.КнопкаПоУмолчанию = Истина;
		КонецЕсли;
	КонецЕсли;
		
КонецПроцедуры

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

&НаСервере
Процедура УправлениеДоступностьюПервичнаяИнформация()
	
	Элементы.ВидЮрЛицо.Доступность = УказыватьЮридическиеРеквизиты;

	// Юридические реквизиты
	Если НЕ (НаОснованииКонтрагента Или НаОснованииОбособленногоКонтрагента) Тогда
		Если ЭтоКомпания = 0 Тогда
			ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ГруппаРегистрационныеДанные",
				"Доступность", УказыватьЮридическиеРеквизиты, Истина);
			Если УказыватьЮридическиеРеквизиты Тогда
				ПартнерыИКонтрагентыЛокализацияКлиентСервер.УправлениеЭлементамиЮридическихРеквизитов(ЭтотОбъект);
			КонецЕсли;
		Иначе
			ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ГруппаДанныеКонтрагентаЧастноеЛицо",
				"Доступность", УказыватьЮридическиеРеквизиты, Истина);
			Если УказыватьЮридическиеРеквизиты Тогда
				УстановитьДоступностьДанныхДокументаФизлица(ЭтотОбъект);
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
	
	// Контактное лицо
	УстановитьДоступностьДанныхКонтактногоЛица(ЭтотОбъект);
	
	// Страна регистрация видна только в том случае, когда контрагент не является резидентом РФ. 
	// В противном случае - и для физ лиц и для ИП и для юр лиц страна регистрации всегда Россия.
	Элементы.ГруппаСтраницыДанныхРегистрацииКонтрагента.ТекущаяСтраница = 
		?((ИспользуютсяТолькоПартнеры ИЛИ УказыватьЮридическиеРеквизиты) И ВидКомпании = 1, 
		Элементы.ГруппаСтраницаИностраннойРегистрации, Элементы.ЛокализацияГруппаСтраницаРоссийскогоКонтрагента);
		
	Элементы.АдресЭППартнера.АвтоВыборНезаполненного   = АдресЭППартнераОбязателен;
	Элементы.ТелефонПартнера.АвтоОтметкаНезаполненного = ТелефонПартнераОбязателен;
	
	Элементы.АдресЭППартнераФизЛицо.АвтоВыборНезаполненного   = АдресЭППартнераОбязателен;
	Элементы.ТелефонПартнераФизЛицо.АвтоОтметкаНезаполненного = ТелефонПартнераОбязателен;
	
	Элементы.ТелефонКЛ.АвтоОтметкаНезаполненного          = ТелефонКонтактногоЛицаОбязателен;
	Элементы.АдресЭПКЛ.АвтоОтметкаНезаполненного          = АдресЭПКонтактногоЛицаОбязателен;
	Элементы.МобильныйТелефонКЛ.АвтоОтметкаНезаполненного = МобильныйТелефонКонтактногоЛицаОбязателен;
	ПартнерыИКонтрагентыЛокализацияКлиентСервер.УправлениеДоступностьюКонтрагент(ЭтотОбъект);
КонецПроцедуры

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

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

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступностьДанныхКонтактногоЛица(Форма)
	
	СамообслуживаниеКлиентСервер.УправлениеДоступностьюГруппаКонтактногоЛицаПомощникНового(Форма);
	
КонецПроцедуры

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

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

&НаКлиентеНаСервереБезКонтекста
Процедура УправлениеЭлементамиПервичногоИнтереса(Форма)
	
	ЭтоСозданиеКонтрагентаБезРегистрацииПартнера = Форма.ДействиеСКонтрагентом = 1 
	                                               И Форма.ДействиеПоРезультатамНайдено = 0;
	
	Элементы = Форма.Элементы;
	ТолькоПросмотрЭлементов = Не ЗначениеЗаполнено(Форма.КаналПервичногоИнтереса);
	
	Элементы.ИсточникПервичногоИнтереса.ТолькоПросмотр = ТолькоПросмотрЭлементов;
	Элементы.ИсточникПервичногоИнтересаЧастноеЛицо.ТолькоПросмотр = ТолькоПросмотрЭлементов;
	
	Элементы.КаналПервичногоИнтереса.Видимость               = Не ЭтоСозданиеКонтрагентаБезРегистрацииПартнера;
	Элементы.ИсточникПервичногоИнтереса.Видимость            = Не ЭтоСозданиеКонтрагентаБезРегистрацииПартнера;
	Элементы.ИсточникПервичногоИнтересаЧастноеЛицо.Видимость = Не ЭтоСозданиеКонтрагентаБезРегистрацииПартнера;

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

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

	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Форма.Элементы,
		"ОтступРеквизитыБанка" + Постфикс, "Ширина", ?(Форма["ИспользуетсяБанкДляРасчетов" + Постфикс], 12, 8));

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

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

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

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

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

#Область ПоискПоПервичнойИнформации

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

&НаСервере
Функция ПодзапросПоАдресуЭлектроннойПочты()

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

&НаСервере
Функция ПодзапросПоНомеруТелефона(МассивПредставленийТелефона)
	
	//партнеры
	
	ТекстЗапроса = "
	|ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	ПартнерыКонтактнаяИнформация.Ссылка КАК Партнер,
	|	ПартнерыКонтактнаяИнформация.Ссылка КАК НайденоПоСсылка,
	|	&СтрокаТелефон                      КАК НайденоВРеквизите,
	|	ПартнерыКонтактнаяИнформация.Вид    КАК ВидКонтакта
	|ПОМЕСТИТЬ НайденоПоТелефону
	|ИЗ
	|	Справочник.Партнеры.КонтактнаяИнформация КАК ПартнерыКонтактнаяИнформация
	|ГДЕ
	|	(ПартнерыКонтактнаяИнформация.НомерТелефонаБезКодов В(&МассивНомеровТелефона)"; //@Query-part
		
	Для инд = 0 По  МассивПредставленийТелефона.Количество()-1 Цикл
		
		ТекстЗапроса = ТекстЗапроса + " ИЛИ ПартнерыКонтактнаяИнформация.Представление ПОДОБНО &ПредставлениеТелефона" + Строка(инд) + " "  ; 
		
	КонецЦикла;
	
	ТекстЗапроса = ТекстЗапроса + ")
	|	И (ПартнерыКонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон)
	|			ИЛИ ПартнерыКонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Факс))";
	
	Если НаОснованииКонтрагента Тогда
		
		ТекстЗапроса = ТекстЗапроса + " И (НЕ ПартнерыКонтактнаяИнформация.Ссылка.Предопределенный)";
		
	КонецЕсли;
	
	// контактные лица
	
	ТекстЗапроса = ТекстЗапроса + "
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ 
	|	КонтактныеЛицаПартнеровКонтактнаяИнформация.Ссылка.Владелец,
	|	КонтактныеЛицаПартнеровКонтактнаяИнформация.Ссылка,
	|	&СтрокаТелефон,
	|	КонтактныеЛицаПартнеровКонтактнаяИнформация.Вид
	|ИЗ
	|	Справочник.КонтактныеЛицаПартнеров.КонтактнаяИнформация КАК КонтактныеЛицаПартнеровКонтактнаяИнформация
	|ГДЕ
	|	(КонтактныеЛицаПартнеровКонтактнаяИнформация.НомерТелефонаБезКодов В (&МассивНомеровТелефона)"; //@Query-part
		
	Для инд = 0 По  МассивПредставленийТелефона.Количество()-1 Цикл
		
		ТекстЗапроса = ТекстЗапроса + " ИЛИ КонтактныеЛицаПартнеровКонтактнаяИнформация.Представление ПОДОБНО &ПредставлениеТелефона" + Строка(инд) + " "  ; 
		
	КонецЦикла;
	
	ТекстЗапроса = ТекстЗапроса + ")
	|	И (КонтактныеЛицаПартнеровКонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон)
	|			ИЛИ КонтактныеЛицаПартнеровКонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Факс))";
	
	Если НаОснованииКонтрагента Тогда
		
		ТекстЗапроса = ТекстЗапроса + " И (НЕ КонтактныеЛицаПартнеровКонтактнаяИнформация.Ссылка.Владелец.Предопределенный)";
		
	КонецЕсли;
	
	// физические лица
	
	ТекстЗапроса = ТекстЗапроса + "
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|"; 
	
	Возврат ТекстЗапроса;
	
КонецФункции 

&НаСервере
Функция ПодзапросПоРегистрационномуНомеруВСтранеРегистрации()
	
	ТекстУсловияПоНеизвестномуПартнеру = " И (НЕ Контрагенты.Партнер.Предопределенный)";
	
	ТекстЗапроса = "
	|ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	Контрагенты.Партнер КАК Партнер,
	|	Контрагенты.Ссылка  КАК НайденоПоСсылка,
	|	&СтрокаРегистрационныйНомер КАК НайденоВРеквизите
	|ПОМЕСТИТЬ КонтрагентыПоРегистрационномуНомеру
	|ИЗ
	|	Справочник.Контрагенты КАК Контрагенты
	|ГДЕ
	|	Контрагенты.РегистрационныйНомер = &РегистрационныйНомер И
	|	Контрагенты.Партнер <> ЗНАЧЕНИЕ(Справочник.Партнеры.ПустаяСсылка) И &УсловиеПоНеизвестномуПартнеру
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////";
	
	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "И &УсловиеПоНеизвестномуПартнеру", ?(НаОснованииКонтрагента, ТекстУсловияПоНеизвестномуПартнеру,""));
	
	Возврат ТекстЗапроса;
	
КонецФункции

&НаСервере
Процедура ДополнитьЗапросПоИНН(ТекстЗапроса, НаОснованииКонтрагента)
	
	ТекстУсловияПоНеизвестномуПартнеру = " И (НЕ Контрагенты.Партнер.Предопределенный)";
	
	ТекстЗапроса = ТекстЗапроса + "
	|ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	Контрагенты.Партнер КАК Партнер,
	|	Контрагенты.Ссылка  КАК НайденоПоСсылка,
	|	&СтрокаИНН КАК      НайденоВРеквизите
	|ПОМЕСТИТЬ КонтрагентыПоИНН
	|ИЗ
	|	Справочник.Контрагенты КАК Контрагенты
	|ГДЕ
	|	Контрагенты.ИНН = &ИНН И
	|	Контрагенты.Партнер <> ЗНАЧЕНИЕ(Справочник.Партнеры.ПустаяСсылка) " + ?(НаОснованииКонтрагента, ТекстУсловияПоНеизвестномуПартнеру,"") + "
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////";
	
КонецПроцедуры

&НаСервере
Функция ПодзапросПоНалоговомуНомеруВСтранеРегистрации()
	
	ТекстУсловияПоНеизвестномуПартнеру = " И (НЕ Контрагенты.Партнер.Предопределенный)";
	
	ТекстЗапроса = "
	|ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	Контрагенты.Партнер   КАК Партнер,
	|	Контрагенты.Ссылка    КАК НайденоПоСсылка,
	|	&СтрокаНалоговыйНомер КАК НайденоВРеквизите
	|ПОМЕСТИТЬ КонтрагентыПоНалоговомуНомеру
	|ИЗ
	|	Справочник.Контрагенты КАК Контрагенты
	|ГДЕ
	|	Контрагенты.НалоговыйНомер = &НалоговыйНомер И
	|	Контрагенты.Партнер <> ЗНАЧЕНИЕ(Справочник.Партнеры.ПустаяСсылка) И &УсловиеПоНеизвестномуПартнеру
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////";
	
	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "И &УсловиеПоНеизвестномуПартнеру", ?(НаОснованииКонтрагента, ТекстУсловияПоНеизвестномуПартнеру,""));
	
	Возврат ТекстЗапроса;
	
КонецФункции

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

&НаСервере
Функция ПодзапросПоФИО(Запрос)
	
	МассивФИО = Новый Массив;
	Если НЕ ПустаяСтрока(ФамилияПартнера)
		И ЭтоКомпания = 1 Тогда
		ДобавитьВМассивФИО(МассивФИО, ФамилияПартнера, ИмяПартнера, ОтчествоПартнера);
	КонецЕсли;
	Если НЕ ПустаяСтрока(ФамилияКЛ) Тогда
		ДобавитьВМассивФИО(МассивФИО, ФамилияКЛ, ИмяКЛ, ОтчествоКЛ);
	КонецЕсли;
	
	ПодзапросПоКонтактнымЛицам = "";
	ТекстУсловияПоНеизвестномуПартнеру = " И (НЕ КонтактныеЛицаПартнеров.Владелец.Предопределенный)";
	
	Для Инд = 1 По МассивФИО.Количество() Цикл
	
		ПодзапросПустой = ПустаяСтрока(ПодзапросПоКонтактнымЛицам);
		
		Если Не ПодзапросПустой Тогда
			ПодзапросПоКонтактнымЛицам = ПодзапросПоКонтактнымЛицам + "
			|ОБЪЕДИНИТЬ ВСЕ"
		КонецЕсли;
		
		ПодзапросПоКонтактнымЛицам = ПодзапросПоКонтактнымЛицам + "
		|
		|ВЫБРАТЬ &ТекстРазрешенные,
		|	КонтактныеЛицаПартнеров.Владелец КАК Партнер,
		|	КонтактныеЛицаПартнеров.Ссылка   КАК НайденоПоСсылка,
		|	&СтрокаНаименование              КАК НайденоВРеквизите
		|	,&ТекстПоместить
		|ИЗ
		|	Справочник.КонтактныеЛицаПартнеров КАК КонтактныеЛицаПартнеров
		|ГДЕ
		|	КонтактныеЛицаПартнеров.Наименование ПОДОБНО ФИО_X И &УсловиеПоНеизвестномуПартнеру
		|";
		
		ПодзапросПоКонтактнымЛицам = СтрЗаменить(ПодзапросПоКонтактнымЛицам, "&ТекстРазрешенные,", ?(Инд = 1,"РАЗРЕШЕННЫЕ",""));
		ПодзапросПоКонтактнымЛицам = СтрЗаменить(ПодзапросПоКонтактнымЛицам, ",&ТекстПоместить", ?(ПодзапросПустой,"ПОМЕСТИТЬ НайденоПоФИОКонтактныхЛиц",""));
		ПодзапросПоКонтактнымЛицам = СтрЗаменить(ПодзапросПоКонтактнымЛицам, "ФИО_X", "&ФИО_" + Строка(Инд));
		ПодзапросПоКонтактнымЛицам = СтрЗаменить(ПодзапросПоКонтактнымЛицам, "И &УсловиеПоНеизвестномуПартнеру", ?(НаОснованииКонтрагента, ТекстУсловияПоНеизвестномуПартнеру,""));
		
		Запрос.УстановитьПараметр("ФИО_" + Строка(Инд), МассивФИО[Инд-1]+"%")

	КонецЦикла;
	
	ПодзапросПоКонтактнымЛицам = ПодзапросПоКонтактнымЛицам + "
	|;
	|////////////////////////////////////////////////////////////////////////////////";
	
	Возврат ПодзапросПоКонтактнымЛицам ;
	
КонецФункции

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

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

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

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

&НаСервере
Процедура ПоместитьВременныеТаблицыРеквизитовДанных(МенеджерВременныхТаблиц, ПредставленияРеквизитов, СтруктураПоиска, РеквизитыИнформацииБезПоиска)
	
	РеквизитыПартнера = Новый ТаблицаЗначений;
	РеквизитыПартнера.Колонки.Добавить("Реквизит",     Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(100)));
	РеквизитыПартнера.Колонки.Добавить("Значение",     Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(300)));
	РеквизитыПартнера.Колонки.Добавить("Порядок",      Новый ОписаниеТипов("Число"));
	РеквизитыПартнера.Колонки.Добавить("Существенный", Новый ОписаниеТипов("Булево"));
	
	РеквизитыКонтрагента = РеквизитыПартнера.Скопировать();
	РеквизитыКонтактногоЛица = РеквизитыПартнера.Скопировать();
	
	// Реквизиты партнера
	
	Если Не ИспользуютсяТолькоПартнеры Тогда
		РеквизитыИнформацииБезПоиска.Добавить(ПредставленияРеквизитов.СтрокаВидПартнера);
		ДобавитьСтрокуВТаблицуРеквизитовДанных(РеквизитыПартнера, ПредставленияРеквизитов.СтрокаВидПартнера,
			Строка(ТипЮрФизЛицаПартнера(ЭтоКомпания)), 1, Истина);
	КонецЕсли;
	
	НаименованиеПоиск = НаименованиеПартнера();
	
	ДобавитьСтрокуВТаблицуРеквизитовДанных(РеквизитыПартнера, ПредставленияРеквизитов.СтрокаНаименованиеПолное,
		НаименованиеПоиск, 2);
	ДобавитьСтрокуВТаблицуРеквизитовДанных(РеквизитыПартнера, ПредставленияРеквизитов.СтрокаНаименование,
		НаименованиеПоиск, 3);
	
	Если СтруктураПоиска.АдресЭП Тогда
		ДобавитьСтрокуВТаблицуРеквизитовДанных(РеквизитыПартнера, ПредставленияРеквизитов.СтрокаEmail,
			?(ЭтоКомпания = 0, АдресЭППартнера, АдресЭППартнераФизЛицо), 4);
	КонецЕсли;
	
	Если СтруктураПоиска.НомерТелефона Тогда
		ДобавитьСтрокуВТаблицуРеквизитовДанных(РеквизитыПартнера, ПредставленияРеквизитов.СтрокаТелефон,
			?(ЭтоКомпания = 0, ТелефонПартнера, ТелефонПартнераФизЛицо), 5);
	КонецЕсли;
	
	// Реквизиты контрагента
	
	РеквизитыИнформацииБезПоиска.Добавить(ПредставленияРеквизитов.СтрокаВидКонтрагента);
	ДобавитьСтрокуВТаблицуРеквизитовДанных(РеквизитыКонтрагента, ПредставленияРеквизитов.СтрокаВидКонтрагента,
		?(ИспользуютсяТолькоПартнеры Или УказыватьЮридическиеРеквизиты, ПартнерыИКонтрагентыЛокализацияКлиентСервер.ТипЮрФизЛицаКонтрагента(ЭтоКомпания, ВидКомпании), ""), 1, Истина);
	
	Если Не ИспользуютсяТолькоПартнеры Тогда
		ДобавитьСтрокуВТаблицуРеквизитовДанных(РеквизитыКонтрагента, ПредставленияРеквизитов.СтрокаНаименованиеПолное,
			?(СтруктураПоиска.НаименованиеКонтрагента, ПолноеЮридическоеНаименование, ""), 2);
		ДобавитьСтрокуВТаблицуРеквизитовДанных(РеквизитыКонтрагента, ПредставленияРеквизитов.СтрокаНаименование,
			?(СтруктураПоиска.НаименованиеКонтрагента, ПолноеЮридическоеНаименование, ""), 3);
	КонецЕсли;
	
	Если СтруктураПоиска.ДокументКонтрагента Тогда
		ДобавитьСтрокуВТаблицуРеквизитовДанных(РеквизитыКонтрагента, ПредставленияРеквизитов.СтрокаДанныеДокумента,
			ПредставлениеДокументаФизическогоЛица(), 7);
	КонецЕсли;
	
	Если СтруктураПоиска.РегистрационныйНомер Тогда
		ДобавитьСтрокуВТаблицуРеквизитовДанных(РеквизитыКонтрагента, ПредставленияРеквизитов.СтрокаРегистрационныйНомер,
			РегистрационныйНомер, 8);
	КонецЕсли;
		
	Если СтруктураПоиска.НалоговыйНомер Тогда
		ДобавитьСтрокуВТаблицуРеквизитовДанных(РеквизитыКонтрагента, ПредставленияРеквизитов.СтрокаНалоговыйНомер,
			НалоговыйНомер, 8);
	КонецЕсли;
		
	// Реквизиты контактного лица
	
	Если СтруктураПоиска.ФИО Тогда
		Если ЭтоКомпания = 0 Тогда
			ТекущееФИО = ФИО_ОднойСтрокой(ФамилияКЛ, ИмяКЛ, ОтчествоКЛ);
		Иначе
			ТекущееФИО = ФИО_ОднойСтрокой(ФамилияПартнера, ИмяПартнера, ОтчествоПартнера);
		КонецЕсли;
		ДобавитьСтрокуВТаблицуРеквизитовДанных(РеквизитыКонтактногоЛица, ПредставленияРеквизитов.СтрокаНаименование, ТекущееФИО, 1);
	КонецЕсли;
	
	Если СтруктураПоиска.АдресЭП Тогда
		ДобавитьСтрокуВТаблицуРеквизитовДанных(РеквизитыКонтактногоЛица, ПредставленияРеквизитов.СтрокаEmail,
			?(ЭтоКомпания = 0 И УказатьДанныеКонтактногоЛица, АдресЭПКЛ, ""), 2);
	КонецЕсли;
	
	Если СтруктураПоиска.НомерТелефона Тогда
		ДобавитьСтрокуВТаблицуРеквизитовДанных(РеквизитыКонтактногоЛица, ПредставленияРеквизитов.СтрокаТелефон,
			?(ЭтоКомпания = 0 И УказатьДанныеКонтактногоЛица, ?(ПустаяСтрока(ТелефонКЛ), МобильныйТелефонКЛ, ТелефонКЛ), ""), 2);
	КонецЕсли;
	ПартнерыИКонтрагентыЛокализация.ПоместитьВременныеТаблицыРеквизитовКонтрагента(ПредставленияРеквизитов, СтруктураПоиска, РеквизитыИнформацииБезПоиска, РеквизитыКонтрагента, ЭтотОбъект); 

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

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

&НаСервере
Функция МассивАдресовЭлектроннойПочтыДляПоиска()

	МассивАдресовЭП = Новый Массив;
	Если ЭтоКомпания = 0 И НЕ ПустаяСтрока(АдресЭППартнера) Тогда
		МассивАдресовЭП.Добавить(АдресЭППартнера);
	КонецЕсли;
	Если ЭтоКомпания = 0 И УказатьДанныеКонтактногоЛица И НЕ ПустаяСтрока(АдресЭПКЛ) Тогда
		МассивАдресовЭП.Добавить(АдресЭПКЛ);
	КонецЕсли;
	Если ЭтоКомпания = 1 И НЕ ПустаяСтрока(АдресЭППартнераФизЛицо) Тогда
		МассивАдресовЭП.Добавить(АдресЭППартнераФизЛицо);
	КонецЕсли;
	
	Возврат МассивАдресовЭП;

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

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

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

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

&НаСервереБезКонтекста
Функция УбратьРазделителиВНомерТелефона(Знач НомерТелефона)
	
	Поз = СтрНайти(НомерТелефона, ",");
	Если Поз <> 0 Тогда
		НомерТелефона = Лев(НомерТелефона, Поз-1);
	КонецЕсли;
	
	НомерТелефона = СтрЗаменить(НомерТелефона, "-", "");
	НомерТелефона = СтрЗаменить(НомерТелефона, " ", "");
	НомерТелефона = СтрЗаменить(НомерТелефона, "+", "");
	
	Возврат НомерТелефона;
	
КонецФункции

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

&НаСервере
Процедура ЗаполнитьРезультатыНайдено(РезультатЗапроса, ПредставленияРеквизитов, РеквизитыИнформацииБезПоиска)
	
	ТаблицаНайдено.Очистить();
	ЭлементыДереваДанных = ДеревоДанныхНайденныхПартнеров.ПолучитьЭлементы();
	ЭлементыДереваДанных.Очистить();
	
	КоличествоПакетов = РезультатЗапроса.Количество();
	
	ТаблицаПартнеры        = РезультатЗапроса[КоличествоПакетов -2].Выгрузить();
	ВыборкаДанныеПартнеров = РезультатЗапроса[КоличествоПакетов -1].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
	
	Если ТаблицаПартнеры.Количество() = 0 Тогда
		ДействиеПоРезультатамНайдено = 2;
		ДействиеСКонтрагентом = ?(УказыватьЮридическиеРеквизиты, 1, 0);
		Возврат;
	КонецЕсли;
	
	Пока ВыборкаДанныеПартнеров.Следующий() Цикл
		
		Если Не ЗначениеЗаполнено(ВыборкаДанныеПартнеров.Партнер) Тогда
			Продолжить;
		КонецЕсли;
		
		УзелПартнер = ЭлементыДереваДанных.Добавить();
		УзелПартнер.Реквизит = НСтр("ru = 'Партнер'");
		УзелПартнер.НайденоПоСсылка = ВыборкаДанныеПартнеров.Партнер;
		
		СтрокаТаблицыПартнеры = ТаблицаПартнеры.Найти(ВыборкаДанныеПартнеров.Партнер, "Партнер");
		
		СтрокаТаблицыНайдено = ТаблицаНайдено.Добавить();
		ЗаполнитьЗначенияСвойств(СтрокаТаблицыНайдено, СтрокаТаблицыПартнеры);
		Если СтрокаТаблицыНайдено.КоличествоНайденныхАналогов > 1 Тогда
			СтрокаТаблицыНайдено.ПредставлениеПартнер = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
				НСтр("ru = '%1 (Совпадений - %2)'"),
				Строка(СтрокаТаблицыПартнеры.Партнер),
				СтрокаТаблицыПартнеры.КоличествоНайденныхАналогов);
		Иначе
			СтрокаТаблицыНайдено.ПредставлениеПартнер = СтрокаТаблицыПартнеры.Представление;
		КонецЕсли;
		
		СтрокаТаблицыНайдено.ИдентификаторДереваДанных = УзелПартнер.ПолучитьИдентификатор();
		
		ЭлементыУзлаПартнер = УзелПартнер.ПолучитьЭлементы();
		
		УзелИнформации = Неопределено;
		ПропуститьУзелКонтрагента = Ложь;
		
		ВыборкаПодчиненнойСсылки = ВыборкаДанныеПартнеров.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
		Пока ВыборкаПодчиненнойСсылки.Следующий() Цикл
			
			ТипИнформации = ТипЗнч(ВыборкаПодчиненнойСсылки.НайденоПоСсылка);
			
			Если ИспользуютсяТолькоПартнеры И ТипИнформации = Тип("СправочникСсылка.Контрагенты") Тогда
				Если ПропуститьУзелКонтрагента Тогда
					Продолжить;
				КонецЕсли;
				ПропуститьУзелКонтрагента = Истина;
			Иначе
				
				УзелИнформации = ЭлементыУзлаПартнер.Добавить();
				УзелИнформации.НайденоПоСсылка = ВыборкаПодчиненнойСсылки.НайденоПоСсылка;
				
				Если ТипИнформации = Тип("СправочникСсылка.КонтактныеЛицаПартнеров") Тогда
					УзелИнформации.Реквизит = НСтр("ru = 'Информация о контактном лице'");
				ИначеЕсли ТипИнформации = Тип("СправочникСсылка.Контрагенты") Или ИспользуютсяТолькоПартнеры Тогда
					УзелИнформации.Реквизит = НСтр("ru = 'Информация о контрагенте'");
				Иначе
					УзелИнформации.Реквизит = НСтр("ru = 'Информация о партнере'");
				КонецЕсли
				
			КонецЕсли;
			
			ЭлементыУзлаИнформации = УзелИнформации.ПолучитьЭлементы();
			
			ВыборкаПодчиненныхДанных = ВыборкаПодчиненнойСсылки.Выбрать();
			Пока ВыборкаПодчиненныхДанных.Следующий() Цикл
				
				УзелДанных = ЭлементыУзлаИнформации.Добавить();
				ЗаполнитьЗначенияСвойств(УзелДанных, ВыборкаПодчиненныхДанных);
				
				Если ВыборкаПодчиненныхДанных.Совпадение Тогда
					УзелДанных.Совпадение = Истина;
				ИначеЕсли РеквизитыИнформацииБезПоиска.НайтиПоЗначению(ВыборкаПодчиненныхДанных.Реквизит) <> Неопределено Тогда
					
					Если ВыборкаПодчиненныхДанных.ЗначениеНайденного <> ВыборкаПодчиненныхДанных.ЗначениеСоздаваемого
						 И ЗначениеЗаполнено(ВыборкаПодчиненныхДанных.ЗначениеСоздаваемого) Тогда
						УзелДанных.Различие = ВыборкаПодчиненныхДанных.Существенный;
						СтрокаТаблицыНайдено.Различие = Макс(СтрокаТаблицыНайдено.Различие, УзелДанных.Различие);
					КонецЕсли;
					Продолжить;
					
				КонецЕсли;
				УзелДанных.Различие = Не УзелДанных.Совпадение И ВыборкаПодчиненныхДанных.Существенный;
				СтрокаТаблицыНайдено.Различие = Макс(СтрокаТаблицыНайдено.Различие, УзелДанных.Различие);
				
			КонецЦикла;
			
		КонецЦикла;
		
	КонецЦикла;
	
	ТаблицаНайдено.Сортировать("КоличествоНайденныхАналогов УБЫВ, ПредставлениеПартнер");
	
КонецПроцедуры

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

#Область РаботаСКонтактнойИнформацией

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

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

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

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

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

&НаСервере
&НаСервере
Процедура ОбработатьЭлементыРедактированияКонтактнойИнформации()

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

&НаКлиенте
Процедура ОбработкаСобытияЭлементаКИТелефон(Элемент, ВидКонтактнойИнформации, ИмяРеквизитаПредставление, ИмяРеквизитаЗначенияПолей, Событие)
	
	Если Событие = "НачалоВыбора" Тогда
		Если ЭтотОбъект[ИмяРеквизитаПредставление] <> Элемент.ТекстРедактирования Тогда
			ЭтотОбъект[ИмяРеквизитаПредставление] = Элемент.ТекстРедактирования;
			ЗначенияПолейКонтактнойИнформацииСервер(ЭтотОбъект[ИмяРеквизитаПредставление],
			                                        ЭтотОбъект[ИмяРеквизитаЗначенияПолей],
			                                        ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Телефон"));
		КонецЕсли;
		
	ИначеЕсли Событие = "Очистка" Тогда
		
		ЭтотОбъект[ИмяРеквизитаПредставление] = "";
		ЭтотОбъект[ИмяРеквизитаЗначенияПолей] = "";
		УдалитьЗначениеКонтактнойИнформации(ИмяРеквизитаЗначенияПолей);
		
	КонецЕсли;
	
	Если Событие = "НачалоВыбора" Тогда
		ОткрытьФормуВыбораКонтактнойИнформации(ВидКонтактнойИнформации,
		                                       ИмяРеквизитаПредставление,
		                                       ИмяРеквизитаЗначенияПолей);
	ИначеЕсли Событие = "ПриИзменении" Тогда
		
		ЗначенияПолейКонтактнойИнформацииСервер(ЭтотОбъект[ИмяРеквизитаПредставление],
		                                        ЭтотОбъект[ИмяРеквизитаЗначенияПолей],
		                                        ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Телефон"));
		
		УдалитьЗначениеКонтактнойИнформации(ИмяРеквизитаЗначенияПолей);
		
		Если НЕ КорректноВведенНомерТелефона(ЗначенияПолейВСписокЗначений(ЭтотОбъект[ИмяРеквизитаЗначенияПолей])) Тогда
			ОткрытьФормуВыбораКонтактнойИнформации(ВидКонтактнойИнформации,
			                                       ИмяРеквизитаПредставление,
			                                       ИмяРеквизитаЗначенияПолей,
			                                       НСтр("ru='Уточните номер телефона.'"));
		Иначе
			ОтключитьОтметкуНезаполненного();
		КонецЕсли;
	КонецЕсли;
	
КонецПроцедуры

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

&НаСервереБезКонтекста
Процедура ЗначенияПолейКонтактнойИнформацииСервер(Знач Представление, ЗначенияПолей, Знач ВидКонтактнойИнформации)
	ПартнерыИКонтрагенты.ЗначенияПолейКонтактнойИнформации(Представление, ЗначенияПолей, ВидКонтактнойИнформации);
КонецПроцедуры

&НаКлиенте
Функция ЗначениеКонтактнойИнформацииJSON(ИмяРеквизитаЗначенияПолей)
	
	ПараметрыПоиска = Новый Структура;
	
	ПараметрыПоиска.Вставить("ИмяРеквизитаЗначениеПолей", ИмяРеквизитаЗначенияПолей);
	
	НайденныеСтроки = ЗначенияПолейКонтактнойИнформацииJSON.НайтиСтроки(ПараметрыПоиска);
	Если НайденныеСтроки.Количество() = 1 Тогда
		Возврат НайденныеСтроки[0].ЗначениеJSON;
	Иначе
		Возврат ЭтотОбъект[ИмяРеквизитаЗначенияПолей];
	КонецЕсли;
	
КонецФункции

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

&НаКлиенте
Процедура СохранитьВТаблицеЗначениеКонтактнойИнформации(ЗначениеJSON, ИмяРеквизитаЗначенияПолей)

	ПараметрыПоиска = Новый Структура;
	
	ПараметрыПоиска.Вставить("ИмяРеквизитаЗначениеПолей", ИмяРеквизитаЗначенияПолей);
	
	НайденныеСтроки = ЗначенияПолейКонтактнойИнформацииJSON.НайтиСтроки(ПараметрыПоиска);
	Если НайденныеСтроки.Количество() = 0 Тогда
		НайденнаяСтрока = ЗначенияПолейКонтактнойИнформацииJSON.Добавить();
		НайденнаяСтрока.ИмяРеквизитаЗначениеПолей = ИмяРеквизитаЗначенияПолей;
	Иначе
		НайденнаяСтрока = НайденныеСтроки[0];
	КонецЕсли;
	
	НайденнаяСтрока.ЗначениеJSON = ЗначениеJSON;
	
КонецПроцедуры

&НаКлиенте
Процедура УдалитьЗначениеКонтактнойИнформации(ИмяРеквизитаЗначенияПолей) 
	
	ПараметрыПоиска = Новый Структура;
	
	ПараметрыПоиска.Вставить("ИмяРеквизитаЗначениеПолей", ИмяРеквизитаЗначенияПолей);
	
	НайденныеСтроки = ЗначенияПолейКонтактнойИнформацииJSON.НайтиСтроки(ПараметрыПоиска);
	Если НайденныеСтроки.Количество() = 1 Тогда
		ЗначенияПолейКонтактнойИнформацииJSON.Удалить(ЗначенияПолейКонтактнойИнформацииJSON.Индекс(НайденныеСтроки[0]));
	КонецЕсли;
	
КонецПроцедуры

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

#Область РаботаСБанковскимиСчетами

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

&НаКлиенте
Процедура ПриИзмененииIBAN(ЭтоГоловнойКонтрагент=Ложь)

	Постфикс = ?(ЭтоГоловнойКонтрагент, "ГоловнойКонтрагент", "");
	
	ДанныеСчета = ДенежныеСредстваКлиентСервер.НовыеДанныеБанковскогоСчета();
	ДенежныеСредстваКлиентСервер.ЗаполнитьДанныеБанковскогоСчета(ДанныеСчета, ЭтотОбъект, Постфикс);

	Элементы["ГруппаОшибкаВНомереСчета" + Постфикс].Видимость = Ложь;

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

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

&НаСервереБезКонтекста
Функция ПолучитьВалютуПоНомеруСчета(НомерСчета)
	
	Возврат ДенежныеСредстваСерверЛокализация.ПолучитьВалютуПоНомеруСчета(НомерСчета);
	
КонецФункции

&НаСервереБезКонтекста
Функция АвтоНаименованиеБанковскогоСчета(НомерСчета, Банк, Валюта)
	
	СтрокаНаименования = Прав(СокрЛП(НомерСчета), 4)
		+ ?(ЗначениеЗаполнено(Банк), " в " + Строка(Банк), "")
		+ " (" + Строка(Валюта) + ")";
	
	Возврат Лев(СтрокаНаименования, 150);
	
КонецФункции

&НаКлиенте
Процедура ПроверитьIBAN(ЭтоГоловнойКонтрагент)

	Постфикс = ?(ЭтоГоловнойКонтрагент, "ГоловнойКонтрагент", "");
	
	Если ПустаяСтрока(ЭтотОбъект["НомерСчета" + Постфикс]) Тогда
		Возврат;
	КонецЕсли;

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

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

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

&НаКлиентеНаСервереБезКонтекста
Функция РеквизитыБанка(ЭтоГоловнойКонтрагент)
	
	РеквизитыБанка = Новый Структура;
	
	Если ЭтоГоловнойКонтрагент Тогда
		РеквизитыБанка.Вставить("БИКБанкаГоловнойКонтрагент",                       "БИК");
		РеквизитыБанка.Вставить("НаименованиеБанкаГоловнойКонтрагент",              "Наименование");
		РеквизитыБанка.Вставить("КоррСчетБанкаГоловнойКонтрагент",                  "КоррСчет");
		РеквизитыБанка.Вставить("ГородБанкаГоловнойКонтрагент",                     "Город");
		РеквизитыБанка.Вставить("ГородБанкаМеждународныйГоловнойКонтрагент",        "ГородМеждународный");
		РеквизитыБанка.Вставить("АдресБанкаГоловнойКонтрагент",                     "Адрес");
		РеквизитыБанка.Вставить("АдресБанкаМеждународныйГоловнойКонтрагент",        "АдресМеждународный");
		РеквизитыБанка.Вставить("БИКБанкаГоловнойКонтрагент",                       "Код");
		РеквизитыБанка.Вставить("СВИФТБанкаГоловнойКонтрагент",                     "СВИФТБИК");
		РеквизитыБанка.Вставить("НаименованиеБанкаМеждународноеГоловнойКонтрагент", "МеждународноеНаименование");
	Иначе
		РеквизитыБанка.Вставить("БИКБанка",                       "БИК");
		РеквизитыБанка.Вставить("НаименованиеБанка",              "Наименование");
		РеквизитыБанка.Вставить("КоррСчетБанка",                  "КоррСчет");
		РеквизитыБанка.Вставить("ГородБанка",                     "Город");
		РеквизитыБанка.Вставить("ГородБанкаМеждународный",        "ГородМеждународный");
		РеквизитыБанка.Вставить("АдресБанка",                     "Адрес");
		РеквизитыБанка.Вставить("АдресБанкаМеждународный",        "АдресМеждународный");
		РеквизитыБанка.Вставить("БИКБанка",                       "Код");
		РеквизитыБанка.Вставить("СВИФТБанка" ,                    "СВИФТБИК");
		РеквизитыБанка.Вставить("НаименованиеБанкаМеждународное", "МеждународноеНаименование");
	КонецЕсли;
	
	Возврат РеквизитыБанка;
	
КонецФункции

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

&НаКлиентеНаСервереБезКонтекста
Процедура ЗаполнитьОсновныеРеквизитыБанка(Форма, ЭтоГоловнойКонтрагент=Ложь)

	Постфикс = ?(ЭтоГоловнойКонтрагент, "ГоловнойКонтрагент", "");
	НеразрывныйПробел = Символ(160);
	Форма.Элементы["СтраницаБанк" + Постфикс].Заголовок = "";
	
	Если Не ЗначениеЗаполнено(Форма["Банк" + Постфикс])
		И Форма["СпособУказанияБанка" + Постфикс] = "ВыборИзСправочника" Тогда
		Форма.Элементы["СтраницаБанк" + Постфикс].Заголовок = НСтр("ru = 'Ввести реквизиты банка вручную...'");
		Возврат
	КонецЕсли;
	
	ВыводимыеРеквизиты = Новый Массив;
	ЕстьДанные = Ложь;
	
	Если Форма["СпособУказанияБанка" + Постфикс] = "РучноеЗаполнениеРеквизитов" Тогда
		Если Форма.НациональныеРеквизитыБанковскихСчетов Тогда
			Если ЗначениеЗаполнено(Форма["НаименованиеБанка" + Постфикс]) Тогда
				НаименованиеБанка = Форма["НаименованиеБанка" + Постфикс];
				ЕстьДанные = Истина;
			Иначе
				НаименованиеБанка = НСтр("ru = '<не указано>'");
			КонецЕсли;
		Иначе
			Если ЗначениеЗаполнено(Форма["НаименованиеБанкаМеждународное" + Постфикс]) Тогда
				НаименованиеБанка = Форма["НаименованиеБанкаМеждународное" + Постфикс];
				ЕстьДанные = Истина;
			Иначе
				НаименованиеБанка = НСтр("ru = '<не указано>'");
			КонецЕсли;
		КонецЕсли;
		ВыводимыеРеквизиты.Добавить(СтрЗаменить(НаименованиеБанка, "", НеразрывныйПробел));
	КонецЕсли;
	
	Если Форма.НациональныеРеквизитыБанковскихСчетов Тогда
		Если ЗначениеЗаполнено(Форма["БИКБанка" + Постфикс]) Тогда
			БИКБанка = СокрЛП(Форма["БИКБанка" + Постфикс]);
			ЕстьДанные = Истина;
		Иначе
			БИКБанка = НСтр("ru = '<не указан>'");
		КонецЕсли;
		ВыводимыеРеквизиты.Добавить(
			Форма.Элементы["БИКБанка" + Постфикс].Заголовок + ":" + НеразрывныйПробел + БИКБанка);
	КонецЕсли;
	
	Если Форма.МеждународныеРеквизитыБанковскихСчетов Тогда
		Если ЗначениеЗаполнено(Форма["СВИФТБанка" + Постфикс]) Тогда
			СВИФТБанка = Форма["СВИФТБанка" + Постфикс];
			ЕстьДанные = Истина;
		Иначе
			СВИФТБанка = НСтр("ru = '<не указан>'");
		КонецЕсли;
		ВыводимыеРеквизиты.Добавить(
			СтрЗаменить(Форма.Элементы["СВИФТБанка" + Постфикс].Заголовок, " ", НеразрывныйПробел) + ":"
			+ НеразрывныйПробел + СВИФТБанка);
	КонецЕсли;
	
	Если Форма["ИспользуетсяБанкДляРасчетов" + Постфикс] Тогда
		Значение = ?(Форма.Элементы["КоррСчетБанка" + Постфикс].Видимость, Форма["КоррСчетБанка" + Постфикс],
			Форма["СчетВБанкеДляРасчетов" + Постфикс]);
		Если ЗначениеЗаполнено(Значение) Тогда
			ЕстьДанные = Истина;
		Иначе
			Значение = НСтр("ru = '<не указан>'");
		КонецЕсли;
		ВыводимыеРеквизиты.Добавить(
			СтрЗаменить(Форма.Элементы["КоррСчетБанка" + Постфикс].Заголовок, " ", НеразрывныйПробел) + ":"
			+ НеразрывныйПробел + Значение);
	КонецЕсли;
	
	Если Форма["СпособУказанияБанка" + Постфикс] = "РучноеЗаполнениеРеквизитов" И НЕ ЕстьДанные Тогда
		Форма.Элементы["СтраницаБанк" + Постфикс].Заголовок = НСтр("ru = 'Ввести реквизиты банка вручную...'");
	Иначе
		Форма.Элементы["СтраницаБанк" + Постфикс].Заголовок = СтрСоединить(ВыводимыеРеквизиты, "; ");
	КонецЕсли;
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура ЗаполнитьОсновныеРеквизитыБанкаДляРасчетов(Форма, ЭтоГоловнойКонтрагент=Ложь)

	Постфикс = ?(ЭтоГоловнойКонтрагент, "ГоловнойКонтрагент", "");

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

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

&НаКлиенте
Процедура ПриИзмененииРучноеИзменениеРеквизитовБанка(ЭтоГоловнойКонтрагент=Ложь)
	
	Постфикс = ?(ЭтоГоловнойКонтрагент, "ГоловнойКонтрагент", "");

	Если ЭтотОбъект["СпособУказанияБанка" + Постфикс] = "РучноеЗаполнениеРеквизитов" Тогда
		Элементы["Банк" + Постфикс].ПодсказкаВвода = НСтр("ru = '<реквизиты банка введены вручную>'");
		ЭтотОбъект["Банк" + Постфикс] = Неопределено;
	Иначе
		Элементы["Банк" + Постфикс].ПодсказкаВвода = "";
	КонецЕсли;

	РучноеИзменениеРеквизитовБанкаПриИзмененииНаСервере(ЭтоГоловнойКонтрагент);
	
	УправлениеЭлементамиБанковскийСчет(ЭтотОбъект, ЭтоГоловнойКонтрагент);
	
КонецПроцедуры

&НаСервере
Процедура РучноеИзменениеРеквизитовБанкаПриИзмененииНаСервере(ЭтоГоловнойКонтрагент)
	
	Постфикс = ?(ЭтоГоловнойКонтрагент, "ГоловнойКонтрагент", "");
	
	Если ЭтотОбъект["СпособУказанияБанка" + Постфикс] = "ВыборИзСправочника" Тогда
		ЗаполнитьРеквизитыБанкаПоБИК("Банк", ЭтотОбъект["БИКБанка" + Постфикс], ЭтоГоловнойКонтрагент);
	КонецЕсли;
	
	ЗаполнитьОсновныеРеквизитыБанка(ЭтотОбъект, ЭтоГоловнойКонтрагент);
	
КонецПроцедуры

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

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

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

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

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

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

&НаКлиенте
Функция ЭтоИностранныйБанк(ДанныеСчета)

	Возврат ДенежныеСредстваКлиентЛокализация.ЭтоИностранныйБанк(МеждународныеРеквизитыБанковскихСчетов, ДанныеСчета);

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

&НаКлиентеНаСервереБезКонтекста
Процедура ОчиститьБанковскиеРеквизиты(Форма, ЭтоБанкДляРасчетов = Ложь, ЭтоГоловнойКонтрагент = Ложь)

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

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

#КонецОбласти
	
#Область ПереходыПоСтраницам

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

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

&НаКлиенте
Процедура ВыполнитьПереходПоСтраницамФрагмент(Знач Оповещение)
	
	УправлениеСтраницамиПодвал();
	
	ВыполнитьОбработкуОповещения(Оповещение);

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

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

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

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

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

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

&НаКлиенте
Процедура ВыполнитьНеобходимыеДействияПриПереходеПоСтраницамФрагмент(Знач Оповещение)
	
	ВыполнитьОбработкуОповещения(Оповещение);
	
КонецПроцедуры

&НаКлиенте
Процедура ПерейтиНаСтраницуРасчетногоСчетаИлиФинальную()

	Если (ДействиеСКонтрагентом = 1 Или ИспользуютсяТолькоПартнеры) И УказыватьЮридическиеРеквизиты Тогда
		ПерейтиНаСтраницуРасчетногоСчетаКонтрагента();
	Иначе
		ПерейтиНаФинальнуюСтраницу();
	КонецЕсли;

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

&НаКлиенте
Процедура ПерейтиНаСтраницуНайденныхСовпадений()
	
	СтекПредыдущихСтраниц.Добавить(Элементы.СтраницыПомощника.ТекущаяСтраница.Имя);
	Элементы.СтраницыПомощника.ТекущаяСтраница = Элементы.СтраницаНайдено;
	
	ТекущийЭлемент = Элементы.ТаблицаНайдено;
	
КонецПроцедуры

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

&НаКлиенте
Процедура ПерейтиНаСтраницуРасчетногоСчетаКонтрагента()
	
	ЗаголовокДекорации = СтрЗаменить(
		Элементы.ДекорацияБанковскиеСведения.Заголовок,
		"#PartnerName#",
		НаименованиеПартнераДляЗаголовка());

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

&НаКлиенте
Процедура ПерейтиНаСтраницуОбособленныхПодразделений()
	
	Элементы.СтраницыПомощника.ТекущаяСтраница = Элементы.СтраницаОбособленныеПодразделения;
	
КонецПроцедуры

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

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

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

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

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

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

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

#Область ПроверкиВведеннойИнформации

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

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

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

&НаСервере
Функция ДополнительныеРеквизитыЗаполненыНеправильно()

	Отказ = Ложь;
	// СтандартныеПодсистемы.Свойства
	УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, Новый Массив, ПартнерОбъектДопРеквизиты);
	
	Возврат Отказ;

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

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

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

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

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

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

&НаСервере
Процедура УстановитьУсловноеОформление()

	УсловноеОформление.Элементы.Очистить();

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.АдресЭПКЛ.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТелефонКЛ.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.МобильныйТелефонКЛ.Имя);

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

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

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

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

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ИмяКЛ.Имя);

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

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

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ФамилияКЛ.Имя);

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

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

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.АдресЭППартнераФизЛицо.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТелефонПартнераФизЛицо.Имя);

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

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

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

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.АдресЭППартнера.Имя);

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

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

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

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

	ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
	ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;

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

	ГруппаОтбора2 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
	ГруппаОтбора2.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;

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

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

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

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

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

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

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

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

	Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.НомерСчета.Имя);

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

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

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВалютаДенежныхСредств.Имя);

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

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

	Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.НомерСчетаГоловнойКонтрагент.Имя);

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

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

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВалютаДенежныхСредствГоловнойКонтрагент.Имя);

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

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

	Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.АдресЭППартнераТолькоПартнеры.Имя);

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

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

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

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

	ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
	ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;

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

	ГруппаОтбора2 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
	ГруппаОтбора2.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;

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

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

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

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

	Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВидДокумента.Имя);

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

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

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

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

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.СокрЮрНаименованиеКонтрагента.Имя);

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

	Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ДеревоСравненияПартнеровЗначениеНайденного.Имя);

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

	Элемент.Оформление.УстановитьЗначениеПараметра("ЦветФона", ЦветаСтиля.ПолеСОшибкойФон);

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ДеревоСравненияПартнеровЗначениеНайденного.Имя);

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

	Элемент.Оформление.УстановитьЗначениеПараметра("ЦветФона", ЦветаСтиля.ЦветФонаПолностьюОбеспечен);

	ПартнерыИКонтрагентыЛокализация.УстановитьУсловноеОформление_ПомощникНового(ЭтотОбъект);

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

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

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

&НаКлиентеНаСервереБезКонтекста
Функция ФИО_ОднойСтрокой(Фамилия,Имя,Отчество)
	
	Возврат СокрЛП(СокрЛП(Фамилия) + " " + СокрЛП(Имя) + " " + СокрЛП(Отчество));
	
КонецФункции

&НаСервере
Функция ПредставлениеДокументаФизическогоЛица()
	
	ПредставлениеДокументаФизЛица = "";
	
	Если Не ВидДокумента.Пустая() Тогда
		
		ПредставлениеДокументаФизЛица = ""
			+ ВидДокумента
			+ ?(ЗначениеЗаполнено(СерияДокумента),
				СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = ', серия: %1'"), СерияДокумента), "")
			+ ?(ЗначениеЗаполнено(НомерДокумента),
				СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = ', № %1'"), НомерДокумента), "")
			+ ?(ЗначениеЗаполнено(ДатаВыдачи),
				СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = ', выдан: %1 года'"), Формат(ДатаВыдачи,"ДЛФ=DD")), "")
			+ ?(ЗначениеЗаполнено(СрокДействия),
				СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = ', действует до: %1 года'"), Формат(СрокДействия,"ДЛФ=DD")), "")
			+ ?(ЗначениеЗаполнено(КемВыданДокумент), ", " + КемВыданДокумент, "");
				
		//++ Локализация
		ПредставлениеДокументаФизЛица = ПредставлениеДокументаФизЛица +  ?(ЗначениеЗаполнено(КодПодразделения) И ВидДокумента = Справочники.ВидыДокументовФизическихЛиц.ПаспортРФ,
				СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = ', № подр. %1'"), КодПодразделения), "")
		//-- Локализация
		
	КонецЕсли;
	
	Возврат ПредставлениеДокументаФизЛица;
	
КонецФункции

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

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

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

&НаСервере
Процедура ВыполнитьПоискНепривязанныхОбособленныхПодразделений()
	
	ПартнерыИКонтрагентыЛокализация.ВыполнитьПоискНепривязанныхОбособленныхПодразделений(ЭтотОбъект);
	
КонецПроцедуры

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

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

&НаСервере
Процедура ЗаписатьПартнераИСвязанныеДанные(СписокСозданных)
	
	Если ДействиеПоРезультатамНайдено <> 0 Тогда
		
		//Партнер
		ОбъектПартнер = Справочники.Партнеры.СоздатьЭлемент();
		ОбъектПартнер.Наименование                          = Название;
		ОбъектПартнер.Родитель                              = Родитель;
		ОбъектПартнер.БизнесРегион                          = БизнесРегион;
		ОбъектПартнер.ГруппаДоступа                         = ГруппаДоступа;
		ОбъектПартнер.ДатаРегистрации                       = ТекущаяДатаСеанса();
		ОбъектПартнер.Клиент                                = Клиент;
		ОбъектПартнер.Конкурент                             = Конкурент;
		ОбъектПартнер.Поставщик                             = Поставщик;
		ОбъектПартнер.ОбслуживаетсяТорговымиПредставителями = ОбслуживаетсяТорговымиПредставителями;
		ОбъектПартнер.ПрочиеОтношения                       = ПрочиеОтношения;
		ОбъектПартнер.ОсновнойМенеджер                      = ОсновнойМенеджер;
		ОбъектПартнер.НаименованиеПолное                    = НаименованиеПартнера();
		ОбъектПартнер.ЮрФизЛицо                             = ТипЮрФизЛицаПартнера(ЭтоКомпания);
		ОбъектПартнер.Пол                                   = Пол;
		ОбъектПартнер.ДатаРождения                          = ДатаРождения;
		ОбъектПартнер.Перевозчик                            = Перевозчик;
		ОбъектПартнер.ВариантОтправкиЭлектронногоЧека       = ВариантОтправкиЭлектронногоЧека;
		
		// контактная информация партнера
		Если НЕ ПустаяСтрока(ФактическийАдрес) Тогда
			НоваяСтрокаКИ = ОбъектПартнер.КонтактнаяИнформация.Добавить();
			НоваяСтрокаКИ.Тип               = Перечисления.ТипыКонтактнойИнформации.Адрес;
			НоваяСтрокаКИ.Вид               = Справочники.ВидыКонтактнойИнформации.АдресПартнера;
			НоваяСтрокаКИ.Представление     = ФактическийАдрес;
			НоваяСтрокаКИ.ЗначенияПолей     = ФактическийАдресЗначенияПолей;
			НоваяСтрокаКИ.Значение          = ЗначениеКонтактнойИнформацииJSONСервер("ФактическийАдресЗначенияПолей");
		КонецЕсли;
		
		Если ЭтоКомпания = 0 Тогда
			ИмяРеквизитаТелефон = "ТелефонПартнера";
			ИмяРеквизитаТелефонЗначенияПолей = "ТелефонПартнераЗначенияПолей";
			ИмяРеквизитаАдресЭП = "АдресЭППартнера";
		Иначе
			ИмяРеквизитаТелефон = "ТелефонПартнераФизЛицо";
			ИмяРеквизитаТелефонЗначенияПолей = "ТелефонПартнераФизЛицоЗначенияПолей";
			ИмяРеквизитаАдресЭП = "АдресЭППартнераФизЛицо";
		КонецЕсли;
		
		Если ЗначенияПолейВСписокЗначений(ЭтотОбъект[ИмяРеквизитаТелефонЗначенияПолей]).Количество()> 0 Тогда
			НоваяСтрокаКИ = ОбъектПартнер.КонтактнаяИнформация.Добавить();
			НоваяСтрокаКИ.Тип               = Перечисления.ТипыКонтактнойИнформации.Телефон;
			НоваяСтрокаКИ.Вид               = Справочники.ВидыКонтактнойИнформации.ТелефонПартнера;
			НоваяСтрокаКИ.Представление     = ЭтотОбъект[ИмяРеквизитаТелефон];
			НоваяСтрокаКИ.ЗначенияПолей     = ЭтотОбъект[ИмяРеквизитаТелефонЗначенияПолей];
			НоваяСтрокаКИ.Значение          = ЗначениеКонтактнойИнформацииJSONСервер(ИмяРеквизитаТелефонЗначенияПолей);
		КонецЕсли;
		
		Если Не ПустаяСтрока(ЭтотОбъект[ИмяРеквизитаАдресЭП]) Тогда
			НоваяСтрокаКИ = ОбъектПартнер.КонтактнаяИнформация.Добавить();
			НоваяСтрокаКИ.Тип               = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты;
			НоваяСтрокаКИ.Вид               = Справочники.ВидыКонтактнойИнформации.EmailПартнера;
			НоваяСтрокаКИ.Представление     = ЭтотОбъект[ИмяРеквизитаАдресЭП];
			НоваяСтрокаКИ.Значение     		= УправлениеКонтактнойИнформацией.КонтактнаяИнформацияПоПредставлению(НоваяСтрокаКИ.Представление, НоваяСтрокаКИ.Вид);
			НоваяСтрокаКИ.ЗначенияПолей     = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияВXML(НоваяСтрокаКИ.Значение, НоваяСтрокаКИ.Представление, НоваяСтрокаКИ.Вид);
			НоваяСтрокаКИ.АдресЭП           = ЭтотОбъект[ИмяРеквизитаАдресЭП];
			Поз = СтрНайти(ЭтотОбъект[ИмяРеквизитаАдресЭП], "@");
			Если Поз <> 0 Тогда
				НоваяСтрокаКИ.ДоменноеИмяСервера = Сред(ЭтотОбъект[ИмяРеквизитаАдресЭП], Поз+1);
			КонецЕсли;
		КонецЕсли;
		
		// СтандартныеПодсистемы.Свойства
		УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтотОбъект, ПартнерОбъектДопРеквизиты);
		ОбъектПартнер.ДополнительныеРеквизиты.Загрузить(ПартнерОбъектДопРеквизиты.ДополнительныеРеквизиты.Выгрузить());
		// Конец СтандартныеПодсистемы.Свойства
		
		ОбъектПартнер.Записать();
		ПартнерВыбор = ОбъектПартнер.Ссылка;
		СписокСозданных.Добавить(ПолучитьНавигационнуюСсылку(ПартнерВыбор), ОбъектПартнер.Наименование);
		
		// зафиксировать первичный интерес
		Если ПолучитьФункциональнуюОпцию("ФиксироватьПервичныйИнтерес") И ЗначениеЗаполнено(КаналПервичногоИнтереса) Тогда
		
			УстановитьПривилегированныйРежим(Истина);
			Запись = РегистрыСведений.ИсточникиПервичногоИнтереса.СоздатьМенеджерЗаписи();
			Запись.Партнер                    = ПартнерВыбор;
			Запись.КаналПервичногоИнтереса    = КаналПервичногоИнтереса;
			Запись.ИсточникПервичногоИнтереса = ИсточникПервичногоИнтереса;
			Запись.Записать();
			УстановитьПривилегированныйРежим(Ложь);
		
		КонецЕсли;
		
		//сегмент
		Если ЗначениеЗаполнено(Сегмент)
			И ЕстьПравоВключенияВСегмент
			И ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Сегмент, "СпособФормирования") = Перечисления.СпособыФормированияСегментов.ФормироватьВручную Тогда
			СегментыСервер.ДобавитьПартнераВСегмент(Сегмент, ПартнерВыбор);
		КонецЕсли;
		
		// Контактное лицо
		Если ЭтоКомпания = 0 И УказатьДанныеКонтактногоЛица И НЕ ПустаяСтрока(ФамилияКЛ) Тогда
		
			ОбъектКонтактноеЛицо = Справочники.КонтактныеЛицаПартнеров.СоздатьЭлемент();
			ОбъектКонтактноеЛицо.Владелец               = ПартнерВыбор;
			ОбъектКонтактноеЛицо.ДатаРегистрацииСвязи   = ТекущаяДатаСеанса();
			ОбъектКонтактноеЛицо.Наименование           = ФИО_ОднойСтрокой(ФамилияКЛ, ИмяКЛ, ОтчествоКЛ);
			ОбъектКонтактноеЛицо.Автор                  = Пользователи.ТекущийПользователь();
			Если Не Роль.Пустая() Тогда
				СтрокаРоли = ОбъектКонтактноеЛицо.РолиКонтактногоЛица.Добавить();
				СтрокаРоли.РольКонтактногоЛица = Роль;
			КонецЕсли;
			
			Если Не ПустаяСтрока(АдресЭПКЛ) Тогда
				НоваяСтрокаКИ = ОбъектКонтактноеЛицо.КонтактнаяИнформация.Добавить();
				НоваяСтрокаКИ.Тип               = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты;
				НоваяСтрокаКИ.Вид               = Справочники.ВидыКонтактнойИнформации.EmailКонтактногоЛица;
				НоваяСтрокаКИ.Представление     = АдресЭПКЛ;
				НоваяСтрокаКИ.Значение		    = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияПоПредставлению(НоваяСтрокаКИ.Представление, НоваяСтрокаКИ.Вид);
				НоваяСтрокаКИ.ЗначенияПолей     = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияВXML(НоваяСтрокаКИ.Значение, НоваяСтрокаКИ.Представление, НоваяСтрокаКИ.Вид);
				НоваяСтрокаКИ.АдресЭП           = АдресЭПКЛ;
				Поз = СтрНайти(АдресЭПКЛ, "@");
				Если Поз <> 0 Тогда
					НоваяСтрокаКИ.ДоменноеИмяСервера = Сред(АдресЭПКЛ, Поз+1);
				КонецЕсли;
			КонецЕсли;
			
			Если ЗначенияПолейВСписокЗначений(ТелефонКЛЗначенияПолей).Количество()> 0 Тогда
				НоваяСтрокаКИ = ОбъектКонтактноеЛицо.КонтактнаяИнформация.Добавить();
				НоваяСтрокаКИ.Тип               = Перечисления.ТипыКонтактнойИнформации.Телефон;
				НоваяСтрокаКИ.Вид               = Справочники.ВидыКонтактнойИнформации.ТелефонКонтактногоЛица;
				НоваяСтрокаКИ.Представление     = ТелефонКЛ;
				НоваяСтрокаКИ.ЗначенияПолей     = ТелефонКЛЗначенияПолей;
				НоваяСтрокаКИ.Значение          = ЗначениеКонтактнойИнформацииJSONСервер("ТелефонКЛЗначенияПолей");
			КонецЕсли;
			
			Если ЗначенияПолейВСписокЗначений(МобильныйТелефонКЛЗначенияПолей).Количество()> 0 Тогда
				НоваяСтрокаКИ = ОбъектКонтактноеЛицо.КонтактнаяИнформация.Добавить();
				НоваяСтрокаКИ.Тип               = Перечисления.ТипыКонтактнойИнформации.Телефон;
				НоваяСтрокаКИ.Вид               = Справочники.ВидыКонтактнойИнформации.МобильныйТелефонКонтактногоЛица;
				НоваяСтрокаКИ.Представление     = МобильныйТелефонКЛ;
				НоваяСтрокаКИ.ЗначенияПолей     = МобильныйТелефонКЛЗначенияПолей;
				НоваяСтрокаКИ.Значение          = ЗначениеКонтактнойИнформацииJSONСервер("МобильныйТелефонКЛЗначенияПолей");
			КонецЕсли;
			
			ОбъектКонтактноеЛицо.Записать();
			СписокСозданных.Добавить(ПолучитьНавигационнуюСсылку(ОбъектКонтактноеЛицо.Ссылка), ОбъектКонтактноеЛицо.Наименование);
			
		КонецЕсли;
		
	КонецЕсли;
	
	//Контрагент
	Если ИспользуютсяТолькоПартнеры Или (ДействиеСКонтрагентом = 1 И НЕ НаОснованииКонтрагента И УказыватьЮридическиеРеквизиты) Тогда
		
		ОбъектКонтрагент = Справочники.Контрагенты.СоздатьЭлемент();
		ОбъектКонтрагент.Наименование          = ?(ИспользуютсяТолькоПартнеры, Название, НаименованиеКонтрагента());
		ОбъектКонтрагент.ЮрФизЛицо             = ПартнерыИКонтрагентыЛокализацияКлиентСервер.ТипЮрФизЛицаКонтрагента(ЭтоКомпания, ВидКомпании);
		ОбъектКонтрагент.Партнер               = ПартнерВыбор;
		ОбъектКонтрагент.СтранаРегистрации     = СтранаРегистрации;
		ОбъектКонтрагент.НаименованиеПолное    = ?(ЭтоКомпания = 0,ПолноеЮридическоеНаименование,ФИО_ОднойСтрокой(ФамилияПартнера, ИмяПартнера, ОтчествоПартнера));
		ОбъектКонтрагент.РегистрационныйНомер  = ?(ОбъектКонтрагент.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицоНеРезидент, РегистрационныйНомер, "");
		ОбъектКонтрагент.НалоговыйНомер        = ?(ОбъектКонтрагент.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицоНеРезидент, НалоговыйНомер, "");
		ОбъектКонтрагент.ИНН                   = ИНН;
		
		ОбъектКонтрагент.ИсторияНаименований.Загрузить(ИсторияНаименований.Выгрузить());
		ПартнерыИКонтрагентыЛокализация.ДополнитьДанныеКонтрагентаПриЗаписи(ОбъектКонтрагент, ЭтотОбъект);
		
		// контактная информация контрагента
		Если НЕ ПустаяСтрока(ФактическийАдрес) Тогда
			НоваяСтрокаКИ = ОбъектКонтрагент.КонтактнаяИнформация.Добавить();
			НоваяСтрокаКИ.Тип           = Перечисления.ТипыКонтактнойИнформации.Адрес;
			НоваяСтрокаКИ.Вид           = Справочники.ВидыКонтактнойИнформации.ФактАдресКонтрагента;
			НоваяСтрокаКИ.Представление = ФактическийАдрес;
			НоваяСтрокаКИ.ЗначенияПолей = ФактическийАдресЗначенияПолей;
			НоваяСтрокаКИ.Значение      = ЗначениеКонтактнойИнформацииJSONСервер("ФактическийАдресЗначенияПолей");
			
			Если ЭтоКомпания = 1
				И ЮрАдресКонтрагентаОбязателен Тогда
				
				НоваяСтрокаКИ = ОбъектКонтрагент.КонтактнаяИнформация.Добавить();
				НоваяСтрокаКИ.Тип           = Перечисления.ТипыКонтактнойИнформации.Адрес;
				НоваяСтрокаКИ.Вид           = Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента;
				НоваяСтрокаКИ.Представление = ФактическийАдрес;
				НоваяСтрокаКИ.ЗначенияПолей = ФактическийАдресЗначенияПолей;
				НоваяСтрокаКИ.Значение      = ЗначениеКонтактнойИнформацииJSONСервер("ФактическийАдресЗначенияПолей");
				
			КонецЕсли;
			
		КонецЕсли;
		
		Если ИсторияКонтактнойИнформации.Количество() > 0 Тогда
			ПартнерыИКонтрагенты.ВключитьХранениеИсторииИзменений("ЮрАдресКонтрагента");
			ИсторияКонтактнойИнформации[0].Дата = Неопределено;
			УправлениеКонтактнойИнформацией.УстановитьКонтактнуюИнформациюОбъекта(ОбъектКонтрагент, ИсторияКонтактнойИнформации);
		ИначеЕсли НЕ ПустаяСтрока(ЮридическийАдрес) Тогда
			НоваяСтрокаКИ = ОбъектКонтрагент.КонтактнаяИнформация.Добавить();
			НоваяСтрокаКИ.Тип           = Перечисления.ТипыКонтактнойИнформации.Адрес;
			НоваяСтрокаКИ.Вид           = Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента;
			НоваяСтрокаКИ.Представление = ЮридическийАдрес;
			НоваяСтрокаКИ.ЗначенияПолей = ЮридическийАдресЗначенияПолей;
			НоваяСтрокаКИ.Значение      = ЗначениеКонтактнойИнформацииJSONСервер("ЮридическийАдресЗначенияПолей");
		КонецЕсли;
		
		Если ЭтоКомпания = 0 И НЕ ПустаяСтрока(ТелефонПартнера) Тогда
			
			Если ИспользуютсяТолькоПартнеры Тогда
			
				НоваяСтрокаКИ = ОбъектКонтрагент.КонтактнаяИнформация.Добавить();
				НоваяСтрокаКИ.Тип           = Перечисления.ТипыКонтактнойИнформации.Телефон;
				НоваяСтрокаКИ.Вид           = Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента;
				НоваяСтрокаКИ.Представление = ТелефонПартнера;
				НоваяСтрокаКИ.ЗначенияПолей = ТелефонПартнераЗначенияПолей;
				НоваяСтрокаКИ.Значение      = ЗначениеКонтактнойИнформацииJSONСервер("ТелефонПартнераЗначенияПолей");
			КонецЕсли;
			
		КонецЕсли;
		
		
		Если ЭтоКомпания = 1 И НЕ ПустаяСтрока(ТелефонПартнераФизЛицо) Тогда
			НоваяСтрокаКИ = ОбъектКонтрагент.КонтактнаяИнформация.Добавить();
			НоваяСтрокаКИ.Тип           = Перечисления.ТипыКонтактнойИнформации.Телефон;
			НоваяСтрокаКИ.Вид           = Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента;
			НоваяСтрокаКИ.Представление = ТелефонПартнераФизЛицо;
			НоваяСтрокаКИ.ЗначенияПолей = ТелефонПартнераФизЛицоЗначенияПолей;
			НоваяСтрокаКИ.Значение      = ЗначениеКонтактнойИнформацииJSONСервер("ТелефонПартнераФизЛицоЗначенияПолей");
		КонецЕсли;
		
		// головной контрагент
		Если ЭтоКомпания = 0 И ВидКомпании = 3 Тогда
			
			ОбъектКонтрагент.ОбособленноеПодразделение = Истина;
			
			Если ИспользуютсяТолькоПартнеры Или ВыбратьГоловногоКонтрагента = 0 Тогда
				ОбъектКонтрагент.ГоловнойКонтрагент = ГоловнойКонтрагент;
			ИначеЕсли ВыбратьГоловногоКонтрагента = 1 Тогда
				
				ОбъектГоловнойКонтрагент = Справочники.Контрагенты.СоздатьЭлемент();
				
				ОбъектГоловнойКонтрагент.Наименование       = НаименованиеГоловнойКонтрагент;
				ОбъектГоловнойКонтрагент.НаименованиеПолное = ПолноеНаименованиеГоловногоКонтрагента;
				ОбъектГоловнойКонтрагент.ЮрФизЛицо          = Перечисления.ЮрФизЛицо.ЮрЛицо;
				ОбъектГоловнойКонтрагент.ИНН                = ИНН;
				ПартнерыИКонтрагентыЛокализация.ДополнитьДанныеГоловногоКонтрагентаПриЗаписи(ОбъектГоловнойКонтрагент, ЭтотОбъект);
				
				ОбъектГоловнойКонтрагент.Партнер = ?(ЗначениеЗаполнено(ПартнерГоловногоКонтрагента),
					ПартнерГоловногоКонтрагента, ПартнерВыбор);
				
				// контактная информация головного контрагента
				Если НЕ ПустаяСтрока(ФактическийАдресГоловногоКонтрагента) Тогда
					НоваяСтрокаКИ = ОбъектГоловнойКонтрагент.КонтактнаяИнформация.Добавить();
					НоваяСтрокаКИ.Тип           = Перечисления.ТипыКонтактнойИнформации.Адрес;
					НоваяСтрокаКИ.Вид           = Справочники.ВидыКонтактнойИнформации.ФактАдресКонтрагента;
					НоваяСтрокаКИ.Представление = ФактическийАдресГоловногоКонтрагента;
					НоваяСтрокаКИ.ЗначенияПолей = ФактическийАдресГоловногоКонтрагентаЗначенияПолей;
					НоваяСтрокаКИ.Значение      = ЗначениеКонтактнойИнформацииJSONСервер("ФактическийАдресГоловногоКонтрагентаЗначенияПолей");
				КонецЕсли;
				
				Если НЕ ПустаяСтрока(ЮридическийАдресГоловногоКонтрагента) Тогда
					НоваяСтрокаКИ = ОбъектГоловнойКонтрагент.КонтактнаяИнформация.Добавить();
					НоваяСтрокаКИ.Тип           = Перечисления.ТипыКонтактнойИнформации.Адрес;
					НоваяСтрокаКИ.Вид           = Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента;
					НоваяСтрокаКИ.Представление = ЮридическийАдресГоловногоКонтрагента;
					НоваяСтрокаКИ.ЗначенияПолей = ЮридическийАдресГоловногоКонтрагентаЗначенияПолей;
					НоваяСтрокаКИ.Значение      = ЗначениеКонтактнойИнформацииJSONСервер("ЮридическийАдресГоловногоКонтрагентаЗначенияПолей");
				КонецЕсли;
				
				ОбъектГоловнойКонтрагент.Записать();
				СписокСозданных.Добавить(ПолучитьНавигационнуюСсылку(ОбъектГоловнойКонтрагент.Ссылка), ОбъектГоловнойКонтрагент.Наименование);
				ОбъектКонтрагент.ГоловнойКонтрагент = ОбъектГоловнойКонтрагент.Ссылка;
				
				// банковский счет головного контрагента
				Если УказатьБанковскийСчетГоловногоКонтрагента Тогда
					
					Валютный = (ВалютаДенежныхСредствГоловнойКонтрагент <> ВалютаРеглУчета);
					
					БанковскийСчет = Справочники.БанковскиеСчетаКонтрагентов.СоздатьЭлемент();
					БанковскийСчет.Владелец = ОбъектГоловнойКонтрагент.Ссылка;
					БанковскийСчет.Наименование = АвтоНаименованиеБанковскогоСчета(
						НомерСчетаГоловнойКонтрагент, БанкГоловнойКонтрагент, ВалютаДенежныхСредствГоловнойКонтрагент);
					БанковскийСчет.ВалютаДенежныхСредств = ВалютаДенежныхСредствГоловнойКонтрагент;
					БанковскийСчет.НомерСчета = НомерСчетаГоловнойКонтрагент;
					БанковскийСчет.Банк = БанкГоловнойКонтрагент;
					БанковскийСчет.БанкДляРасчетов = БанкДляРасчетовГоловнойКонтрагент;
					БанковскийСчет.СчетВБанкеДляРасчетов = СчетВБанкеДляРасчетовГоловнойКонтрагент;
					БанковскийСчет.ИностранныйБанк = ИностранныйБанкГоловнойКонтрагент;
					БанковскийСчет.РучноеИзменениеРеквизитовБанка = СпособУказанияБанкаГоловнойКонтрагент = "РучноеЗаполнениеРеквизитов";
					БанковскийСчет.РучноеИзменениеРеквизитовБанкаДляРасчетов = 
						(СпособУказанияБанкаДляРасчетовГоловнойКонтрагент = "РучноеЗаполнениеРеквизитов" И ИспользуетсяБанкДляРасчетовГоловнойКонтрагент);
					БанковскийСчет.БИКБанка = БИКБанкаГоловнойКонтрагент;
					БанковскийСчет.КоррСчетБанка = КоррСчетБанкаГоловнойКонтрагент;
					БанковскийСчет.БИКБанкаДляРасчетов = БИКБанкаДляРасчетовГоловнойКонтрагент;
					БанковскийСчет.НаименованиеБанка = НаименованиеБанкаГоловнойКонтрагент;
					БанковскийСчет.НаименованиеБанкаДляРасчетов = НаименованиеБанкаДляРасчетовГоловнойКонтрагент;
					БанковскийСчет.АдресБанка = АдресБанкаГоловнойКонтрагент;
					БанковскийСчет.АдресБанкаДляРасчетов = АдресБанкаДляРасчетовГоловнойКонтрагент;
					БанковскийСчет.СВИФТБанка = СВИФТБанкаГоловнойКонтрагент;
					БанковскийСчет.СВИФТБанкаДляРасчетов = СВИФТБанкаДляРасчетовГоловнойКонтрагент;
					БанковскийСчет.КоррСчетБанкаДляРасчетов = КоррСчетБанкаДляРасчетовГоловнойКонтрагент;
					БанковскийСчет.НаименованиеБанкаМеждународное = НаименованиеБанкаМеждународноеГоловнойКонтрагент;
					БанковскийСчет.ГородБанкаМеждународный = ГородБанкаМеждународныйГоловнойКонтрагент;
					БанковскийСчет.АдресБанкаМеждународный = АдресБанкаМеждународныйГоловнойКонтрагент;
					БанковскийСчет.СВИФТБанкаДляРасчетов = СВИФТБанкаДляРасчетовГоловнойКонтрагент;
					БанковскийСчет.ЭтоIBAN = ЭтоIBANГоловнойКонтрагент;
					БанковскийСчет.НаименованиеБанкаДляРасчетовМеждународное = НаименованиеБанкаДляРасчетовМеждународноеГоловнойКонтрагент;
					БанковскийСчет.СтранаБанкаДляРасчетов = СтранаБанкаДляРасчетовГоловнойКонтрагент;
					БанковскийСчет.ГородБанкаДляРасчетов = ГородБанкаДляРасчетовГоловнойКонтрагент;
					БанковскийСчет.СВИФТБанкаДляРасчетов = СВИФТБанкаДляРасчетовГоловнойКонтрагент;
					БанковскийСчет.ГородБанкаДляРасчетовМеждународный = ГородБанкаДляРасчетовМеждународныйГоловнойКонтрагент;
					БанковскийСчет.АдресБанкаДляРасчетовМеждународный = АдресБанкаДляРасчетовМеждународныйГоловнойКонтрагент;
					
					БанковскийСчет.Записать();
					СписокСозданных.Добавить(ПолучитьНавигационнуюСсылку(БанковскийСчет.Ссылка), БанковскийСчет.Наименование);
					
				КонецЕсли;
				
			КонецЕсли;
		КонецЕсли;
		
		ОбъектКонтрагент.Записать();
		КонтрагентВыбор = ОбъектКонтрагент.Ссылка;
		СписокСозданных.Добавить(ПолучитьНавигационнуюСсылку(КонтрагентВыбор), ОбъектКонтрагент.Наименование);
		
		// банковский счет
		Если УказатьБанковскийСчетКонтрагента Тогда
			
			Валютный = (ВалютаДенежныхСредств <> ВалютаРеглУчета);
			
			БанковскийСчет = Справочники.БанковскиеСчетаКонтрагентов.СоздатьЭлемент();
			БанковскийСчет.Владелец = КонтрагентВыбор;
			БанковскийСчет.Наименование = АвтоНаименованиеБанковскогоСчета(НомерСчета, Банк, ВалютаДенежныхСредств);
			БанковскийСчет.ВалютаДенежныхСредств = ВалютаДенежныхСредств;
			БанковскийСчет.НомерСчета = НомерСчета;
			БанковскийСчет.Банк = Банк;
			БанковскийСчет.БанкДляРасчетов = БанкДляРасчетов;
			БанковскийСчет.СчетВБанкеДляРасчетов = СчетВБанкеДляРасчетов;
			БанковскийСчет.ИностранныйБанк = ИностранныйБанк;
			БанковскийСчет.РучноеИзменениеРеквизитовБанка = СпособУказанияБанка = "РучноеЗаполнениеРеквизитов";
			БанковскийСчет.РучноеИзменениеРеквизитовБанкаДляРасчетов = 
				(СпособУказанияБанкаДляРасчетов = "РучноеЗаполнениеРеквизитов" И ИспользуетсяБанкДляРасчетов);
			БанковскийСчет.БИКБанка = БИКБанка;
			БанковскийСчет.КоррСчетБанка = КоррСчетБанка;
			БанковскийСчет.БИКБанкаДляРасчетов = БИКБанкаДляРасчетов;
			БанковскийСчет.НаименованиеБанка = НаименованиеБанка;
			БанковскийСчет.СтранаБанка = СтранаБанка;
			БанковскийСчет.ГородБанка = ГородБанка;
			БанковскийСчет.НаименованиеБанкаДляРасчетов = НаименованиеБанкаДляРасчетов;
			БанковскийСчет.АдресБанка = АдресБанка;
			БанковскийСчет.АдресБанкаДляРасчетов = АдресБанкаДляРасчетов;
			БанковскийСчет.СВИФТБанка = СВИФТБанка;
			БанковскийСчет.НаименованиеБанкаМеждународное = НаименованиеБанкаМеждународное;
			БанковскийСчет.ГородБанкаМеждународный = ГородБанкаМеждународный;
			БанковскийСчет.АдресБанкаМеждународный = АдресБанкаМеждународный;
			БанковскийСчет.СВИФТБанкаДляРасчетов = СВИФТБанкаДляРасчетов;
			БанковскийСчет.КоррСчетБанкаДляРасчетов = КоррСчетБанкаДляРасчетов;
			БанковскийСчет.ЭтоIBAN = ЭтоIBAN;
			БанковскийСчет.НаименованиеБанкаДляРасчетовМеждународное = НаименованиеБанкаДляРасчетовМеждународное;
			БанковскийСчет.СтранаБанкаДляРасчетов = СтранаБанкаДляРасчетов;
			БанковскийСчет.ГородБанкаДляРасчетов = ГородБанкаДляРасчетов;
			БанковскийСчет.СВИФТБанкаДляРасчетов = СВИФТБанкаДляРасчетов;
			БанковскийСчет.ГородБанкаДляРасчетовМеждународный = ГородБанкаДляРасчетовМеждународный;
			БанковскийСчет.АдресБанкаДляРасчетовМеждународный = АдресБанкаДляРасчетовМеждународный;
			
			БанковскийСчет.Записать();
			СписокСозданных.Добавить(ПолучитьНавигационнуюСсылку(БанковскийСчет.Ссылка), БанковскийСчет.Наименование);
			
		КонецЕсли;
		
		Если ЭтоКомпания = 1 И УказыватьЮридическиеРеквизиты И УказатьДокументУдостоверяющийЛичность Тогда
			
			МенеджерЗаписи = РегистрыСведений.ДокументыФизическихЛиц.СоздатьМенеджерЗаписи();
			МенеджерЗаписи.Активность                               = Истина;
			МенеджерЗаписи.Период                                   = ТекущаяДатаСеанса();
			МенеджерЗаписи.Физлицо                                  = КонтрагентВыбор;
			МенеджерЗаписи.ВидДокумента                             = ВидДокумента;
			МенеджерЗаписи.Серия                                    = СерияДокумента;
			МенеджерЗаписи.Номер                                    = НомерДокумента;
			МенеджерЗаписи.ДатаВыдачи                               = ДатаВыдачи;
			МенеджерЗаписи.СрокДействия                             = СрокДействия;
			МенеджерЗаписи.КемВыдан                                 = КемВыданДокумент;
			МенеджерЗаписи.КодПодразделения                         = КодПодразделения;
			МенеджерЗаписи.ЯвляетсяДокументомУдостоверяющимЛичность = Истина;
			МенеджерЗаписи.Записать();
			
		КонецЕсли;
		ПартнерыИКонтрагентыЛокализация.ПривязатьОбособленныеПодразделения(ЭтотОбъект);
	КонецЕсли;
	
	Если НаОснованииКонтрагента И ЗначениеЗаполнено(КонтрагентОснование) Тогда
		
		ВыполнитьЗаписьКонтрагентаОснование(ПартнерВыбор, КонтрагентОснование);
		
	КонецЕсли;
	
	СозданиеВыполнено = Истина;
	
	СегментыСервер.ПроверитьВхождениеПартнераВСегментыПриСоздании(ПартнерВыбор);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ВыполнитьДействияЗакрытияФормыФрагмент(Знач Оповещение)
    
    ВыполнитьОбработкуОповещения(Оповещение);

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

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

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

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

&НаСервере
Процедура УстановитьЗаголовки()

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

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

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

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

&НаСервереБезКонтекста
Функция ПолучитьКонтрагентаПартнераПоУмолчанию(Партнер)
	
	Возврат ПартнерыИКонтрагенты.ПолучитьКонтрагентаПартнераПоУмолчанию(Партнер);
	
КонецФункции

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

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

&НаСервере
Процедура СоздатьПартнера(СписокСозданных, ТребуетсяПереходНаСтраницуСовпадений)

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

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

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

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

#Область ДополнительныеРеквизиты

// СтандартныеПодсистемы.Свойства

&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
	УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтотОбъект, ПартнерОбъектДопРеквизиты);
КонецПроцедуры

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

// Конец СтандартныеПодсистемы.Свойства

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

#Область Локализация

//++ Локализация

//@skip-warning Подключается при инициализации
&НаКлиенте
Процедура Подключаемый_НомерСчетаПриИзмененииЛокализация(Элемент)
	
	ПриИзмененииНомераСчетаЛокализация();
	
КонецПроцедуры

//@skip-warning Подключается при инициализации
&НаКлиенте
Процедура Подключаемый_НомерСчетаГоловнойКонтрагентПриИзмененииЛокализация(Элемент)
	
	ПриИзмененииНомераСчетаЛокализация(Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура ПриИзмененииНомераСчетаЛокализация(ЭтоГоловнойКонтрагент=Ложь)

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

//-- Локализация

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

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

#Область Инициализация

	ВыполняетсяЗакрытие = Ложь;


#Если НаСервере Тогда

Если Не ПодключеныОбработчикиЛокализация И ПолучитьФункциональнуюОпцию("ПоддержкаПлатежейРФ") Тогда
	
	ПодключеныОбработчикиЛокализация = Истина;
	
	ПодключаемыеОбработчикиСобытийЭлементов = Новый Соответствие; // Ключ - Элемент, Значение - Событие
	ПодключаемыеОбработчикиСобытийЭлементов.Вставить("НомерСчета", "ПриИзменении");
	ПодключаемыеОбработчикиСобытийЭлементов.Вставить("НомерСчетаГоловнойКонтрагент", "ПриИзменении");
	
	Для каждого Обработчик Из ПодключаемыеОбработчикиСобытийЭлементов Цикл
		Элементы[Обработчик.Ключ].УстановитьДействие(
			Обработчик.Значение, "Подключаемый_" + Обработчик.Ключ + Обработчик.Значение + "Локализация");
	КонецЦикла;
	
КонецЕсли;

#КонецЕсли

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

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