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

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

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

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

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

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

		НастроитьФормуПоОрганизации();
	Иначе
		// Открытие из организации регистраций крупнейшего налогоплательщика.
		КрупнейшийНалогоплательщикНастроитьФормуПоОрганизации();
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	ВыполняетсяЗакрытие = Ложь;
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура НалоговыеОрганыПередУдалением(Элемент, Отказ)
	Отказ = Истина;
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
	Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<управленческих нет>'"));
	
	//++ НЕ УТ

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

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

	Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
	Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<на отдельном балансе нет>'"));

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

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

// Крупнейший налогоплательщик заполнить список налоговых органов.
// Заполняет список регистраций в налоговом органе для головной организации.
// Выводятся только те регистрации, где 5 и 6 символы КПП равны "50".
// 
// Параметры:
//  АктивироватьОрган - Неопределено - Активировать орган
&НаСервере
Процедура КрупнейшийНалогоплательщикЗаполнитьСписокНалоговыхОрганов(АктивироватьОрган = Неопределено)
	
	УстановитьПривилегированныйРежим(Истина);
	
	НалоговыеОрганы.Очистить();
	
	Запрос = Новый Запрос(
	"ВЫБРАТЬ
	|	НалоговыеОрганы.Ссылка КАК НалоговыйОрган,
	|	НалоговыеОрганы.Код КАК НалоговыйОрганКод,
	|	НалоговыеОрганы.Наименование КАК НалоговыйОрганНаименование,
	|	НалоговыеОрганы.КПП КАК КПП,
	|	НалоговыеОрганы.ПометкаУдаления,
	|	ВЫБОР
	|		КОГДА НалоговыеОрганы.ПометкаУдаления
	|			ТОГДА 4
	|		ИНАЧЕ 3
	|	КОНЕЦ КАК СтандартнаяКартинка
	|ИЗ
	|	Справочник.РегистрацииВНалоговомОргане КАК НалоговыеОрганы
	|ГДЕ
	|	НалоговыеОрганы.Владелец = &ГоловнаяОрганизация
	|	И НалоговыеОрганы.КрупнейшийНалогоплательщик = ИСТИНА
	|СГРУППИРОВАТЬ ПО
	|	НалоговыеОрганы.Ссылка,
	|	ВЫБОР
	|		КОГДА НалоговыеОрганы.ПометкаУдаления
	|			ТОГДА 4
	|		ИНАЧЕ 3
	|	КОНЕЦ,
	|	НалоговыеОрганы.ПометкаУдаления,
	|	НалоговыеОрганы.Код,
	|	НалоговыеОрганы.Наименование,
	|	НалоговыеОрганы.КПП");

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

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

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

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

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

&НаСервере
Процедура КрупнейшийНалогоплательщикЗаписатьНалоговыйОрганДляОрганизации(ОбновитьИсторию = Истина)

	РеквизитыОсновнойРегистрации = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ОсновнаяРегистрация,
																		"ДатаПостановкиНаУчет, КПП, НаименованиеИФНС");

	Если ОбновитьИсторию Тогда

		КрупнейшийНалогоплательщикИсторияРегистраций.Сортировать("Период");

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

		Для Каждого Запись Из ЗаписиКУдалению Цикл
			КрупнейшийНалогоплательщикИсторияРегистраций.Удалить(Запись);
		КонецЦикла;

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

	КонецЕсли;

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

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

		ЗафиксироватьТранзакцию();
	Исключение
		ОтменитьТранзакцию();
		ВызватьИсключение;
	КонецПопытки;

	КрупнейшийНалогоплательщикЗаполнитьСписокНалоговыхОрганов(ОсновнаяРегистрация);

	УстановитьТекстНадписи(ЭтотОбъект);

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

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

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

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

	КрупнейшийНалогоплательщикЗаполнитьСписокНалоговыхОрганов();
	
	УстановитьТекстНадписи(ЭтотОбъект);
	
КонецПроцедуры

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

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

&НаСервере
Процедура ОбработкаЗаписиРегистрацииНаСервере()
	
	Если Не КрупнейшийНалогоплательщик Тогда
		ЗаполнитьСписокНалоговыхОрганов();

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

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

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

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

//++ НЕ УТ

&НаСервере
Процедура УстановитьПризнакОбособленногоПодразделения(Подразделение, ЯвляетсяОбособленнымПодразделением, ИсторияРегистрацийВНалоговомОргане = Неопределено) Экспорт

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

//-- НЕ УТ

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

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