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