Нематериальные активы и расходы на НИОКР / Форма элемента / Модуль формы

файл
#Область ОписаниеПеременных

&НаКлиенте
Перем ЗначенияРеквизитовДоИзменения; // см. СохранитьЗначенияРеквизитовДоИзменения 

#КонецОбласти

#Область ОбработчикиСобытийФормы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	Если Параметры.Свойство("АвтоТест") Тогда
		Возврат;
	КонецЕсли;
	
	ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
	
	ЦветНедоступногоТекста = ЦветаСтиля.ЦветТекстаНеактуальногоСписка;
	
	Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
		
		ПриЧтенииСозданииНаСервере();
		
	КонецЕсли;
	
	// Обработчик подсистемы "Свойства"
	ДополнительныеПараметры = Новый Структура;
	ДополнительныеПараметры.Вставить("Объект", Объект);
	ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
	УправлениеСвойствами.ПриСозданииНаСервере(ЭтаФорма, ДополнительныеПараметры);
	
	// СтандартныеПодсистемы.ВерсионированиеОбъектов
	ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
	
	УстановитьВидимостьКомандВводаНаОсновании();
	
	// СтандартныеПодсистемы.РаботаСФайлами
	ПараметрыГиперссылки = РаботаСФайлами.ГиперссылкаФайлов();
	ПараметрыГиперссылки.Размещение = "КоманднаяПанель";
	РаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыГиперссылки);
	// Конец СтандартныеПодсистемы.РаботаСФайлами

КонецПроцедуры

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
	
	ПриЧтенииСозданииНаСервере();
	
	// СтандартныеПодсистемы.Свойства
	УправлениеСвойствами.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
	// Конец СтандартныеПодсистемы.Свойства
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	ЗначенияРеквизитовДоИзменения = СохранитьЗначенияРеквизитовДоИзменения();
	
	// СтандартныеПодсистемы.Свойства
	УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.Свойства
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
	
	// СтандартныеПодсистемы.РаботаСФайлами
	РаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ);
	// Конец СтандартныеПодсистемы.РаботаСФайлами

КонецПроцедуры

&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)

	// Обработчик подсистемы "Свойства"
	УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект);

КонецПроцедуры

&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
		МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
		МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
	КонецЕсли;
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
	
КонецПроцедуры

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)

	Если ИмяСобытия = "Запись_ПринятиеКУчетуНМА2_4"
		ИЛИ ИмяСобытия = "Запись_СписаниеНМА2_4"
		ИЛИ ИмяСобытия = "Запись_ИзменениеПараметровОС2_4"
		ИЛИ ИмяСобытия = "Запись_ПеремещениеНМА2_4" Тогда
		ПриИзмененииДокументовНМА();
	КонецЕсли;
	
	// Подсистема "Свойства"
	Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтаФорма, ИмяСобытия, Параметр) Тогда
		ОбновитьЭлементыДополнительныхРеквизитов();
		УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
	КонецЕсли;

	// СтандартныеПодсистемы.РаботаСФайлами
	РаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия);
	// Конец СтандартныеПодсистемы.РаботаСФайлами

КонецПроцедуры

&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
	
	// СтандартныеПодсистемы.Свойства
	УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтаФорма, Отказ, ПроверяемыеРеквизиты);
	// Конец СтандартныеПодсистемы.Свойства
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовШапкиФормы

&НаКлиенте
Процедура НаименованиеПриИзменении(Элемент)
	
	Элементы.НаименованиеПолное.СписокВыбора.Очистить();
	Элементы.НаименованиеПолное.СписокВыбора.Добавить(Объект.Наименование);
	
	СформироватьНаименованиеПолноеАвтоматически();
	
	ЗначенияРеквизитовДоИзменения = СохранитьЗначенияРеквизитовДоИзменения();
	
КонецПроцедуры

&НаКлиенте
Процедура НаименованиеПолноеПриИзменении(Элемент)
	
	ЗначенияРеквизитовДоИзменения = СохранитьЗначенияРеквизитовДоИзменения();
	
КонецПроцедуры

