Бронирование / Форма документа / Модуль формы

файл
#Область ОписаниеПеременных

&НаКлиенте
Перем КэшированныеЗначения;

&НаКлиенте
Перем ПараметрыДляЗаписи Экспорт;

#КонецОбласти

#Область ОбработчикиСобытийФормы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	УстановитьУсловноеОформление();
	
	Если Параметры.Свойство("АвтоТест") Тогда // Возврат формы для анализа
		Возврат;
	КонецЕсли;
	
	ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
	
	// Обработчик механизма "ВерсионированиеОбъектов"
	ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
	
	Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
		ПриЧтенииСозданииНаСервере();
	КонецЕсли;
	
	СписокРеквизитов = Новый Массив;
	СписокРеквизитов.Добавить("ТипОперации");
	СписокРеквизитов.Добавить("Дата");
	СписокРеквизитов.Добавить("СуммаШтрафа");
	СписокРеквизитов.Добавить("СтатьяРасходов");
	СписокРеквизитов.Добавить("АналитикаРасходов");
	СписокРеквизитов.Добавить("АналитикаАктивовПассивов");
	СписокРеквизитов.Добавить("Подразделение");
	СписокРеквизитов.Добавить("НаправлениеДеятельности");
	СписокРеквизитов.Добавить("НастройкаСчетовУчета");
	РеквизитыКорректировок = СтрСоединить(СписокРеквизитов, ",");
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
	
	// ИнтеграцияС1СДокументооборотом
	ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтотОбъект);
	// Конец ИнтеграцияС1СДокументооборотом
	
	// Обработчик подсистемы "Свойства"
	ДополнительныеПараметры = Новый Структура;
	ДополнительныеПараметры.Вставить("Объект", Объект);
	ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
	УправлениеСвойствами.ПриСозданииНаСервере(ЭтотОбъект, ДополнительныеПараметры);
	
	СобытияФорм.ПриСозданииНаСервере(ЭтотОбъект, Отказ, СтандартнаяОбработка);
	
	// СтандартныеПодсистемы.РаботаСФайлами
	ПараметрыГиперссылки = РаботаСФайлами.ГиперссылкаФайлов();
	ПараметрыГиперссылки.Размещение = "КоманднаяПанель";
	РаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыГиперссылки);
	// Конец СтандартныеПодсистемы.РаботаСФайлами
	
	ПараметрыВыбораСтатейИАналитик = Документы.Бронирование.ПараметрыВыбораСтатейИАналитикДляСписанияПрямымМетодом();
	ДоходыИРасходыСервер.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыВыбораСтатейИАналитик);
	
	//++ НЕ УТ
	ПараметрыНастройки = Документы.Бронирование.ПараметрыНастройкиСчетовУчетаДляСпособаСписанияНапрямую();
	НастройкаСчетовУчетаСервер.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыНастройки);
	//-- НЕ УТ
	
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	// СтандартныеПодсистемы.Свойства
	УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.Свойства
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
	// СтандартныеПодсистемы.РаботаСФайлами
	РаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ);
	// Конец СтандартныеПодсистемы.РаботаСФайлами
	
	ИнициализироватьОперации();
	
КонецПроцедуры

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
	
	// СтандартныеПодсистемы.УправлениеДоступом
	УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
	// Конец СтандартныеПодсистемы.УправлениеДоступом
	
	Если ДатыЗапретаИзменения.ИзменениеЗапрещено(ТекущийОбъект)
		Или ИзменениеАвансовогоОтчетаЗапрещено(Объект.АвансовыйОтчет, "") Тогда
		ЗаблокироватьРеквизиты();
	КонецЕсли;
	
	ПриЧтенииСозданииНаСервере();

	УправлениеСвойствами.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
	
	СобытияФорм.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);

	ПараметрыВыбораСтатейИАналитик = Документы.Бронирование.ПараметрыВыбораСтатейИАналитикДляСписанияПрямымМетодом();
	ДоходыИРасходыСервер.ПриЧтенииНаСервере(ЭтотОбъект, ПараметрыВыбораСтатейИАналитик);
	
	//++ НЕ УТ
	ПараметрыНастройки = Документы.Бронирование.ПараметрыНастройкиСчетовУчетаДляСпособаСписанияНапрямую();
	НастройкаСчетовУчетаСервер.ПриЧтенииНаСервере(ЭтотОбъект, ПараметрыНастройки);
	//-- НЕ УТ
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
	
КонецПроцедуры

&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
	
	СтрокиПокупка = Объект.Операции.НайтиСтроки(
		Новый Структура("ТипОперации", ПредопределенноеЗначение("Перечисление.ТипыОперацийСБилетами.Покупка")));
		
	Если Не СтрокиПокупка.Количество() Тогда
		ТекстОшибки = НСтр("ru = 'Документ не содержит операций покупки.'");
		ОбщегоНазначения.СообщитьПользователю(
					ТекстОшибки,, "Элементы.Операции",, Отказ);
	КонецЕсли;
	
	Если СтрокиПокупка.Количество() И Не ЗначениеЗаполнено(СтрокиПокупка[0].Сумма) Тогда
		ТекстОшибки = НСтр("ru = 'Поле ""Сумма"" не заполнено'");
		ОбщегоНазначения.СообщитьПользователю(
			ТекстОшибки,, "Элементы.Операции.ТекущиеДанные.Сумма",, Отказ);
	КонецЕсли;
	
	СуммаВозвратов = 0;
	СуммаПокупокИДоплат = 0;
	НомерСтрокиВозврата = 0;
	
	Для Каждого Стр Из Объект.Операции Цикл
		
		ЭтоПокупка = Стр.ТипОперации = Перечисления.ТипыОперацийСБилетами.Покупка;
		ЭтоДоплата = Стр.ТипОперации = Перечисления.ТипыОперацийСБилетами.Доплата;
		ЭтоВозврат = Стр.ТипОперации = Перечисления.ТипыОперацийСБилетами.Возврат;
		
		Поле = ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Операции", Стр.НомерСтроки, "Дата");
		
		Если Стр.Дата < НачалоДня(Объект.Дата) Тогда
			Если ЭтоДоплата Тогда
				ТекстОшибки = НСтр("ru = 'Нельзя ввести доплату раньше даты покупки.'");
			ИначеЕсли ЭтоВозврат Тогда
				ТекстОшибки = НСтр("ru = 'Нельзя ввести возврат раньше даты покупки.'");
			КонецЕсли;
			ОбщегоНазначения.СообщитьПользователю(ТекстОшибки,, Поле, "Объект", Отказ);
		КонецЕсли;
		
		Если ЭтоПокупка Или ЭтоДоплата Тогда
			СуммаПокупокИДоплат = СуммаПокупокИДоплат + Стр.Сумма;
		ИначеЕсли ЭтоВозврат Тогда
			СуммаВозвратов = СуммаВозвратов + Стр.Сумма;
			НомерСтрокиВозврата = Стр.НомерСтроки;
		КонецЕсли;
		
	КонецЦикла;
	
	Если СуммаВозвратов > СуммаПокупокИДоплат Тогда
		Поле = ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Операции", НомерСтрокиВозврата, "Сумма");
		ТекстОшибки = НСтр("ru = 'Сумма возвратов превышает сумму покупок и доплат.'");
		ОбщегоНазначения.СообщитьПользователю(
					ТекстОшибки,, Поле, "Объект", Отказ);
	КонецЕсли;
	
	Если Объект.ПринятьНДСКВычету
		 И СписокКодовВидовОпераций.НайтиПоЗначению(Объект.КодВидаОперации) = Неопределено Тогда
		ТекстОшибки = НСтр("ru = 'Указан некорректный код вида операции.'");
		ОбщегоНазначения.СообщитьПользователю(
					ТекстОшибки,, "КодВидаОперации", "Объект", Отказ);
	КонецЕсли;
	
	// СтандартныеПодсистемы.Свойства
	УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
	// Конец СтандартныеПодсистемы.Свойства
	
