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