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