&НаКлиенте
Процедура ВидОбъектаУчетаПриИзменении(Элемент)
	
	НастроитьЗависимыеЭлементыФормы("ВидОбъектаУчета");
	
	ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтаФорма);
	
КонецПроцедуры

&НаКлиенте
Процедура СведенияПринятКУчетуОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
	
	Если СтрНайти(НавигационнаяСсылкаФорматированнойСтроки, "#Создать") <> 0 Тогда
		СтандартнаяОбработка = Ложь;
		ПараметрыФормы = Новый Структура("Основание", Объект.Ссылка);
		ОткрытьФорму("Документ.ПринятиеКУчетуНМА2_4.ФормаОбъекта", ПараметрыФормы);
	КонецЕсли; 
	
КонецПроцедуры

&НаКлиенте
Процедура КодОКВЭД2ПриИзменении(Элемент)
	
	НастроитьЗависимыеЭлементыФормы("КодОКВЭД2");
	
КонецПроцедуры

&НаКлиенте
Процедура КодОКВЭД2НачалоВыбора(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка)
	
	//++ Локализация
	
	СтандартнаяОбработка = Ложь;
	
	ОбработкаЗакрытия = Новый ОписаниеОповещения(
		"ПодборИзОКВЭДЗавершение",
		ЭтотОбъект);
	
	ПараметрыФормы = КлассификаторОКВЭДКлиент.НовыйПараметрыВыбора();
	ПараметрыФормы.ОписаниеОповещенияОЗакрытии = ОбработкаЗакрытия;
	ПараметрыФормы.Разрешенные = Истина;
	ПараметрыФормы.ТекущийКод = Объект.КодОКВЭД2;
	
	КлассификаторОКВЭДКлиент.Выбрать(ПараметрыФормы);
	
	//-- Локализация
	
КонецПроцедуры

&НаКлиенте
Процедура КодОКВЭД2АвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
	
	//++ Локализация
	
	Если ЗначениеЗаполнено(Текст) Тогда
		
		СтандартнаяОбработка = Ложь;
		ДанныеПодбора = ПодборОКВЭДСервер(Текст);
		
		ДанныеВыбора = Новый СписокЗначений;
		
		Для Каждого ОКВЭД Из ДанныеПодбора Цикл
			ДанныеВыбора.Добавить(ОКВЭД.Код, ОКВЭД.Представление);
		КонецЦикла;
		
	КонецЕсли;
	
	//-- Локализация
	
КонецПроцедуры

&НаКлиенте
Процедура ДокументРегистрацииНадписьОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	ПараметрыФормы = Новый Структура;
	ПараметрыФормы.Вставить("ДокументРегистрацииНаименование", Объект.ДокументРегистрацииНаименование);
	ПараметрыФормы.Вставить("ДокументРегистрацииДата", Объект.ДокументРегистрацииДата);
	ПараметрыФормы.Вставить("ДокументРегистрацииНомер", Объект.ДокументРегистрацииНомер);
	
	ОписаниеОповещения = Новый ОписаниеОповещения("ВводСведенийОДокументеРегистрацииЗавершение", ЭтотОбъект);
	ОткрытьФорму("Справочник.НематериальныеАктивы.Форма.ДокументРегистрации", ПараметрыФормы,,,,,ОписаниеОповещения);
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиКомандФормы

&НаКлиенте
Процедура НаправлениеДеятельностиИстория(Команда)
	
	ПараметрыФормы = Новый Структура;
	ПараметрыФормы.Вставить("НематериальныйАктив", Объект.Ссылка);
	ПараметрыФормы.Вставить("ИмяРеквизита", "НаправлениеДеятельности");
	ОткрытьФорму("Справочник.НематериальныеАктивы.Форма.ИсторияИзменений", ПараметрыФормы, ЭтаФорма);
	
КонецПроцедуры

// СтандартныеПодсистемы.РаботаСФайлами
&НаКлиенте
Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда)
	 РаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда);
КонецПроцедуры
// Конец СтандартныеПодсистемы.РаботаСФайлами

// СтандартныеПодсистемы.РаботаСФайлами
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
	 РаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
