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