Параметры начисления транспортного налога / Модуль объекта

файл
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

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

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

Процедура ПриКопировании(ОбъектКопирования)
	
	ИнициализироватьДокумент();
	
КонецПроцедуры

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

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

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

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

Процедура ОбработкаУдаленияПроведения(Отказ)
	
	ПроведениеДокументов.ОбработкаУдаленияПроведенияДокумента(ЭтотОбъект, Отказ);
	
КонецПроцедуры

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

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

#Область Заполнение

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

Процедура ЗаполнитьДокументПоОтбору(Основание)

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

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

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

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

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

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

#Область ПроверкаЗаполнения

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

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

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

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

Процедура ЗаблокироватьЧитаемыеДанные()

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

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

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

#КонецЕсли

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