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