Транспортная накладная / Форма документа / Модуль формы

файл

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

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)

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

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

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	Если Параметры.Свойство("АвтоТест") Тогда
		Возврат;
	КонецЕсли;

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

	// СтандартныеПодсистемы.РаботаСФайлами
	ПараметрыГиперссылки = РаботаСФайлами.ГиперссылкаФайлов();
	ПараметрыГиперссылки.Размещение = "КоманднаяПанель";
	РаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыГиперссылки);
	// Конец СтандартныеПодсистемы.РаботаСФайлами

	ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
	
	// СтандартныеПодсистемы.УчетОригиналовПервчиныхДокументов
	УчетОригиналовПервичныхДокументов.ПриСозданииНаСервере_ФормаДокумента(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.УчетОригиналовПервчиныхДокументов
	
КонецПроцедуры

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)

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

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

&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
	ОчиститьСообщения();
КонецПроцедуры

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

&НаКлиенте
Процедура ПриЗакрытии()
	Если Объект.ПометкаУдаления Тогда
		Оповестить("Запись_ТранспортнаяНакладная");
	КонецЕсли;	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура АдресПогрузкиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;	
	АдресПогрузкиПриИзменении(Элемент);	
	Модифицированность = Истина;
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ДокументыОснованияПослеУдаления(Элемент)
	УправлениеФормой(ЭтаФорма);
КонецПроцедуры

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

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

&НаКлиенте
Процедура Подключаемый_ДекорацияСостояниеОригиналаНажатие()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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