КонецПроцедуры

&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
	
	СтрокиПокупка = Объект.Операции.НайтиСтроки(
		Новый Структура("ТипОперации", ПредопределенноеЗначение("Перечисление.ТипыОперацийСБилетами.Покупка")));
	
	Для Каждого СтрокаПокупки Из СтрокиПокупка Цикл
		СтрокаПокупки.Дата = Объект.Дата;
	КонецЦикла;

	СобытияФормКлиент.ПередЗаписью(ЭтотОбъект, Отказ, ПараметрыЗаписи);
	
	Если НеВыполнятьПроверкуПередЗаписью Тогда
		НеВыполнятьПроверкуПередЗаписью = Ложь;
		Возврат;
	Иначе
		
		Если Объект.ТипБронирования = ПредопределенноеЗначение("Перечисление.ТипыБронирования.ЭлектронныйБилет") Тогда
		
			Если Объект.ДатаОтправления < НачалоДня(Объект.Дата) Тогда
				ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Дата отправления не может быть раньше даты покупки билета.'"), Объект.Ссылка, "Объект.ДатаОтправления",,Отказ);
			КонецЕсли;
		
		Иначе
			
			Если Не ЗначениеЗаполнено(Объект.ДатаОтправления) Тогда
				ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Дата начала не заполнена.'"), Объект.Ссылка, "Объект.ДатаОтправления",,Отказ);
			ИначеЕсли Объект.ДатаОтправления < НачалоДня(Объект.Дата) Тогда
				ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Дата начала не может быть раньше даты документа бронирования.'"), Объект.Ссылка, "Объект.ДатаОтправления",,Отказ);
			ИначеЕсли Не ЗначениеЗаполнено(Объект.ДатаПрибытия) Тогда
				ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Дата окончания не заполнена.'"), Объект.Ссылка, "Объект.ДатаПрибытия",,Отказ);
			КонецЕсли;
			
		КонецЕсли;
		
	КонецЕсли;
	
	ОбщегоНазначенияУТКлиент.ЗаписатьОбъектПриНеобходимости(ЭтотОбъект, ПараметрыЗаписи, Отказ);
	
КонецПроцедуры

&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
	
	//++ НЕ УТ
	НастройкаСчетовУчетаСервер.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект);
	//-- НЕ УТ
	
	// Обработчик подсистемы "Свойства"
	УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект);
	
	МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтотОбъект, Отказ, ТекущийОбъект, ПараметрыЗаписи);
	
	// Разрешается пропускать проверку даты запрета для добавления новых операциий в документ
	Если Объект.Проведен И ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
		ТекущийОбъект.ДополнительныеСвойства.Вставить("ПропуститьПроверкуЗапретаИзменения", Истина);
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)

	// СтандартныеПодсистемы.УправлениеДоступом
	УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
	// Конец СтандартныеПодсистемы.УправлениеДоступом
	
	ОбновитьЗаголовокФормы();
	
	НастроитьЗависимыеЭлементыФормыНаСервере();
	
	МодификацияКонфигурацииПереопределяемый.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
	
	СобытияФорм.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
	
	//++ НЕ УТ
	НастройкаСчетовУчетаСервер.ПослеЗаписиНаСервере(ЭтотОбъект);
	//-- НЕ УТ
	
	ДоходыИРасходыСервер.ПослеЗаписиНаСервере(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
	
	ПараметрыЗаписи.Вставить("КлючиДокументаОповещение", РаботаСЖурналамиДокументовКлиент.ПолучитьПараметрыКлючаПоДокументу(
		Объект.Ссылка, Объект.Дата, Объект.ХозяйственнаяОперация));
		
	Оповестить("Запись_Бронирование", ПараметрыЗаписи, Объект.Ссылка);
		
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
		МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
		МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
	КонецЕсли;
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
	
	МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтотОбъект, ПараметрыЗаписи);
	
	ОбщегоНазначенияУТКлиент.ВыполнитьДействияПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
	
КонецПроцедуры

&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
	
	ПринудительноЗакрытьФорму = Истина;
	
КонецПроцедуры

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
	
	// СтандартныеПодсистемы.Свойства
	Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтотОбъект, ИмяСобытия, Параметр) Тогда
		ОбновитьЭлементыДополнительныхРеквизитов();
		УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
	КонецЕсли;
	// Конец СтандартныеПодсистемы.Свойства
	
	СобытияФормКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
	
	// СтандартныеПодсистемы.РаботаСФайлами
	РаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия);
	// Конец СтандартныеПодсистемы.РаботаСФайлами
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовШапкиФормы

&НаКлиенте
Процедура ХозяйственнаяОперацияПриИзменении(Элемент)
	ХозяйственнаяОперацияПриИзмененииНаСервере();
КонецПроцедуры

&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
	
	ОрганизацияПриИзмененииСервер();
	ОбновитьТекстАвансовыйОтчет();
	
КонецПроцедуры

&НаКлиенте
Процедура ДатаПокупкиПриИзменении(Элемент)
	ДатаПокупкиПриИзмененииНаСервере();
КонецПроцедуры

&НаКлиенте
Процедура ПеревозчикПриИзменении(Элемент)
	ПеревозчикПриИзмененииНаСервере();
КонецПроцедуры

&НаКлиенте
Процедура АгентПриИзменении(Элемент)
	АгентПриИзмененииНаСервере();
КонецПроцедуры

&НаКлиенте
Процедура ПодотчетноеЛицоПриИзменении(Элемент)
	ПодотчетноеЛицоПриИзмененииНаСервере();
КонецПроцедуры

&НаКлиенте
Процедура СуммаДокументаПриИзменении(Элемент)
	ПриИзмененииСуммы();
КонецПроцедуры

&НаКлиенте
Процедура СтавкаНДСПриИзменении(Элемент)
	РассчитатьНДС();
КонецПроцедуры

&НаКлиенте
Процедура ТекстАвансовыйОтчетОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
		
	Если НавигационнаяСсылкаФорматированнойСтроки = "ОчиститьАвансовыйОтчет" Тогда
		
		СтандартнаяОбработка = Ложь;
		СообщениеОбОшибке = "";
		Если ИзменениеАвансовогоОтчетаЗапрещено(Объект.АвансовыйОтчет, СообщениеОбОшибке) Тогда
			ОбщегоНазначенияКлиент.СообщитьПользователю(СообщениеОбОшибке, , , "ТекстАвансовыйОтчет");
		Иначе
			Объект.АвансовыйОтчет = Неопределено;
			Модифицированность = Истина;
			ТекстАвансовыйОтчет = Новый ФорматированнаяСтрока(НСтр("ru = 'Включить в авансовый отчет'"),,,, "ВключитьВАвансовыйОтчет");
		КонецЕсли;
		
	ИначеЕсли НавигационнаяСсылкаФорматированнойСтроки = "ВключитьВАвансовыйОтчет" Тогда
	
		СтандартнаяОбработка = Ложь;
	
		Если ПокупкаПолностьюВозвращена() Тогда
			ОчиститьСообщения();
			ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Покупка полностью возвращена. Авансовый отчет не требуется.'"));
			Возврат;
		КонецЕсли;
		
		Отбор = Новый Структура;
		Отбор.Вставить("Организация", Объект.Организация);
		Отбор.Вставить("Подразделение", Объект.ПодразделениеПодотчетногоЛица);
		Отбор.Вставить("ПодотчетноеЛицо", Объект.ПодотчетноеЛицо);
		
		ПараметрыФормы = Новый Структура("Отбор", Отбор);
		ПараметрыФормы.Вставить("Дата", Объект.Дата);
		ПараметрыФормы.Вставить("ДокументЗакупки", Объект.Ссылка);
		ПараметрыФормы.Вставить("Валюта", Объект.Валюта);
		ПараметрыФормы.Вставить("НеЗаписыватьРедактируемыйДокументЗакупки", Истина);
		
		Оповещение = Новый ОписаниеОповещения("ПослеВыбораАвансовогоОтчета", ЭтотОбъект);
		
		ОткрытьФорму("Документ.АвансовыйОтчет.Форма.ФормаВыбораСоздания", ПараметрыФормы, ЭтотОбъект,,,, Оповещение);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ДатаОтправленияПриИзменении(Элемент)
	Объект.ДатаОтправления = Объект.ДатаОтправления - Секунда(Объект.ДатаОтправления);
