#Область ОписаниеПеременных
&НаКлиенте
Перем СтруктураСохраняемыхРеквизитов;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьУсловноеОформление();
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПриЧтенииСозданииНаСервере();
КонецЕсли;
ПараметрыВыбораСтатейИАналитик = Документы.ПараметрыНачисленияТранспортногоНалога.ПараметрыВыбораСтатейИАналитик();
ДоходыИРасходыСервер.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыВыбораСтатейИАналитик);
#Область СтандартныеПодсистемы
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
ГиперссылкаФайлов = РаботаСФайлами.ГиперссылкаФайлов();
ГиперссылкаФайлов.Размещение = "КоманднаяПанель";
РаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ГиперссылкаФайлов);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтотОбъект);
СобытияФорм.ПриСозданииНаСервере(ЭтотОбъект, Отказ, СтандартнаяОбработка);
#КонецОбласти
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ДатыЗапретаИзменения.ОбъектПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПриЧтенииСозданииНаСервере();
ПараметрыВыбораСтатейИАналитик = Документы.ПараметрыНачисленияТранспортногоНалога.ПараметрыВыбораСтатейИАналитик();
ДоходыИРасходыСервер.ПриЧтенииНаСервере(ЭтотОбъект, ПараметрыВыбораСтатейИАналитик);
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
СтруктураСохраняемыхРеквизитов = Новый Структура;
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
РаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
Объект.СтавкаОпределяетсяАвтоматически = Булево(СтавкаОпределяетсяАвтоматически);
СобытияФормКлиент.ПередЗаписью(ЭтотОбъект, Отказ, ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
ВыполнитьИнициализацию();
ЗаполнитьКонецДействияПараметров();
ДоходыИРасходыСервер.ПослеЗаписиНаСервере(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
Оповестить("Запись_ПараметрыНачисленияТранспортногоНалога", ПараметрыЗаписи, Объект.Ссылка);
ОбщегоНазначенияУТКлиент.ОповеститьОЗаписиДокументаВЖурнал();
ВнеоборотныеАктивыКлиент.ОповеститьОЗаписиДокументаВЖурналОС();
ОбщегоНазначенияУТКлиент.ВыполнитьДействияПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "Запись_ОбъектыЭксплуатации"
ИЛИ ИмяСобытия = "ЗагруженыСтавкиТранспортногоНалога"
ИЛИ ИмяСобытия = "Запись_СтавкиТранспортногоНалога" Тогда
ЗаполнитьПредставлениеНалоговойСтавки(ЭтотОбъект);
КонецЕсли;
РаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
ВнеоборотныеАктивыКлиент.УстановитьТекущееВремяДляПрошлойДаты(Объект.Дата);
ДатаПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура РежимИсправленияСПрошлойДатыПриИзменении(Элемент)
Если НЕ Объект.РежимИсправленияСПрошлойДаты Тогда
Объект.НачалоДействия = '000101010000';
КонецЕсли;
ЗаполнитьКонецДействияПараметров();
НастроитьЗависимыеЭлементыФормыНаКлиентеНаСервере(ЭтотОбъект, Элемент.Имя);
КонецПроцедуры
&НаКлиенте
Процедура НачалоДействияПриИзменении(Элемент)
ЗаполнитьКонецДействияПараметров();
КонецПроцедуры
&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
ОрганизацияПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура КодВидаТранспортногоСредстваПриИзменении(Элемент)
ПриИзмененииКодаВидаТранспортногоСредства();
КонецПроцедуры
&НаКлиенте
Процедура КодВидаТранспортногоСредстваНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ОбработчикВыбора = Новый ОписаниеОповещения("ВыбратьКодВидаТранспортногоСредстваЗавершение", ЭтотОбъект);
ИмущественныеНалогиКлиент.ВыбратьКодВидаТранспортногоСредства(
ЭтотОбъект, Элемент, ДатаРегистрации(Объект), Объект.КодВидаТранспортногоСредства, ОбработчикВыбора);
КонецПроцедуры
&НаКлиенте
Процедура ЕдиницаИзмеренияНалоговойБазыПриИзменении(Элемент)
УстановитьЗаголовокНалоговойБазы(ЭтотОбъект);
ЗаполнитьПредставлениеНалоговойСтавки(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ЭкологическийКлассНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ТипОбъекта", "РегистрСведений");
ПараметрыФормы.Вставить("НазваниеОбъекта", "ПараметрыНачисленияТранспортногоНалога");
ПараметрыФормы.Вставить("НазваниеМакета", "КодыЭкологическихКлассов");
ПараметрыФормы.Вставить("ТекущийПериод", Объект.Дата);
ОповещениеОЗакрытии = Новый ОписаниеОповещения("ЭкологическийКлассНачалоВыбораЗавершение", ЭтотОбъект);
ОткрытьФорму("ОбщаяФорма.ФормаВыбораКода", ПараметрыФормы,,,,,ОповещениеОЗакрытии);
КонецПроцедуры
&НаКлиенте
Процедура ПостановкаНаУчетВНалоговомОрганеПриИзменении(Элемент)
УстановитьДоступностьНалоговогоОргана(ЭтотОбъект);
Если Объект.ПостановкаНаУчетВНалоговомОргане = ПредопределенноеЗначение("Перечисление.ПостановкаНаУчетВНалоговомОргане.ВДругомНалоговомОргане") Тогда
ВосстановитьРеквизиты(Объект, "НалоговыйОрган, КодПоОКТМО, КодПоОКАТО", СтруктураСохраняемыхРеквизитов);
Иначе
СохранитьРеквизиты(Объект, "НалоговыйОрган, КодПоОКТМО, КодПоОКАТО", СтруктураСохраняемыхРеквизитов);
КонецЕсли;
УстановитьЗаголовокСвернутогоОтображенияПостановкаНаУчетВНО();
КонецПроцедуры
&НаКлиенте
Процедура НалоговыйОрганПриИзменении(Элемент)
НалоговыйОрганПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура НалоговаяЛьготаПриИзменении(Элемент)
ПриИзмененииНалоговойЛьготы(ЭтотОбъект, СтруктураСохраняемыхРеквизитов);
КонецПроцедуры
&НаКлиенте
Процедура КодПоОКТМОПриИзменении(Элемент)
УстановитьЗаголовокСвернутогоОтображенияПостановкаНаУчетВНО();
ЗаполнитьПредставлениеНалоговойСтавки(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ЛьготнаяСтавкаПриИзменении(Элемент)
УстановитьЗаголовокСвернутогоОтображенияНалоговойЛьготы(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПроцентУменьшенияПриИзменении(Элемент)
УстановитьЗаголовокСвернутогоОтображенияНалоговойЛьготы(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура СуммаУменьшенияПриИзменении(Элемент)
УстановитьЗаголовокСвернутогоОтображенияНалоговойЛьготы(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура КодЛьготыНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ТипОбъекта", "РегистрСведений");
ПараметрыФормы.Вставить("НазваниеОбъекта", "ПараметрыНачисленияТранспортногоНалога");
ПараметрыФормы.Вставить("НазваниеМакета", "ЛьготыПоТранспортномуНалогу");
Если Элемент.Имя = "КодНалоговойЛьготыУменьшениеСуммыНалогаНаСумму" Тогда
ПараметрыФормы.Вставить("ТекущийПериод", '20070101');
Иначе
ПараметрыФормы.Вставить("ТекущийПериод", Объект.Дата);
КонецЕсли;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ИмяЭлемента", Элемент.Имя);
ОповещениеОЗакрытии = Новый ОписаниеОповещения("КодНалоговойЛьготыНачалоВыбораЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ОткрытьФорму("ОбщаяФорма.ФормаВыбораКода", ПараметрыФормы,,,,,ОповещениеОЗакрытии);
КонецПроцедуры
&НаКлиенте
Процедура КодЛьготыОчистка(Элемент, СтандартнаяОбработка)
Объект.КодНалоговойЛьготы = "";
УстановитьЗаголовокСвернутогоОтображенияНалоговойЛьготы(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура РегиональныйКодЛьготыНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ОснованиеЛьготы", Объект.РегиональныйКодЛьготы);
ДополнительныеПараметры = Новый Структура("Льгота", Элемент.Имя);
Оповещение = Новый ОписаниеОповещения("ОткрытьФормуРегиональныйКодЛьготыЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ОткрытьФорму(
"Обработка.ОбщиеОбъектыРеглОтчетности.Форма.ФормаВводаОснованияЛьготы",
ПараметрыФормы,
ЭтотОбъект,,,,Оповещение,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура РегиональныйКодЛьготыОчистка(Элемент, СтандартнаяОбработка)
Объект.РегиональныйКодЛьготы = "";
УстановитьЗаголовокСвернутогоОтображенияНалоговойЛьготы(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура НалоговаяБазаПриИзменении(Элемент)
ЗаполнитьПредставлениеНалоговойСтавки(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура СтавкаОпределяетсяАвтоматическиПриИзменении(Элемент)
Объект.НалоговаяСтавка = 0;
Объект.НалоговаяСтавкаЗависитОтГодаВыпускаТС = Ложь;
ЗаполнитьПредставлениеНалоговойСтавки(ЭтотОбъект);
НастроитьЗависимыеЭлементыФормыНаКлиентеНаСервере(ЭтотОбъект, "СтавкаОпределяетсяАвтоматически");
КонецПроцедуры
&НаКлиенте
Процедура СтавкаУказанаВручнуюПриИзменении(Элемент)
ЗаполнитьНалоговуюСтавку(ЭтотОбъект);
Объект.НалоговаяСтавка = НалоговаяСтавка;
НастроитьЗависимыеЭлементыФормыНаКлиентеНаСервере(ЭтотОбъект, "СтавкаОпределяетсяАвтоматически");
КонецПроцедуры
&НаКлиенте
Процедура НалоговаяСтавкаПредставлениеОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПараметрыФормы = Новый Структура;
Если ПараметрыСтавки <> Неопределено Тогда
ОтборНабораЗаписей = Новый Структура("Период,ОКТМО");
ЗаполнитьЗначенияСвойств(ОтборНабораЗаписей, ПараметрыСтавки);
ПараметрыФормы.Вставить("Отбор", ОтборНабораЗаписей);
ПараметрыСтавкиФормыСписка = Новый Структура(
"Период,
|ОКТМО,
|НаименованиеОбъектаНалогообложения,
|МинимальноеЗначениеМощности,
|МаксимальноеЗначениеМощности,
|МинимальноеКоличествоЛетСГодаВыпускаТС,
|МаксимальноеКоличествоЛетСГодаВыпускаТС");
ЗаполнитьЗначенияСвойств(ПараметрыСтавкиФормыСписка, ПараметрыСтавки);
ПараметрыФормы.Вставить("ПараметрыСтавки", ПараметрыСтавкиФормыСписка);
КонецЕсли;
ОткрытьФорму("РегистрСведений.СтавкиТранспортногоНалога.ФормаСписка", ПараметрыФормы);
Оповестить("ПоказатьПараметрыСтавки", ПараметрыФормы);
КонецПроцедуры
&НаКлиенте
Процедура ТекстНалоговойЛьготыНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОповещениеОЗакрытии = Новый ОписаниеОповещения("НастройкаЛьготыПоТранспортномуНалогуЗавершение", ЭтотОбъект);
ИмущественныеНалогиКлиент.НастройкаЛьготыПоТранспортномуНалогу(
ЭтотОбъект, Объект, ОповещениеОЗакрытии);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраНажатие(Элемент, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент,
ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент,
ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыОС
&НаКлиенте
Процедура ОСПриИзменении(Элемент)
ЗаполнитьПредставлениеНалоговойСтавки(ЭтотОбъект);
ЗаполнитьКодыВидовТС();
КонецПроцедуры
&НаКлиенте
Процедура ОСПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
УстановитьВидимость(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОСОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ОСОбработкаВыбораНаСервере(ВыбранноеЗначение);
КонецПроцедуры
&НаКлиенте
Процедура ОСВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ТекущиеДанные = Элементы.ОС.ТекущиеДанные;
Если Поле = Элементы.ОСКонецДействия
И ТекущиеДанные <> Неопределено
И ЗначениеЗаполнено(ТекущиеДанные.ДокументИзмененияПараметров) Тогда
ПоказатьЗначение(, ТекущиеДанные.ДокументИзмененияПараметров);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОСОсновноеСредствоПриИзменении(Элемент)
ОСОсновноеСредствоПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ОСДатаРегистрацииПриИзменении(Элемент)
ТекущаяСтрока = Элементы.ОС.ТекущаяСтрока;
ДатаРегистрации = Элементы.ОС.ДанныеСтроки(ТекущаяСтрока).ДатаРегистрации;
ОчиститьСообщения();
Если ДатаРегистрации <> Дата(1, 1, 1) Тогда
Если Объект.РежимИсправленияСПрошлойДаты И ДатаРегистрации < Объект.НачалоДействия
Или НЕ Объект.РежимИсправленияСПрошлойДаты И НачалоДня(ДатаРегистрации) < НачалоДня(Объект.Дата) Тогда
ПроверкаНеобходимостиПерерасчета = ПроверитьНеобходимостьПерерасчетаНалога(ДатаРегистрации, ГоловнаяОрганизация);
Если ПроверкаНеобходимостиПерерасчета.ТребуетсяПерерасчет Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(ПроверкаНеобходимостиПерерасчета.Комментарий);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыОтражениеРасходов
&НаКлиенте
Процедура ОтражениеРасходовСтатьяРасходовПриИзменении(Элемент)
ДоходыИРасходыКлиентСервер.СтатьяПриИзменении(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура ОтражениеРасходовСтатьяРасходовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ДоходыИРасходыКлиент.НачалоВыбораСтатьи(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ОтражениеРасходовАналитикаРасходовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ДоходыИРасходыКлиент.НачалоВыбораАналитикиРасходов(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ОтражениеРасходовАналитикаРасходовАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
ДоходыИРасходыКлиент.АвтоПодборАналитикиРасходов(ЭтотОбъект, Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ОтражениеРасходовАналитикаРасходовОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
ДоходыИРасходыКлиент.ОкончаниеВводаТекстаАналитикиРасходов(ЭтотОбъект, Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ЗаполнитьДатуРегистрации(Команда)
Если Элементы.ОС.ВыделенныеСтроки.Количество() = 0 Тогда
ТекстПредупреждения = НСтр("ru='Необходимо выбрать строки, в которых необходимо заполнить дату регистрации'");
ПоказатьПредупреждение(,ТекстПредупреждения);
Возврат;
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ЗаполнитьДатуРегистрацииЗавершение", ЭтотОбъект, Элементы.ОС.ВыделенныеСтроки);
ПоказатьВводДаты(Оповещение, Объект.Дата, НСтр("ru='Введите дату регистрации'"), ЧастиДаты.Дата);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСтавку(Команда)
Ошибки = Новый Массив;
ЗаполнитьНалоговуюСтавку(ЭтотОбъект, Ошибки);
Объект.НалоговаяСтавка = НалоговаяСтавка;
Для Каждого Ошибка Из Ошибки Цикл
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(Ошибка.ТекстСообщения, , Ошибка.Поле, "");
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура Подобрать(Команда)
ОценкаПроизводительностиКлиент.ЗамерВремени("Справочник.ОбъектыЭксплуатации.ФормаВыбора");
ПараметрыПодбора = ОбщегоНазначенияУТКлиентСервер.ПараметрыПодбора(Элементы.ОСОсновноеСредство, ЭтотОбъект);
ОткрытьФорму("Справочник.ОбъектыЭксплуатации.ФормаВыбора",
ПараметрыПодбора, Элементы.ОС,,,,,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца)
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьИсправления(Команда)
СписокОС = Новый Массив;
Для Каждого ДанныеСтроки Из Объект.ОС Цикл
СписокОС.Добавить(ДанныеСтроки.ОсновноеСредство);
КонецЦикла;
ВнеоборотныеАктивыКлиентЛокализация.ОткрытьВзаимозависимыеИсправленияИмущественныхНалогов(
Объект.Организация,
Объект.НачалоДействия,
Объект.Дата,
СписокОС);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиИЗакрыть(Команда)
ОбщегоНазначенияУТКлиент.ПровестиИЗакрыть(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьДокумент(Команда)
ОбщегоНазначенияУТКлиент.Записать(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиДокумент(Команда)
ОбщегоНазначенияУТКлиент.Провести(ЭтотОбъект);
КонецПроцедуры
#Область ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда)
РаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда);
КонецПроцедуры
&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(Команда, ЭтотОбъект, Объект);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
#Область ОбщаяСобственность
Элемент = УсловноеОформление.Элементы.Добавить();
Элемент.Поля.Элементы.Добавить().Поле = Новый ПолеКомпоновкиДанных(Элементы.ОСДоляВПравеОбщейСобственностиЧислитель.Имя);
Элемент.Поля.Элементы.Добавить().Поле = Новый ПолеКомпоновкиДанных(Элементы.ОСДоляВПравеОбщейСобственностиЗнаменатель.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ОС.ОбщаяСобственность");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаОтмененнойСтрокиДокумента);
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<не требуется>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
#КонецОбласти
#Область ОСДатаРегистрации
Элемент = УсловноеОформление.Элементы.Добавить();
Элемент.Поля.Элементы.Добавить().Поле = Новый ПолеКомпоновкиДанных(Элементы.ОСДатаРегистрации.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ОС.ДатаРегистрации");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаОтмененнойСтрокиДокумента);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<совпадает с датой документа>'"));
#КонецОбласти
#Область ОтражениеРасходовПодразделение
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтражениеРасходовПодразделение.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ОтражениеРасходов.Подразделение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<Местонахождение ОС>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НезаполненноеПолеТаблицы);
#КонецОбласти
#Область ОСКонецДействия_Заполнено
Элемент = УсловноеОформление.Элементы.Добавить();
Элемент.Поля.Элементы.Добавить().Поле = Новый ПолеКомпоновкиДанных(Элементы.ОСКонецДействия.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ОС.ДокументИзмененияПараметров");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ГиперссылкаЦвет);
#КонецОбласти
#Область ОСКонецДействия_НеЗаполнено
Элемент = УсловноеОформление.Элементы.Добавить();
Элемент.Поля.Элементы.Добавить().Поле = Новый ПолеКомпоновкиДанных(Элементы.ОСКонецДействия.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ОС.ДокументИзмененияПараметров");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаОтмененнойСтрокиДокумента);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<не указано>'"));
#КонецОбласти
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииСозданииНаСервере()
ПараметрыСтавки = Неопределено;
ВыполнитьИнициализацию();
ЗаполнитьКонецДействияПараметров();
ЗаполнитьДанныеОНалоговомОргане();
УстановитьВидимость(ЭтотОбъект);
УстановитьДоступностьНалоговогоОргана(ЭтотОбъект);
УстановитьЗаголовокНалоговойБазы(ЭтотОбъект);
УстановитьЗаголовокСвернутогоОтображенияПостановкаНаУчетВНО();
УстановитьЗаголовокСвернутогоОтображенияНалоговойЛьготы(ЭтотОбъект);
УстановитьДоступностьНалоговыхЛьгот(ЭтотОбъект);
СтавкаОпределяетсяАвтоматически = Число(Объект.СтавкаОпределяетсяАвтоматически);
НастроитьЗависимыеЭлементыФормыНаСервере();
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура НастроитьЗависимыеЭлементыФормыНаКлиентеНаСервере(Знач Форма, Знач ИзмененныеРеквизиты = "")
Элементы = Форма.Элементы;
Объект = Форма.Объект;
СтруктураИзмененныхРеквизитов = Новый Структура(ИзмененныеРеквизиты);
ОбновитьВсе = СтруктураИзмененныхРеквизитов.Количество() = 0;
Если СтруктураИзмененныхРеквизитов.Свойство("Дата")
ИЛИ СтруктураИзмененныхРеквизитов.Свойство("Организация")
ИЛИ ОбновитьВсе Тогда
ЗаполнитьПредставлениеНалоговойСтавки(Форма);
КонецЕсли;
Если СтруктураИзмененныхРеквизитов.Свойство("СтавкаОпределяетсяАвтоматически")
ИЛИ ОбновитьВсе Тогда
Элементы.НалоговаяСтавкаПредставление.Видимость = Форма.СтавкаОпределяетсяАвтоматически;
Элементы.НалоговаяСтавка.ТолькоПросмотр = Форма.СтавкаОпределяетсяАвтоматически;
Элементы.ЗаполнитьСтавку.Доступность = НЕ Форма.СтавкаОпределяетсяАвтоматически;
Элементы.НалоговаяСтавкаЗависитОтГодаВыпускаТС.ТолькоПросмотр = Форма.СтавкаОпределяетсяАвтоматически;
КонецЕсли;
Если СтруктураИзмененныхРеквизитов.Свойство("РежимИсправленияСПрошлойДаты")
ИЛИ ОбновитьВсе Тогда
Элементы.НачалоДействия.ТолькоПросмотр = НЕ Объект.РежимИсправленияСПрошлойДаты;
Элементы.НачалоДействия.АвтоОтметкаНезаполненного = Объект.РежимИсправленияСПрошлойДаты;
Элементы.НачалоДействия.ОтметкаНезаполненного = Объект.РежимИсправленияСПрошлойДаты И НЕ ЗначениеЗаполнено(Объект.НачалоДействия);
Элементы.ОСДатаРегистрации.Видимость = НЕ Объект.РежимИсправленияСПрошлойДаты;
КонецЕсли;
Если СтруктураИзмененныхРеквизитов.Свойство("Льгота")
ИЛИ ОбновитьВсе Тогда
Форма.ТекстНалоговойЛьготы = ИмущественныеНалогиКлиентСервер.ПредставлениеЛьготыПоТранспортномуНалогу(Объект);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура НастроитьЗависимыеЭлементыФормыНаСервере(Знач ИзмененныеРеквизиты = "")
СтруктураИзмененныхРеквизитов = Новый Структура(ИзмененныеРеквизиты);
ОбновитьВсе = СтруктураИзмененныхРеквизитов.Количество() = 0;
Если СтруктураИзмененныхРеквизитов.Свойство("Дата")
ИЛИ ОбновитьВсе Тогда
ЗаполнитьКодыВидовТС();
ЗаполнитьКонецДействияПараметров();
УстановитьВидимость(ЭтотОбъект);
НастроитьПовышающийКоэффициент();
КонецЕсли;
Если СтруктураИзмененныхРеквизитов.Свойство("Организация")
ИЛИ ОбновитьВсе Тогда
ЗаполнитьДанныеОНалоговомОргане();
УстановитьГоловнуюОрганизацию(ЭтотОбъект);
КонецЕсли;
НастроитьЗависимыеЭлементыФормыНаКлиентеНаСервере(ЭтотОбъект, ИзмененныеРеквизиты);
КонецПроцедуры
&НаСервере
Процедура ВыполнитьИнициализацию()
Если ИнициализацияВыполнена Тогда
Возврат;
КонецЕсли;
ИнициализацияВыполнена = Истина;
СписокКодовЕдиницИзмеренияТС = ИмущественныеНалоги.КодыЕдиницИзмеренияТранспортныхСредств();
Для Каждого ЕдиницаИзмеренияТС Из СписокКодовЕдиницИзмеренияТС Цикл
Элементы.ЕдиницаИзмеренияНалоговойБазы.СписокВыбора.Добавить(ЕдиницаИзмеренияТС.Значение, ЕдиницаИзмеренияТС.Представление);
КонецЦикла;
ИмущественныеНалоги.ЗаполнитьСписокРегионов(СписокРегионов);
ЗаполнитьКодыВидовТС();
Если Объект.НалоговаяЛьгота = Перечисления.ВидыНалоговыхЛьготПоТранспортномуНалогу.ОсвобождениеОтНалогообложения Тогда
КодНалоговойЛьготыОсвобождениеОтНалогообложения = Объект.КодНалоговойЛьготы;
РегиональныйКодЛьготыОсвобождениеОтНалогообложения = Объект.РегиональныйКодЛьготы;
ИначеЕсли Объект.НалоговаяЛьгота = Перечисления.ВидыНалоговыхЛьготПоТранспортномуНалогу.СнижениеНалоговойСтавки Тогда
КодНалоговойЛьготыСнижениеНалоговойСтавки = Объект.КодНалоговойЛьготы;
РегиональныйКодЛьготыСнижениеНалоговойСтавки = Объект.РегиональныйКодЛьготы;
ИначеЕсли Объект.НалоговаяЛьгота = Перечисления.ВидыНалоговыхЛьготПоТранспортномуНалогу.УменьшениеСуммыНалогаВПроцентах Тогда
КодНалоговойЛьготыУменьшениеСуммыНалогаВПроцентах = Объект.КодНалоговойЛьготы;
РегиональныйКодЛьготыУменьшениеСуммыНалогаВПроцентах = Объект.РегиональныйКодЛьготы;
ИначеЕсли Объект.НалоговаяЛьгота = Перечисления.ВидыНалоговыхЛьготПоТранспортномуНалогу.УменьшениеСуммыНалогаНаСумму Тогда
КодНалоговойЛьготыУменьшениеСуммыНалогаНаСумму = Объект.КодНалоговойЛьготы;
КонецЕсли;
ЦветаГиперссылкиСтавкиНалога = Новый Структура;
ЦветаГиперссылкиСтавкиНалога.Вставить("Заполнена", ЦветаСтиля.ГиперссылкаЦвет);
ЦветаГиперссылкиСтавкиНалога.Вставить("НеЗаполнена", ЦветаСтиля.НезаполненныйРеквизит);
ВалютаРегламентированногоУчетаПредставление = Строка(ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Объект.Организация));
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьКодыВидовТС()
КодыВидовТС = Новый ФиксированноеСоответствие(ИмущественныеНалоги.КодыВидовТранспортныхСредств(ДатаРегистрации(Объект)));
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьВидимость(Форма)
Объект = Форма.Объект;
Элементы = Форма.Элементы;
ДатаРегистрации = ВнеоборотныеАктивыКлиентСервер.МинимальнаяДатаРегистрации(Объект);
Элементы.КодПоОКАТО.Видимость = (ДатаРегистрации <> '000101010000' И Год(ДатаРегистрации) < 2014);
ВидимостьЛьготы =
(ДатаРегистрации <> '000101010000' И Год(ДатаРегистрации) < 2012)
ИЛИ Объект.НалоговаяЛьгота = ПредопределенноеЗначение("Перечисление.ВидыНалоговыхЛьготПоТранспортномуНалогу.УменьшениеСуммыНалогаНаСумму");
Элементы.НалоговаяЛьготаУменьшениеСуммыНалогаНаСумму.Видимость = ВидимостьЛьготы;
Элементы.СуммаУменьшения.Видимость = ВидимостьЛьготы;
Элементы.КодНалоговойЛьготыУменьшениеСуммыНалогаНаСумму.Видимость = ВидимостьЛьготы;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступностьНалоговогоОргана(Форма)
Форма.Элементы.ГруппаНалоговыйОрган.Доступность =
Форма.Объект.ПостановкаНаУчетВНалоговомОргане = ПредопределенноеЗначение("Перечисление.ПостановкаНаУчетВНалоговомОргане.ВДругомНалоговомОргане");
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступностьНалоговыхЛьгот(Форма)
НалоговаяЛьгота = Форма.Объект.НалоговаяЛьгота;
Элементы = Форма.Элементы;
Элементы.ГруппаКодЛьготыОсвобождениеОтНалогообложения.Доступность =
НалоговаяЛьгота = ПредопределенноеЗначение("Перечисление.ВидыНалоговыхЛьготПоТранспортномуНалогу.ОсвобождениеОтНалогообложения");
СнижениеНалоговойСтавки =
НалоговаяЛьгота = ПредопределенноеЗначение("Перечисление.ВидыНалоговыхЛьготПоТранспортномуНалогу.СнижениеНалоговойСтавки");
Элементы.ЛьготнаяСтавка.Доступность = СнижениеНалоговойСтавки;
Элементы.ГруппаКодЛьготыСнижениеНалоговойСтавки.Доступность = СнижениеНалоговойСтавки;
УменьшениеСуммыНалогаВПроцентах =
НалоговаяЛьгота = ПредопределенноеЗначение("Перечисление.ВидыНалоговыхЛьготПоТранспортномуНалогу.УменьшениеСуммыНалогаВПроцентах");
Элементы.ПроцентУменьшения.Доступность = УменьшениеСуммыНалогаВПроцентах;
Элементы.ГруппаКодЛьготыУменьшениеСуммыНалогаВПроцентах.Доступность = УменьшениеСуммыНалогаВПроцентах;
УменьшениеСуммыНалогаНаСумму =
НалоговаяЛьгота = ПредопределенноеЗначение("Перечисление.ВидыНалоговыхЛьготПоТранспортномуНалогу.УменьшениеСуммыНалогаНаСумму");
Элементы.СуммаУменьшения.Доступность = УменьшениеСуммыНалогаНаСумму;
Элементы.КодНалоговойЛьготыУменьшениеСуммыНалогаНаСумму.Доступность = УменьшениеСуммыНалогаНаСумму;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьЗаголовокНалоговойБазы(Форма)
Форма.Элементы.НалоговаяБаза.Заголовок = ИмущественныеНалогиКлиентСервер.ПредставлениеБазыТранспортногоНалога(
Форма.Объект.ЕдиницаИзмеренияНалоговойБазы);
КонецПроцедуры
&НаСервере
Процедура УстановитьЗаголовокСвернутогоОтображенияПостановкаНаУчетВНО()
ТекстПостановкаНаУчетВНалоговомОргане = НСтр("ru = 'Постановка на учет в налоговом органе'");
Если Объект.ПостановкаНаУчетВНалоговомОргане = ПредопределенноеЗначение("Перечисление.ПостановкаНаУчетВНалоговомОргане.ПоМестуНахожденияОрганизации") Тогда
ТекстПостановкаНаУчетВНалоговомОргане = НСтр("ru = 'Постановка на учет в налоговом органе: по месту нахождения организации'");
ИначеЕсли Объект.ПостановкаНаУчетВНалоговомОргане = ПредопределенноеЗначение("Перечисление.ПостановкаНаУчетВНалоговомОргане.ВДругомНалоговомОргане") Тогда
Если ЗначениеЗаполнено(Объект.НалоговыйОрган) Тогда
КодНО = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.НалоговыйОрган, "Код");
Иначе
КодНО = "<...>";
КонецЕсли;
ШаблонТекста = НСтр("ru = 'Постановка на учет в налоговом органе: ИФНС %1, код по ОКТМО %2'");
ТекстПостановкаНаУчетВНалоговомОргане =
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ШаблонТекста,
КодНО,
?(ЗначениеЗаполнено(Объект.КодПоОКТМО), Объект.КодПоОКТМО, "<...>"));
КонецЕсли;
УстановитьЗаголовокГруппы(ЭтотОбъект, "ГруппаПостановкаНаУчетВНалоговомОргане", ТекстПостановкаНаУчетВНалоговомОргане);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьЗаголовокСвернутогоОтображенияНалоговойЛьготы(Форма)
Объект = Форма.Объект;
Если Объект.НалоговаяЛьгота =
ПредопределенноеЗначение("Перечисление.ВидыНалоговыхЛьготПоТранспортномуНалогу.НеПрименяется") Тогда
ТекстНалоговойЛьготы = НСтр("ru = 'Налоговая льгота: Не применяется'");
ИначеЕсли Объект.НалоговаяЛьгота =
ПредопределенноеЗначение("Перечисление.ВидыНалоговыхЛьготПоТранспортномуНалогу.ОсвобождениеОтНалогообложения") Тогда
ТекстНалоговойЛьготы = НСтр("ru = 'Освобождение от налогообложения'");
ИначеЕсли Объект.НалоговаяЛьгота =
ПредопределенноеЗначение("Перечисление.ВидыНалоговыхЛьготПоТранспортномуНалогу.СнижениеНалоговойСтавки") Тогда
ШаблонТекста = НСтр("ru = 'Пониженная налоговая ставка: %1'");
ТекстНалоговойЛьготы =
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонТекста, Объект.ЛьготнаяСтавка);
ИначеЕсли Объект.НалоговаяЛьгота =
ПредопределенноеЗначение("Перечисление.ВидыНалоговыхЛьготПоТранспортномуНалогу.УменьшениеСуммыНалогаВПроцентах") Тогда
ШаблонТекста = НСтр("ru = 'Уменьшение суммы налога на: %1 %2'");
ТекстНалоговойЛьготы =
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонТекста, Объект.ПроцентУменьшения, "%");
ИначеЕсли Объект.НалоговаяЛьгота =
ПредопределенноеЗначение("Перечисление.ВидыНалоговыхЛьготПоТранспортномуНалогу.УменьшениеСуммыНалогаНаСумму") Тогда
ШаблонТекста = НСтр("ru = 'Уменьшение суммы налога на %1'");
ТекстНалоговойЛьготы =
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонТекста, Объект.СуммаУменьшения);
КонецЕсли;
Если Объект.НалоговаяЛьгота <> ПредопределенноеЗначение("Перечисление.ВидыНалоговыхЛьготПоТранспортномуНалогу.НеПрименяется") Тогда
Если Объект.КодНалоговойЛьготы = "30200" Тогда
ШаблонТекста = НСтр("ru = '%1, код льготы %2'");
ТекстНалоговойЛьготы = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонТекста,
ТекстНалоговойЛьготы,
Объект.КодНалоговойЛьготы);
Иначе
ШаблонТекста = НСтр("ru = '%1, код льготы %2/%3'");
ТекстНалоговойЛьготы = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонТекста,
ТекстНалоговойЛьготы,
?(ЗначениеЗаполнено(Объект.КодНалоговойЛьготы), Объект.КодНалоговойЛьготы, "<...>"),
?(ЗначениеЗаполнено(Объект.РегиональныйКодЛьготы), Объект.РегиональныйКодЛьготы, "<...>"));
КонецЕсли;
КонецЕсли;
УстановитьЗаголовокГруппы(Форма, "ГруппаНалоговаяЛьгота", ТекстНалоговойЛьготы);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьЗаголовокГруппы(Форма, НазваниеГруппы, ЗаголовокТекст)
Форма.Элементы[НазваниеГруппы].ЗаголовокСвернутогоОтображения = ЗаголовокТекст;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьГоловнуюОрганизацию(Форма)
Форма.ГоловнаяОрганизация = ОбщегоНазначенияБПВызовСервераПовтИсп.ГоловнаяОрганизация(Форма.Объект.Организация);
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьКодВидаТранспортногоСредстваЗавершение(Результат, ДопПараметры) Экспорт
Если ТипЗнч(Результат) <> Тип("Структура") Тогда
Возврат;
КонецЕсли;
Объект.КодВидаТранспортногоСредства = Результат.КодВидаТС;
Модифицированность = Истина;
ПриИзмененииКодаВидаТранспортногоСредства();
КонецПроцедуры
&НаКлиенте
Процедура ПриИзмененииКодаВидаТранспортногоСредства()
СтруктураКодов = КодыВидовТС.Получить(Объект.КодВидаТранспортногоСредства);
Если СтруктураКодов <> Неопределено Тогда
КодЕдиницыИзмерения = Элементы.ЕдиницаИзмеренияНалоговойБазы.СписокВыбора.НайтиПоЗначению(СтруктураКодов.КодЕдиницыИзмерения);
Если КодЕдиницыИзмерения <> Неопределено Тогда
Объект.ЕдиницаИзмеренияНалоговойБазы = КодЕдиницыИзмерения.Значение;
Иначе
Объект.ЕдиницаИзмеренияНалоговойБазы = "";
КонецЕсли;
УстановитьЗаголовокНалоговойБазы(ЭтотОбъект);
КонецЕсли;
ЗаполнитьПредставлениеНалоговойСтавки(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ЭкологическийКлассНачалоВыбораЗавершение(РезультатЗакрытия, ДополнительныеПараметры) Экспорт
КодЭкологическогоКласса = РезультатЗакрытия;
Если КодЭкологическогоКласса <> Неопределено Тогда
Объект.ЭкологическийКласс = КодЭкологическогоКласса;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура СохранитьРеквизиты(Объект, СписокРеквизитов, СтруктураСохраняемыхРеквизитов)
ВременнаяСтруктура = Новый Структура(СписокРеквизитов);
Для каждого КлючИЗначение Из ВременнаяСтруктура Цикл
СтруктураСохраняемыхРеквизитов.Вставить(КлючИЗначение.Ключ, Объект[КлючИЗначение.Ключ]);
Объект[КлючИЗначение.Ключ] = ОбщегоНазначенияБПКлиентСервер.ПустоеЗначениеТипа(ТипЗнч(Объект[КлючИЗначение.Ключ]));
КонецЦикла;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ВосстановитьРеквизиты(Объект, СписокРеквизитов, СтруктураСохраняемыхРеквизитов)
ВременнаяСтруктура = Новый Структура(СписокРеквизитов);
Для каждого КлючИЗначение Из ВременнаяСтруктура Цикл
Если СтруктураСохраняемыхРеквизитов.Свойство(КлючИЗначение.Ключ) Тогда
Объект[КлючИЗначение.Ключ] = СтруктураСохраняемыхРеквизитов[КлючИЗначение.Ключ]
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура НалоговыйОрганПриИзмененииНаСервере()
Если ЗначениеЗаполнено(Объект.НалоговыйОрган) Тогда
ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Объект.НалоговыйОрган, "КодПоОКТМО, КодПоОКАТО");
Объект.КодПоОКТМО = ЗначенияРеквизитов.КодПоОКТМО;
Объект.КодПоОКАТО = ЗначенияРеквизитов.КодПоОКАТО;
КонецЕсли;
УстановитьЗаголовокСвернутогоОтображенияПостановкаНаУчетВНО();
ЗаполнитьПредставлениеНалоговойСтавки(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура КодНалоговойЛьготыНачалоВыбораЗавершение(РезультатЗакрытия, ДополнительныеПараметры) Экспорт
Если РезультатЗакрытия <> Неопределено Тогда
ЭтотОбъект[ДополнительныеПараметры.ИмяЭлемента] = РезультатЗакрытия;
Объект.КодНалоговойЛьготы = РезультатЗакрытия;
КонецЕсли;
УстановитьЗаголовокСвернутогоОтображенияНалоговойЛьготы(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФормуРегиональныйКодЛьготыЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено Тогда
ЭтотОбъект[ДополнительныеПараметры.Льгота] = Результат;
Объект.РегиональныйКодЛьготы = Результат;
Модифицированность = Истина;
КонецЕсли;
УстановитьЗаголовокСвернутогоОтображенияНалоговойЛьготы(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьДатуРегистрацииЗавершение(ВыбраннаяДата, МассивВыделенныхСтрок) Экспорт
Если ВыбраннаяДата <> Неопределено Тогда
Для Каждого ИдентификаторСтроки Из МассивВыделенныхСтрок Цикл
СтрокаТаблицы = Объект.ОС.НайтиПоИдентификатору(ИдентификаторСтроки);
СтрокаТаблицы.ДатаРегистрации = ВыбраннаяДата;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура НастроитьПовышающийКоэффициент()
ПолужирныйШрифт = Новый Шрифт(,, Истина);
СписокВыбора = Элементы.ПовышающийКоэффициент.СписокВыбора;
СписокВыбора.Очистить();
СписокВыбора.Добавить(0, "-");
Если Год(Объект.Дата) >= 2022 ИЛИ Объект.Дата = '000101010000' Тогда
СписокВыбора.Добавить(3, "3");
ШаблонСтроки = НСтр("ru = 'Исчисление суммы налога производится с учетом повышающего коэффициента:
|<b>3</b> - в отношении легковых автомобилей средней стоимостью от 10 миллионов до 15 миллионов рублей включительно, с года выпуска которых прошло не более 10 лет;
|<b>3</b> - в отношении легковых автомобилей средней стоимостью от 15 миллионов рублей, с года выпуска которых прошло не более 20 лет.
|При этом исчисление сроков начинается с года выпуска соответствующего легкового автомобиля.
|Порядок расчета средней стоимости легковых автомобилей определяется Минпромторгом РФ.
|Перечень легковых автомобилей средней стоимостью от 3 миллионов рублей (с 2022 года - от 10 миллионов рублей)
|размещается ежегодно не позднее 31 марта на <a href = ""https://minpromtorg.gov.ru/docs/list/"">официальном сайте Минпромторга РФ</a>'");
ИначеЕсли Год(Объект.Дата) >= 2018 Тогда
СписокВыбора.Добавить(1.1, "1,1");
СписокВыбора.Добавить(2, "2");
СписокВыбора.Добавить(3, "3");
ШаблонСтроки = НСтр("ru = 'Исчисление суммы налога производится с учетом повышающего коэффициента:
|<b>1,1</b> - в отношении легковых автомобилей средней стоимостью от 3 миллионов до 5 миллионов рублей включительно, с года выпуска которых прошло не более 3 лет;
|<b>2</b> - в отношении легковых автомобилей средней стоимостью от 5 миллионов до 10 миллионов рублей включительно, с года выпуска которых прошло не более 5 лет;
|<b>3</b> - в отношении легковых автомобилей средней стоимостью от 10 миллионов до 15 миллионов рублей включительно, с года выпуска которых прошло не более 10 лет;
|<b>3</b> - в отношении легковых автомобилей средней стоимостью от 15 миллионов рублей, с года выпуска которых прошло не более 20 лет.
|При этом исчисление сроков начинается с года выпуска соответствующего легкового автомобиля.
|Порядок расчета средней стоимости легковых автомобилей определяется Минпромторгом РФ.
|Перечень легковых автомобилей средней стоимостью от 3 миллионов рублей (с 2022 года - от 10 миллионов рублей)
|размещается ежегодно не позднее 31 марта на <a href = ""https://minpromtorg.gov.ru/docs/list/"">официальном сайте Минпромторга РФ</a>'");
Иначе
СписокВыбора.Добавить(1.1, "1,1");
СписокВыбора.Добавить(1.3, "1,3");
СписокВыбора.Добавить(1.5, "1,5");
СписокВыбора.Добавить(2, "2");
СписокВыбора.Добавить(3, "3");
ШаблонСтроки = НСтр("ru = 'Исчисление суммы налога производится с учетом повышающего коэффициента:
|<b>1,5</b> - в отношении легковых автомобилей средней стоимостью от 3 миллионов до 5 миллионов рублей включительно, с года выпуска которых прошло не более 1 года;
|<b>1,3</b> - в отношении легковых автомобилей средней стоимостью от 3 миллионов до 5 миллионов рублей включительно, с года выпуска которых прошло от 1 года до 2 лет;
|<b>1,1</b> - в отношении легковых автомобилей средней стоимостью от 3 миллионов до 5 миллионов рублей включительно, с года выпуска которых прошло от 2 до 3 лет;
|<b>2</b> - в отношении легковых автомобилей средней стоимостью от 5 миллионов до 10 миллионов рублей включительно, с года выпуска которых прошло не более 5 лет;
|<b>3</b> - в отношении легковых автомобилей средней стоимостью от 10 миллионов до 15 миллионов рублей включительно, с года выпуска которых прошло не более 10 лет;
|<b>3</b> - в отношении легковых автомобилей средней стоимостью от 15 миллионов рублей, с года выпуска которых прошло не более 20 лет.
|При этом исчисление сроков начинается с года выпуска соответствующего легкового автомобиля.
|Порядок расчета средней стоимости легковых автомобилей определяется Минпромторгом РФ.
|Перечень легковых автомобилей средней стоимостью от 3 миллионов рублей (с 2022 года - от 10 миллионов рублей)
|размещается ежегодно не позднее 31 марта на <a href = ""https://minpromtorg.gov.ru/docs/list/"">официальном сайте Минпромторга РФ</a>'");
КонецЕсли;
Элементы.ПовышающийКоэффициент.РасширеннаяПодсказка.Заголовок = СтроковыеФункции.ФорматированнаяСтрока(ШаблонСтроки);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ЗаполнитьПредставлениеНалоговойСтавки(Форма)
Если НЕ Форма.СтавкаОпределяетсяАвтоматически Тогда
Возврат;
КонецЕсли;
Форма.НалоговаяСтавкаПредставление = Новый ФорматированнаяСтрока(НСтр("ru = '<не определена>'"));
Форма.ПараметрыСтавки = Неопределено;
ЗаполнитьНалоговуюСтавку(Форма);
Если Форма.ПараметрыСтавки <> Неопределено Тогда
СтавкаТекст = СтрШаблон(НСтр("ru = '%1 %2'"), Формат(Форма.НалоговаяСтавка, "ЧДЦ=2; ЧН="), Форма.ВалютаРегламентированногоУчетаПредставление);
ЦветГиперссылки = Форма.ЦветаГиперссылкиСтавкиНалога.Заполнена;
ПредставлениеЕдиницыБазы = Форма.Элементы.ЕдиницаИзмеренияНалоговойБазы.СписокВыбора.НайтиПоЗначению(Форма.Объект.ЕдиницаИзмеренияНалоговойБазы);
ПредставлениеЕдиницыБазы = ?(ПредставлениеЕдиницыБазы <> Неопределено, ПредставлениеЕдиницыБазы.Представление, "");
СведенияОРегионе = Форма.СписокРегионов.НайтиПоЗначению(Форма.ПараметрыСтавки.ОКТМО);
РегионПредставление = ?(СведенияОРегионе <> Неопределено, СведенияОРегионе.Представление, НСтр("ru = 'Не удалось определить регион'"));
Если Форма.ПараметрыСтавки.НалоговаяСтавкаЗависитОтГодаВыпускаТС Тогда
СтавкаПодсказка = НСтр("ru = 'Ставка определяется по данным классификатора ""Ставки транспортного налога"".
|Используются следующие параметры:
|- Регион по коду ОКТМО: %1
|- Категория по коду вида ТС: %2
|- %3: %4 %5
|- Количество лет с года выпуска: %6'");
СтавкаПодсказка = СтрШаблон(СтавкаПодсказка,
РегионПредставление,
Строка(Форма.ПараметрыСтавки.НаименованиеОбъектаНалогообложения),
ИмущественныеНалогиКлиентСервер.ПредставлениеБазыТранспортногоНалога(Форма.Объект.ЕдиницаИзмеренияНалоговойБазы),
Формат(Форма.Объект.НалоговаяБаза, "ЧДЦ=2"),
ПредставлениеЕдиницыБазы,
Форма.ПараметрыСтавки.КоличествоЛетСГодаВыпускаТС);
Иначе
СтавкаПодсказка = НСтр("ru = 'Ставка определяется по данным классификатора ""Ставки транспортного налога"".
|Используются следующие параметры:
|- Регион по коду ОКТМО: %1
|- Категория по коду вида ТС: %2
|- %3: %4 %5'");
СтавкаПодсказка = СтрШаблон(СтавкаПодсказка,
РегионПредставление,
Строка(Форма.ПараметрыСтавки.НаименованиеОбъектаНалогообложения),
ИмущественныеНалогиКлиентСервер.ПредставлениеБазыТранспортногоНалога(Форма.Объект.ЕдиницаИзмеренияНалоговойБазы),
Формат(Форма.Объект.НалоговаяБаза, "ЧДЦ=2"),
ПредставлениеЕдиницыБазы);
КонецЕсли;
Иначе
СтавкаТекст = НСтр("ru = '<не определена>'");
ЦветГиперссылки = Форма.ЦветаГиперссылкиСтавкиНалога.НеЗаполнена;
СтавкаПодсказка = НСтр("ru = 'Не удалось определить ставку.
|Ставка определяется по данным классификатора ""Ставки транспортного налога"".
|Возможно, не указаны параметры: Код по ОКТМО, Код вида ТС, %1,
|дата выпуска (если ставка зависит от года выпуска) или нет данных в классификаторе.'");
СтавкаПодсказка = СтрШаблон(СтавкаПодсказка, ИмущественныеНалогиКлиентСервер.ПредставлениеБазыТранспортногоНалога(Форма.Объект.ЕдиницаИзмеренияНалоговойБазы));
КонецЕсли;
Форма.НалоговаяСтавкаПредставление = Новый ФорматированнаяСтрока(СтавкаТекст,, ЦветГиперссылки,, "#ОткрытьСписок");
Форма.Элементы.НалоговаяСтавкаПредставление.РасширеннаяПодсказка.Заголовок = Новый ФорматированнаяСтрока(СтавкаПодсказка);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ЗаполнитьНалоговуюСтавку(Форма, Ошибки = Неопределено)
Объект = Форма.Объект;
Если Ошибки = Неопределено Тогда
Ошибки = Новый Массив;
КонецЕсли;
Отказ = Ложь;
Если НЕ ЗначениеЗаполнено(Объект.Дата) Тогда
Отказ = Истина;
Ошибка = Новый Структура("ТекстСообщения, Поле",
ОбщегоНазначенияКлиентСервер.ТекстОшибкиЗаполнения(,, НСтр("ru = 'Дата'")), "Объект.Период");
Ошибки.Добавить(Ошибка);
КонецЕсли;
Если Объект.ПостановкаНаУчетВНалоговомОргане = ПредопределенноеЗначение("Перечисление.ПостановкаНаУчетВНалоговомОргане.ВДругомНалоговомОргане") Тогда
ОКТМОДляЗаполнения = Объект.КодПоОКТМО;
Если НЕ ЗначениеЗаполнено(Объект.КодПоОКТМО) Тогда
Отказ = Истина;
Ошибка = Новый Структура("ТекстСообщения, Поле",
ОбщегоНазначенияКлиентСервер.ТекстОшибкиЗаполнения(,, НСтр("ru = 'ОКТМО'")), "Объект.КодПоОКТМО");
Ошибки.Добавить(Ошибка);
КонецЕсли;
Иначе
ОКТМОДляЗаполнения = Форма.ОКТМО;
Если НЕ ЗначениеЗаполнено(Форма.ОКТМО) Тогда
Отказ = Истина;
Ошибка = Новый Структура("ТекстСообщения, Поле",
ОбщегоНазначенияКлиентСервер.ТекстОшибкиЗаполнения(,, НСтр("ru = 'ОКТМО'")), "ОКТМОСсылка");
Ошибки.Добавить(Ошибка);
КонецЕсли;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.КодВидаТранспортногоСредства) Тогда
Отказ = Истина;
Ошибка = Новый Структура("ТекстСообщения, Поле",
ОбщегоНазначенияКлиентСервер.ТекстОшибкиЗаполнения(,, НСтр("ru = 'Код вида ТС'")), "Объект.КодВидаТранспортногоСредства");
Ошибки.Добавить(Ошибка);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.НалоговаяБаза) Тогда
Отказ = Истина;
Ошибка = Новый Структура("ТекстСообщения, Поле",
ОбщегоНазначенияКлиентСервер.ТекстОшибкиЗаполнения(,, Форма.Элементы.НалоговаяБаза.Заголовок), "Объект.НалоговаяБаза");
Ошибки.Добавить(Ошибка);
КонецЕсли;
Если Отказ Тогда
Возврат;
КонецЕсли;
ДанныеДляЗаполнения = Новый Структура("
|Период,
|ОсновноеСредство,
|Организация,
|ОКТМО,
|КодВидаТранспортногоСредства,
|НалоговаяБаза");
ЗаполнитьЗначенияСвойств(ДанныеДляЗаполнения, Объект);
ДанныеДляЗаполнения.Период = Объект.Дата;
ДанныеДляЗаполнения.ОКТМО = ОКТМОДляЗаполнения;
Если Объект.ОС.Количество() <> 0 Тогда
ДанныеДляЗаполнения.ОсновноеСредство = Объект.ОС[0].ОсновноеСредство;
КонецЕсли;
ЗаполнитьСтавкуНаСервере(
ДанныеДляЗаполнения,
Форма.НалоговаяСтавка,
Форма.ПараметрыСтавки,
Ошибки);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ЗаполнитьСтавкуНаСервере(ДанныеДляЗаполнения, НалоговаяСтавка, ПараметрыСтавки, Ошибки)
КодПоОКТМО = Лев(ДанныеДляЗаполнения.ОКТМО, 3);
Если НЕ (КодПоОКТМО = "118" ИЛИ КодПоОКТМО = "718" ИЛИ КодПоОКТМО = "719") Тогда
КодПоОКТМО = Лев(КодПоОКТМО, 2);
КонецЕсли;
Макет = Документы.ПараметрыНачисленияТранспортногоНалога.ПолучитьМакет("КодыВидовИКатегорииТС");
КодыВидовИКатегорииТС = ОбщегоНазначения.ПрочитатьXMLВТаблицу(Макет.ПолучитьТекст()).Данные;
НайденнаяСтрока = КодыВидовИКатегорииТС.Найти(ДанныеДляЗаполнения.КодВидаТранспортногоСредства, "КодВида");
Если НайденнаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
КатегорияТС = НайденнаяСтрока.Категория;
Год = Год(ДанныеДляЗаполнения.Период);
ТекстЗапроса =
"ВЫБРАТЬ
| СтавкиТранспортногоНалогаСрезПоследних.Период КАК Период,
| СтавкиТранспортногоНалогаСрезПоследних.ОКТМО КАК ОКТМО,
| СтавкиТранспортногоНалогаСрезПоследних.НаименованиеОбъектаНалогообложения КАК НаименованиеОбъектаНалогообложения,
| СтавкиТранспортногоНалогаСрезПоследних.МинимальноеЗначениеМощности КАК МинимальноеЗначениеМощности,
| СтавкиТранспортногоНалогаСрезПоследних.МаксимальноеЗначениеМощности КАК МаксимальноеЗначениеМощности,
| СтавкиТранспортногоНалогаСрезПоследних.МинимальноеКоличествоЛетСГодаВыпускаТС КАК МинимальноеКоличествоЛетСГодаВыпускаТС,
| СтавкиТранспортногоНалогаСрезПоследних.МаксимальноеКоличествоЛетСГодаВыпускаТС КАК МаксимальноеКоличествоЛетСГодаВыпускаТС,
| СтавкиТранспортногоНалогаСрезПоследних.НалоговаяСтавка КАК НалоговаяСтавка
|ПОМЕСТИТЬ ВТВсеПодходящиеЗаписи
|ИЗ
| РегистрСведений.СтавкиТранспортногоНалога.СрезПоследних(
| &Период,
| ОКТМО = &ОКТМО
| И НаименованиеОбъектаНалогообложения = &НаименованиеОбъектаНалогообложения
| И МинимальноеЗначениеМощности <= &НалоговаяБаза
| И (МаксимальноеЗначениеМощности = 0
| ИЛИ &НалоговаяБаза <= МаксимальноеЗначениеМощности)) КАК СтавкиТранспортногоНалогаСрезПоследних
|;
|
|
|ВЫБРАТЬ
| МАКСИМУМ(ВТВсеПодходящиеЗаписи.Период) КАК Период
|ПОМЕСТИТЬ ВТПериодПоследнейЗаписи
|ИЗ
| ВТВсеПодходящиеЗаписи КАК ВТВсеПодходящиеЗаписи
|;
|
|
|ВЫБРАТЬ
| ВТВсеПодходящиеЗаписи.Период КАК Период,
| ВТВсеПодходящиеЗаписи.ОКТМО КАК ОКТМО,
| ВТВсеПодходящиеЗаписи.НаименованиеОбъектаНалогообложения КАК НаименованиеОбъектаНалогообложения,
| ВТВсеПодходящиеЗаписи.МинимальноеЗначениеМощности КАК МинимальноеЗначениеМощности,
| ВТВсеПодходящиеЗаписи.МаксимальноеЗначениеМощности КАК МаксимальноеЗначениеМощности,
| ВТВсеПодходящиеЗаписи.МинимальноеКоличествоЛетСГодаВыпускаТС КАК МинимальноеКоличествоЛетСГодаВыпускаТС,
| ВТВсеПодходящиеЗаписи.МаксимальноеКоличествоЛетСГодаВыпускаТС КАК МаксимальноеКоличествоЛетСГодаВыпускаТС,
| ВЫБОР
| КОГДА ВТВсеПодходящиеЗаписи.МинимальноеКоличествоЛетСГодаВыпускаТС > 0
| ИЛИ ВТВсеПодходящиеЗаписи.МаксимальноеКоличествоЛетСГодаВыпускаТС > 0
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК НалоговаяСтавкаЗависитОтГодаВыпускаТС,
| ВТВсеПодходящиеЗаписи.НалоговаяСтавка КАК НалоговаяСтавка
|ИЗ
| ВТВсеПодходящиеЗаписи КАК ВТВсеПодходящиеЗаписи
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТПериодПоследнейЗаписи КАК ВТПериодПоследнейЗаписи
| ПО ВТВсеПодходящиеЗаписи.Период = ВТПериодПоследнейЗаписи.Период";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Период", ?(Год > 2014, ДанныеДляЗаполнения.Период, Дата('20150101')));
Запрос.УстановитьПараметр("ОКТМО", ?(СтрДлина(КодПоОКТМО) = 3, КодПоОКТМО + "00000", КодПоОКТМО + "000000"));
Запрос.УстановитьПараметр("НаименованиеОбъектаНалогообложения", Перечисления.КатегорииТранспортныхСредств[КатегорияТС]);
Запрос.УстановитьПараметр("НалоговаяБаза", ДанныеДляЗаполнения.НалоговаяБаза);
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
Ошибка = Новый Структура("ТекстСообщения, Поле",
НСтр("ru = 'Не найдена подходящая ставка. Проверьте ставки транспортного налога'"),
"НалоговаяСтавкаСсылка");
Ошибки.Добавить(Ошибка);
НалоговаяСтавка = 0;
Иначе
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
НалоговаяСтавкаЗависитОтГодаВыпускаТС = Выборка.НалоговаяСтавкаЗависитОтГодаВыпускаТС;
Если НалоговаяСтавкаЗависитОтГодаВыпускаТС
И ЗначениеЗаполнено(ДанныеДляЗаполнения.ОсновноеСредство) Тогда
ДатаВыпуска = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДанныеДляЗаполнения.ОсновноеСредство, "ДатаВыпуска");
Если ЗначениеЗаполнено(ДатаВыпуска) Тогда
КоличествоЛетСГодаВыпускаТС = Год - Год(ДатаВыпуска);
Если Выборка.МинимальноеКоличествоЛетСГодаВыпускаТС <= КоличествоЛетСГодаВыпускаТС
И (НЕ ЗначениеЗаполнено(Выборка.МаксимальноеКоличествоЛетСГодаВыпускаТС)
ИЛИ КоличествоЛетСГодаВыпускаТС <= Выборка.МаксимальноеКоличествоЛетСГодаВыпускаТС) Тогда
ПараметрыСтавки = Новый Структура(
"Период,
|ОКТМО,
|НаименованиеОбъектаНалогообложения,
|МинимальноеЗначениеМощности,
|МаксимальноеЗначениеМощности,
|МинимальноеКоличествоЛетСГодаВыпускаТС,
|МаксимальноеКоличествоЛетСГодаВыпускаТС,
|НалоговаяСтавкаЗависитОтГодаВыпускаТС,
|КоличествоЛетСГодаВыпускаТС");
ЗаполнитьЗначенияСвойств(ПараметрыСтавки, Выборка);
ПараметрыСтавки.КоличествоЛетСГодаВыпускаТС = КоличествоЛетСГодаВыпускаТС;
НалоговаяСтавка = Выборка.НалоговаяСтавка;
Возврат;
КонецЕсли;
Иначе
Ошибка = Новый Структура("ТекстСообщения, Поле",
НСтр("ru = 'Ставка налога установлена с учетом количества лет, прошедших с года выпуска транспортного средства.
|Укажите дату выпуска основного средства.'"),
"Запись.ОсновноеСредство");
Ошибки.Добавить(Ошибка);
НалоговаяСтавка = 0;
Возврат;
КонецЕсли;
Иначе
ПараметрыСтавки = Новый Структура(
"Период,
|ОКТМО,
|НаименованиеОбъектаНалогообложения,
|МинимальноеЗначениеМощности,
|МаксимальноеЗначениеМощности,
|МинимальноеКоличествоЛетСГодаВыпускаТС,
|МаксимальноеКоличествоЛетСГодаВыпускаТС,
|НалоговаяСтавкаЗависитОтГодаВыпускаТС,
|КоличествоЛетСГодаВыпускаТС");
ЗаполнитьЗначенияСвойств(ПараметрыСтавки, Выборка);
НалоговаяСтавка = Выборка.НалоговаяСтавка;
Возврат;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОрганизацияПриИзмененииНаСервере()
НастроитьЗависимыеЭлементыФормыНаСервере("Организация");
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДанныеОНалоговомОргане()
ОКТМО = "";
Если ЗначениеЗаполнено(Объект.Организация) Тогда
НалоговыйОрган = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Организация, "РегистрацияВНалоговомОргане");
Если ЗначениеЗаполнено(НалоговыйОрган) Тогда
ОКТМО = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(НалоговыйОрган, "КодПоОКТМО");
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ДатаПриИзмененииНаСервере()
НастроитьЗависимыеЭлементыФормыНаСервере("Дата");
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ДатаРегистрации(Объект)
ДатаРегистрации = Объект.Дата;
Для каждого ДанныеСтроки Из Объект.ОС Цикл
Если ЗначениеЗаполнено(ДанныеСтроки.ДатаРегистрации) Тогда
ДатаРегистрации = ДанныеСтроки.ДатаРегистрации;
Прервать;
КонецЕсли;
КонецЦикла;
Возврат ДатаРегистрации;
КонецФункции
&НаСервере
Процедура ОСОбработкаВыбораНаСервере(Знач ВыбранноеЗначение)
ДобавленныеСтроки = ВнеоборотныеАктивыКлиентСервер.ОбработкаВыбораЭлемента(Объект.ОС, "ОсновноеСредство", ВыбранноеЗначение);
СписокОС = Новый Массив;
Для Каждого ДанныеСтроки Из ДобавленныеСтроки Цикл
Если ЗначениеЗаполнено(ДанныеСтроки.ОсновноеСредство) Тогда
СписокОС.Добавить(ДанныеСтроки.ОсновноеСредство);
КонецЕсли;
КонецЦикла;
ЗаполнитьПараметрыВСтрокеОС(СписокОС);
УстановитьВидимость(ЭтотОбъект);
ЗаполнитьПредставлениеНалоговойСтавки(ЭтотОбъект);
ЗаполнитьКонецДействияПараметров();
КонецПроцедуры
&НаСервере
Процедура ОСОсновноеСредствоПриИзмененииНаСервере()
ТекущиеДанные = Объект.ОС.НайтиПоИдентификатору(Элементы.ОС.ТекущаяСтрока);
Если ЗначениеЗаполнено(ТекущиеДанные.ОсновноеСредство) Тогда
СписокОС = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ТекущиеДанные.ОсновноеСредство);
ЗаполнитьПараметрыВСтрокеОС(СписокОС);
КонецЕсли;
ЗаполнитьКонецДействияПараметров();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПараметрыВСтрокеОС(СписокОС)
Если СписокОС.Количество() = 0 Тогда
Возврат;
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| ТекущиеПараметры.ОсновноеСредство КАК ОсновноеСредство,
| ТекущиеПараметры.РегистрационныйЗнак КАК РегистрационныйЗнак,
| ТекущиеПараметры.ИдентификационныйНомер КАК ИдентификационныйНомер,
| ТекущиеПараметры.Марка КАК Марка,
| ТекущиеПараметры.ОбщаяСобственность КАК ОбщаяСобственность,
| ТекущиеПараметры.ДоляВПравеОбщейСобственностиЧислитель КАК ДоляВПравеОбщейСобственностиЧислитель,
| ТекущиеПараметры.ДоляВПравеОбщейСобственностиЗнаменатель КАК ДоляВПравеОбщейСобственностиЗнаменатель
|ИЗ
| РегистрСведений.ПараметрыНачисленияТранспортногоНалога.СрезПоследних(
| &Дата,
| Регистратор <> &Ссылка
| И ДатаИсправления = ДАТАВРЕМЯ(1,1,1)
| И Организация = &Организация
| И ОсновноеСредство В (&СписокОС)) КАК ТекущиеПараметры";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Дата", Объект.Дата);
Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);
Запрос.УстановитьПараметр("Организация", Объект.Организация);
Запрос.УстановитьПараметр("СписокОС", СписокОС);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
СтруктураПоиска = Новый Структура("ОсновноеСредство", Выборка.ОсновноеСредство);
СписокСтрок = Объект.ОС.НайтиСтроки(СтруктураПоиска);
ЗаполнитьЗначенияСвойств(СписокСтрок[0], Выборка);
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьКонецДействияПараметров()
Если Объект.ОС.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Если Объект.РежимИсправленияСПрошлойДаты Тогда
СписокЗапросов = Новый Массив;
СписокЗапросов.Добавить(ВнеоборотныеАктивы.ТекстЗапросаЗаписиРегистраСУчетомИсправлений("ПараметрыНачисленияТранспортногоНалога"));
ТекстЗапроса =
"ВЫБРАТЬ
| ДанныеРегистра.ОсновноеСредство КАК ОсновноеСредство,
| ДанныеРегистра.Период КАК КонецДействия,
| ДанныеРегистра.Регистратор КАК ДокументИзмененияПараметров
|ИЗ
| (ВЫБРАТЬ
| ДанныеРегистра.ОсновноеСредство КАК ОсновноеСредство,
| ДанныеРегистра.Период КАК Период,
| МАКСИМУМ(ДанныеРегистра.Регистратор) КАК Регистратор
| ИЗ
| (ВЫБРАТЬ
| ДанныеРегистра.ОсновноеСредство КАК ОсновноеСредство,
| МИНИМУМ(ДанныеРегистра.Период) КАК Период
| ИЗ
| ПараметрыНачисленияТранспортногоНалога_ЗаписиСУчетомИсправлений КАК ДанныеРегистра
| ГДЕ
| ДанныеРегистра.Период > &НачалоДействия
| И ДанныеРегистра.ОсновноеСредство В (&СписокОС)
| И ДанныеРегистра.Регистратор <> &Ссылка
| И ТИПЗНАЧЕНИЯ(ДанныеРегистра.Регистратор) = ТИП(Документ.ПараметрыНачисленияТранспортногоНалога)
|
| СГРУППИРОВАТЬ ПО
| ДанныеРегистра.ОсновноеСредство
|
| ) КАК ДанныеРегистра_Период
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПараметрыНачисленияТранспортногоНалога_ЗаписиСУчетомИсправлений КАК ДанныеРегистра
| ПО ДанныеРегистра.ОсновноеСредство = ДанныеРегистра_Период.ОсновноеСредство
| И ДанныеРегистра.Период = ДанныеРегистра_Период.Период
| И ТИПЗНАЧЕНИЯ(ДанныеРегистра.Регистратор) = ТИП(Документ.ПараметрыНачисленияТранспортногоНалога)
|
| СГРУППИРОВАТЬ ПО
| ДанныеРегистра.ОсновноеСредство,
| ДанныеРегистра.Период
|
| ) КАК ДанныеРегистра_Регистратор
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПараметрыНачисленияТранспортногоНалога_ЗаписиСУчетомИсправлений КАК ДанныеРегистра
| ПО ДанныеРегистра.ОсновноеСредство = ДанныеРегистра_Регистратор.ОсновноеСредство
| И ДанныеРегистра.Период = ДанныеРегистра_Регистратор.Период
| И ДанныеРегистра.Регистратор = ДанныеРегистра_Регистратор.Регистратор";
СписокЗапросов.Добавить(ТекстЗапроса);
ТекстЗапроса = СтрСоединить(СписокЗапросов, ОбщегоНазначения.РазделительПакетаЗапросов());
Иначе
ТекстЗапроса =
"ВЫБРАТЬ
| ДанныеРегистра.ОсновноеСредство КАК ОсновноеСредство,
| ДанныеРегистра.Период КАК КонецДействия,
| ДанныеРегистра.Регистратор КАК ДокументИзмененияПараметров
|ИЗ
| (ВЫБРАТЬ
| ДанныеРегистра.ОсновноеСредство КАК ОсновноеСредство,
| ДанныеРегистра.Период КАК Период,
| МАКСИМУМ(ДанныеРегистра.Регистратор) КАК Регистратор
| ИЗ
| (ВЫБРАТЬ
| ДанныеРегистра.ОсновноеСредство КАК ОсновноеСредство,
| МИНИМУМ(ДанныеРегистра.Период) КАК Период
| ИЗ
| РегистрСведений.ПараметрыНачисленияТранспортногоНалога КАК ДанныеРегистра
| ГДЕ
| ДанныеРегистра.Период > &Период
| И ДанныеРегистра.ДатаИсправления = ДАТАВРЕМЯ(1,1,1)
| И ДанныеРегистра.ОсновноеСредство В (&СписокОС)
| И ДанныеРегистра.Регистратор <> &Ссылка
| И ТИПЗНАЧЕНИЯ(ДанныеРегистра.Регистратор) = ТИП(Документ.ПараметрыНачисленияТранспортногоНалога)
| И ДанныеРегистра.Активность
|
| СГРУППИРОВАТЬ ПО
| ДанныеРегистра.ОсновноеСредство
|
| ) КАК ДанныеРегистра_Период
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПараметрыНачисленияТранспортногоНалога КАК ДанныеРегистра
| ПО ДанныеРегистра.ОсновноеСредство = ДанныеРегистра_Период.ОсновноеСредство
| И ДанныеРегистра.Период = ДанныеРегистра_Период.Период
| И ТИПЗНАЧЕНИЯ(ДанныеРегистра.Регистратор) = ТИП(Документ.ПараметрыНачисленияТранспортногоНалога)
| И ДанныеРегистра.Активность
|
| СГРУППИРОВАТЬ ПО
| ДанныеРегистра.ОсновноеСредство,
| ДанныеРегистра.Период
|
| ) КАК ДанныеРегистра_Регистратор
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПараметрыНачисленияТранспортногоНалога КАК ДанныеРегистра
| ПО ДанныеРегистра.ОсновноеСредство = ДанныеРегистра_Регистратор.ОсновноеСредство
| И ДанныеРегистра.Период = ДанныеРегистра_Регистратор.Период
| И ДанныеРегистра.Регистратор = ДанныеРегистра_Регистратор.Регистратор
| И ДанныеРегистра.Активность";
КонецЕсли;
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);
Запрос.УстановитьПараметр("Организация", Объект.Организация);
Запрос.УстановитьПараметр("Период", КонецДня(?(ЗначениеЗаполнено(Объект.Дата), Объект.Дата, ТекущаяДатаСеанса())));
Запрос.УстановитьПараметр("СписокОС", Объект.ОС.Выгрузить().ВыгрузитьКолонку("ОсновноеСредство"));
Запрос.УстановитьПараметр("НачалоДействия", Объект.НачалоДействия);
Запрос.УстановитьПараметр("НачалоПериода", Объект.НачалоДействия);
Запрос.УстановитьПараметр("КонецПериода", '000101010000');
Запрос.УстановитьПараметр("ДатаДокумента", '000101010000');
Запрос.УстановитьПараметр("БезОтбораОС", Ложь);
УстановитьПривилегированныйРежим(Истина);
Результат = Запрос.Выполнить().Выгрузить();
УстановитьПривилегированныйРежим(Ложь);
Для каждого ДанныеСтроки Из Объект.ОС Цикл
ТекущиеЗначения = Результат.Найти(ДанныеСтроки.ОсновноеСредство, "ОсновноеСредство");
Если ТекущиеЗначения <> Неопределено Тогда
ЗаполнитьЗначенияСвойств(ДанныеСтроки, ТекущиеЗначения);
Иначе
ДанныеСтроки.КонецДействия = '000101010000';
ДанныеСтроки.ДокументИзмененияПараметров = Неопределено;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ПриИзмененииНалоговойЛьготы(Знач Форма, СтруктураСохраняемыхРеквизитов)
Объект = Форма.Объект;
Если Форма.ТекущаяНалоговаяЛьгота =
ПредопределенноеЗначение("Перечисление.ВидыНалоговыхЛьготПоТранспортномуНалогу.ОсвобождениеОтНалогообложения") Тогда
СохранитьРеквизиты(Форма,
"КодНалоговойЛьготыОсвобождениеОтНалогообложения, РегиональныйКодЛьготыОсвобождениеОтНалогообложения",
СтруктураСохраняемыхРеквизитов);
КодНалоговойЛьготыОсвобождениеОтНалогообложения = "";
РегиональныйКодЛьготыОсвобождениеОтНалогообложения = "";
ИначеЕсли Форма.ТекущаяНалоговаяЛьгота =
ПредопределенноеЗначение("Перечисление.ВидыНалоговыхЛьготПоТранспортномуНалогу.СнижениеНалоговойСтавки") Тогда
СохранитьРеквизиты(Форма, "РегиональныйКодЛьготыСнижениеНалоговойСтавки", СтруктураСохраняемыхРеквизитов);
СохранитьРеквизиты(Объект, "ЛьготнаяСтавка", СтруктураСохраняемыхРеквизитов);
КодНалоговойЛьготыСнижениеНалоговойСтавки = "";
РегиональныйКодЛьготыСнижениеНалоговойСтавки = "";
Объект.ЛьготнаяСтавка = 0;
ИначеЕсли Форма.ТекущаяНалоговаяЛьгота =
ПредопределенноеЗначение("Перечисление.ВидыНалоговыхЛьготПоТранспортномуНалогу.УменьшениеСуммыНалогаВПроцентах") Тогда
СохранитьРеквизиты(Форма, "РегиональныйКодЛьготыУменьшениеСуммыНалогаВПроцентах", СтруктураСохраняемыхРеквизитов);
СохранитьРеквизиты(Объект, "ПроцентУменьшения", СтруктураСохраняемыхРеквизитов);
КодНалоговойЛьготыУменьшениеСуммыНалогаВПроцентах = "";
РегиональныйКодЛьготыУменьшениеСуммыНалогаВПроцентах = "";
Объект.ПроцентУменьшения = 0;
ИначеЕсли Форма.ТекущаяНалоговаяЛьгота =
ПредопределенноеЗначение("Перечисление.ВидыНалоговыхЛьготПоТранспортномуНалогу.УменьшениеСуммыНалогаНаСумму") Тогда
СохранитьРеквизиты(Форма, "КодНалоговойЛьготыУменьшениеСуммыНалогаНаСумму", СтруктураСохраняемыхРеквизитов);
СохранитьРеквизиты(Объект, "СуммаУменьшения", СтруктураСохраняемыхРеквизитов);
КодНалоговойЛьготыУменьшениеСуммыНалогаНаСумму = "";
Объект.СуммаУменьшения = 0;
КонецЕсли;
Объект.КодНалоговойЛьготы = "";
Объект.РегиональныйКодЛьготы = "";
Если Объект.НалоговаяЛьгота =
ПредопределенноеЗначение("Перечисление.ВидыНалоговыхЛьготПоТранспортномуНалогу.ОсвобождениеОтНалогообложения") Тогда
ВосстановитьРеквизиты(Форма,
"КодНалоговойЛьготыОсвобождениеОтНалогообложения, РегиональныйКодЛьготыОсвобождениеОтНалогообложения",
СтруктураСохраняемыхРеквизитов);
Объект.КодНалоговойЛьготы = КодНалоговойЛьготыОсвобождениеОтНалогообложения;
Объект.РегиональныйКодЛьготы = РегиональныйКодЛьготыОсвобождениеОтНалогообложения;
ИначеЕсли Объект.НалоговаяЛьгота =
ПредопределенноеЗначение("Перечисление.ВидыНалоговыхЛьготПоТранспортномуНалогу.СнижениеНалоговойСтавки") Тогда
КодНалоговойЛьготыСнижениеНалоговойСтавки = "20230";
ВосстановитьРеквизиты(Форма, "РегиональныйКодЛьготыСнижениеНалоговойСтавки", СтруктураСохраняемыхРеквизитов);
ВосстановитьРеквизиты(Объект, "ЛьготнаяСтавка", СтруктураСохраняемыхРеквизитов);
Объект.КодНалоговойЛьготы = КодНалоговойЛьготыСнижениеНалоговойСтавки;
Объект.РегиональныйКодЛьготы = РегиональныйКодЛьготыСнижениеНалоговойСтавки;
ИначеЕсли Объект.НалоговаяЛьгота =
ПредопределенноеЗначение("Перечисление.ВидыНалоговыхЛьготПоТранспортномуНалогу.УменьшениеСуммыНалогаВПроцентах") Тогда
КодНалоговойЛьготыУменьшениеСуммыНалогаВПроцентах = "20220";
ВосстановитьРеквизиты(Форма, "РегиональныйКодЛьготыУменьшениеСуммыНалогаВПроцентах", СтруктураСохраняемыхРеквизитов);
ВосстановитьРеквизиты(Объект, "ПроцентУменьшения", СтруктураСохраняемыхРеквизитов);
Объект.КодНалоговойЛьготы = КодНалоговойЛьготыУменьшениеСуммыНалогаВПроцентах;
Объект.РегиональныйКодЛьготы = РегиональныйКодЛьготыУменьшениеСуммыНалогаВПроцентах;
ИначеЕсли Объект.НалоговаяЛьгота =
ПредопределенноеЗначение("Перечисление.ВидыНалоговыхЛьготПоТранспортномуНалогу.УменьшениеСуммыНалогаНаСумму") Тогда
ВосстановитьРеквизиты(Форма, "КодНалоговойЛьготыУменьшениеСуммыНалогаНаСумму", СтруктураСохраняемыхРеквизитов);
ВосстановитьРеквизиты(Объект, "СуммаУменьшения", СтруктураСохраняемыхРеквизитов);
Объект.КодНалоговойЛьготы = КодНалоговойЛьготыУменьшениеСуммыНалогаНаСумму;
Объект.РегиональныйКодЛьготы = "";
КонецЕсли;
ТекущаяНалоговаяЛьгота = Объект.НалоговаяЛьгота;
УстановитьДоступностьНалоговыхЛьгот(Форма);
УстановитьЗаголовокСвернутогоОтображенияНалоговойЛьготы(Форма);
КонецПроцедуры
&НаКлиенте
Процедура НастройкаЛьготыПоТранспортномуНалогуЗавершение(Результат, ДопПараметры) Экспорт
НастроитьЗависимыеЭлементыФормыНаКлиентеНаСервере(ЭтотОбъект, "Льгота");
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ЗакрытьФорму()
Закрыть();
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПроверитьНеобходимостьПерерасчетаНалога(ДатаРегистрации, Организация)
Возврат РасчетИмущественныхНалоговУП.ПроверитьНеобходимостьПерерасчетаНалога(ДатаРегистрации,
Организация,
ПредопределенноеЗначение("Перечисление.ВидыИмущественныхНалогов.ТранспортныйНалог"));
КонецФункции
#КонецОбласти