Параметры начисления земельного налога / Форма документа / Модуль формы

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

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

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

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)

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

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

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

&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)

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

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

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

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

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)

	// СтандартныеПодсистемы.РаботаСФайлами
	РаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия);
	// Конец СтандартныеПодсистемы.РаботаСФайлами

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

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

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

&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
	
	ВнеоборотныеАктивыКлиент.УстановитьТекущееВремяДляПрошлойДаты(Объект.Дата);

	ДатаПриИзмененииНаСервере();

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

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

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

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

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

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

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

&НаКлиенте
Процедура КБКНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	ВыборКода("КБК", "КБК");
	
КонецПроцедуры

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

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

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

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

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

	РаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент,
				ПараметрыПеретаскивания, СтандартнаяОбработка);

КонецПроцедуры
// Конец СтандартныеПодсистемы.РаботаСФайлами

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

	РаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент,
				ПараметрыПеретаскивания, СтандартнаяОбработка);

КонецПроцедуры
// Конец СтандартныеПодсистемы.РаботаСФайлами

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

	РаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);

КонецПроцедуры
// Конец СтандартныеПодсистемы.РаботаСФайлами

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

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

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

&НаКлиенте
Процедура ОСВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	ПараметрыПодбора = ОбщегоНазначенияУТКлиентСервер.ПараметрыПодбора(Элементы.ОСОсновноеСредство, ЭтотОбъект);

	ОткрытьФорму("Справочник.ОбъектыЭксплуатации.ФормаВыбора", 
					ПараметрыПодбора, Элементы.ОС,,,,, 
					РежимОткрытияОкнаФормы.БлокироватьОкноВладельца)
	
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура ПровестиДокумент(Команда)
	
	ОбщегоНазначенияУТКлиент.Провести(ЭтотОбъект);
	
КонецПроцедуры

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

#Область ПодключаемыеКоманды

// СтандартныеПодсистемы.РаботаСФайлами
&НаКлиенте
Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда)

	РаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда);

КонецПроцедуры
// Конец СтандартныеПодсистемы.РаботаСФайлами

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

&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
	ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьТекстНалоговойЛьготы(Форма)
	
	Форма.ТекстНалоговойЛьготы = ИмущественныеНалогиКлиентСервер.ПредставлениеЛьготыПоЗемельномуНалогу(Форма.Объект);
	
КонецПроцедуры

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

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

	ОповещениеОЗакрытии = Новый ОписаниеОповещения("ВыборКодаЗавершение", ЭтотОбъект, ДополнительныеПараметры);

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

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

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

&НаКлиентеНаСервереБезКонтекста
Процедура НастроитьЗависимыеЭлементыФормы(Форма, ИзмененныеРеквизиты = "")

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

&НаСервере
Процедура ДатаПриИзмененииНаСервере()

	ЗаполнитьКонецДействияПараметров();
	
	НастроитьЗависимыеЭлементыФормы(ЭтотОбъект, "Дата");
	
