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