Амортизация НМА и списание расходов по НИОКР / Модуль объекта

файл

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

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

Процедура ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка)
	
	ИнициализироватьДокументПередЗаполнением();
	
	АмортизацияНМАЛокализация.ОбработкаЗаполнения(ЭтотОбъект, ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка);

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

Процедура ПриКопировании(ОбъектКопирования)
	
	ИнициализироватьДокументПередЗаполнением();
	
	АмортизацияНМАЛокализация.ПриКопировании(ЭтотОбъект, ОбъектКопирования);

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

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

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

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

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

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

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

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

Процедура ОбработкаУдаленияПроведения(Отказ)
	
	ПроведениеДокументов.ОбработкаУдаленияПроведенияДокумента(ЭтотОбъект, Отказ);
	
	СформироватьЗаданиеАмортизацияНМАПриОтменеПроведения();
	
	АмортизацияНМАЛокализация.ОбработкаУдаленияПроведения(ЭтотОбъект, Отказ);
	
КонецПроцедуры

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

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

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

Процедура ПроверитьДубли(Отказ)

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

Процедура СформироватьЗаданиеАмортизацияНМАПриОтменеПроведения()

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

Процедура РассчитатьАмортизацию(Отказ)

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

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

#КонецЕсли

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