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