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