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