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