КонецПроцедуры

&НаКлиенте
Процедура ДатаПрибытияПриИзменении(Элемент)
	Объект.ДатаПрибытия = Объект.ДатаПрибытия - Секунда(Объект.ДатаПрибытия);
	ДатаПрибытияПриИзмененииНаСервере();
КонецПроцедуры

&НаКлиенте
Процедура ИтогиПоОперациямНажатие(Элемент, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	НесколькоОпераций = 1;
	Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.ГруппаОперацииДокумента;
	ВидимостьНесколькихОпераций();
	
КонецПроцедуры

&НаКлиенте
Процедура СпособСписанияНапрямуюПриИзменении(Элемент)
	
	Объект.Сотрудник = Неопределено;
	СпособСписанияНапрямуюПриИзмененииНаСервере();
	
КонецПроцедуры

&НаКлиенте
Процедура ЗакупкаПодДеятельностьОчистка(Элемент, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
КонецПроцедуры

&НаКлиенте
Процедура ЗакупкаПодДеятельностьПриИзменении(Элемент)
	ЗакупкаПодДеятельностьПриИзмененииНаСервере();
КонецПроцедуры

&НаКлиенте
Процедура СотрудникПриИзменении(Элемент)
	
	ОписаниеОповещенияПриИзменении = Новый ОписаниеОповещения("СотрудникПриИзмененииПродолжение", ЭтотОбъект);
	Если ЗначениеЗаполнено(Объект.ФИОПассажира) Тогда
		ПоказатьВопрос(ОписаниеОповещенияПриИзменении,
		               НСтр("ru = 'Перезаполнить ФИО пассажира?'"),
		               РежимДиалогаВопрос.ДаНет);
	Иначе
		ВыполнитьОбработкуОповещения(ОписаниеОповещенияПриИзменении, КодВозвратаДиалога.Да);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ФИОПассажираПриИзменении(Элемент)
	Элементы.Сотрудник.АвтоОтметкаНезаполненного = Не ЗначениеЗаполнено(Объект.ФИОПассажира);
КонецПроцедуры

&НаКлиенте
Процедура СтатьяРасходовПриИзменении(Элемент)
	ДоходыИРасходыКлиентСервер.СтатьяПриИзменении(ЭтотОбъект, Элемент);
КонецПроцедуры

&НаКлиенте
Процедура СтатьяРасходовНачалоВыбора(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка)
	ДоходыИРасходыКлиент.НачалоВыбораСтатьи(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры

&НаКлиенте
Процедура СтатьяРасходовНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)
	ДоходыИРасходыКлиент.НачалоВыбораСтатьи(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры

&НаКлиенте
Процедура АналитикаРасходовНачалоВыбора(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка)
	ДоходыИРасходыКлиент.НачалоВыбораАналитикиРасходов(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры

&НаКлиенте
Процедура АналитикаРасходовПриИзменении(Элемент)
	ДоходыИРасходыКлиентСервер.АналитикаРасходовПриИзменении(ЭтотОбъект, Элемент);
КонецПроцедуры

&НаКлиенте
Процедура АналитикаРасходовАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
	ДоходыИРасходыКлиент.АвтоПодборАналитикиРасходов(ЭтотОбъект, Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка);
КонецПроцедуры

&НаКлиенте
Процедура АналитикаРасходовОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
	ДоходыИРасходыКлиент.ОкончаниеВводаТекстаАналитикиРасходов(ЭтотОбъект, Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка);
КонецПроцедуры

&НаКлиенте
Процедура АналитикаАктивовПассивовПриИзменении(Элемент)
	ДоходыИРасходыКлиентСервер.АналитикаАктивовПассивовПриИзменении(ЭтотОбъект, Элемент);
КонецПроцедуры

&НаКлиенте
Процедура ПредставлениеОтраженияВРеглУчетеНажатие(Элемент, СтандартнаяОбработка)
	
	//++ НЕ УТ
	НастройкаСчетовУчетаКлиент.ПриНажатии(ЭтотОбъект, Элемент, СтандартнаяОбработка);
	//-- НЕ УТ
	Возврат;
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовТаблицыФормыОперации

&НаКлиенте
Процедура ОперацииПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, ЭтоГруппа, Параметр)
	
	Если Не Копирование Тогда
		Отказ = Истина;
	КонецЕсли;
	
	Элементы.ОперацииДата.ПропускатьПриВводе = 
		Элемент.ТекущиеДанные.ТипОперации = ПредопределенноеЗначение("Перечисление.ТипыОперацийСБилетами.Покупка");
	
КонецПроцедуры

&НаКлиенте
Процедура ОперацииПриАктивизацииЯчейки(Элемент)
	
	Если Элемент.ТекущиеДанные = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	Если Элемент.ТекущийЭлемент = Элементы.ОперацииДата Тогда
		Элемент.ТекущийЭлемент.ТолькоПросмотр =
			Элемент.ТекущиеДанные.ТипОперации = ПредопределенноеЗначение("Перечисление.ТипыОперацийСБилетами.Покупка");
	КонецЕсли;

КонецПроцедуры

&НаКлиенте
Процедура ОперацииПриИзменении(Элемент)
	
	ОперацииПриИзмененииНаСервере();

КонецПроцедуры

&НаКлиенте
Процедура ОперацииВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	
	Если Поле = Элементы.ОперацииСуммаШтрафа Тогда
		ТипОперации = Объект.Операции.НайтиПоИдентификатору(ВыбраннаяСтрока).ТипОперации;
		Если ТипОперации = ПредопределенноеЗначение("Перечисление.ТипыОперацийСБилетами.Возврат") Тогда
			РедактироватьКорректировку(ВыбраннаяСтрока);
		КонецЕсли;
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ОперацииСуммаПриИзменении(Элемент)
	ПриИзмененииСуммы();
КонецПроцедуры

&НаКлиенте
Процедура ОперацииСтавкаНДСПриИзменении(Элемент)
	РассчитатьНДС();
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиКомандФормы

// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
	ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
	ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
	ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

&НаКлиенте
Процедура Подключаемый_ЗакрытьФорму()
	
	Закрыть();
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ОбработатьЗаписьОбъекта()
	
	ОбщегоНазначенияУТКлиент.ОбработатьЗаписьОбъектаВФорме(ЭтотОбъект, ПараметрыДляЗаписи);
	
КонецПроцедуры

// СтандартныеПодсистемы.РаботаСФайлами
&НаКлиенте
Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда)
	 РаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда);
КонецПроцедуры
// Конец СтандартныеПодсистемы.РаботаСФайлами

// СтандартныеПодсистемы.РаботаСФайлами
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
	 РаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
// Конец СтандартныеПодсистемы.РаботаСФайлами

// СтандартныеПодсистемы.РаботаСФайлами
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
	 РаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
// Конец СтандартныеПодсистемы.РаботаСФайлами

// СтандартныеПодсистемы.РаботаСФайлами
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраНажатие(Элемент, СтандартнаяОбработка)
	 РаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
// Конец СтандартныеПодсистемы.РаботаСФайлами

&НаКлиенте
Процедура ПровестиДокумент(Команда)
	
	ОбщегоНазначенияУТКлиент.Провести(ЭтотОбъект, Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура ПровестиИЗакрыть(Команда)
	
	ОбщегоНазначенияУТКлиент.ПровестиИЗакрыть(ЭтотОбъект, Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура ЗаписатьДокумент(Команда)
	
	ОбщегоНазначенияУТКлиент.Записать(ЭтотОбъект, Истина);
	
КонецПроцедуры

// ИнтеграцияС1СДокументооборотом
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
	
	ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(Команда, ЭтотОбъект, Объект);
	
КонецПроцедуры
//Конец ИнтеграцияС1СДокументооборотом

&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
	
	СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтотОбъект, Команда);
	
КонецПроцедуры

&НаКлиенте
Процедура ВвестиПокупку(Команда)
	
	ДобавитьОперацию(ПредопределенноеЗначение("Перечисление.ТипыОперацийСБилетами.Покупка"), Объект.Дата)
	
КонецПроцедуры

&НаКлиенте
Процедура ВвестиДоплату(Команда)
	
	ДобавитьОперацию(ПредопределенноеЗначение("Перечисление.ТипыОперацийСБилетами.Доплата"))
	
КонецПроцедуры

&НаКлиенте
Процедура ВвестиВозврат(Команда)
	
	ДобавитьОперацию(ПредопределенноеЗначение("Перечисление.ТипыОперацийСБилетами.Возврат"))
	
КонецПроцедуры

&НаКлиенте
Процедура ВвестиПолныйВозврат(Команда)
	
// Полный возврат
	ГруппыОпераций = Новый Соответствие;
	Для Каждого СтрокаТЧ Из Объект.Операции Цикл
		СтрокиПоСтавкеНДС = Объект.Операции.НайтиСтроки(Новый Структура("СтавкаНДС",СтрокаТЧ.СтавкаНДС));
		ГруппыОпераций.Вставить(СтрокаТЧ.СтавкаНДС,СтрокиПоСтавкеНДС);
	КонецЦикла;
	
	Для Каждого ГруппаОпераций Из ГруппыОпераций Цикл
		
		СуммаВозврата = 0;
		СуммаНДС = 0;
		Для Каждого СтрокаОперации Из ГруппаОпераций.Значение Цикл
			
			Если СтрокаОперации.ТипОперации = ПредопределенноеЗначение("Перечисление.ТипыОперацийСБилетами.Покупка")
				Или СтрокаОперации.ТипОперации = ПредопределенноеЗначение("Перечисление.ТипыОперацийСБилетами.Доплата") Тогда
				СуммаВозврата        = СуммаВозврата + СтрокаОперации.Сумма;
				СуммаНДС             = СуммаНДС + СтрокаОперации.СуммаНДС;
			ИначеЕсли СтрокаОперации.ТипОперации = ПредопределенноеЗначение("Перечисление.ТипыОперацийСБилетами.Возврат") Тогда
				СуммаВозврата        = СуммаВозврата - СтрокаОперации.Сумма;
				СуммаНДС             = СуммаНДС - СтрокаОперации.СуммаНДС;
			КонецЕсли;
			
		КонецЦикла;
		
		Если СуммаВозврата > 0 Тогда
			НоваяКорректировка                = Объект.Операции.Добавить();
			НоваяКорректировка.Дата           = ОбщегоНазначенияКлиент.ДатаСеанса();
			НоваяКорректировка.ТипОперации    = ПредопределенноеЗначение("Перечисление.ТипыОперацийСБилетами.Возврат");
			НоваяКорректировка.СтавкаНДС      = ГруппаОпераций.Ключ;
			НоваяКорректировка.Сумма          = СуммаВозврата;
			НоваяКорректировка.СуммаНДС       = СуммаНДС;
		КонецЕсли;
		
	КонецЦикла;
	
	ОперацииПриИзмененииНаСервере();
	
	ПоказатьОповещениеПользователя(НСтр("ru = 'Возврат.'"), , НСтр("ru = 'Покупка полностью возвращена.'"));

КонецПроцедуры

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

&НаСервере
Процедура ЗаполнитьДоговорПоУмолчанию()
	
	Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.БронированиеЧерезПодотчетноеЛицо Тогда
		Возврат;
	КонецЕсли;
	
	ДопПараметры = ЗакупкиСервер.ДополнительныеПараметрыОтбораДоговоров();
	ДопПараметры.ВалютаВзаиморасчетов = Объект.Валюта;
	ДопПараметры.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов;
	
	ПараметрыДоговора = Новый Структура;
	ПараметрыДоговора.Вставить("Организация", Объект.Организация);
	ПараметрыДоговора.Вставить("Договор",     Объект.Договор);
	
	Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.БронированиеУПоставщика Тогда
		ПараметрыДоговора.Вставить("Партнер",     Объект.Перевозчик);
		ПараметрыДоговора.Вставить("Контрагент",  Объект.КонтрагентПеревозчик);
	ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.БронированиеЧерезАгента Тогда
		ПараметрыДоговора.Вставить("Партнер",     Объект.Агент);
		ПараметрыДоговора.Вставить("Контрагент",  Объект.КонтрагентАгент);
	КонецЕсли;
		
	Объект.Договор = ЗакупкиСервер.ПолучитьДоговорПоУмолчанию(
		ПараметрыДоговора, Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщика, ДопПараметры);
	
КонецПроцедуры

&НаКлиенте
Процедура ПриИзмененииСуммы()
	РассчитатьНДС();
КонецПроцедуры

&НаКлиенте
Процедура ДобавитьОперацию(ТипОперации, ДатаОперации = Неопределено)
	
	Если ДатаОперации = Неопределено Тогда
		ДатаОперации = ОбщегоНазначенияКлиент.ДатаСеанса();
	КонецЕсли;
	
	СтавкаНДС = ПредопределенноеЗначение("Справочник.СтавкиНДС.БезНДС");
	Если ТипОперации = ПредопределенноеЗначение("Перечисление.ТипыОперацийСБилетами.Возврат") Тогда
		
		СтрокиПокупки = Объект.Операции.НайтиСтроки(
			Новый Структура("ТипОперации", ПредопределенноеЗначение("Перечисление.ТипыОперацийСБилетами.Покупка")));
		Если СтрокиПокупки.Количество() Тогда
			СтавкаНДС = СтрокиПокупки[0].СтавкаНДС;
		КонецЕсли;
		
		Если ПокупкаПолностьюВозвращена() Тогда
			ПоказатьОповещениеПользователя(НСтр("ru = 'Возврат.'"), , НСтр("ru = 'Покупка уже полностью возвращена.'"));
			Возврат;
		КонецЕсли;
		
	КонецЕсли;
	
	НоваяОперация             = Объект.Операции.Добавить();
	НоваяОперация.Дата        = ДатаОперации;
	НоваяОперация.ТипОперации = ТипОперации;
	НоваяОперация.СтавкаНДС   = СтавкаНДС;
	ОперацииПриИзмененииНаСервере();

КонецПроцедуры

&НаКлиенте
Функция ПокупкаПолностьюВозвращена()
	
	СуммаПокупок = 0;
	СуммаВозвратов = 0;
	Для Каждого СтрокаОперации Из Объект.Операции Цикл
	
		Если СтрокаОперации.ТипОперации = ПредопределенноеЗначение("Перечисление.ТипыОперацийСБилетами.Возврат") Тогда
			СуммаВозвратов = СуммаВозвратов + СтрокаОперации.Сумма;
		Иначе
			СуммаПокупок = СуммаПокупок + СтрокаОперации.Сумма;
		КонецЕсли;
		
	КонецЦикла;
	
	Возврат СуммаВозвратов >= СуммаПокупок;
	
КонецФункции

&НаКлиенте
Процедура РассчитатьНДС()
	
	ТекущаяСтрока = Элементы.Операции.ТекущиеДанные;
	
	Если Не ЗначениеЗаполнено(ТекущаяСтрока.СтавкаНДС) Тогда
		ТекущаяСтрока.СтавкаНДС = ПредопределенноеЗначение("Справочник.СтавкиНДС.БезНДС");
	КонецЕсли;
	
	ДанныеСтроки = Новый Структура;
	ДанныеСтроки.Вставить("СтавкаНДС", ТекущаяСтрока.СтавкаНДС);
	ДанныеСтроки.Вставить("СуммаНДС", ТекущаяСтрока.СуммаНДС);
	ДанныеСтроки.Вставить("Сумма", ТекущаяСтрока.Сумма);
	
	ПараметрыПересчетаНДС = Новый Структура("ЦенаВключаетНДС", Истина);
	СтруктураДействий = Новый Структура("ПересчитатьСуммуНДС", ПараметрыПересчетаНДС);
	ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ДанныеСтроки, СтруктураДействий, КэшированныеЗначения);
	
	ТекущаяСтрока.СуммаНДС = ДанныеСтроки.СуммаНДС;
	
	Элементы.СуммаНДС.ТолькоПросмотр = ДенежныеСредстваКлиентСервер.ЭтоНулеваяСтавкаНДС(ТекущаяСтрока.СтавкаНДС);
	
КонецПроцедуры

// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
	ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект);