КонецПроцедуры

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

	Иначе	
	
		ТекстЗапроса = 
		"ВЫБРАТЬ
		|	ДанныеРегистра.ОсновноеСредство КАК ОсновноеСредство,
		|	ДанныеРегистра.Период КАК КонецДействия,
		|	ДанныеРегистра.Регистратор КАК ДокументИзмененияПараметров
		|ИЗ
		|	(ВЫБРАТЬ
		|		ДанныеРегистра.ОсновноеСредство КАК ОсновноеСредство,
		|		ДанныеРегистра.Период КАК Период,
		|		МАКСИМУМ(ДанныеРегистра.Регистратор) КАК Регистратор
		|	ИЗ
		|		(ВЫБРАТЬ
		|			ДанныеРегистра.ОсновноеСредство КАК ОсновноеСредство,
		|			МИНИМУМ(ДанныеРегистра.Период) КАК Период
		|		ИЗ
		|			РегистрСведений.ПараметрыНачисленияЗемельногоНалога КАК ДанныеРегистра
		|		ГДЕ
		|			ДанныеРегистра.Период > &Период
		|			И ДанныеРегистра.ДатаИсправления = ДАТАВРЕМЯ(1,1,1)
		|			И ДанныеРегистра.ОсновноеСредство В (&СписокОС)
		|			И ДанныеРегистра.Регистратор <> &Ссылка
		|			И ТИПЗНАЧЕНИЯ(ДанныеРегистра.Регистратор) = ТИП(Документ.ПараметрыНачисленияЗемельногоНалога)
		|			И ДанныеРегистра.Активность
		|
		|		СГРУППИРОВАТЬ ПО
		|			ДанныеРегистра.ОсновноеСредство
		|
		|		) КАК ДанныеРегистра_Период
		|
		|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПараметрыНачисленияЗемельногоНалога КАК ДанныеРегистра
		|		ПО ДанныеРегистра.ОсновноеСредство = ДанныеРегистра_Период.ОсновноеСредство
		|			И ДанныеРегистра.Период = ДанныеРегистра_Период.Период
		|			И ТИПЗНАЧЕНИЯ(ДанныеРегистра.Регистратор) = ТИП(Документ.ПараметрыНачисленияЗемельногоНалога)
		|			И ДанныеРегистра.Активность
		|
		|	СГРУППИРОВАТЬ ПО
		|		ДанныеРегистра.ОсновноеСредство,
		|		ДанныеРегистра.Период
		|
		|	) КАК ДанныеРегистра_Регистратор
		|
		|	ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПараметрыНачисленияЗемельногоНалога КАК ДанныеРегистра
		|	ПО ДанныеРегистра.ОсновноеСредство = ДанныеРегистра_Регистратор.ОсновноеСредство
		|		И ДанныеРегистра.Период = ДанныеРегистра_Регистратор.Период
		|		И ДанныеРегистра.Регистратор = ДанныеРегистра_Регистратор.Регистратор
		|		И ДанныеРегистра.Активность";
		
	КонецЕсли;
	
	Запрос = Новый Запрос(ТекстЗапроса);
	Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);
	Запрос.УстановитьПараметр("Организация", Объект.Организация);
	Запрос.УстановитьПараметр("Период", КонецДня(?(ЗначениеЗаполнено(Объект.Дата), Объект.Дата, ТекущаяДатаСеанса())));
	Запрос.УстановитьПараметр("СписокОС", Объект.ОС.Выгрузить().ВыгрузитьКолонку("ОсновноеСредство"));
	Запрос.УстановитьПараметр("НачалоДействия", Объект.НачалоДействия);
	Запрос.УстановитьПараметр("НачалоПериода", Объект.НачалоДействия);
	Запрос.УстановитьПараметр("КонецПериода", '000101010000');
	Запрос.УстановитьПараметр("ДатаДокумента", '000101010000');
	Запрос.УстановитьПараметр("БезОтбораОС", Ложь);
	
	УстановитьПривилегированныйРежим(Истина);
	Результат = Запрос.Выполнить().Выгрузить();
	УстановитьПривилегированныйРежим(Ложь);
	
	Для каждого ДанныеСтроки Из Объект.ОС Цикл
		ТекущиеЗначения = Результат.Найти(ДанныеСтроки.ОсновноеСредство, "ОсновноеСредство");
		Если ТекущиеЗначения <> Неопределено Тогда
			ЗаполнитьЗначенияСвойств(ДанныеСтроки, ТекущиеЗначения);
		Иначе
			ДанныеСтроки.КонецДействия = '000101010000';
			ДанныеСтроки.ДокументИзмененияПараметров = Неопределено;
		КонецЕсли; 
	КонецЦикла;
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ЗакрытьФорму()
	
	Закрыть();
	
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПроверитьНеобходимостьПерерасчетаНалога(ДатаРегистрации, Организация)

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

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

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