Расходный ордер на товары / Форма выбора задания на перевозку / Модуль формы

файл

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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