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