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