// Конец СтандартныеПодсистемы.РаботаСФайлами

// СтандартныеПодсистемы.РаботаСФайлами
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
	 РаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
// Конец СтандартныеПодсистемы.РаботаСФайлами

// СтандартныеПодсистемы.РаботаСФайлами
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраНажатие(Элемент, СтандартнаяОбработка)
	 РаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
// Конец СтандартныеПодсистемы.РаботаСФайлами

#Область СтандартныеПодсистемы

// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
	ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект);
КонецПроцедуры

&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат) Экспорт
	ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Объект, Результат);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
	ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
	УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
	УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры

#КонецОбласти

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

&НаСервере
Процедура ПриЧтенииСозданииНаСервере()

	Элементы.НаименованиеПолное.СписокВыбора.Очистить();
	Элементы.НаименованиеПолное.СписокВыбора.Добавить(Объект.Наименование);
	
	ПрочитатьПериодическиеРеквизиты();
	
	НематериальныеАктивыЛокализация.ПриЧтенииСозданииНаСервере(ЭтаФорма);
	
	НастроитьЗависимыеЭлементыФормыНаСервере();
	СформироватьНадписьДокументРегистрации(ЭтаФорма);
	ЗаполнитьСведенияОбУчете();
	
КонецПроцедуры
 
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
	УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры

&НаКлиенте
Процедура СформироватьНаименованиеПолноеАвтоматически()
	
	Если СокрЛП(ЗначенияРеквизитовДоИзменения.Наименование) = СокрЛП(ЗначенияРеквизитовДоИзменения.НаименованиеПолное)
		ИЛИ ПустаяСтрока(Объект.НаименованиеПолное) Тогда
		Объект.НаименованиеПолное = Объект.Наименование;
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()

	УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтаФорма, РеквизитФормыВЗначение("Объект"));

КонецПроцедуры

&НаКлиенте
Процедура НастроитьЗависимыеЭлементыФормы(ИзмененныеРеквизиты = "")
	
	Если ТребуетсяВызовСервераДляНастройкиЭлементовФормы(ИзмененныеРеквизиты) Тогда
		НастроитьЗависимыеЭлементыФормыНаСервере(ИзмененныеРеквизиты);
	Иначе
		НастроитьЗависимыеЭлементыФормыНаКлиентеНаСервере(ЭтаФорма, ИзмененныеРеквизиты);
	КонецЕсли; 
	
КонецПроцедуры

&НаСервере
Процедура НастроитьЗависимыеЭлементыФормыНаСервере(Знач ИзмененныеРеквизиты = "")

	СтруктураИзмененныхРеквизитов = Новый Структура(ИзмененныеРеквизиты);
	
	ОбновитьВсе = СтруктураИзмененныхРеквизитов.Количество() = 0;

	Если ОбновитьВсе Тогда
		ИспользоватьОбесценениеВНА = ПолучитьФункциональнуюОпцию("ИспользоватьОбесценениеВНА");
		Элементы.ГруппаОбесценение.Видимость = ИспользоватьОбесценениеВНА;
	КонецЕсли;
	
	НематериальныеАктивыЛокализация.НастроитьЗависимыеЭлементыФормы(ЭтаФорма, СтруктураИзмененныхРеквизитов);
	
	НастроитьЗависимыеЭлементыФормыНаКлиентеНаСервере(ЭтаФорма, ИзмененныеРеквизиты);

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

&НаКлиенте
Функция ТребуетсяВызовСервераДляНастройкиЭлементовФормы(ИзмененныеРеквизиты)

	СтруктураИзмененныхРеквизитов = Новый Структура(ИзмененныеРеквизиты);
	
	Если СтруктураИзмененныхРеквизитов.Количество() = 0
		ИЛИ СтруктураИзмененныхРеквизитов.Свойство("КодОКВЭД2") Тогда
		Возврат Истина;
	КонецЕсли; 
	
	Возврат Ложь;

КонецФункции

&НаСервере
Процедура УстановитьВидимостьКомандВводаНаОсновании()

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

