Договоры аренды (лизинга) / Выбор расчетного документа / Модуль формы

файл

#Область ОбработчикиСобытийФормы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
		Возврат;
	КонецЕсли;
	
	ПараметрыОткрытия = Новый Структура;
	ПараметрыОткрытия.Вставить("Договор", Параметры.Договор);
	ПараметрыОткрытия.Вставить("Контрагент", Параметры.Контрагент);
	ПараметрыОткрытия.Вставить("Организация", Параметры.Организация);
	ПараметрыОткрытия.Вставить("ТипПлатежаПоАренде", Параметры.ТипПлатежаПоАренде);
	ПараметрыОткрытия.Вставить("ВыбранныйРасчетныйДокумент", ?(Параметры.Свойство("ВыбранныйРасчетныйДокумент"), Параметры.ВыбранныйРасчетныйДокумент, Неопределено));
	
	УстановитьУсловноеОформление();
	
	ЗаполнитьСписокПлатежей();
	
	Элементы.СписокПлатежейТипПлатежа.Видимость =
		ТипЗнч(ПараметрыОткрытия.ТипПлатежаПоАренде) = Тип("Массив")
		И ПараметрыОткрытия.ТипПлатежаПоАренде.Количество() > 1;
		
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовТаблицыФормыСписокПлатежей

&НаКлиенте
Процедура СписокПлатежейВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)

	СтандартнаяОбработка = Ложь;
	
	ТекущиеДанные = Элементы.СписокПлатежей.ТекущиеДанные;
	
	Если Поле = Элементы.СписокПлатежейРасчетныйДокумент
		И ТекущиеДанные <> Неопределено
		И ЗначениеЗаполнено(ТекущиеДанные.РасчетныйДокумент) Тогда
		
		ПоказатьЗначение(, ТекущиеДанные.РасчетныйДокумент);
	Иначе
		ЗавершитьВыбор();
	КонецЕсли;

КонецПроцедуры

#КонецОбласти

#Область ОбработчикиКомандФормы

&НаКлиенте
Процедура ВыбратьДокумент(Команда)
	
	ЗавершитьВыбор();
	
КонецПроцедуры

&НаКлиенте
Процедура ОткрытьДокумент(Команда)
	
	СтрокаТаблицы = Элементы.СписокПлатежей.ТекущиеДанные;
	Если СтрокаТаблицы <> Неопределено Тогда
		ПоказатьЗначение(, СтрокаТаблицы.РасчетныйДокумент);
	КонецЕсли;
	
КонецПроцедуры

// Создать документ.
// Создает новый документ ПервичныйДокумент.
// Параметры:
//  Команда - КомандаФормы - Команда
&НаКлиенте
Процедура СоздатьДокумент(Команда)
	
	ДополнитьПараметрыОткрытия(ПараметрыОткрытия);
	
	ОбновитьПослеСоздания = Новый ОписаниеОповещения("ОбновитьСписок",ЭтаФорма);
	ПараметрыСоздания = Новый Структура("Основание", ПараметрыОткрытия);
	
	ОткрытьФорму("Документ.ПервичныйДокумент.ФормаОбъекта",ПараметрыСоздания,ЭтаФорма, , , , ОбновитьПослеСоздания);

КонецПроцедуры

&НаСервереБезКонтекста
Процедура ДополнитьПараметрыОткрытия(ПараметрыОткрытия)
	
	Если ЗначениеЗаполнено(ПараметрыОткрытия.Договор) Тогда
		ПараметрыОткрытия.Вставить("ВалютаДоговора", ПараметрыОткрытия.Договор.ВалютаВзаиморасчетов);
	КонецЕсли;
	
	Если ЗначениеЗаполнено(ПараметрыОткрытия.Контрагент) Тогда
		ПараметрыОткрытия.Вставить("Партнер", ПараметрыОткрытия.Контрагент.Партнер);
	КонецЕсли;
	
КонецПроцедуры



#КонецОбласти

#Область СлужебныеПроцедурыИФункции

&НаСервере
Процедура УстановитьУсловноеОформление()
	
	УсловноеОформление.Элементы.Очистить();
	
	СтандартныеПодсистемыСервер.УстановитьУсловноеОформлениеПоляДата(
		ЭтотОбъект, "СписокПлатежей.Дата", Элементы.СписокПлатежейДата.Имя);
	
	#Область СписокПлатежейРасчетныйДокумент_ЦветТекста
	Элемент = УсловноеОформление.Элементы.Добавить();
	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.СписокПлатежейРасчетныйДокумент.Имя);
	Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ГиперссылкаЦвет);
	#КонецОбласти
	
	#Область СписокПлатежейРасчетныйДокумент_ВыбранныйДокумент
	Элемент = УсловноеОформление.Элементы.Добавить();
	
	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.СписокПлатежейДата.Имя);
	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.СписокПлатежейНомер.Имя);
	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.СписокПлатежейТипПлатежа.Имя);
	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.СписокПлатежейСумма.Имя);
	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.СписокПлатежейОстаток.Имя);
	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.СписокПлатежейВалюта.Имя);
	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.СписокПлатежейРасчетныйДокумент.Имя);
	
	ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение  = Новый ПолеКомпоновкиДанных("СписокПлатежей.РасчетныйДокумент");
	ОтборЭлемента.ВидСравнения   = ВидСравненияКомпоновкиДанных.Равно;
	ОтборЭлемента.ПравоеЗначение = ПараметрыОткрытия.ВыбранныйРасчетныйДокумент;
	
	Элемент.Оформление.УстановитьЗначениеПараметра("Шрифт", ШрифтыСтиля.ВажнаяНадписьШрифт);
	#КонецОбласти
		
КонецПроцедуры

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

&НаКлиенте
Процедура ОбновитьСписок(Результат, ДополнительныеПараметры) Экспорт
	ЗаполнитьСписокПлатежей();
КонецПроцедуры

&НаКлиенте
Процедура ЗавершитьВыбор()
	
	СтрокаТаблицы = Элементы.СписокПлатежей.ТекущиеДанные;
	
	Если СтрокаТаблицы <> Неопределено Тогда
		РезультатВыбора = Новый Структура("РасчетныйДокумент,ТипПлатежа", СтрокаТаблицы.РасчетныйДокумент, СтрокаТаблицы.ТипПлатежа);		
		ОповеститьОВыборе(РезультатВыбора);
	Иначе
		Закрыть();
	КонецЕсли;
	
КонецПроцедуры

#КонецОбласти

Связанные материалы