Регистрации в налоговом органе / Форма элемента / Модуль формы

файл

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
	
	Если ЗначениеЗаполнено(ВыбранноеЗначение) И ЭтоАдресВременногоХранилища(ВыбранноеЗначение) Тогда
		ОбработкаВыбораНаСервере(ВыбранноеЗначение);
	КонецЕсли;
	
	ПредставлениеПодписанта = ПредставлениеПодписанта();
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура КодПриИзменении(Элемент)
	
	КодРегионаРегистрации   = КодРегионаПоКодуНалоговогоОргана(Объект.Код);
	Объект.КодРегиона       = СтроковыеФункцииКлиентСервер.СтрокаВЧисло(КодРегионаРегистрации);
	
КонецПроцедуры

&НаКлиенте
Процедура КодРегионаПриИзменении(Элемент)
	
	Объект.КодРегиона = СтроковыеФункцииКлиентСервер.СтрокаВЧисло(КодРегионаРегистрации);
	
КонецПроцедуры

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

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

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

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

	Объект.Код	= Лев(СокрЛП(Объект.КПП), 4);

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

&НаКлиенте
Процедура КодПоОКАТОПриИзменении(Элемент)
	
	Если ЗначениеЗаполнено(Объект.КодПоОКАТО) Тогда
		
		ДлинаЗначения = СтрДлина(СокрЛП(Объект.КодПоОКАТО));
		
		Для Инд = ДлинаЗначения + 1 По 11 Цикл
			
			Объект.КодПоОКАТО = СокрЛП(Объект.КодПоОКАТО) + "0";
			
		КонецЦикла;
		
	КонецЕсли;
	
КонецПроцедуры

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

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

#Область ПроцедурыПодсистемыКонтактнаяИнформация

// СтандартныеПодсистемы.КонтактнаяИнформация

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

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

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

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

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

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

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

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

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

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

// Конец СтандартныеПодсистемы.КонтактнаяИнформация

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

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

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

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

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

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

&НаСервереБезКонтекста
Функция КодРегионаПоКодуНалоговогоОргана(Знач Код)
	
	Возврат Справочники.РегистрацииВНалоговомОргане.КодРегионаПоКодуНалоговогоОргана(Код);
	
КонецФункции

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

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

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

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

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

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

//++ НЕ УТ

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

//-- НЕ УТ

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

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


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

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

	Если Ответ = КодВозвратаДиалога.Да Тогда
		ИнтернетПоддержкаПользователейКлиент.ПодключитьИнтернетПоддержкуПользователей();
	КонецЕсли;

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

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

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