КонецПроцедуры
// // Конец СтандартныеПодсистемы.ПодключаемыеКоманды

&НаКлиенте
Процедура ПослеВыбораАвансовогоОтчета(Результат, ДополнительныеПараметры) Экспорт
	
	Если Результат <> Неопределено Тогда
		СообщениеОбОшибке = "";
		Если ИзменениеАвансовогоОтчетаЗапрещено(Результат, СообщениеОбОшибке) Тогда
			ОбщегоНазначенияКлиент.СообщитьПользователю(СообщениеОбОшибке, , , "ТекстАвансовыйОтчет");
		Иначе
			Объект.АвансовыйОтчет = Результат;
			Модифицированность = Истина;
			ОбновитьТекстАвансовыйОтчет();
		КонецЕсли;
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура ПодотчетноеЛицоПриИзмененииНаСервере()
	Объект.ПодразделениеПодотчетногоЛица = ФизическиеЛицаУТ.ПодразделениеФизическогоЛица(Объект.ПодотчетноеЛицо);
КонецПроцедуры

&НаСервере
Процедура ПеревозчикПриИзмененииНаСервере()
	
	ПартнерыИКонтрагенты.ЗаполнитьКонтрагентаПартнераПоУмолчанию(Объект.Перевозчик, Объект.КонтрагентПеревозчик);
	ЗаполнитьДоговорПоУмолчанию();
	