&НаСервере
Процедура УстановитьВидимостьКомандыВводаНаОсновании(ИмяДокумента, ТаблицаКоманд, ВидимостьКоманды)

	ТекСтрока = ТаблицаКоманд.Найти("Документ." + ИмяДокумента, "Менеджер");
	Если ТекСтрока <> Неопределено Тогда
		Элементы[ТекСтрока.ИмяВФорме].Видимость = ВидимостьКоманды;
	КонецЕсли;

КонецПроцедуры

&НаСервере
Процедура ЗаполнитьСведенияОбУчете()

	Если НЕ Справочники.НематериальныеАктивы.ЕстьПраваНаЧтениеСведений() Тогда
		Элементы.СтраницаСведения.Видимость = Ложь;
		Возврат;
	КонецЕсли;
	
	СведенияОбУчете = Справочники.НематериальныеАктивы.СведенияОбУчете(Объект.Ссылка);
	Если СведенияОбУчете = Неопределено Тогда
		Элементы.СтраницыСведенияНМА.ТекущаяСтраница = Элементы.СтраницаСведенияОНеПринятомКУчету;
		Возврат;
	КонецЕсли;
	
	ВалютаУпр = Константы.ВалютаУправленческогоУчета.Получить();
	ВалютаРегл = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(СведенияОбУчете.Организация);
	
	ВедетсяРегламентированныйУчетВНА = ВнеоборотныеАктивыСлужебный.ВедетсяРегламентированныйУчетВНА();
	
	Если ВалютаУпр <> ВалютаРегл Тогда
		Если ВедетсяРегламентированныйУчетВНА Тогда
			Элементы.ДекорацияЗаголовокУУ.Заголовок = СтрШаблон(НСтр("ru = 'УУ (%1):'"), Строка(ВалютаУпр));
			Элементы.ДекорацияЗаголовокБУ.Заголовок = СтрШаблон(НСтр("ru = 'БУ (%1):'"), Строка(ВалютаРегл));
		Иначе
			Элементы.ДекорацияЗаголовокУУ.Заголовок = СтрШаблон(НСтр("ru = 'Упр. (%1):'"), Строка(ВалютаУпр));
			Элементы.ДекорацияЗаголовокБУ.Заголовок = СтрШаблон(НСтр("ru = 'Регл. (%1):'"), Строка(ВалютаРегл));
		КонецЕсли; 
	КонецЕсли; 
	
	Если НЕ ПолучитьФункциональнуюОпцию("ИспользоватьРеглУчет") Тогда
		Элементы.ДекорацияЗаголовокНУ.Видимость = Ложь;
		Элементы.ДекорацияЗаголовокПР.Видимость = Ложь;
		Элементы.ДекорацияЗаголовокВР.Видимость = Ложь;
	КонецЕсли; 
	
	Если НЕ ВедетсяРегламентированныйУчетВНА
		И ВалютаУпр = ВалютаРегл Тогда
		
		Элементы.ДекорацияЗаголовокБУ.Видимость = Ложь;
		Элементы.ДекорацияЗаголовокУУ.Видимость = Ложь;
		
		Элементы.ГруппаОстаточнаяСтоимостьЗаголовок.Видимость    = Ложь;
		Элементы.ГруппаНакопленнаяАмортизацияЗаголовок.Видимость = Ложь;
		Элементы.ГруппаТекущаяСтоимостьЗаголовок.Видимость       = Ложь;
		Элементы.ГруппаОбесценениеЗаголовок.Видимость            = Ложь;
		
		Элементы.ВосстановительнаяСтоимостьБУ.Видимость = Ложь;
		Элементы.НакопленнаяАмортизацияБУ.Видимость     = Ложь;
		Элементы.ОстаточнаяСтоимостьБУ.Видимость        = Ложь;
		Элементы.ОбесценениеБУ.Видимость                = Ложь;
		
		Элементы.ВосстановительнаяСтоимостьУУ.Видимость = Ложь;
		Элементы.НакопленнаяАмортизацияУУ.Видимость     = Ложь;
		Элементы.ОстаточнаяСтоимостьУУ.Видимость        = Ложь;
		Элементы.ОбесценениеУУ.Видимость                = Ложь;
		
	КонецЕсли; 
	
	СтоимостьИАмортизация = ВнеоборотныеАктивы.СтоимостьИАмортизацияНМА(Объект.Ссылка);
	
	Элементы.СтраницыСведенияНМА.ТекущаяСтраница = Элементы.СтраницаСведенияОПринятомКУчету;
	
	ПредставлениеСведений = Справочники.НематериальныеАктивы.ПредставлениеСведенийОбУчете(СведенияОбУчете, СтоимостьИАмортизация);
	
	ВнеоборотныеАктивыКлиентСервер.ЗаполнитьСведенияЭлемента(Элементы.СведенияПринятКУчету1, ПредставлениеСведений.СведенияПринятКУчету1);
	ВнеоборотныеАктивыКлиентСервер.ЗаполнитьСведенияЭлемента(Элементы.СведенияПринятКУчету3, ПредставлениеСведений.СведенияПринятКУчету3);
	ВнеоборотныеАктивыКлиентСервер.ЗаполнитьСведенияЭлемента(Элементы.СведенияСрокИспользования1, ПредставлениеСведений.СведенияСрокИспользования1);
	ВнеоборотныеАктивыКлиентСервер.ЗаполнитьСведенияЭлемента(Элементы.СведенияСрокИспользования3, ПредставлениеСведений.СведенияСрокИспользования3);
	ВнеоборотныеАктивыКлиентСервер.ЗаполнитьСведенияЭлемента(Элементы.СведенияЛиквидационнаяСтоимость, ПредставлениеСведений.СведенияЛиквидационнаяСтоимость);
	ВнеоборотныеАктивыКлиентСервер.ЗаполнитьСведенияЭлемента(Элементы.СведенияЛиквидационнаяСтоимостьРегл, ПредставлениеСведений.СведенияЛиквидационнаяСтоимостьРегл);
	ВнеоборотныеАктивыКлиентСервер.ЗаполнитьСведенияЭлемента(Элементы.СведенияСнятСУчета, ПредставлениеСведений.СведенияСнятСУчета1);
	ВнеоборотныеАктивыКлиентСервер.ЗаполнитьСведенияЭлемента(Элементы.СведенияГФУ, ПредставлениеСведений.СведенияГФУ);
	
	Если СведенияОбУчете <> Неопределено Тогда
		
		ЗаголовокСведений = СтрШаблон(НСтр("ru = 'Место учета (сведения от %1)'"), Формат(СведенияОбУчете.ПериодСведенийОМестеУчета, "ДЛФ=D"));
		Элементы.ГруппаМестонахождение.Заголовок = ЗаголовокСведений;
		
	КонецЕсли; 
	
	ВнеоборотныеАктивыКлиентСервер.ЗаполнитьСведенияЭлемента(
		Элементы.СведенияМестоУчетаОрганизация, ПредставлениеСведений.СведенияМестоУчетаОрганизация);
		
	ВнеоборотныеАктивыКлиентСервер.ЗаполнитьСведенияЭлемента(
		Элементы.СведенияМестоУчетаПодразделение, ПредставлениеСведений.СведенияМестоУчетаПодразделение);

	ВнеоборотныеАктивыКлиентСервер.ЗаполнитьСведенияЭлемента(
		Элементы.СведенияВосстановительнаяСтоимость, ПредставлениеСведений.СведенияВосстановительнаяСтоимость);
		
	ВнеоборотныеАктивыКлиентСервер.ЗаполнитьСведенияЭлемента(
		Элементы.СведенияНакопленнаяАмортизация, ПредставлениеСведений.СведенияНакопленнаяАмортизация);
		
	ВнеоборотныеАктивыКлиентСервер.ЗаполнитьСведенияЭлемента(
		Элементы.СведенияОстаточнаяСтоимость, ПредставлениеСведений.СведенияОстаточнаяСтоимость);
		
	ВнеоборотныеАктивыКлиентСервер.ЗаполнитьСведенияЭлемента(
		Элементы.СведенияОбесценение, ПредставлениеСведений.СведенияОбесценение);
		
	#Область Суммы

	ВосстановительнаяСтоимостьБУ = СтоимостьИАмортизация.СтоимостьРегл;
	ВосстановительнаяСтоимостьУУ = СтоимостьИАмортизация.Стоимость;
	НакопленнаяАмортизацияБУ = СтоимостьИАмортизация.АмортизацияРегл;
	НакопленнаяАмортизацияУУ = СтоимостьИАмортизация.Амортизация;
	
	ОстаточнаяСтоимостьБУ = СтоимостьИАмортизация.СтоимостьРегл
								- СтоимостьИАмортизация.АмортизацияРегл
								- СтоимостьИАмортизация.ОбесценениеРегл;
	
	ОстаточнаяСтоимостьУУ = СтоимостьИАмортизация.Стоимость
								- СтоимостьИАмортизация.Амортизация
								- СтоимостьИАмортизация.ОбесценениеУпр;
	
	ОбесценениеБУ = СтоимостьИАмортизация.ОбесценениеРегл;
	ОбесценениеУУ = СтоимостьИАмортизация.ОбесценениеУпр;
	
	Если Объект.ВидОбъектаУчета = Перечисления.ВидыОбъектовУчетаНМА.РасходыНаНИОКР Тогда
		Элементы.ГруппаТекущаяСтоимостьЗаголовок.Заголовок       = НСтр("ru = 'Первоначальная стоимость:'");
		Элементы.ГруппаНакопленнаяАмортизацияЗаголовок.Заголовок = НСтр("ru = 'Погашенная стоимость:'");
		Элементы.ГруппаОстаточнаяСтоимостьЗаголовок.Заголовок    = НСтр("ru = 'Остаточная стоимость:'");
	Иначе
		Элементы.ГруппаТекущаяСтоимостьЗаголовок.Заголовок       = НСтр("ru = 'Восстановительная стоимость:'");
		Элементы.ГруппаНакопленнаяАмортизацияЗаголовок.Заголовок = НСтр("ru = 'Накопленная амортизация:'");
		Элементы.ГруппаОстаточнаяСтоимостьЗаголовок.Заголовок    = НСтр("ru = 'Остаточная стоимость:'");
	КонецЕсли; 
	
	Элементы.ГруппаОбесценениеЗаголовок.Заголовок = НСтр("ru = 'Обесценение:'");
		
	Элементы.ГруппаТекущаяСтоимость.ОтображатьЗаголовок        = Ложь;
	Элементы.ГруппаНакопленнаяАмортизация.ОтображатьЗаголовок  = Ложь;
	Элементы.ГруппаОбесценение.ОтображатьЗаголовок  = Ложь;
	Элементы.ГруппаОстаточнаяСтоимость.ОтображатьЗаголовок     = Ложь;
	
	Элементы.ГруппаОбесценение.ОтображатьЗаголовок             = Ложь;
	
	#КонецОбласти
	
	НематериальныеАктивыЛокализация.ЗаполнитьСведенияОбУчете(ЭтотОбъект, СведенияОбУчете, ПредставлениеСведений);
	НематериальныеАктивыЛокализация.ЗаполнитьСтоимостьИАмортизацию(ЭтотОбъект, СтоимостьИАмортизация);
	
