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