КонецПроцедуры

&НаСервере
Процедура ДатаПокупкиПриИзмененииНаСервере()
	
	ПерезаполнитьСтавкуНДС();
	ОпределитьПечатьЕдиногоАвансовогоОтчета();
	НастроитьЗависимыеЭлементыФормыНаСервере();
	
КонецПроцедуры

&НаСервере
Процедура ДатаПрибытияПриИзмененииНаСервере()
	АктуализироватьЗакупкуПодДеятельность(Истина);
КонецПроцедуры

&НаСервере
Процедура ОрганизацияПриИзмененииСервер()
	
	Если Не ЗначениеЗаполнено(Объект.Валюта) Тогда
		Объект.Валюта = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Объект.Организация);
	КонецЕсли;
	
	Объект.АвансовыйОтчет = Неопределено;
	
	ПерезаполнитьСтавкуНДС();
	ЗаполнитьПодчиненныеСвойстваПоСтатистике("Организация");
	АктуализироватьЗакупкуПодДеятельность(Истина);
	ЗаполнитьДоговорПоУмолчанию();
	
КонецПроцедуры

&НаСервере
Процедура АгентПриИзмененииНаСервере()
	
	ПартнерыИКонтрагенты.ЗаполнитьКонтрагентаПартнераПоУмолчанию(Объект.Агент, Объект.КонтрагентАгент);
	ЗаполнитьДоговорПоУмолчанию();
	
КонецПроцедуры

&НаСервере
Процедура ХозяйственнаяОперацияПриИзмененииНаСервере()
	
	Объект.Договор = Неопределено;
	
	Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.БронированиеЧерезАгента
		Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.БронированиеУПоставщика Тогда
		Если Не ПолучитьФункциональнуюОпцию("ИспользоватьДоговорыСПоставщиками") Тогда
			ТекстСообщения = НСтр("ru = 'Для отражения покупки билета через агента или у перевозчика 
				|необходимо указать договор - включить использование договоров с поставщиками в разделе ""Закупки"".'");
			ОбщегоНазначения.СообщитьПользователю(ТекстСообщения);
			Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.БронированиеЧерезПодотчетноеЛицо;
		КонецЕсли;
	КонецЕсли;
	
	ЗаполнитьПодчиненныеСвойстваПоСтатистике("ХозяйственнаяОперация");
	ЗаполнитьДоговорПоУмолчанию();
	
	УправлениеЭлементамиФормы();
	НастроитьЗависимыеЭлементыФормыНаСервере("ХозяйственнаяОперация");
	
КонецПроцедуры

&НаСервере
Процедура ВидимостьНесколькихОпераций()
	
	Если НесколькоОпераций ИЛИ Объект.СпособСписанияНапрямую Тогда
		Элементы.ГруппаСтраницы.ОтображениеСтраниц = ОтображениеСтраницФормы.ЗакладкиСверху;
	КонецЕсли;
	
	Элементы.ГруппаНесколькоОпераций.Видимость = НесколькоОпераций;
	Элементы.ГруппаОднаОперация.Видимость      = Не НесколькоОпераций;
	ВывестиИтогиОпераций();
	
КонецПроцедуры

&НаСервере
Процедура ОперацииПриИзмененииНаСервере()
	
	ВывестиИтогиОпераций();
	Объект.Операции.Сортировать("Дата,Порядок");
		
КонецПроцедуры

&НаСервере
Процедура ВывестиИтогиОпераций()
	
	Если НесколькоОпераций = 0 Тогда
		ИтогиПоОперациям = СтроковыеФункции.ФорматированнаяСтрока(НСтр("ru = 'Добавить покупку/доплату/возврат'"));
		Возврат;
	КонецЕсли;
	
	ПорядокТиповОпераций = Документы.Бронирование.ПорядокТиповОпераций();
	
	МассивИтоговыхСтрок = Новый Массив;
	
	ИтоговаяСуммаПокупок = 0;
	ИтоговаяСуммаНДС     = 0;
	Для Каждого ОписаниеТипаОперации Из ПорядокТиповОпераций Цикл
		
		ТипОпераций = ОписаниеТипаОперации.Ключ;
		СтрокиОперации = Объект.Операции.НайтиСтроки(Новый Структура("ТипОперации",ТипОпераций));
		Если Не СтрокиОперации.Количество() Тогда
			Продолжить;
		КонецЕсли;
		
		ИтоговаяСумма          = 0;
		ИтоговаяСуммаШтрафа    = 0;
		СуммаНДСГруппыОпераций = 0;
		Для Каждого СтрокаОперации Из СтрокиОперации Цикл
			ИтоговаяСумма          = ИтоговаяСумма + СтрокаОперации.Сумма;
			ИтоговаяСуммаШтрафа    = ИтоговаяСуммаШтрафа + СтрокаОперации.СуммаШтрафа;
			СуммаНДСГруппыОпераций = СуммаНДСГРуппыОпераций + СтрокаОперации.СуммаНДС;
			СтрокаОперации.Порядок = ОписаниеТипаОперации.Значение;
		КонецЦикла;
		
		Если ТипОпераций = Перечисления.ТипыОперацийСБилетами.Покупка Тогда
			
			ИтоговаяСуммаПокупок = ИтоговаяСумма;
			ИтоговаяСуммаНДС     = СуммаНДСГруппыОпераций;
			
		Иначе
			
			Если ТипОпераций = Перечисления.ТипыОперацийСБилетами.Доплата Тогда
				СтрокаСсылка = СтрШаблон(
					НСтр("ru = 'Сумма доплат: %1 %2'"), ИтоговаяСумма, Объект.Валюта);
				МассивИтоговыхСтрок.Добавить(СтрокаСсылка);
			ИначеЕсли ТипОпераций = Перечисления.ТипыОперацийСБилетами.Возврат Тогда
				СтрокаСсылка = СтрШаблон(
					НСтр("ru = 'Сумма возвратов: %1 %2'"), ИтоговаяСумма, Объект.Валюта);
				МассивИтоговыхСтрок.Добавить(СтрокаСсылка);
			КонецЕсли;
			
		КонецЕсли;
		
		Если ИтоговаяСуммаШтрафа > 0 Тогда
			СтрокаСсылка = СтрШаблон(НСтр("ru = 'Сумма штрафов: %1 %2'"),
				ИтоговаяСуммаШтрафа, Объект.Валюта);
			МассивИтоговыхСтрок.Добавить(СтрокаСсылка);
		КонецЕсли;
	
	КонецЦикла;
	
	Если Не МассивИтоговыхСтрок.Количество() Тогда
		МассивИтоговыхСтрок.Добавить(НСтр("ru = 'Подробнее'"));
	КонецЕсли;
	
	СтрокаИтогов = СтрСоединить(МассивИтоговыхСтрок,", ");
	ИтогиПоОперациям = СтроковыеФункции.ФорматированнаяСтрока(СтрокаИтогов);
	
КонецПроцедуры

#Область Свойства

// СтандартныеПодсистемы.Свойства
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
	УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
	УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
// Конец СтандартныеПодсистемы.Свойства

&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
	УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры

&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
	
	УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтотОбъект);
	