КонецПроцедуры

&НаКлиенте
Процедура ВводСведенийОДокументеРегистрацииЗавершение(РезультатЗакрытия, ДополнительныеПараметры) Экспорт

	Если ТипЗнч(РезультатЗакрытия) = Тип("Структура") Тогда
		Объект.ДокументРегистрацииНаименование = РезультатЗакрытия.ДокументРегистрацииНаименование;
		Объект.ДокументРегистрацииДата = РезультатЗакрытия.ДокументРегистрацииДата;
		Объект.ДокументРегистрацииНомер = РезультатЗакрытия.ДокументРегистрацииНомер;
		Модифицированность = Истина;
		СформироватьНадписьДокументРегистрации(ЭтаФорма);
	КонецЕсли; 
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура СформироватьНадписьДокументРегистрации(Форма)

	Объект = Форма.Объект;
	
	Если ЗначениеЗаполнено(Объект.ДокументРегистрацииНаименование)
		ИЛИ ЗначениеЗаполнено(Объект.ДокументРегистрацииДата) 
		ИЛИ ЗначениеЗаполнено(Объект.ДокументРегистрацииНомер) Тогда
		
		Если НЕ Форма.ТолькоПросмотр Тогда
			СтрокаСТегами = НСтр("ru = '%1 №%2 от %3 <a href = ""#Изменить"">изменить</a>'");
		Иначе
			СтрокаСТегами = НСтр("ru = '%1 №%2 от %3'");
		КонецЕсли;
		
		СтрокаСТегами = СтрШаблон(
							СтрокаСТегами, 
							Объект.ДокументРегистрацииНаименование,
							Объект.ДокументРегистрацииНомер,
							Формат(Объект.ДокументРегистрацииДата, "ДЛФ=D"));
							
		ТекстНадписи = ВнеоборотныеАктивыКлиентСервер.ФорматированнаяСтрока(СтрокаСТегами);
							
	Иначе
		
		МассивСтрок = Новый Массив;
		МассивСтрок.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'не заполнен'"),, Форма.ЦветНедоступногоТекста));
		
		Если НЕ Форма.ТолькоПросмотр Тогда
			МассивСтрок.Добавить(" ");
			МассивСтрок.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'изменить'"),,,, "#Изменить"));
		КонецЕсли;
		
		ТекстНадписи = Новый ФорматированнаяСтрока(МассивСтрок);
		
	КонецЕсли;
	
	Форма.ДокументРегистрацииНадпись = ТекстНадписи;

