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