#Область ОписаниеПеременных
&НаКлиенте
Перем ПараметрыДляЗаписи Экспорт;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьУсловноеОформление();
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтаФорма);
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПриЧтенииСозданииНаСервере();
КонецЕсли;
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтаФорма);
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Объект", Объект);
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
УправлениеСвойствами.ПриСозданииНаСервере(ЭтаФорма, ДополнительныеПараметры);
СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
ПараметрыГиперссылки = РаботаСФайлами.ГиперссылкаФайлов();
ПараметрыГиперссылки.Размещение = "КоманднаяПанель";
РаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыГиперссылки);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
РаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ);
РассчитатьЧислоДней();
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПриЧтенииСозданииНаСервере();
УправлениеСвойствами.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
МодификацияКонфигурацииПереопределяемый.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбора(РезультатВыбора, ИсточникВыбора)
Если Окно <> Неопределено Тогда
Окно.Активизировать();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтаФорма, ИмяСобытия, Параметр) Тогда
ОбновитьЭлементыДополнительныхРеквизитов();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
Если ИмяСобытия = "Запись_СписаниеБезналичныхДенежныхСредств"
Или ИмяСобытия = "Запись_РасходныйКассовыйОрдер" Тогда
ЗаполнитьДанныеОбОплатеЗаявки();
КонецЕсли;
РаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия);
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтаФорма, Отказ, ПроверяемыеРеквизиты);
Если Объект.ДатаНачала < Объект.Дата Тогда
ОбщегоНазначения.СообщитьПользователю(
НСтр("ru = 'Дата начала поездки не может быть меньше даты заявки.'")
,
,"ДатаНачала"
,"Объект.ДатаНачала"
,Отказ);
КонецЕсли;
Если Объект.ВыдачаПодОтчет.Итог("Сумма") <> 0 Тогда
Если ЗначениеЗаполнено(Объект.ЖелательнаяДатаПлатежа) И Объект.ЖелательнаяДатаПлатежа < Объект.Дата Тогда
ОбщегоНазначения.СообщитьПользователю(
НСтр("ru = 'Дата платежа не может быть меньше даты заявки.'")
,
,"ЖелательнаяДатаПлатежа"
,"Объект.ЖелательнаяДатаПлатежа"
,Отказ);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.ЖелательнаяДатаПлатежа) Тогда
ОбщегоНазначения.СообщитьПользователю(
НСтр("ru = 'Дата платежа не заполнена.'")
,
,"ЖелательнаяДатаПлатежа"
,"Объект.ЖелательнаяДатаПлатежа"
,Отказ);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
СобытияФормКлиент.ПередЗаписью(ЭтотОбъект, Отказ, ПараметрыЗаписи);
Если НеВыполнятьПроверкуПередЗаписью Тогда
НеВыполнятьПроверкуПередЗаписью = Ложь;
Возврат;
КонецЕсли;
ОбщегоНазначенияУТКлиент.ЗаписатьОбъектПриНеобходимости(ЭтотОбъект, ПараметрыЗаписи, Отказ);
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект);
МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтаФорма, Отказ, ТекущийОбъект, ПараметрыЗаписи);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПередЗаписьюНаСервере(
ЭтотОбъект,
ТекущийОбъект,
ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
ВывестиИнформациюОБронировании();
ЗаполнитьДанныеОбОплатеЗаявки();
НастроитьЗависимыеЭлементыФормыНаСервере();
МодификацияКонфигурацииПереопределяемый.ПослеЗаписиНаСервере(ЭтаФорма, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
Оповестить("Запись_ЗаявкаНаРасходованиеДенежныхСредств", ПараметрыЗаписи, Объект.Ссылка);
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
КонецЕсли;
МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтаФорма, ПараметрыЗаписи);
ОбщегоНазначенияУТКлиент.ВыполнитьДействияПослеЗаписи(ЭтаФорма, Объект, ПараметрыЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
ПринудительноЗакрытьФорму = Истина;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура РеквизитФормыПриИзменении(Элемент)
Если ЭлементВГруппе(Элемент, "ГруппаЗаказатьТуда") Тогда
УстановитьПодсказкуПриЗаказеБилетов(ЭтотОбъект, Ложь);
Если ЭлементВГруппе(Элемент, "ГруппаБилетыТуда") Тогда
ЗаполнитьПараметрыБронирования(ЭтотОбъект, Элементы.ГруппаЗаказатьТуда, Ложь);
КонецЕсли;
ИначеЕсли ЭлементВГруппе(Элемент, "ГруппаЗаказатьОбратно") Тогда
УстановитьПодсказкуПриЗаказеБилетов(ЭтотОбъект, Истина);
Если ЭлементВГруппе(Элемент, "ГруппаБилетыОбратно") Тогда
ЗаполнитьПараметрыБронирования(ЭтотОбъект, Элементы.ГруппаЗаказатьОбратно, Истина);
КонецЕсли;
КонецЕсли;
УстановитьПодсказкуПроживание(ЭтотОбъект);
ИзменитьПараметрЭлементаБронирования(ЭтотОбъект, "БронироватьМестоПроживания", Ложь);
НастроитьЗависимыеЭлементыФормы(Элемент.Имя);
КонецПроцедуры
&НаКлиенте
Процедура СтатусПриИзменении(Элемент)
Если ТекущийСтатус <> Объект.Статус Тогда
СтатусПриИзмененииСервер();
ТекущийСтатус = Объект.Статус;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СтатусПриИзмененииСервер()
Если Объект.Статус = Перечисления.СтатусыЗаявокСотрудников.Согласована Тогда
Объект.КтоРешил = Пользователи.ТекущийПользователь();
КонецЕсли;
УстановитьСписокСтатусов();
НастроитьЗависимыеЭлементыФормыНаСервере("Статус");
КонецПроцедуры
&НаКлиенте
Процедура СотрудникПриИзменении(Элемент)
ЗаполнитьКонтактнуюИнформацию();
КонецПроцедуры
&НаКлиенте
Процедура СписокФизЛицПриИзменении(Элемент)
Если Объект.СписокФизЛиц Тогда
Если Не Объект.КомандируемыеСотрудники.Количество() Тогда
СтрокаТЧ = Объект.КомандируемыеСотрудники.Добавить();
СтрокаТЧ.Сотрудник = Объект.Сотрудник;
КонецЕсли;
Объект.Сотрудник = Неопределено;
Объект.ЛицевойСчет = Неопределено;
Иначе
Для каждого СтрокаТЧ Из Объект.ВыдачаПодОтчет Цикл
СтрокаТЧ.Сотрудник = Неопределено;
СтрокаТЧ.ЛицевойСчет = Неопределено;
КонецЦикла;
КонецЕсли;
СписокФизЛицПриИзмененииНаСервере();
КонецПроцедуры
&НаСервере
Процедура СписокФизЛицПриИзмененииНаСервере()
Элементы.ГруппаКомандируемыеСотрудники.Заголовок = ЗаголовокКомандируемыеСотрудники();
НастроитьЗависимыеЭлементыФормыНаСервере("СписокФизЛиц");
КонецПроцедуры
&НаКлиенте
Процедура ДатаНачалаПриИзменении(Элемент)
Если Объект.ДатаНачала > Объект.ДатаОкончания Тогда
Объект.ДатаОкончания = Объект.ДатаНачала;
КонецЕсли;
ПериодПриИзменении();
КонецПроцедуры
&НаКлиенте
Процедура ДатаОкончанияПриИзменении(Элемент)
Если Объект.ДатаОкончания < Объект.ДатаНачала Тогда
Объект.ДатаНачала = Объект.ДатаОкончания;
КонецЕсли;
ПериодПриИзменении();
КонецПроцедуры
&НаКлиенте
Процедура ПериодПриИзменении()
Объект.БронироватьУбытиеТудаНеРаньше = Объект.ДатаНачала;
Объект.БронироватьПрибытиеТудаНеПозже = Объект.ДатаНачала;
Объект.БронироватьУбытиеОбратноНеРаньше = Объект.ДатаОкончания;
Объект.БронироватьПрибытиеОбратноНеПозже = Объект.ДатаОкончания;
РассчитатьЧислоДней();
КонецПроцедуры
&НаКлиенте
Процедура ЧислоДнейПриИзменении(Элемент)
СекундВМинуте = 60;
МинутВЧасе = 60;
ЧасовВДне = 24;
Объект.ДатаОкончания = Объект.ДатаНачала + (ЧислоДней - 1) * СекундВМинуте * МинутВЧасе * ЧасовВДне;
Элементы.ЧислоДней.Заголовок = ОбщегоНазначенияУТКлиентСервер.СклонениеСлова(
ЧислоДней, НСтр("ru='день, дня, дней, м'"));
КонецПроцедуры
&НаКлиенте
Процедура КомментарийРасходовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияКомментария(
Элемент.ТекстРедактирования, ЭтотОбъект, "Объект.КомментарийРасходов", НСтр("ru = 'Детализация расходов'"));
КонецПроцедуры
&НаКлиенте
Процедура СверхЛимитаПриИзменении(Элемент)
НастроитьЗависимыеЭлементыФормы(Элемент.Имя);
КонецПроцедуры
&НаКлиенте
Процедура НадписьФактическаяОплатаНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("КлючВарианта", "ОплатаЗаявокНаРасходованиеДенежныхСредств");
ПараметрыФормы.Вставить("КлючНазначенияИспользования", "ОплатаЗаявокНаРасходованиеДенежныхСредств");
ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина);
ПараметрыФормы.Вставить("ВидимостьКомандВариантовОтчетов", Ложь);
Отбор = Новый Структура;
Отбор.Вставить("ЗаявкаНаРасходованиеДенежныхСредств", Объект.Ссылка);
ПараметрыФормы.Вставить("Отбор", Отбор);
ОткрытьФорму("Отчет.ОплатаЗаявокНаРасходованиеДенежныхСредств.Форма", ПараметрыФормы, ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура БронироватьСамолетТудаПриИзменении(Элемент)
УстановитьПодсказкуПриЗаказеБилетов(ЭтотОбъект, Ложь);
ЗаполнитьПараметрыБронирования(ЭтотОбъект, Элементы.ГруппаЗаказатьТуда, Ложь);
КонецПроцедуры
&НаКлиенте
Процедура БронироватьПоездТудаПриИзменении(Элемент)
УстановитьПодсказкуПриЗаказеБилетов(ЭтотОбъект, Ложь);
ЗаполнитьПараметрыБронирования(ЭтотОбъект, Элементы.ГруппаЗаказатьТуда, Ложь)
КонецПроцедуры
&НаКлиенте
Процедура БронироватьСамолетОбратноПриИзменении(Элемент)
УстановитьПодсказкуПриЗаказеБилетов(ЭтотОбъект, Истина);
ЗаполнитьПараметрыБронирования(ЭтотОбъект, Элементы.ГруппаЗаказатьОбратно, Истина);
КонецПроцедуры
&НаКлиенте
Процедура БронироватьПоездОбратноПриИзменении(Элемент)
УстановитьПодсказкуПриЗаказеБилетов(ЭтотОбъект, Истина);
ЗаполнитьПараметрыБронирования(ЭтотОбъект, Элементы.ГруппаЗаказатьОбратно, Истина);
КонецПроцедуры
&НаКлиенте
Процедура БронироватьУбытиеТудаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ОбработкаВыбораОбъектовБронирования(Элемент.Имя, ВыбранноеЗначение, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура БронироватьУбытиеТудаАвтоПодбор(
Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
ПодобратьОбъектыСмартвей(Элемент, Текст, ДанныеВыбора, Ожидание, СтандартнаяОбработка);
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура БронироватьУбытиеТудаОкончаниеВводаТекста(
Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
ОкончаниеВводаТекстаЭлементовБронирования(Текст, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура БронироватьПрибытиеТудаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ОбработкаВыбораОбъектовБронирования(Элемент.Имя, ВыбранноеЗначение, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура БронироватьПрибытиеТудаАвтоПодбор(
Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
ПодобратьОбъектыСмартвей(Элемент, Текст, ДанныеВыбора, Ожидание, СтандартнаяОбработка);
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура БронироватьПрибытиеТудаОкончаниеВводаТекста(
Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
ОкончаниеВводаТекстаЭлементовБронирования(Текст, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура БронироватьМестоТрансфераТудаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ОбработкаВыбораОбъектовБронирования(Элемент.Имя, ВыбранноеЗначение, СтандартнаяОбработка);
Объект.БронироватьМестоТрансфераТудаЭтоРегион = ВыбранноеЗначение.ЭтоРегион;
КонецПроцедуры
&НаКлиенте
Процедура БронироватьМестоТрансфераТудаАвтоПодбор(
Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
ПодобратьОбъектыСмартвей(Элемент, Текст, ДанныеВыбора, Ожидание, СтандартнаяОбработка);
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура БронироватьМестоТрансфераТудаОкончаниеВводаТекста(
Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
ОкончаниеВводаТекстаЭлементовБронирования(Текст, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура БронироватьУбытиеОбратноОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ОбработкаВыбораОбъектовБронирования(Элемент.Имя, ВыбранноеЗначение, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура БронироватьУбытиеОбратноАвтоПодбор(
Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
ПодобратьОбъектыСмартвей(Элемент, Текст, ДанныеВыбора, Ожидание, СтандартнаяОбработка);
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура БронироватьУбытиеОбратноОкончаниеВводаТекста(
Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
ОкончаниеВводаТекстаЭлементовБронирования(Текст, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура БронироватьПрибытиеОбратноОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ОбработкаВыбораОбъектовБронирования(Элемент.Имя, ВыбранноеЗначение, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура БронироватьПрибытиеОбратноАвтоПодбор(
Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
ПодобратьОбъектыСмартвей(Элемент, Текст, ДанныеВыбора, Ожидание, СтандартнаяОбработка);
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура БронироватьПрибытиеОбратноОкончаниеВводаТекста(
Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
ОкончаниеВводаТекстаЭлементовБронирования(Текст, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура БронироватьМестоТрансфераОбратноОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ОбработкаВыбораОбъектовБронирования(Элемент.Имя, ВыбранноеЗначение, СтандартнаяОбработка);
Объект.БронироватьМестоТрансфераОбратноЭтоРегион = ВыбранноеЗначение.ЭтоРегион;
КонецПроцедуры
&НаКлиенте
Процедура БронироватьМестоТрансфераОбратноАвтоПодбор(
Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
ПодобратьОбъектыСмартвей(Элемент, Текст, ДанныеВыбора, Ожидание, СтандартнаяОбработка);
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура БронироватьМестоТрансфераОбратноОкончаниеВводаТекста(
Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
ОкончаниеВводаТекстаЭлементовБронирования(Текст, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура БронироватьМестоПроживанияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ОбработкаВыбораОбъектовБронирования(Элемент.Имя, ВыбранноеЗначение, СтандартнаяОбработка);
Объект.БронироватьМестоПроживанияЭтоРегион = ВыбранноеЗначение.ЭтоРегион;
КонецПроцедуры
&НаКлиенте
Процедура БронироватьМестоПроживанияАвтоПодбор(
Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
ПодобратьОбъектыСмартвей(Элемент, Текст, ДанныеВыбора, Ожидание, СтандартнаяОбработка);
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура БронироватьМестоПроживанияОкончаниеВводаТекста(
Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
ОкончаниеВводаТекстаЭлементовБронирования(Текст, ДанныеВыбора, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ИнформацияОБронированииОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
Если Не (СтрНачинаетсяС(НавигационнаяСсылкаФорматированнойСтроки, "e1c:")
Или СтрНачинаетсяС(НавигационнаяСсылкаФорматированнойСтроки, "e1cib/")
Или СтрНачинаетсяС(НавигационнаяСсылкаФорматированнойСтроки, "e1ccs/")) Тогда
СтандартнаяОбработка = Ложь;
БронированиеСсылка = БронированиеСсылка(НавигационнаяСсылкаФорматированнойСтроки);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ВладелецФайла", БронированиеСсылка);
ПараметрыФормы.Вставить("ТолькоПросмотр", ТолькоПросмотр);
ОткрытьФорму("Обработка.РаботаСФайлами.Форма.ПрисоединенныеФайлы", ПараметрыФормы, ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция БронированиеСсылка(ИдентификаторБронирования)
Возврат Документы.Бронирование.ПолучитьСсылку(Новый УникальныйИдентификатор(ИдентификаторБронирования));
КонецФункции
&НаКлиенте
Процедура СостояниеБронированияОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если НавигационнаяСсылкаФорматированнойСтроки = "Отправить" Тогда
ОбщегоНазначенияУТКлиент.ВыполнитьОбработкуОповещенияПослеПроверкиПроведенностиДокумента(
ЭтотОбъект, Новый ОписаниеОповещения("ОтправитьЗаявкуПродолжение", ЭтотОбъект));
ИначеЕсли НавигационнаяСсылкаФорматированнойСтроки = "Обновить" Тогда
ДлительнаяОперация = ОбновитьСтатусБронированияПоЗаявке();
ОповещениеОЗавершении = Новый ОписаниеОповещения("ОбработатьЗавершениеОбновленияСтатуса", ЭтотОбъект);
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийТабличнойЧастиСотрудники
&НаКлиенте
Процедура КомандируемыеСотрудникиПриИзменении(Элемент)
Элементы.ГруппаКомандируемыеСотрудники.Заголовок = ЗаголовокКомандируемыеСотрудники();
КонецПроцедуры
&НаКлиенте
Процедура ФормаОплатыПриИзменении(Элемент)
Если ФормаОплаты = "Безналичными" Тогда
Объект.ФормаОплатыЗаявки = ПредопределенноеЗначение("Перечисление.ФормыОплаты.Безналичная");
ИначеЕсли ФормаОплаты = "Наличными" Тогда
Объект.ФормаОплатыЗаявки = ПредопределенноеЗначение("Перечисление.ФормыОплаты.Наличная");
Иначе
ФормаОплаты = "ВЛюбойФорме";
Объект.ФормаОплатыЗаявки = ПредопределенноеЗначение("Перечисление.ФормыОплаты.ПустаяСсылка");
КонецЕсли;
НастроитьЗависимыеЭлементыФормы("ФормаОплатыЗаявки");
КонецПроцедуры
&НаКлиенте
Процедура СотрудникиПриИзменении(Элемент)
Элементы.ГруппаВыдатьПодОтчет.Заголовок = НСтр("ru='Выдать под отчет на командировочные расходы:'") +
" " + Объект.ВыдачаПодОтчет.Итог("Сумма") + " " + Строка(Объект.Валюта);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда)
РаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраНажатие(Элемент, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиДокумент(Команда)
ОбщегоНазначенияУТКлиент.Провести(ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиИЗакрыть(Команда)
ОбщегоНазначенияУТКлиент.ПровестиИЗакрыть(ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьДокумент(Команда)
ОбщегоНазначенияУТКлиент.Записать(ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(Команда, ЭтаФорма, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьПериод(Команда)
Оповещение = Новый ОписаниеОповещения("ВыбратьПериодЗавершение", ЭтотОбъект);
ОбщегоНазначенияУТКлиент.РедактироватьПериод(
Объект,
Новый Структура("ДатаНачала, ДатаОкончания", "ДатаНачала", "ДатаОкончания"),
Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьПериодЗавершение(Период, ДополнительныеПараметры) Экспорт
Если Период <> Неопределено Тогда
РассчитатьЧислоДней();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РассчитатьЧислоДней()
СекундВМинуте = 60;
МинутВЧасе = 60;
ЧасовВДне = 24;
ЧислоДней = (Объект.ДатаОкончания - Объект.ДатаНачала) / (СекундВМинуте * МинутВЧасе * ЧасовВДне) + 1;
Элементы.ЧислоДней.Заголовок = ОбщегоНазначенияУТКлиентСервер.СклонениеСлова(
ЧислоДней, НСтр("ru='день, дня, дней, м'"));
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСотрудников(Команда)
ЗаполнитьСотрудниковНаСервере();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСотрудниковНаСервере()
МассивСотрудников = Объект.КомандируемыеСотрудники.Выгрузить().ВыгрузитьКолонку("Сотрудник");
МассивСотрудников = ОбщегоНазначенияУТ.УдалитьПовторяющиесяЭлементыМассива(МассивСотрудников);
Объект.ВыдачаПодОтчет.Очистить();
Для каждого СотрудникСсылка Из МассивСотрудников Цикл
Объект.ВыдачаПодОтчет.Добавить().Сотрудник = СотрудникСсылка;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура СкачатьВсе(Команда)
ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);
ДиалогВыбораФайла.Показать(Новый ОписаниеОповещения("СкачатьВсеЗавершение", ЭтотОбъект));
КонецПроцедуры
&НаКлиенте
Процедура СкачатьВсеЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
ЧислоФайлов = СкачатьВсеНаСервере(Результат[0]);
Если ЧислоФайлов Тогда
ПоказатьОповещениеПользователя(СтрШаблон(НСтр("ru = 'Файлы скачаны (%1)'"), ЧислоФайлов));
Иначе
ПоказатьОповещениеПользователя(НСтр("ru = 'Нет файлов для скачивания'"));
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция СкачатьВсеНаСервере(Каталог)
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
| ДанныеСправочника.Ссылка КАК Ссылка,
| ДанныеСправочника.Наименование КАК Наименование,
| ДанныеСправочника.Расширение КАК Расширение
|ИЗ
| Справочник.БронированиеПрисоединенныеФайлы КАК ДанныеСправочника
|ГДЕ
| ДанныеСправочника.ВладелецФайла В (&СписокБилетов)
| И НЕ ДанныеСправочника.ПометкаУдаления
|";
Запрос.УстановитьПараметр("СписокБилетов", СписокБилетов);
ЧислоФайлов = 0;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ДанныеФайла = РаботаСФайлами.ДвоичныеДанныеФайла(Выборка.Ссылка, Ложь);
Если ДанныеФайла <> Неопределено Тогда
ДанныеФайла.Записать(Каталог + "\" + Выборка.Наименование + "." + Выборка.Расширение);
ЧислоФайлов = ЧислоФайлов + 1;
КонецЕсли;
КонецЦикла;
Возврат ЧислоФайлов;
КонецФункции
&НаКлиенте
Процедура ОбновитьДанныеБронирования(Команда)
ОбновитьДанныеБронированияЛокализация(Команда);
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьЗаявку(Команда)
Объект.Закрыта = Истина;
ПараметрыЗаписи = Новый Структура;
ПараметрыЗаписи.Вставить("РежимЗаписи", РежимЗаписиДокумента.Проведение);
Записать(ПараметрыЗаписи);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область Свойства
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтаФорма);
КонецПроцедуры
#КонецОбласти
#Область УправлениеЭлементамиФормы
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииСозданииНаСервере()
ПравоСогласования = ПраваПользователяПовтИсп.СогласованиеЗаявокНаКомандировку();
ДенежныеСредстваСервер.УправлениеЭлементамиФормыПриЧтенииСозданииНаСервере(ЭтотОбъект);
ИнициализироватьЭлементыБронирования();
ЗаполнитьПараметрыБронирования(ЭтотОбъект, Элементы.ГруппаЗаказатьТуда, Ложь);
ЗаполнитьПараметрыБронирования(ЭтотОбъект, Элементы.ГруппаЗаказатьОбратно, Истина);
ЗаполнитьПараметрыБронирования(ЭтотОбъект, Элементы.ГруппаПроживание);
ВывестиИнформациюОБронировании();
ЗаполнитьДанныеОбОплатеЗаявки();
УстановитьСписокСтатусов();
УправлениеЭлементамиФормы();
НастроитьЗависимыеЭлементыФормыНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура НастроитьЗависимыеЭлементыФормы(ИзмененныйРеквизит = "")
ДенежныеСредстваКлиентСервер.НастроитьЭлементыФормы(ЭтаФорма, ИзмененныйРеквизит, РеквизитыФормы(ЭтаФорма));
КонецПроцедуры
&НаСервере
Процедура НастроитьЗависимыеЭлементыФормыНаСервере(ИзмененныйРеквизит = "")
ДенежныеСредстваКлиентСервер.НастроитьЭлементыФормы(ЭтаФорма, ИзмененныйРеквизит, РеквизитыФормы(ЭтаФорма));
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция РеквизитыФормы(Форма)
РеквизитыФормы = Новый Структура;
РеквизитыФормы.Вставить("ПравоСогласования");
РеквизитыФормы.Вставить("ИспользоватьИнтеграциюСоСмартвей");
РеквизитыФормы.Вставить("ОстатокОплаты");
ЗаполнитьЗначенияСвойств(РеквизитыФормы, Форма);
Возврат РеквизитыФормы;
КонецФункции
&НаСервере
Процедура ЗаполнитьДанныеОбОплатеЗаявки()
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ОстатокОплаты = -1;
Иначе
ОстатокОплаты = ОстатокОплатыПоЗаявке(Объект.Ссылка);
КонецЕсли;
Если ОстатокОплаты < 0 Тогда
НадписьФактическаяОплата = СтроковыеФункции.ФорматированнаяСтрока(
НСтр("ru='<span style=""color: %1"">Не оплачена</span>'"), "ЦветТекстаПредупреждение");
ИначеЕсли ОстатокОплаты = 0 Тогда
Если Объект.Закрыта Тогда
СуммаЗакрыто = СуммаЗакрыто(Объект.Ссылка);
НадписьФактическаяОплата = СтроковыеФункции.ФорматированнаяСтрока(
НСтр("ru='Оплачена частично, <span style=""color: %1"">закрыто: %2</span>'"),
"ЦветТекстаПредупреждение", ФормированиеПечатныхФорм.ФорматСумм(СуммаЗакрыто, Объект.Валюта));
Иначе
НадписьФактическаяОплата = СтроковыеФункции.ФорматированнаяСтрока(НСтр("ru='Оплачена полностью'"));
КонецЕсли;
Иначе
НадписьФактическаяОплата = СтроковыеФункции.ФорматированнаяСтрока(
НСтр("ru='Оплачена частично, <span style=""color: %1"">не оплачено: %2</span>'"),
"ЦветТекстаПредупреждение", ФормированиеПечатныхФорм.ФорматСумм(ОстатокОплаты, Объект.Валюта));
КонецЕсли;
НастроитьЗависимыеЭлементыФормыНаСервере("ОстатокОплаты");
КонецПроцедуры
&НаСервереБезКонтекста
Функция ОстатокОплатыПоЗаявке(Ссылка)
Результат = Неопределено;
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
| 1
|ИЗ
| РегистрНакопления.ДенежныеСредстваКВыплате КАК ДенежныеСредства
|ГДЕ
| ДенежныеСредства.ЗаявкаНаРасходованиеДенежныхСредств = &Ссылка
| И ДенежныеСредства.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
|;
|
|ВЫБРАТЬ
| ДенежныеСредства.СуммаОстаток КАК НеОплачено
|ИЗ
| РегистрНакопления.ДенежныеСредстваКВыплате.Остатки(,
| ЗаявкаНаРасходованиеДенежныхСредств = &Ссылка
| ) КАК ДенежныеСредства
|";
Запрос.УстановитьПараметр("Ссылка", Ссылка);
УстановитьПривилегированныйРежим(Истина);
МассивРезультатов = Запрос.ВыполнитьПакет();
УстановитьПривилегированныйРежим(Ложь);
Если МассивРезультатов[0].Пустой() Тогда
Результат = -1;
Иначе
Результат = МассивРезультатов[1].Выгрузить()[0].НеОплачено;
КонецЕсли;
Возврат Результат;
КонецФункции
&НаСервереБезКонтекста
Функция СуммаЗакрыто(Ссылка)
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
| -СУММА(ДенежныеСредства.Сумма) КАК Закрыто
|ИЗ
| РегистрНакопления.ДенежныеСредстваКВыплате КАК ДенежныеСредства
|ГДЕ
| ДенежныеСредства.ЗаявкаНаРасходованиеДенежныхСредств = &Ссылка
| И ДенежныеСредства.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
| И ДенежныеСредства.Сумма < 0
|";
Запрос.УстановитьПараметр("Ссылка", Ссылка);
УстановитьПривилегированныйРежим(Истина);
РезультатЗапроса = Запрос.Выполнить();
УстановитьПривилегированныйРежим(Ложь);
Возврат РезультатЗапроса.Выгрузить()[0].Закрыто;
КонецФункции
&НаСервере
Процедура ВывестиИнформациюОБронировании()
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
| ДанныеДокумента.НомерБилета КАК Номер,
| ДанныеДокумента.ДатаОтправления КАК ДатаНач,
| ДанныеДокумента.ДатаПрибытия КАК ДатаКон,
| ДанныеДокумента.СуммаДокумента КАК Сумма,
| ПРЕДСТАВЛЕНИЕ(ДанныеДокумента.Валюта) КАК Валюта,
| ПРЕДСТАВЛЕНИЕ(ДанныеДокумента.ТипУслуги) КАК ТипУслуги,
| ВЫРАЗИТЬ(ДанныеДокумента.ДеталиПоездки КАК Строка(100)) КАК Детали,
| ДанныеДокумента.Ссылка КАК Ссылка,
| КОЛИЧЕСТВО(Файлы.Ссылка) КАК КоличествоФайлов
|ИЗ
| Документ.Бронирование КАК ДанныеДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ
| Справочник.БронированиеПрисоединенныеФайлы КАК Файлы
| ПО
| Файлы.ВладелецФайла = ДанныеДокумента.Ссылка
|ГДЕ
| ДанныеДокумента.ДокументОснование = &Ссылка
| И НЕ ДанныеДокумента.ПометкаУдаления
|СГРУППИРОВАТЬ ПО
| ДанныеДокумента.Ссылка
|";
Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);
СтрокаБронирований = "";
ШаблонСсылка = НСтр("ru='%1 %2'");
ШаблонБилет = НСтр("ru='%1 - %2, %3 %4'");
ШаблонФайлы = НСтр("ru='Файлы (%1)'");
СписокБилетов.Очистить();
УстановитьПривилегированныйРежим(Истина);
Выборка = Запрос.Выполнить().Выбрать();
УстановитьПривилегированныйРежим(Ложь);
Пока Выборка.Следующий() Цикл
СписокБилетов.Добавить(Выборка.Ссылка);
СтрокаБронирований = СтрокаБронирований
+ "<a href = " + ПолучитьНавигационнуюСсылку(Выборка.Ссылка) + ">" + СтрШаблон(ШаблонСсылка, Выборка.ТипУслуги, Выборка.Номер) + "</a>"
+ " " + СтрШаблон(ШаблонБилет, Выборка.ДатаНач, Выборка.ДатаКон, Выборка.Сумма, Выборка.Валюта)
+ ?(Выборка.КоличествоФайлов > 0, " " + "<a href = " + Строка(Выборка.Ссылка.УникальныйИдентификатор()) + ">" + СтрШаблон(ШаблонФайлы, Выборка.КоличествоФайлов) + "</a>", "")
+ Символы.ПС;
КонецЦикла;
ИнформацияОБронировании = СтроковыеФункции.ФорматированнаяСтрока(СтрокаБронирований);
Элементы.СкачатьВсе.Видимость = СписокБилетов.Количество();
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьПодсказкуПриЗаказеБилетов(Форма, ОбратноеНаправление)
Свойства = СвойстваБронирования(Форма, ОбратноеНаправление);
Если Свойства.Бронировать Тогда
Подсказки = Новый Массив;
Подсказки.Добавить(НСтр("ru = 'Регион'"));
Если Свойства.БронироватьСамолет Тогда
Подсказки.Добавить(НСтр("ru = 'код аэропорта'"));
КонецЕсли;
Если Свойства.БронироватьПоезд Тогда
Подсказки.Добавить(НСтр("ru = 'ж/д станция'"));
КонецЕсли;
Подсказка = СтрСоединить(Подсказки, ", ");
Свойства.ЭлементУбытие.ПодсказкаВвода = Подсказка;
Свойства.ЭлементПрибытие.ПодсказкаВвода = Подсказка;
Если Свойства.БронироватьТрансфер Тогда
Подсказка = СтрШаблон(НСтр("ru = '%1 или отель'"), Подсказка);
Свойства.ЭлементТрансфер.ПодсказкаВвода = Подсказка;
Иначе
Свойства.ЭлементТрансфер.ПодсказкаВвода = "";
КонецЕсли;
Иначе
Свойства.ЭлементУбытие.ПодсказкаВвода = "";
Свойства.ЭлементПрибытие.ПодсказкаВвода = "";
Свойства.ЭлементТрансфер.ПодсказкаВвода = "";
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьПодсказкуПроживание(Форма)
Если Форма.Объект.БронироватьПроживание Тогда
Форма.Элементы.БронироватьМестоПроживания.ПодсказкаВвода = НСтр("ru = 'Отель (регион или название)'");
Иначе
Форма.Элементы.БронироватьМестоПроживания.ПодсказкаВвода = "";
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Прочее
&НаКлиенте
Процедура Подключаемый_ОбработатьЗаписьОбъекта()
ОбщегоНазначенияУТКлиент.ОбработатьЗаписьОбъектаВФорме(ЭтотОбъект, ПараметрыДляЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ЗакрытьФорму()
Закрыть();
КонецПроцедуры
&НаСервере
Процедура УстановитьСписокСтатусов()
СписокВыбора = Элементы.Статус.СписокВыбора;
Если Не ПравоСогласования Тогда
СписокВыбора.Очистить();
СписокВыбора.Добавить(Перечисления.СтатусыЗаявокСотрудников.Подготовлена);
СписокВыбора.Добавить(Перечисления.СтатусыЗаявокСотрудников.Отклонена);
Если ПравоСогласования Или Объект.Статус = Перечисления.СтатусыЗаявокСотрудников.Согласована Тогда
СписокВыбора.Добавить(Перечисления.СтатусыЗаявокСотрудников.Согласована);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УправлениеЭлементамиФормы()
Элементы.ГруппаКомандируемыеСотрудники.Заголовок = ЗаголовокКомандируемыеСотрудники();
Элементы.ГруппаВыдатьПодОтчет.Заголовок = НСтр("ru='Выдать под отчет на командировочные расходы:'") +
" " + Объект.ВыдачаПодОтчет.Итог("Сумма") + " " + Строка(Объект.Валюта);
Если Объект.ФормаОплатыЗаявки = Перечисления.ФормыОплаты.Безналичная Тогда
ФормаОплаты = "Безналичными";
ИначеЕсли Объект.ФормаОплатыЗаявки = Перечисления.ФормыОплаты.Наличная Тогда
ФормаОплаты = "Наличными"
Иначе
ФормаОплаты = "ВЛюбойФорме";
КонецЕсли;
УстановитьПодсказкуПриЗаказеБилетов(ЭтотОбъект, Ложь);
УстановитьПодсказкуПриЗаказеБилетов(ЭтотОбъект, Истина);
УстановитьПодсказкуПроживание(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьКонтактнуюИнформацию()
Объект.Телефон = "";
Объект.АдресЭлектроннойПочты = "";
Если ЗначениеЗаполнено(Объект.Сотрудник) Тогда
ОбъектыКИ = Новый Массив;
ОбъектыКИ.Добавить(Объект.Сотрудник);
ТипыКИ = Новый Массив;
ТипыКИ.Добавить(Перечисления.ТипыКонтактнойИнформации.Телефон);
ТипыКИ.Добавить(Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты);
КИ = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъектов(ОбъектыКИ, ТипыКИ);
Если КИ.Количество() Тогда
Для каждого СтрокаКИ Из КИ Цикл
Если СтрокаКИ.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон Тогда
Объект.Телефон = СтрокаКИ.Представление;
ИначеЕсли СтрокаКИ.Тип = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты Тогда
Объект.АдресЭлектроннойПочты = СтрокаКИ.Представление;
КонецЕсли;
Если ЗначениеЗаполнено(Объект.Телефон) И ЗначениеЗаполнено(Объект.АдресЭлектроннойПочты) Тогда
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ЗаголовокКомандируемыеСотрудники()
СотрудникиСтрокой = Новый Массив;
РеквизитыСотрудников = ОбщегоНазначения.ЗначениеРеквизитаОбъектов(
Объект.КомандируемыеСотрудники.Выгрузить(, "Сотрудник").ВыгрузитьКолонку("Сотрудник"), "Наименование");
Для каждого КлючИЗначение Из РеквизитыСотрудников Цикл
СотрудникиСтрокой.Добавить(КлючИЗначение.Значение);
КонецЦикла;
Если Не СотрудникиСтрокой.Количество() Тогда
СотрудникиСтрокой.Добавить(НСтр("ru='<указать сотрудников>'"));
КонецЕсли;
Возврат СтрСоединить(СотрудникиСтрокой, "; ");
КонецФункции
&НаСервере
Процедура ИнициализироватьЭлементыБронирования()
ЭлементыБронирования = Новый Соответствие;
ЭлементыБронирования.Вставить("БронироватьУбытиеТуда", Новый Структура);
ЭлементыБронирования.Вставить("БронироватьПрибытиеТуда", Новый Структура);
ЭлементыБронирования.Вставить("БронироватьМестоТрансфераТуда", Новый Структура);
ЭлементыБронирования.Вставить("БронироватьУбытиеОбратно", Новый Структура);
ЭлементыБронирования.Вставить("БронироватьПрибытиеОбратно", Новый Структура);
ЭлементыБронирования.Вставить("БронироватьМестоТрансфераОбратно", Новый Структура);
ЭлементыБронирования.Вставить("БронироватьМестоПроживания", Новый Структура);
ПараметрыЭлементовБронирования = Новый ФиксированноеСоответствие(ЭлементыБронирования);
Идентификаторы = Новый Соответствие;
Идентификаторы.Вставить("БронироватьУбытиеТуда", "БронироватьУбытиеТудаИдентификатор");
Идентификаторы.Вставить("БронироватьПрибытиеТуда", "БронироватьПрибытиеТудаИдентификатор");
Идентификаторы.Вставить("БронироватьМестоТрансфераТуда", "БронироватьМестоТрансфераТудаИдентификатор");
Идентификаторы.Вставить("БронироватьУбытиеОбратно", "БронироватьУбытиеОбратноИдентификатор");
Идентификаторы.Вставить("БронироватьПрибытиеОбратно", "БронироватьПрибытиеОбратноИдентификатор");
Идентификаторы.Вставить("БронироватьМестоТрансфераОбратно", "БронироватьМестоТрансфераОбратноИдентификатор");
Идентификаторы.Вставить("БронироватьМестоПроживания", "БронироватьМестоПроживанияИдентификатор");
ИдентификаторыЭлементовБронирования = Новый ФиксированноеСоответствие(Идентификаторы);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ИнициализироватьПараметрыБронирования()
ПараметрыБронирования = Новый Структура;
ПараметрыБронирования.Вставить("БронироватьСамолет", Ложь);
ПараметрыБронирования.Вставить("БронироватьПоезд", Ложь);
ПараметрыБронирования.Вставить("БронироватьТрансфер", Ложь);
ПараметрыБронирования.Вставить("БронироватьПроживание", Ложь);
Возврат ПараметрыБронирования
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура ЗаполнитьПараметрыБронирования(Форма, ЭлементФормы, ОбратноеНаправление = Ложь)
Если ТипЗнч(ЭлементФормы) = Тип("ГруппаФормы") Тогда
Для Каждого ТекущийЭлемент Из ЭлементФормы.ПодчиненныеЭлементы Цикл
ИзменитьПараметрЭлементаБронирования(Форма, ТекущийЭлемент.Имя, ОбратноеНаправление);
ЗаполнитьПараметрыБронирования(Форма, ТекущийЭлемент, ОбратноеНаправление);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ИзменитьПараметрЭлементаБронирования(Форма, ИмяЭлемента, ОбратноеНаправление)
КомплектЭлементов = Форма.ПараметрыЭлементовБронирования;
ПараметрыЭлемента = КомплектЭлементов.Получить(ИмяЭлемента);
Если ПараметрыЭлемента <> Неопределено Тогда
ЭлементыБронирования = Новый Соответствие(Форма.ПараметрыЭлементовБронирования);
Свойства = СвойстваБронирования(Форма, ОбратноеНаправление);
ПараметрыБронирования = ИнициализироватьПараметрыБронирования();
ИсключаяСвойства = НеизменныеПараметрыЭлементаБронирования(ИмяЭлемента);
ЗаполнитьЗначенияСвойств(ПараметрыБронирования, Свойства, , ИсключаяСвойства);
ЭлементыБронирования.Вставить(ИмяЭлемента, ПараметрыБронирования);
Форма.ПараметрыЭлементовБронирования = Новый ФиксированноеСоответствие(ЭлементыБронирования);
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция СвойстваБронирования(Форма, ОбратноеНаправление)
ПараметрыБронирования = Новый Структура;
Если Не ОбратноеНаправление Тогда
ПараметрыБронирования.Вставить("Бронировать", Форма.Объект.БронироватьБилетыТуда);
ПараметрыБронирования.Вставить("БронироватьСамолет", Форма.Объект.БронироватьСамолетТуда);
ПараметрыБронирования.Вставить("БронироватьПоезд", Форма.Объект.БронироватьПоездТуда);
ПараметрыБронирования.Вставить("БронироватьТрансфер", Форма.Объект.БронироватьТрансферТуда);
ПараметрыБронирования.Вставить("ЭлементУбытие", Форма.Элементы.БронироватьУбытиеТуда);
ПараметрыБронирования.Вставить("ЭлементПрибытие", Форма.Элементы.БронироватьПрибытиеТуда);
ПараметрыБронирования.Вставить("ЭлементТрансфер", Форма.Элементы.БронироватьМестоТрансфераТуда);
Иначе
ПараметрыБронирования.Вставить("Бронировать", Форма.Объект.БронироватьБилетыОбратно);
ПараметрыБронирования.Вставить("БронироватьСамолет", Форма.Объект.БронироватьСамолетОбратно);
ПараметрыБронирования.Вставить("БронироватьПоезд", Форма.Объект.БронироватьПоездОбратно);
ПараметрыБронирования.Вставить("БронироватьТрансфер", Форма.Объект.БронироватьТрансферОбратно);
ПараметрыБронирования.Вставить("ЭлементУбытие", Форма.Элементы.БронироватьУбытиеОбратно);
ПараметрыБронирования.Вставить("ЭлементПрибытие", Форма.Элементы.БронироватьПрибытиеОбратно);
ПараметрыБронирования.Вставить("ЭлементТрансфер", Форма.Элементы.БронироватьМестоТрансфераОбратно);
КонецЕсли;
ПараметрыБронирования.Вставить("БронироватьПроживание", Форма.Объект.БронироватьПроживание);
Возврат ПараметрыБронирования;
КонецФункции
&НаКлиенте
Функция ЭлементВГруппе(Элемент, ИмяГруппы)
Если ТипЗнч(Элемент.Родитель) = Тип("ГруппаФормы") Тогда
Если Элемент.Родитель.Имя = ИмяГруппы Тогда
Возврат Истина;
Иначе
Возврат ЭлементВГруппе(Элемент.Родитель, ИмяГруппы);
КонецЕсли;
Иначе
Возврат Ложь;
КонецЕсли;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция НеизменныеПараметрыЭлементаБронирования(ИмяЭлемента)
ИсключаяСвойства = "";
Если ИмяЭлемента = "БронироватьУбытиеТуда"
ИЛИ ИмяЭлемента = "БронироватьПрибытиеТуда"
ИЛИ ИмяЭлемента = "БронироватьУбытиеОбратно"
ИЛИ ИмяЭлемента = "БронироватьПрибытиеОбратно" Тогда
ИсключаяСвойства = "БронироватьТрансфер, БронироватьПроживание";
ИначеЕсли ИмяЭлемента = "БронироватьМестоПроживания" Тогда
ИсключаяСвойства = "БронироватьСамолет, БронироватьПоезд, БронироватьТрансфер";
ИначеЕсли ИмяЭлемента = "БронироватьМестоТрансфераТуда"
ИЛИ ИмяЭлемента = "БронироватьМестоТрансфераОбратно" Тогда
ИсключаяСвойства = "БронироватьПроживание";
КонецЕсли;
Возврат ИсключаяСвойства;
КонецФункции
&НаКлиенте
Процедура ОбработкаВыбораОбъектовБронирования(ИмяЭлемента, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Объект[ИмяЭлемента] = ДанныеВыбора.Представление;
Идентификатор = ИдентификаторыЭлементовБронирования.Получить(ИмяЭлемента);
Если Идентификатор <> Неопределено Тогда
Объект[Идентификатор] = ДанныеВыбора.Код;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОкончаниеВводаТекстаЭлементовБронирования(Текст, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ДанныеВыбора = Новый СписокЗначений;
Значение = СоставЭлементаБронирования("", Текст);
ДанныеВыбора.Добавить(Значение, Текст);
КонецПроцедуры
&НаСервереБезКонтекста
Функция СоставЭлементаБронирования(Код, Представление, ЭтоРегион = Ложь)
СтруктураЭлемента = Новый Структура("Код, Представление");
СтруктураЭлемента.Вставить("Код", Код);
СтруктураЭлемента.Вставить("Представление", Представление);
СтруктураЭлемента.Вставить("ЭтоРегион", ЭтоРегион);
Возврат СтруктураЭлемента;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область Локализация
#Область Локализация_ПодключаемыеОбработчикиСобытийФормы
&НаСервере
Процедура Подключаемый_ПриСозданииНаСервереЛокализация(Отказ, СтандартнаяОбработка)
ПриСозданииНаСервере(Отказ, СтандартнаяОбработка);
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПриЧтенииСозданииНаСервереЛокализация();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура Подключаемый_ПриЧтенииНаСервереЛокализация(ТекущийОбъект)
ПриЧтенииНаСервере(ТекущийОбъект);
ПриЧтенииСозданииНаСервереЛокализация();
КонецПроцедуры
&НаСервере
Процедура Подключаемый_ПослеЗаписиНаСервереЛокализация(ТекущийОбъект, ПараметрыЗаписи)
ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи);
Если ИспользоватьИнтеграциюСоСмартвей Тогда
ЗаполнитьСостояниеБронирования();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ЛокализацияОбработчикиСобытийЭлементовФормы
&НаКлиенте
Процедура ОтправитьЗаявкуПродолжение(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено Тогда
ДлительнаяОперация = ОтправитьЗаявкуНаСервере();
Если ДлительнаяОперация <> Неопределено Тогда
ОповещениеОЗавершении = Новый ОписаниеОповещения("ОбработатьЗавершениеОтправкиЗаявки", ЭтотОбъект);
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ПараметрыОжидания.ВыводитьСообщения = Истина;
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ЛокализацияКоманды
&НаКлиенте
Процедура ОбновитьДанныеБронированияЛокализация(Команда)
ДлительнаяОперация = НачатьОбновлениеНаСервере();
ОповещениеОЗавершении = Новый ОписаниеОповещения("ОбработатьПолучениеДанныхБронирования", ЭтотОбъект);
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания);
КонецПроцедуры
&НаСервере
Функция НачатьОбновлениеНаСервере()
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияПроцедуры();
ПараметрыВыполнения.КлючФоновогоЗадания = Метаданные.РегламентныеЗадания.ПолучениеДанныхСмартвей.Ключ;
Возврат ДлительныеОперации.ВыполнитьПроцедуру(
ПараметрыВыполнения, "ИнтеграцияСмартвей.ПолучитьДанныеБронированияПоЗаявке", Объект.Ссылка);
КонецФункции
&НаКлиенте
Процедура ОбработатьПолучениеДанныхБронирования(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
ВывестиИнформациюОБронировании();
КонецПроцедуры
#КонецОбласти
#Область ЛокализацияСлужебные
&НаСервере
Процедура ПриЧтенииСозданииНаСервереЛокализация()
ИспользоватьИнтеграциюСоСмартвей = ПолучитьФункциональнуюОпцию("ИспользоватьИнтеграциюСоСмартвей");
Если ИспользоватьИнтеграциюСоСмартвей Тогда
ЗаполнитьСостояниеБронирования();
КонецЕсли;
НастроитьЗависимыеЭлементыФормыНаСервере();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСостояниеБронирования()
СостояниеБронированияЗаявки = Неопределено;
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
ДанныеСостояния = РегистрыСведений.СостоянияБронированияЗаявокНаКомандировку.ПолучитьПоследнее(
, Новый Структура("ЗаявкаНаКомандировку", Объект.Ссылка));
СостояниеБронированияЗаявки = ДанныеСостояния.Состояние;
КонецЕсли;
СтрокиСостоянияБронирования = Новый Массив;
Если Не ЗначениеЗаполнено(СостояниеБронированияЗаявки) Тогда
СтрокиСостоянияБронирования.Добавить(
Новый ФорматированнаяСтрока(НСтр("ru = 'Не отправлена в систему бронирования'"),, ЦветаСтиля.ЦветОсобогоТекста));
СтрокиСостоянияБронирования.Добавить(" ");
СтрокиСостоянияБронирования.Добавить(
Новый ФорматированнаяСтрока(НСтр("ru = 'Отправить'"),,,, "Отправить"));
Иначе
Если СостояниеБронированияЗаявки = Перечисления.СостоянияБронированияЗаявокНаКомандировку.Отправлена Тогда
ШаблонТекстаСостояния = НСтр("ru = '%1 в систему бронирования'");
Иначе
ШаблонТекстаСостояния = НСтр("ru = '%1 в системе бронирования'");
КонецЕсли;
СтрокиСостоянияБронирования.Добавить(СтрШаблон(ШаблонТекстаСостояния, СостояниеБронированияЗаявки));
СтрокиСостоянияБронирования.Добавить(" ");
СтрокиСостоянияБронирования.Добавить(
Новый ФорматированнаяСтрока(НСтр("ru = 'Обновить статус обработки'"),,,, "Обновить"));
КонецЕсли;
НадписьСостояниеБронирования = Новый ФорматированнаяСтрока(СтрокиСостоянияБронирования);
КонецПроцедуры
&НаСервере
Функция ОтправитьЗаявкуНаСервере()
ДанныеДляОтправки = Документы.ЗаявкаНаКомандировку.ДанныеЗаявокДляБронирования(Объект.Ссылка);
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияПроцедуры();
Возврат ДлительныеОперации.ВыполнитьПроцедуру(
ПараметрыВыполнения, "ИнтеграцияСмартвей.ОтправитьЗаявки", Объект.Ссылка, ДанныеДляОтправки);
КонецФункции
&НаКлиенте
Процедура ОбработатьЗавершениеОтправкиЗаявки(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Если ТипЗнч(Результат) = Тип("Структура") Тогда
Если Результат.Свойство("Сообщения") И Результат.Сообщения <> Неопределено Тогда
Для каждого Сообщение Из Результат.Сообщения Цикл
Сообщение.Сообщить();
КонецЦикла;
КонецЕсли;
Если Результат.Свойство("Статус") Тогда
Если Результат.Статус = "Ошибка" Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(Результат.КраткоеПредставлениеОшибки);
ИначеЕсли Результат.Статус = "Выполнено" Тогда
ЗаполнитьСостояниеБронирования();
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ОбновитьСтатусБронированияПоЗаявке()
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияПроцедуры();
Возврат ДлительныеОперации.ВыполнитьПроцедуру(
ПараметрыВыполнения, "ИнтеграцияСмартвей.ПолучитьСтатусыЗаявок", Объект.Ссылка);
КонецФункции
&НаКлиенте
Процедура ОбработатьЗавершениеОбновленияСтатуса(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Если ТипЗнч(Результат) = Тип("Структура") И Результат.Свойство("Статус") Тогда
Если Результат.Статус = "Ошибка" Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(Результат.КраткоеПредставлениеОшибки);
ИначеЕсли Результат.Статус = "Выполнено" Тогда
ЗаполнитьСостояниеБронирования();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьОбъектыСмартвей(Элемент, Текст, ДанныеВыбора, Ожидание, СтандартнаяОбработка)
Если СтрДлина(Текст) < 2
ИЛИ Ожидание = 0
ИЛИ Не ИспользоватьИнтеграциюСоСмартвей Тогда
Возврат;
КонецЕсли;
ПараметрыЭлемента = ПараметрыЭлементовБронирования.Получить(Элемент.Имя);
Если ПараметрыЭлемента = Неопределено Тогда
Возврат;
КонецЕсли;
СтандартнаяОбработка = Ложь;
СформироватьСписокОбъектовСмартвейНаСервере(Текст, ДанныеВыбора, ПараметрыЭлемента);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура СформироватьСписокОбъектовСмартвейНаСервере(Текст, ДанныеВыбора, ПараметрыПодбора)
ДанныеВыбора = Новый СписокЗначений;
Если Не ПараметрыПодбора.БронироватьСамолет
И Не ПараметрыПодбора.БронироватьПоезд Тогда
ТаблицаРегионов = ИнтеграцияСмартвей.ОтелиИРегионы(Текст, Ложь, Истина);
Для Каждого СтрокаТаблицы Из ТаблицаРегионов Цикл
Представление = СтрШаблон(НСтр("ru = '%1, %2'"), СтрокаТаблицы.Название, СтрокаТаблицы.Город);
ЗначениеЭлемента = СоставЭлементаБронирования(СтрокаТаблицы.Код, Представление, СтрокаТаблицы.ЭтоРегион);
ДанныеВыбора.Добавить(ЗначениеЭлемента, Представление);
КонецЦикла;
КонецЕсли;
Если ПараметрыПодбора.БронироватьСамолет Тогда
ТаблицаАэропортов = ИнтеграцияСмартвей.Аэропорты(Текст);
Для Каждого СтрокаТаблицы Из ТаблицаАэропортов Цикл
Представление = ПредставлениеАэропорта(СтрокаТаблицы);
ЗначениеЭлемента = СоставЭлементаБронирования(СтрокаТаблицы.Код, Представление);
ДанныеВыбора.Добавить(ЗначениеЭлемента, Представление);
КонецЦикла;
КонецЕсли;
Если ПараметрыПодбора.БронироватьПоезд Тогда
ТаблицаСтанций = ИнтеграцияСмартвей.ЖелезнодорожныеСтанции(Текст);
Для Каждого СтрокаТаблицы Из ТаблицаСтанций Цикл
ЗначениеЭлемента = СоставЭлементаБронирования(СтрокаТаблицы.Код, СтрокаТаблицы.Название);
ДанныеВыбора.Добавить(ЗначениеЭлемента, СтрокаТаблицы.Название);
КонецЦикла;
КонецЕсли;
Если ПараметрыПодбора.БронироватьТрансфер
ИЛИ ПараметрыПодбора.БронироватьПроживание Тогда
ТаблицаОтелей = ИнтеграцияСмартвей.ОтелиИРегионы(Текст, Истина, Ложь);
Для Каждого СтрокаТаблицы Из ТаблицаОтелей Цикл
Представление = СтрШаблон(НСтр("ru = '%1, %2'"), СтрокаТаблицы.Название, СтрокаТаблицы.Город);
ЗначениеЭлемента = СоставЭлементаБронирования(СтрокаТаблицы.Код, Представление, СтрокаТаблицы.ЭтоРегион);
ДанныеВыбора.Добавить(ЗначениеЭлемента, Представление);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПредставлениеАэропорта(Реквизиты)
Если Реквизиты.Город = Реквизиты.Название Тогда
Если ЗначениеЗаполнено(Реквизиты.Город) Тогда
Представление = СтрШаблон(НСтр("ru = '%1, %2 (%3)'"),
Реквизиты.Город, Реквизиты.Страна, Реквизиты.Код);
Иначе
Если ЗначениеЗаполнено(Реквизиты.Страна) Тогда
Представление = СтрШаблон(НСтр("ru = '%1 (%2)'"),
Реквизиты.Страна, Реквизиты.Код);
Иначе
Представление = СтрШаблон(НСтр("ru = '%1'"), Реквизиты.Код);
КонецЕсли;
КонецЕсли;
Иначе
Представление = СтрШаблон(НСтр("ru = '%1, %2 (%3 - %4)'"),
Реквизиты.Город, Реквизиты.Страна, Реквизиты.Название, Реквизиты.Код);
КонецЕсли;
Возврат Представление;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область Инициализация
#Если НаСервере Тогда
Если Не ПодключеныОбработчикиЛокализация И ПолучитьФункциональнуюОпцию("ПоддержкаПлатежейРФ") Тогда
ПодключеныОбработчикиЛокализация = Истина;
ПодключаемыеОбработчикиСобытийФормы = Новый Массив;
ПодключаемыеОбработчикиСобытийФормы.Добавить("ПриСозданииНаСервере");
ПодключаемыеОбработчикиСобытийФормы.Добавить("ПриЧтенииНаСервере");
ПодключаемыеОбработчикиСобытийФормы.Добавить("ПослеЗаписиНаСервере");
Для каждого Обработчик Из ПодключаемыеОбработчикиСобытийФормы Цикл
УстановитьДействие(Обработчик, "Подключаемый_" + Обработчик + "Локализация");
КонецЦикла;
КонецЕсли;
#КонецЕсли
#КонецОбласти