Заявка на расходование денежных средств / Заявки на оплату по финансовым инструментам / Модуль формы

файл

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

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

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

&НаСервере
Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки)
	
	ОбластиПланированияОтбор = Настройки.Получить("ОбластиПланированияОтбор");
	ИнициализироватьОбластиПланированияОтбор();
	Если ОбластиПланированияОтбор <> Неопределено Тогда
		Для каждого Область Из ОбластиПланированияОтбор Цикл
			Если Область.Пометка Тогда
				ОбластьСписка = ОбластиПланированияОтбор.НайтиПоЗначению(Область.Значение);
				Если ОбластьСписка <> Неопределено Тогда
					ОбластьСписка.Пометка = Истина;
				КонецЕсли;
			КонецЕсли;
		КонецЦикла;
	КонецЕсли;
	ОбластиПланированияОтборПредставление = СписокПредставление(ОбластиПланированияОтбор);
	
	УстановитьОграничениеТипаДоговора();
	УстановитьОтборДинамическихСписков();
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура ОрганизацияОтборПриИзменении(Элемент)
	
	УстановитьОтборДинамическихСписков();
	
КонецПроцедуры

&НаКлиенте
Процедура ОбластиПланированияОтборНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	ОткрытьФорму("Перечисление.ХозяйственныеОперации.Форма.ФормаВыбораОперации",
		Новый Структура("СписокОпераций, Заголовок", ОбластиПланированияОтбор, НСтр("ru='Финансовые инструменты'")), Элемент);
	
КонецПроцедуры

&НаКлиенте
Процедура ОбластиПланированияОтборОчистка(Элемент, СтандартнаяОбработка)
	
	ОбластиПланированияОтбор.ЗаполнитьПометки(Ложь);
	
	УстановитьОграничениеТипаДоговора();
	УстановитьОтборДинамическихСписков();
	
КонецПроцедуры

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

&НаКлиенте
Процедура ДатаПлатежаПриИзменении(Элемент)
	
	Граница = ?(ЗначениеЗаполнено(ДатаПлатежа), КонецДня(ДатаПлатежа), Дата('39990101'));
	КОплате.Параметры.УстановитьЗначениеПараметра("ДатаПлатежа", Граница);
	
КонецПроцедуры

&НаКлиенте
Процедура ДоговорОтборПриИзменении(Элемент)
	
	УстановитьОтборДинамическихСписков();
	
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
	
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура СоздатьЗаявкуПоКредитам(Команда)
	
	СоздатьЗаявкуНаРасходованиеДенежныхСредств(ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ОплатаПоКредитам"));
	
КонецПроцедуры

&НаКлиенте
Процедура СоздатьЗаявкуПоДепозитам(Команда)
	
	СоздатьЗаявкуНаРасходованиеДенежныхСредств(ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПеречислениеНаДепозиты"));
	
КонецПроцедуры

&НаКлиенте
Процедура СоздатьЗаявкуПоЗаймамКонтрагенту(Команда)
	
	СоздатьЗаявкуНаРасходованиеДенежныхСредств(ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВыдачаЗаймов"));
	
КонецПроцедуры

&НаКлиенте
Процедура СоздатьОплатуАрендодателю(Команда)
	
	СоздатьЗаявкуНаРасходованиеДенежныхСредств(ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ОплатаАрендодателю"));
	
КонецПроцедуры

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

// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
	ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Элементы.Список);
КонецПроцедуры

&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат) Экспорт
	ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Элементы.Список, Результат);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
	ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Элементы.Список);
КонецПроцедуры
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

// ИнтеграцияС1СДокументооборотом
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
	
	ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(Команда, ЭтаФорма, Элементы.Список);
	
КонецПроцедуры
// Конец ИнтеграцияС1СДокументооборотом

&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
	
	СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
	
КонецПроцедуры

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

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

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

&НаСервере
Процедура ИнициализироватьРеквизиты()
	
	ИспользоватьКредитыДепозиты = ПолучитьФункциональнуюОпцию("ИспользоватьДоговорыКредитовИДепозитов");

	
	ОбластиХозОперацииВрем = Новый Соответствие;
	ОбластиХозОперацииВрем.Вставить(Перечисления.ОбластиПланированияПлатежей.КредитыИлиЗаймыПолученные, Перечисления.ХозяйственныеОперации.ОплатаПоКредитам);
	ОбластиХозОперацииВрем.Вставить(Перечисления.ОбластиПланированияПлатежей.Депозиты, Перечисления.ХозяйственныеОперации.ПеречислениеНаДепозиты);
	ОбластиХозОперацииВрем.Вставить(Перечисления.ОбластиПланированияПлатежей.ЗаймыВыданные, Перечисления.ХозяйственныеОперации.ВыдачаЗаймов);
	ОбластиХозОперацииВрем.Вставить(Перечисления.ОбластиПланированияПлатежей.Аренда, Перечисления.ХозяйственныеОперации.ОплатаАрендодателю);
	ОбластиХозОперации = Новый ФиксированноеСоответствие(ОбластиХозОперацииВрем);
	
	ИнициализироватьОбластиПланированияОтбор();
	
КонецПроцедуры

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

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

&НаСервере
Процедура УстановитьОграничениеТипаДоговора()
	
	
		Элементы.ДоговорОтбор.ОграничениеТипа = Новый ОписаниеТипов("СправочникСсылка.ДоговорыКредитовИДепозитов");
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Функция СписокПредставление(Список)
	
	СписокПредставление = "";
	Для Каждого ЭлементСписка Из Список Цикл
		Если ЭлементСписка.Пометка Тогда
			СписокПредставление = СписокПредставление
				+ ?(ЗначениеЗаполнено(СписокПредставление), ", ", "")
				+ ?(ЗначениеЗаполнено(ЭлементСписка.Представление), ЭлементСписка.Представление, ЭлементСписка.Значение);
		КонецЕсли;
	КонецЦикла;
	
	Возврат СписокПредставление;
	
КонецФункции

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

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