КонецПроцедуры

#КонецОбласти

#Область УправлениеЭлементамиФормы

&НаСервере
Процедура УстановитьУсловноеОформление()
	
	УсловноеОформление.Элементы.Очистить();
	
	// СуммаНДС
	Элемент = УсловноеОформление.Элементы.Добавить();
	
	Поля = Элемент.Поля.Элементы;
	ПолеЭлемента = Поля.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОперацииСуммаНДС.Имя);
	
	ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Операции.СтавкаНДС");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
	
	СтавкиБезНДС = УчетНДСУПСлужебныйКлиентСерверПовтИсп.СписокНезначащихСтавок();
	СтавкиБезНДС.Добавить(Справочники.СтавкиНДС.ПустаяСсылка());
	
	ОтборЭлемента.ПравоеЗначение = СтавкиБезНДС;
	
	Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
		
	// Сумма штрафа в таблице операций
	Элемент = УсловноеОформление.Элементы.Добавить();
	
	Поля              = Элемент.Поля.Элементы;
	ПолеЭлемента      = Поля.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОперацииСуммаШтрафа.Имя);
	
	ОтборЭлемента                = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение  = Новый ПолеКомпоновкиДанных("Объект.Операции.ТипОперации");
	ОтборЭлемента.ВидСравнения   = ВидСравненияКомпоновкиДанных.Равно;
	ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыОперацийСБилетами.Возврат;
	
	ОтборЭлемента                = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение  = Новый ПолеКомпоновкиДанных("Объект.Операции.СуммаШтрафа");
	ОтборЭлемента.ВидСравнения   = ВидСравненияКомпоновкиДанных.НеЗаполнено;
		
	Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = 'Нет штрафа'"));
	
КонецПроцедуры

&НаСервере
Процедура ПриЧтенииСозданииНаСервере()
	
	ДатаНачалаПечатиЕдиногоАвансовогоОтчета = Константы.ДатаНачалаПечатиЕдиногоАвансовогоОтчета.Получить();
	ЕдиныйАвансовыйОтчетБезусловно = Не Константы.ВидимостьДатыНачалаПечатиЕдиногоАвансовогоОтчета.Получить();
	ОпределитьПечатьЕдиногоАвансовогоОтчета();
	ДенежныеСредстваСервер.УправлениеЭлементамиФормыПриЧтенииСозданииНаСервере(ЭтотОбъект);
		
	Если Объект.Операции.Количество() > 1 Тогда
		НесколькоОпераций = 1;
	КонецЕсли;
		
	ВидимостьНесколькихОпераций();
	
	ОбновитьЗаголовокФормы();
	
	ОбновитьТекстАвансовыйОтчет();
	УправлениеЭлементамиФормы();
	
	НастроитьЗависимыеЭлементыФормыНаСервере();
	АктуализироватьЗакупкуПодДеятельность();
	
КонецПроцедуры

&НаСервере
Процедура АктуализироватьЗакупкуПодДеятельность(Заполнить = Ложь)
	
	ПараметрыЗаполнения = Документы.Бронирование.ПараметрыЗаполненияВидаДеятельностиНДС(Объект);
	
	Если Не ЗначениеЗаполнено(Объект.ЗакупкаПодДеятельность) ИЛИ Заполнить Тогда
		УчетНДСУП.ЗаполнитьВидДеятельностиНДС(
			Объект.ЗакупкаПодДеятельность,
			ПараметрыЗаполнения,
			УчетНДСКэшированныеЗначенияПараметров);
			
			ЗакупкаПодДеятельностьПриИзмененииНаСервере();
			
	КонецЕсли;
	
	УчетНДСУП.ЗаполнитьСписокВыбораВидаДеятельностиНДС(
		Элементы.ЗакупкаПодДеятельность,
		Объект.ЗакупкаПодДеятельность,
		ПараметрыЗаполнения,
		УчетНДСКэшированныеЗначенияПараметров);
	
КонецПроцедуры

&НаСервере
Процедура НастроитьЗависимыеЭлементыФормыНаСервере(ИзмененныйРеквизит = "")
	
	ДенежныеСредстваКлиентСервер.НастроитьЭлементыФормы(ЭтотОбъект, ИзмененныйРеквизит, РеквизитыФормы(ЭтотОбъект));
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Функция РеквизитыФормы(Форма)
	
	РеквизитыФормы = Новый Структура;
	РеквизитыФормы.Вставить("ПечатьЕдиногоАвансовогоОтчета");
	ЗаполнитьЗначенияСвойств(РеквизитыФормы, Форма);
	
	Возврат РеквизитыФормы;
	
КонецФункции

