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