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