КонецПроцедуры

// Возвращаемое значение:
// 	Структура - Описание:
//          * НаименованиеПолное - Строка -
//          * Наименование - Строка -
&НаКлиенте
Функция СохранитьЗначенияРеквизитовДоИзменения()

	НовыеЗначенияРеквизитовДоИзменения = Новый Структура;
	НовыеЗначенияРеквизитовДоИзменения.Вставить("Наименование", Объект.Наименование);
	НовыеЗначенияРеквизитовДоИзменения.Вставить("НаименованиеПолное", Объект.НаименованиеПолное);
	
	Возврат НовыеЗначенияРеквизитовДоИзменения;

КонецФункции

&НаСервере
Процедура ПриИзмененииДокументовНМА()

	ЗаполнитьСведенияОбУчете();
	ПрочитатьПериодическиеРеквизиты();

КонецПроцедуры
 
&НаСервере
Процедура ПрочитатьПериодическиеРеквизиты()

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

//++ Локализация

&НаСервереБезКонтекста
Функция ПодборОКВЭДСервер(Знач СтрокаПоиска)
	
	ПараметрыПодбора              = КлассификаторОКВЭД.НовыйОтбор();
	ПараметрыПодбора.СтрокаПоиска = СтрокаПоиска;
	ПараметрыПодбора.Режим        = "КодИНаименование";
	ПараметрыПодбора.Разрешенные  = Истина;
	
	Возврат КлассификаторОКВЭД.Подбор(ПараметрыПодбора);
	
КонецФункции

&НаКлиенте
Процедура ПодборИзОКВЭДЗавершение(РезультатВыбора, ДополнительныеПараметры) Экспорт
	
	Если ТипЗнч(РезультатВыбора) <> Тип("Структура")
		Или РезультатВыбора.ВыбранныеЗначения.Количество() = 0 Тогда
		Возврат;
	КонецЕсли;
	
	Если Не Объект.КодОКВЭД2 = РезультатВыбора.ВыбранныеЗначения[0].Код Тогда
		
		Объект.КодОКВЭД2 = РезультатВыбора.ВыбранныеЗначения[0].Код;
		Элементы.КодОКВЭД2РасширеннаяПодсказка.Заголовок = РезультатВыбора.ВыбранныеЗначения[0].Наименование;
		
		Модифицированность = Истина;
		
	КонецЕсли;
	
КонецПроцедуры

//-- Локализация

#КонецОбласти

Связанные материалы