Данные по контрагентам контролируемых сделок / Форма записи / Модуль формы

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

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

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

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
	
	ПодготовитьФормуНаСервере();
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

	Если Выборка.Период = NULL Тогда
		СведенияДействуютПо = "";
	Иначе
		СведенияДействуютПо = НСтр("ru = 'по %ДатаОкончанияДействия%'");
		СведенияДействуютПо = СтрЗаменить(СведенияДействуютПо, "%ДатаОкончанияДействия%", Формат(НачалоДня(Выборка.Период - 1),"ДЛФ=D"));
	КонецЕсли;
	ДополнительныеСведения.СведенияДействуютПо = СведенияДействуютПо;
	
	Если ТипЗнч(Контрагент) = Тип("СправочникСсылка.Контрагенты") И Не Контрагент.Пустая() Тогда

		
		СтранаРегистрацииКонтрагента = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Контрагент, "СтранаРегистрации");
		ИнформацияОРегистрации = НСтр("ru = 'Страна регистрации: %НаименованиеСтраны% %Офшор%'");
		ИнформацияОРегистрации = СтрЗаменить(ИнформацияОРегистрации, "%НаименованиеСтраны%", ?(СтранаРегистрацииКонтрагента.Пустая(), НСтр("ru = 'не указана'"), СокрЛП(СтранаРегистрацииКонтрагента)));
		ИнформацияОРегистрации = СтрЗаменить(ИнформацияОРегистрации, "%Офшор%", ?(КонтролируемыеСделкиПовтИсп.СтранаЯвляетсяОфшором(Период, СтранаРегистрацииКонтрагента), "(офшор)", ""));
	Иначе
		СтранаРегистрацииКонтрагента = Справочники.СтраныМира.ПустаяСсылка();
		ИнформацияОРегистрации = НСтр("ru = 'Сведения о регистрации не указаны'");
	КонецЕсли;
	
	ДополнительныеСведения.ИнформацияОРегистрации = ИнформацияОРегистрации;
	
	ДополнительныеСведения.СтранаРегистрации = СтранаРегистрацииКонтрагента;
	
	ЮрФизЛицо = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Контрагент, "ЮридическоеФизическоеЛицо");
	ДополнительныеСведения.ЮрЛицо = (ЮрФизЛицо = Перечисления.ЮридическоеФизическоеЛицо.ЮридическоеЛицо);
	
	Возврат(ДополнительныеСведения);
	
КонецФункции

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

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

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

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