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