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