&НаСервере
Процедура УправлениеЭлементамиФормы()
	
	СписокВыбораТипаУслуги = Элементы.ТипУслуги.СписокВыбора;
	СписокВыбораТипаУслуги.Очистить();
	
	Если Объект.ТипБронирования = Перечисления.ТипыБронирования.ЭлектронныйБилет Тогда
		СписокВыбораТипаУслуги.Добавить(Перечисления.ТипыУслугБронирования.Авиабилет);
		СписокВыбораТипаУслуги.Добавить(Перечисления.ТипыУслугБронирования.ЖДБилет);
		СписокВыбораТипаУслуги.Добавить(Перечисления.ТипыУслугБронирования.БилетНаАвтобус);
		СписокВыбораТипаУслуги.Добавить(Перечисления.ТипыУслугБронирования.Трансфер);
		СписокВыбораТипаУслуги.Добавить(Перечисления.ТипыУслугБронирования.Прочее);
	Иначе
		СписокВыбораТипаУслуги.Добавить(Перечисления.ТипыУслугБронирования.Отель);
		СписокВыбораТипаУслуги.Добавить(Перечисления.ТипыУслугБронирования.Трансфер);
		СписокВыбораТипаУслуги.Добавить(Перечисления.ТипыУслугБронирования.Прочее);
	КонецЕсли;
	
	Связи = Новый Массив;
	Связи.Добавить(Новый СвязьПараметраВыбора("Отбор.Организация", "Объект.Организация"));
	Связи.Добавить(Новый СвязьПараметраВыбора("Отбор.ВалютаВзаиморасчетов", "Объект.Валюта"));
	Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.БронированиеЧерезАгента Тогда
		Связи.Добавить(Новый СвязьПараметраВыбора("Отбор.Контрагент", "Объект.КонтрагентАгент"));
	ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.БронированиеУПоставщика Тогда
		Связи.Добавить(Новый СвязьПараметраВыбора("Отбор.Контрагент", "Объект.КонтрагентПеревозчик"));
	КонецЕсли;
	Элементы.Договор.СвязиПараметровВыбора = Новый ФиксированныйМассив(Связи);
	
КонецПроцедуры

&НаСервере
Процедура ОбновитьЗаголовокФормы()
	
	Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
		Шаблон = НСтр("ru='%1 %2 от %3'");
		Заголовок = СтрШаблон(Шаблон, Объект.ТипБронирования, Объект.НомерБилета, Объект.Дата);
	Иначе
		Шаблон = НСтр("ru='%1 (создание)'");
		Заголовок = СтрШаблон(Шаблон, Объект.ТипБронирования);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ИнициализироватьОперации()
	
	ТипОперацииПокупки = ПредопределенноеЗначение("Перечисление.ТипыОперацийСБилетами.Покупка");
	СтрокиПокупка = Объект.Операции.НайтиСтроки(Новый Структура("ТипОперации", ТипОперацииПокупки));
	
	Если Не СтрокиПокупка.Количество() Тогда
		НоваяСтрока = Объект.Операции.Добавить();
		НоваяСтрока.ТипОперации = ТипОперацииПокупки;
		НоваяСтрока.Дата = Объект.Дата;
		Элементы.Операции.ТекущаяСтрока = НоваяСтрока.ПолучитьИдентификатор();
		ТекущаяСтавка = НоваяСтрока.СтавкаНДС;
	Иначе
		Элементы.Операции.ТекущаяСтрока = СтрокиПокупка[0].ПолучитьИдентификатор();
		ТекущаяСтавка = СтрокиПокупка[0].СтавкаНДС;
	КонецЕсли;
	
	Элементы.СуммаНДС.ТолькоПросмотр = ДенежныеСредстваКлиентСервер.ЭтоНулеваяСтавкаНДС(ТекущаяСтавка);
	
КонецПроцедуры

&НаСервере
Процедура ОбновитьТекстАвансовыйОтчет()
	
	ТекстАвансовыйОтчет = АвансовыйОтчетЛокализация.ТекстАвансовыйОтчет(Объект.АвансовыйОтчет);
	
КонецПроцедуры

&НаСервере
Процедура ОпределитьПечатьЕдиногоАвансовогоОтчета()
	
	Если ЗначениеЗаполнено(ДатаНачалаПечатиЕдиногоАвансовогоОтчета) Тогда
		Если ЗначениеЗаполнено(Объект.Дата) Тогда
			ПечатьЕдиногоАвансовогоОтчета = (Объект.Дата >= ДатаНачалаПечатиЕдиногоАвансовогоОтчета);
		Иначе
			ПечатьЕдиногоАвансовогоОтчета = (ТекущаяДатаСеанса() >= ДатаНачалаПечатиЕдиногоАвансовогоОтчета);
		КонецЕсли;
	Иначе
		ПечатьЕдиногоАвансовогоОтчета = ЕдиныйАвансовыйОтчетБезусловно;
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура ЗаблокироватьРеквизиты()

	Элементы.ГруппаШапка.ТолькоПросмотр = Истина;
	Элементы.ГруппаРеквизиты.ТолькоПросмотр = Истина;
	Элементы.ГруппаДополнительныеРеквизиты.ТолькоПросмотр = Истина;
	Элементы.ГруппаПодвал.ТолькоПросмотр = Истина;

КонецПроцедуры

#КонецОбласти

&НаКлиенте
Процедура РедактироватьКорректировку(ИдСтроки)
	
	ЗначенияРеквизитов = Новый Структура(РеквизитыКорректировок);
	СтрокаКорректировки = Объект.Операции.НайтиПоИдентификатору(ИдСтроки);
	Если СтрокаКорректировки = Неопределено Тогда
		Возврат;
	КонецЕсли;
	ЗаполнитьЗначенияСвойств(ЗначенияРеквизитов, СтрокаКорректировки);
	ЗначенияРеквизитов.Вставить("Организация", Объект.Организация);
	
	ДопПараметры = Новый Структура("ИдСтроки", ИдСтроки);
	
	ОткрытьФорму("Документ.Бронирование.Форма.ВводКорректировки",
		Новый Структура("ЗначенияРеквизитов, РеквизитыКорректировок", ЗначенияРеквизитов, РеквизитыКорректировок),
		,,,,
		Новый ОписаниеОповещения("ПослеВводаКорректировки", ЭтотОбъект, ДопПараметры),
		РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
	
КонецПроцедуры

&НаКлиенте
Процедура ПослеВводаКорректировки(Результат, ДополнительныеПараметры) Экспорт
	
	Если Результат = Неопределено
		ИЛИ Результат = КодВозвратаДиалога.Отмена Тогда
		Возврат;
	КонецЕсли;
	
	СтрокаКорректировки = Объект.Операции.НайтиПоИдентификатору(ДополнительныеПараметры.ИдСтроки);
	Если СтрокаКорректировки <> Неопределено Тогда
		ЗаполнитьЗначенияСвойств(СтрокаКорректировки, Результат, РеквизитыКорректировок);
	КонецЕсли;
	Модифицированность = Истина;
	ВывестиИтогиОпераций();
	
КонецПроцедуры

&НаСервере
Процедура ПерезаполнитьСтавкуНДС()
	
	// Заполним ставку с учетом текущей даты документа. Пересчитываем связанные реквизиты табличной части.
	ПараметрыПересчетаНДС = Новый Структура("ЦенаВключаетНДС", Истина);
	
	СтруктураДействий = Новый Структура;
	Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
		СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
	КонецЕсли;
	СтруктураДействий.Вставить("ПересчитатьСуммуНДС", ПараметрыПересчетаНДС);
	
	ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Операции, СтруктураДействий, Неопределено);
	
КонецПроцедуры

&НаСервере
Функция ЗаполнитьПодчиненныеСвойстваПоСтатистике(ИмяРеквизитаРодителя)
	Возврат ЗаполнениеОбъектовПоСтатистике.ЗаполнитьПодчиненныеРеквизитыОбъекта(Объект, ИмяРеквизитаРодителя);
