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