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