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