Подготовка к передаче НМА (2.2) / Модуль объекта

файл
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

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

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

Процедура ПриКопировании(ОбъектКопирования)
	
	ИнициализироватьДокумент();
	
КонецПроцедуры

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

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
	
	Если ОбменДанными.Загрузка Тогда
		Возврат;
	КонецЕсли;
	
	ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(ЭтотОбъект);
	
	ПроведениеДокументов.ПередЗаписьюДокумента(ЭтотОбъект, РежимЗаписи, РежимПроведения);
	
	Если РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
		РассчитатьАмортизацию(Отказ);
	КонецЕсли;
	
КонецПроцедуры

Процедура ПриЗаписи(Отказ)
	
	Если ОбменДанными.Загрузка Тогда
		Возврат;
	КонецЕсли;
	
	ПроведениеДокументов.ПриЗаписиДокумента(ЭтотОбъект, Отказ);
	
КонецПроцедуры

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

Процедура ОбработкаУдаленияПроведения(Отказ)
	
	ПроведениеДокументов.ОбработкаУдаленияПроведенияДокумента(ЭтотОбъект, Отказ);
	
КонецПроцедуры

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

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

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

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

Процедура РассчитатьАмортизацию(Отказ)
	
	НачисленнаяАмортизация.Очистить();
	
	ТаблицаРеквизиты = ТаблицаРеквизитовДокумента();
	
	ТаблицаНМА = Новый ТаблицаЗначений();
	ТаблицаНМА.Колонки.Добавить("НомерСтроки", Новый ОписаниеТипов("Число"));
	ТаблицаНМА.Колонки.Добавить("НематериальныйАктив", Новый ОписаниеТипов("СправочникСсылка.НематериальныеАктивы"));
	ТаблицаНма.Добавить().НематериальныйАктив = НематериальныйАктив;
	
	ТаблицаНачисленнаяАмортизация = УчетНМА.НачисленнаяАмортизация(
		ТаблицаНМА, ТаблицаРеквизиты,, Отказ);
	
	ДополнительныеСвойства.Вставить("НачисленнаяАмортизация", ТаблицаНачисленнаяАмортизация);
	НачисленнаяАмортизация.Загрузить(ТаблицаНачисленнаяАмортизация);
	
КонецПроцедуры

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

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

#КонецЕсли

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