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

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

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

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

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

	#КонецОбласти
	
КонецПроцедуры

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

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

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

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

	УправлениеСвойствами.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);

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

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

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

	МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтотОбъект, ПараметрыЗаписи);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура НачалоПериодаПриИзменении(Элемент)
	
	Если Объект.КонецПериода < Объект.НачалоПериода
		И Объект.КонецПериода <> '000101010000'
		И Объект.НачалоПериода <> '000101010000' Тогда
		Объект.КонецПериода = КонецКвартала(Объект.НачалоПериода);
	КонецЕсли;

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

&НаКлиенте
Процедура КонецПериодаПриИзменении(Элемент)
	
	Если Объект.НачалоПериода > Объект.КонецПериода
		И Объект.НачалоПериода <> '000101010000'
		И Объект.КонецПериода <> '000101010000' Тогда
		Объект.НачалоПериода = НачалоКвартала(Объект.КонецПериода);
	КонецЕсли;

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

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

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

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

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

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

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

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

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

#Область СтандартныеПодсистемы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура Рассчитать(Команда)
	
	Если МожноРассчитатьВариантПерерасчетаИСумму() Тогда
		НачатьРасчетВариантаПерерасчетаИСуммы();
	КонецЕсли;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область ПриИзмененииРеквизитов

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

	Если ТипЗнч(ИзмененныеРеквизитыИлиЭлемент) = Тип("Строка") Тогда
		ИзмененныеРеквизиты = ИзмененныеРеквизитыИлиЭлемент;
	Иначе
		ИзмененныеРеквизиты = ИзмененныеРеквизитыИлиЭлемент.Имя;
	КонецЕсли;

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

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

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

		Элементы.ВалютаУпр.Видимость = Элементы.СуммаКорректировкиУпр.Видимость;

	КонецЕсли;
		
КонецПроцедуры

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

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

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

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

&НаКлиенте
Функция ТребуетсяВызовСервераДляНастройкиЭлементовФормы(СтруктураИзмененныхРеквизитов)

	Возврат СтруктураИзмененныхРеквизитов.Количество() = 0
		ИЛИ СтруктураИзмененныхРеквизитов.Свойство("Дата")
		ИЛИ СтруктураИзмененныхРеквизитов.Свойство("Номер")
		ИЛИ СтруктураИзмененныхРеквизитов.Свойство("Организация")
		ИЛИ СтруктураИзмененныхРеквизитов.Свойство("ВидНалога")
		ИЛИ СтруктураИзмененныхРеквизитов.Свойство("ОсновноеСредство");

КонецФункции

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

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

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

#Область РасчетВариантаПерерасчетаИСуммы

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

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

&НаКлиенте
Процедура НачатьРасчетВариантаПерерасчетаИСуммы()

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

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

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

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

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

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

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

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

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

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

#Область Прочее

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

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

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

&НаСервере
Процедура ИнициализацияФормыПриСозданииНаСервере()

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

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

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

&НаСервере
Процедура ИнициализироватьСостояниеНачисленияЕНП()
	
	Элементы.НачислениеЕНП.Заголовок = НСтр("ru = 'Создать документ Начисление ЕНП'");
	НачислениеЕНПСтатус = 4;
	
	Если Не Объект.Ссылка.Пустая() Тогда
		ДанныеНачисленияЕНП = ПолучитьНачислениеЕНП(Объект.Ссылка);
		НачислениеЕНП = ДанныеНачисленияЕНП.ДокументНачислениеЕНП;
		НачислениеЕНПСтатус = ДанныеНачисленияЕНП.Статус;
		
		Если Не НачислениеЕНП.Пустая() Тогда
			Элементы.НачислениеЕНП.Заголовок = НачислениеЕНП;
		КонецЕсли;
	КонецЕсли;
	
	Если НачислениеЕНПСтатус = 1 Тогда
		КартинкаСтатуса = БиблиотекаКартинок.ДокументПроведен;
	ИначеЕсли НачислениеЕНПСтатус = 2 Тогда
		КартинкаСтатуса = БиблиотекаКартинок.ДокументПомеченНаУдаление;
	ИначеЕсли НачислениеЕНПСтатус = 3 Тогда
		КартинкаСтатуса = БиблиотекаКартинок.Документ;
	ИначеЕсли НачислениеЕНПСтатус = 4 Тогда
		КартинкаСтатуса = БиблиотекаКартинок.СоздатьДокумент;
	КонецЕсли;
	
	Элементы.СтатусНачисленияЕНП.Картинка = КартинкаСтатуса;
	
КонецПроцедуры

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

&НаСервере
Процедура ИнициализироватьСлужебныеПараметрыФормы()

	НовыеСлужебныеПараметрыФормы = Новый Структура;
	НовыеСлужебныеПараметрыФормы.Вставить("ВалютыСовпадают", ВалютаУпр = ВалютаРегл);
	
	СлужебныеПараметрыФормы = Новый ФиксированнаяСтруктура(НовыеСлужебныеПараметрыФормы);

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

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

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

&НаКлиенте
Процедура ВыбратьПериодПерерасчетаЗавершение(Период, ДополнительныеПараметры) Экспорт
	
	Если ЗначениеЗаполнено(Объект.НачалоПериода) Тогда
		Объект.НачалоПериода = НачалоКвартала(Объект.НачалоПериода);
	КонецЕсли;
	
	Если ЗначениеЗаполнено(Объект.КонецПериода) Тогда
		Объект.КонецПериода = КонецКвартала(Объект.КонецПериода);
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

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

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

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