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