КонецФункции

&НаСервереБезКонтекста
Функция ИзменениеАвансовогоОтчетаЗапрещено(Ссылка, СообщениеОбОшибке)
	Возврат ДатыЗапретаИзменения.ИзменениеЗапрещено(Метаданные.Документы.АвансовыйОтчет.ПолноеИмя(), Ссылка, СообщениеОбОшибке);
КонецФункции

&НаСервере
Процедура СпособСписанияНапрямуюПриИзмененииНаСервере()
	ВидимостьНесколькихОпераций();
	НастроитьЗависимыеЭлементыФормыНаСервере("СпособСписанияНапрямую");
КонецПроцедуры

&НаСервере
Процедура ЗакупкаПодДеятельностьПриИзмененииНаСервере()
	
	Если Не Объект.ЗакупкаПодДеятельность = Перечисления.ТипыНалогообложенияНДС.ПродажаОблагаетсяНДС Тогда
		Объект.ПринятьНДСКВычету = Ложь;
		//++ Локализация
		ПринятьНДСКВычетуПриИзмененииНаСервере();
		//-- Локализация
	КонецЕсли;
	НастроитьЗависимыеЭлементыФормыНаСервере("ЗакупкаПодДеятельность");
	
КонецПроцедуры

&НаКлиенте
Процедура СотрудникПриИзмененииПродолжение(Результат, ДополнительныеПараметры) Экспорт
	СотрудникПриИзмененииНаСервере(Результат = КодВозвратаДиалога.Да);
КонецПроцедуры

&НаСервере
Процедура СотрудникПриИзмененииНаСервере(ПерезаполнятьФИОПассажира)
	
	Если ПерезаполнятьФИОПассажира Тогда
		Объект.ФИОПассажира = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Сотрудник, "Наименование");
	КонецЕсли;
	НастроитьЗависимыеЭлементыФормыНаСервере("Сотрудник");
	
КонецПроцедуры

#КонецОбласти

//++ Локализация

#Область Локализация

#Область Локализация_ПодключаемыеОбработчикиСобытийФормы

&НаСервере
Процедура Подключаемый_ПриСозданииНаСервереЛокализация(Отказ, СтандартнаяОбработка)
	
	ПриСозданииНаСервере(Отказ, СтандартнаяОбработка);
	Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
		ПриЧтенииСозданииНаСервереЛокализация();
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура Подключаемый_ПриЧтенииНаСервереЛокализация(ТекущийОбъект)
	
	ПриЧтенииНаСервере(ТекущийОбъект);
	ПриЧтенииСозданииНаСервереЛокализация();
	
КонецПроцедуры
	
#КонецОбласти

#Область Локализация_ПодключаемыеОбработчикиСобытийЭлементовФормы

&НаКлиенте
Процедура Подключаемый_ДатаПрибытияПриИзмененииЛокализация(Элемент)
	
	ДатаПрибытияПриИзмененииНаСервереЛокализация();
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_КодВидаОперацииНачалоВыбораЛокализация(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	СписокКодовВидовОпераций.ПоказатьВыборЭлемента(Новый ОписаниеОповещения("КодВидаОперацииНачалоВыбораЗавершение", ЭтотОбъект));
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_КодВидаОперацииПриИзмененииЛокализация(Элемент)
	
	ОбновитьПредставлениеВидаОперации(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ПринятьНДСКВычетуПриИзмененииЛокализация(Элемент)
	ПринятьНДСКВычетуПриИзмененииНаСервере();
КонецПроцедуры

#КонецОбласти

#Область ЛокализацияСлужебные

&НаСервере
Процедура ПриЧтенииСозданииНаСервереЛокализация()
	
	ЗаполнитьСписокКодовВидовОпераций();
	
КонецПроцедуры

&НаКлиенте
Процедура КодВидаОперацииНачалоВыбораЗавершение(Результат, ДополнительныеПараметры) Экспорт
	
	Если Результат <> Неопределено Тогда
		Объект.КодВидаОперации = Результат.Значение;
		ОбновитьПредставлениеВидаОперации(ЭтотОбъект);
		Модифицированность = Истина;
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура ПринятьНДСКВычетуПриИзмененииНаСервере()
	
	НастроитьЗависимыеЭлементыФормыНаСервере("ПринятьНДСКВычету");
	Если Не Объект.ПринятьНДСКВычету Тогда
		Объект.КодВидаОперации = "";
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура ДатаПрибытияПриИзмененииНаСервереЛокализация()
	АктуализироватьЗакупкуПодДеятельность(Истина);
	ЗаполнитьСписокКодовВидовОпераций();
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьСписокКодовВидовОпераций()
	
	УчетНДС.ЗаполнитьСписокКодовВидовОпераций(
		Перечисления.ЧастиЖурналаУчетаСчетовФактур.ПолученныеСчетаФактуры,
		СписокКодовВидовОпераций,
		?(ЗначениеЗаполнено(Объект.Дата), Объект.Дата, ТекущаяДатаСеанса()));
		
	ОбновитьПредставлениеВидаОперации(ЭтотОбъект);
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьПредставлениеВидаОперации(Форма)
	
	ТекущийКод = Форма.СписокКодовВидовОпераций.НайтиПоЗначению(Форма.Объект.КодВидаОперации);
	Если ТекущийКод <> Неопределено Тогда
		Форма.ПредставлениеВидаОперации = Сред(ТекущийКод.Представление, 4);
	Иначе
		Форма.ПредставлениеВидаОперации = "";
	КонецЕсли;
	
КонецПроцедуры

#КонецОбласти

#КонецОбласти

#Область Инициализация

#Если НаСервере Тогда

Если Не ПодключеныОбработчикиЛокализация И ПолучитьФункциональнуюОпцию("ПоддержкаПлатежейРФ") Тогда
	
	ПодключеныОбработчикиЛокализация = Истина;
	
	ПодключаемыеОбработчикиСобытийФормы = Новый Массив;
	ПодключаемыеОбработчикиСобытийФормы.Добавить("ПриСозданииНаСервере");
	ПодключаемыеОбработчикиСобытийФормы.Добавить("ПриЧтенииНаСервере");
	
	Для каждого Обработчик Из ПодключаемыеОбработчикиСобытийФормы Цикл
		УстановитьДействие(Обработчик, "Подключаемый_" + Обработчик + "Локализация");
	КонецЦикла;
	
	СвойстваПодключения = "Элемент,Событие";
	ПодключаемыеОбработчикиСобытийЭлементов = Новый Массив;
	ПодключаемыеОбработчикиСобытийЭлементов.Добавить(
		Новый Структура(СвойстваПодключения, "ПринятьНДСКВычету", "ПриИзменении"));
	ПодключаемыеОбработчикиСобытийЭлементов.Добавить(
		Новый Структура(СвойстваПодключения, "КодВидаОперации",   "ПриИзменении"));
	ПодключаемыеОбработчикиСобытийЭлементов.Добавить(
		Новый Структура(СвойстваПодключения, "КодВидаОперации",   "НачалоВыбора"));
	ПодключаемыеОбработчикиСобытийЭлементов.Добавить(
		Новый Структура(СвойстваПодключения, "ДатаПрибытия",      "ПриИзменении"));
	
	Для Каждого Обработчик Из ПодключаемыеОбработчикиСобытийЭлементов Цикл
		Элементы[Обработчик.Элемент].УстановитьДействие(
			Обработчик.Событие, "Подключаемый_" + Обработчик.Элемент + Обработчик.Событие + "Локализация");
	КонецЦикла;
	
КонецЕсли;

#КонецЕсли

#КонецОбласти

//-- Локализация

Связанные материалы