Помощник закрытия заказов / Форма закрытия / Модуль формы

файл

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

	Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
		Возврат;
	КонецЕсли;

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

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

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

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

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

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

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

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

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

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

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

	//-- НЕ УТ
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура Справка(Команда)
	
	ОткрытьСправкуФормы();
	
КонецПроцедуры

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

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

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

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

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

#Область ПроцедурыИФункцииУстановкиВидимостиИДоступности

&НаСервере
Процедура УстановитьУсловноеОформление()

	УсловноеОформление.Элементы.Очистить();

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенЗаказПоставщику.Имя);

	ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОтклоненияЦен.ЗаказПоставщику");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
	Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ГиперссылкаЦвет);

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенЦенаЗаказа.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенИндексКартинки.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенПроцентОтклоненияОтЦеныЗаказа.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенЦенаПоступления.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенСуммаПоступления.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенСуммаЗаказа.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенИндексКартинкиСуммы.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенПроцентОтклоненияОтСуммыЗаказа.Имя);

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

	Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.FireBrick);

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенЦенаЗаказа.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенИндексКартинки.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенПроцентОтклоненияОтЦеныЗаказа.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенСуммаЗаказа.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенСуммаПоступления.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенЦенаПоступления.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенИндексКартинкиСуммы.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенПроцентОтклоненияОтСуммыЗаказа.Имя);

	ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОтклоненияЦен.ЦенаЗаказа");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
	ОтборЭлемента.ПравоеЗначение = Новый ПолеКомпоновкиДанных("ОтклоненияЦен.ЦенаПоступления");

	Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Green);

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенЦенаЗаказа.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенИндексКартинки.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенПроцентОтклоненияОтЦеныЗаказа.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенЦенаПоступления.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенСуммаПоступления.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенСуммаЗаказа.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенИндексКартинкиСуммы.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенПроцентОтклоненияОтСуммыЗаказа.Имя);

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

	Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.FireBrick);

	//

	Элемент = УсловноеОформление.Элементы.Добавить();

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенЦенаЗаказа.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенИндексКартинки.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенПроцентОтклоненияОтЦеныЗаказа.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенЦенаПоступления.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенСуммаПоступления.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенСуммаЗаказа.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенИндексКартинкиСуммы.Имя);

	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтклоненияЦенПроцентОтклоненияОтСуммыЗаказа.Имя);

	ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОтклоненияЦен.СуммаЗаказа");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
	ОтборЭлемента.ПравоеЗначение = Новый ПолеКомпоновкиДанных("ОтклоненияЦен.СуммаПоступления");

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

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

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

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

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

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

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

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

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

	ИначеЕсли ТипЗаказа = "ЗаказПереработчику2_5"
		//++ Устарело_Переработка24
		Или ТипЗаказа = "ЗаказПереработчику"
		//-- Устарело_Переработка24
		Или Ложь Тогда
		
		//++ Устарело_Переработка24
		Если ТипЗаказа = "ЗаказПереработчику" Тогда
			НеЗакрыватьЗаказыПереработчикамБезПолнойОплаты    = ПолучитьФункциональнуюОпцию("НеЗакрыватьЗаказыПереработчикамБезПолнойОплаты");
			НеЗакрыватьЗаказыПереработчикамБезПолнойОтработки = ПолучитьФункциональнуюОпцию("НеЗакрыватьЗаказыПереработчикамБезПолнойОтработки");
		Иначе
		//-- Устарело_Переработка24
			НеЗакрыватьЗаказыПереработчикамБезПолнойОплаты    = ПолучитьФункциональнуюОпцию("НеЗакрыватьЗаказыПереработчикамБезПолнойОплаты2_5");
			НеЗакрыватьЗаказыПереработчикамБезПолнойОтработки = ПолучитьФункциональнуюОпцию("НеЗакрыватьЗаказыПереработчикамБезПолнойОтработки2_5");
		//++ Устарело_Переработка24
		КонецЕсли;
		//-- Устарело_Переработка24
		
		Если НЕ ИспользуетсяСтатусЗакрыт Тогда
			 Элементы.ГруппаПредупреждения.ТекущаяСтраница = Элементы.ГруппаЗакрытиеБезОграничений;
		ИначеЕсли НеЗакрыватьЗаказыПереработчикамБезПолнойОплаты И НеЗакрыватьЗаказыПереработчикамБезПолнойОтработки Тогда
			Элементы.ГруппаПредупреждения.ТекущаяСтраница = Элементы.ГруппаЗакрытиеБезОтгрузкиБезОплаты;
		ИначеЕсли НеЗакрыватьЗаказыПереработчикамБезПолнойОплаты Тогда
			Элементы.ГруппаПредупреждения.ТекущаяСтраница = Элементы.ГруппаЗакрытиеБезОплаты;
		ИначеЕсли НеЗакрыватьЗаказыПереработчикамБезПолнойОтработки Тогда
			Элементы.ГруппаПредупреждения.ТекущаяСтраница = Элементы.ГруппаЗакрытиеБезОтгрузки;
		Иначе
			Элементы.ГруппаПредупреждения.ТекущаяСтраница = Элементы.ГруппаЗакрытиеБезОграничений;
		КонецЕсли;
		
		Если Заказы.Количество() = 1 Тогда
			СтруктураСостоянияРасчетов = Новый Структура;
			СтруктураСостоянияРасчетов.Вставить("Состояние",               Перечисления.СостоянияЗаказовПереработчикам.ПустаяСсылка());
			СтруктураСостоянияРасчетов.Вставить("СостояниеПросрочено",     Ложь);
			СтруктураСостоянияРасчетов.Вставить("СуммаОплаты",             0);
			СтруктураСостоянияРасчетов.Вставить("ПроцентОплаты",           0);
			СтруктураСостоянияРасчетов.Вставить("СуммаПоступления",        0);
			СтруктураСостоянияРасчетов.Вставить("ПроцентПоступления",      0);
			СтруктураСостоянияРасчетов.Вставить("СуммаПросроченнойОплаты", 0);
			СтруктураСостоянияРасчетов.Вставить("СуммаДолга",              0);
			СтруктураСостоянияРасчетов.Вставить("ПроцентДолга",            0);
			СтруктураСостоянияРасчетов.Вставить("СуммаКОплате",            0);
			
			РеквизитыЗаказа = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Заказы[0].Значение, "Организация, СуммаДокумента, Договор, Валюта, УслугиПоПереработке, ПорядокРасчетов");
			
			Если РеквизитыЗаказа.УслугиПоПереработке = Перечисления.ВариантыОформленияУслугДокументовПереработки.УказываютсяВЗаказеОтчете Тогда
				СтруктураРасчетов = ВзаиморасчетыСервер.СостояниеВзаиморасчетовОбъектаРасчетов(
					ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Заказы[0].Значение, "ОбъектРасчетов"),
					РеквизитыЗаказа.СуммаДокумента,
					ПредопределенноеЗначение("Перечисление.ТипыРасчетовСПартнерами.РасчетыСПоставщиком"),
					РеквизитыЗаказа.Организация);
				
				СтруктураСостоянияРасчетов.СуммаОплаты        = СтруктураРасчетов.СуммаОплат;
				СтруктураСостоянияРасчетов.ПроцентОплаты      = СтруктураРасчетов.ПроцентОплат;
				СтруктураСостоянияРасчетов.СуммаПоступления   = СтруктураРасчетов.СуммаПоставок;
				СтруктураСостоянияРасчетов.ПроцентПоступления = СтруктураРасчетов.ПроцентПоставок;
				
				Если РеквизитыЗаказа.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоЗаказам
					ИЛИ РеквизитыЗаказа.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоЗаказамНакладным Тогда
				
					ТекстОплата = НСтр("ru='Оплачено по заказу: %СуммаОплаты%  %Валюта%  %ПроцентОплаты%%'");
					ТекстОплата = СтрЗаменить(ТекстОплата, "%СуммаОплаты%",   Формат(СтруктураСостоянияРасчетов.СуммаОплаты, "ЧДЦ=2; ЧН="));
					ТекстОплата = СтрЗаменить(ТекстОплата, "%Валюта%",        РеквизитыЗаказа.Валюта);
					ТекстОплата = СтрЗаменить(ТекстОплата, "%ПроцентОплаты%", СтруктураСостоянияРасчетов.ПроцентОплаты);
				
					ТекстОтгрузка = НСтр("ru='Поступило: %СуммаПоступления% %Валюта%  %ПроцентПоступления%%'");
					ТекстОтгрузка = СтрЗаменить(ТекстОтгрузка, "%СуммаПоступления%",   Формат(СтруктураСостоянияРасчетов.СуммаПоступления, "ЧДЦ=2; ЧН="));
					ТекстОтгрузка = СтрЗаменить(ТекстОтгрузка, "%Валюта%",          РеквизитыЗаказа.Валюта);
					ТекстОтгрузка = СтрЗаменить(ТекстОтгрузка, "%ПроцентПоступления%", СтруктураСостоянияРасчетов.ПроцентПоступления);
					
					Расчеты = ТекстОплата + ", "+ТекстОтгрузка;
				Иначе
					Расчеты = СформироватьТекстПорядокРасчетов(РеквизитыЗаказа.ПорядокРасчетов);
				КонецЕсли;
				
			КонецЕсли;
		КонецЕсли;
//-- НЕ УТ
	КонецЕсли;
	
КонецПроцедуры

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

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьТекущуюСтраницуПанелиНавигации(Форма)
	
	Если Форма.СтраницыКОтображению.Количество() < 2 Тогда
		Если НЕ Форма.ЗакрыватьЗаказы Тогда
			Форма.Элементы.Навигация.ТекущаяСтраница = Форма.Элементы.НавигацияВсеЗаказыЗакрыты;
			Форма.Элементы.ВсеЗаказыЗакрытыГотово.КнопкаПоУмолчанию = Истина;
		Иначе
			Форма.Элементы.Навигация.ТекущаяСтраница = Форма.Элементы.НавигацияОкончаниеБезНачала;
			Форма.Элементы.ОкончаниеБезНачалаГотово.КнопкаПоУмолчанию = Истина;
		КонецЕсли;
		Возврат;
	КонецЕсли;
	
	ПерваяСтраница = Форма.Элементы.Страницы.ТекущаяСтраница = Форма.Элементы.СтраницаНачальная
					И НЕ Форма.ЗаказыЗакрыты;
	
	НеПоследняяСтраница = НЕ Форма.Элементы.Страницы.ТекущаяСтраница.Имя
							= Форма.СтраницыКОтображению.Получить(Форма.СтраницыКОтображению.Количество()-1).Значение
						  И НЕ Форма.ЗаказыЗакрыты;
	
	Если ПерваяСтраница Тогда
		Форма.Элементы.Навигация.ТекущаяСтраница = Форма.Элементы.НавигацияНачало;
		Форма.Элементы.НачалоГотово.КнопкаПоУмолчанию = Истина;
	ИначеЕсли НеПоследняяСтраница Тогда
		Форма.Элементы.Навигация.ТекущаяСтраница = Форма.Элементы.НавигацияПродолжение;
		Форма.Элементы.ПродолжениеГотово.КнопкаПоУмолчанию = Истина;
	ИначеЕсли Форма.ЗаказыЗакрыты Тогда
		Форма.Элементы.Навигация.ТекущаяСтраница = Форма.Элементы.НавигацияВсеЗаказыЗакрыты;
		Форма.Элементы.ВсеЗаказыЗакрытыГотово.КнопкаПоУмолчанию = Истина;
	Иначе
		Форма.Элементы.Навигация.ТекущаяСтраница = Форма.Элементы.НавигацияОкончание;
		Форма.Элементы.ОкончаниеГотово.КнопкаПоУмолчанию = Истина;
	КонецЕсли;
	
КонецПроцедуры

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

	КонецЕсли;
	
	ЗаказыКоличество = Заказы.Количество();
	Если ТипЗаказа = "ЗаявкаНаВозвратТоваровОтКлиента" Тогда
		Заголовок = НСтр("ru='Помощник закрытия заявок'");
		Если ЗаказыКоличество = 1 Тогда
			Заголовок = НСтр("ru='Помощник закрытия заявки'");
		КонецЕсли;
	Иначе
		Заголовок = НСтр("ru='Помощник закрытия заказов'");
		Если ЗаказыКоличество = 1 Тогда
			Заголовок = НСтр("ru='Помощник закрытия заказа'");
		КонецЕсли;
	КонецЕсли;
	
	ТекстИ             = ?(ЗначениеЗаполнено(ТекстНеОформленаОтгрузка) И ЗначениеЗаполнено(ТекстНеОформленаПриемка),
							НСтр("ru=', а также'"),
							"");
	ТекстПричинаОтмены = ?(ИспользоватьПричиныОтменыЗаказов, НСтр("ru='Необходимо указать причину отмены.'"), "");
	
	ТекстСтрокиОтгрузка = НСтр("ru='Строки'");
	ТекстСтрокиПриемка  = НСтр("ru='Строки'");
	
	Если ТипЗаказа = "ЗаявкаНаВозвратТоваровОтКлиента" Тогда
		ТекстСтрокиОтгрузка = НСтр("ru='Строки заменяющих товаров'");
		ТекстСтрокиПриемка  = НСтр("ru='Строки возвращаемых товаров'");
	ИначеЕсли ТипЗаказа = "ЗаказНаСборку" Тогда
		ТекстСтрокиОтгрузка = НСтр("ru='Строки списываемых комплектующих / разбираемых комплектов'");
		ТекстСтрокиПриемка  = НСтр("ru='Строки приходуемых комплектующих / собираемых комплектов'");
//++ НЕ УТ

//++ Устарело_Переработка24
	ИначеЕсли ТипЗаказа = "ЗаказПереработчику" Тогда
		ТекстСтрокиОтгрузка = НСтр("ru='Строки сырья и материалов'");
		ТекстСтрокиПриемка  = НСтр("ru='Строки выходных изделий'");
//-- Устарело_Переработка24
	ИначеЕсли ТипЗаказа = "ЗаказПереработчику2_5" Тогда
		ТекстСтрокиОтгрузка = НСтр("ru='Строки сырья и материалов'");
		ТекстСтрокиПриемка  = НСтр("ru='Строки выходных изделий'");
//-- НЕ УТ

	КонецЕсли;
	
	// Начальная страница
	
	Элементы.СкорректироватьМерныеТовары.Заголовок          = НСтр("ru='Скорректировать строки мерных товаров.'");
	Элементы.СкорректироватьМерныеТоварыПоПриемке.Заголовок = НСтр("ru='Скорректировать строки мерных товаров.'");
	
	Если ТипЗаказа = "ЗаявкаНаВозвратТоваровОтКлиента" Тогда
		Элементы.СкорректироватьМерныеТовары.Заголовок          = НСтр("ru='Скорректировать строки мерных заменяющих товаров.'");
		Элементы.СкорректироватьМерныеТоварыПоПриемке.Заголовок = НСтр("ru='Скорректировать строки мерных возвращаемых товаров.'");
	ИначеЕсли ТипЗаказа = "ЗаказНаСборку" Тогда
		Элементы.СкорректироватьМерныеТовары.Заголовок          = НСтр("ru='Скорректировать строки мерных списываемых комплектующих / разбираемых комплектов.'");
		Элементы.СкорректироватьМерныеТоварыПоПриемке.Заголовок = НСтр("ru='Скорректировать строки мерных приходуемых комплектующих / собираемых комплектов.'");
//++ НЕ УТ

//++ Устарело_Переработка24
	ИначеЕсли ТипЗаказа = "ЗаказПереработчику" Тогда
		Элементы.СкорректироватьМерныеТовары.Заголовок          = НСтр("ru='Скорректировать строки мерных сырья и материалов.'");
		Элементы.СкорректироватьМерныеТоварыПоПриемке.Заголовок = НСтр("ru='Скорректировать строки мерных выходных изделий.'");
//-- Устарело_Переработка24
	ИначеЕсли ТипЗаказа = "ЗаказПереработчику2_5" Тогда
		Элементы.СкорректироватьМерныеТовары.Заголовок          = НСтр("ru='Скорректировать строки мерных сырья и материалов.'");
		Элементы.СкорректироватьМерныеТоварыПоПриемке.Заголовок = НСтр("ru='Скорректировать строки мерных выходных изделий.'");
//-- НЕ УТ

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

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

&НаСервере
Функция СформироватьТекстПорядокРасчетов(ПорядокРасчетов)
	
	Расчеты = "";
	
	Если ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов Тогда
		Расчеты = НСтр("ru='Расчеты по договору'");
	КонецЕсли;
	
	Возврат Расчеты;
	
КонецФункции 

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

#Область ЗаполнениеТабличныхЧастей

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

//++ Устарело_Переработка24
	ИначеЕсли ТипЗнч(Заказы[0].Значение) = Тип("ДокументСсылка.ЗаказПереработчику") Тогда
		
		ТипЗаказа = "ЗаказПереработчику";
		
		ИспользуетсяСтатусЗакрыт = ПолучитьФункциональнуюОпцию("ИспользоватьСтатусыЗаказовПереработчикам");
		
		ЗаполнитьОтклоненияПоЗаказамПереработчикам();
//-- Устарело_Переработка24
	ИначеЕсли ТипЗнч(Заказы[0].Значение) = Тип("ДокументСсылка.ЗаказПереработчику2_5") Тогда
		
		ТипЗаказа = "ЗаказПереработчику2_5";
		
		ИспользуетсяСтатусЗакрыт = ПолучитьФункциональнуюОпцию("ИспользоватьСтатусыЗаказовПереработчикам2_5");
		
		ЗаполнитьОтклоненияПоЗаказамПереработчикам();

	ИначеЕсли ТипЗнч(Заказы[0].Значение) = Тип("ДокументСсылка.ЗаказМатериаловВПроизводство") Тогда
		
		ТипЗаказа = "ЗаказМатериаловВПроизводство";
		
		ИспользуетсяСтатусЗакрыт = Истина;
		
		ЗаполнитьОтклоненияПоЗаказамМатериаловВПроизводство();
		
//-- НЕ УТ

	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьОтклоненияПоЗаказамПоставщикам()
	
	УстановитьПривилегированныйРежим(Истина);
	
	Запрос = Новый Запрос(
	"ВЫБРАТЬ
	|	ЗаказПоставщику.Ссылка КАК ЗаказПоставщику
	|ИЗ
	|	Документ.ЗаказПоставщику КАК ЗаказПоставщику
	|ГДЕ
	|	ЗаказПоставщику.Ссылка В(&ЗаказыПоставщикам)
	|	И ЗаказПоставщику.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПоставщикам.Закрыт)
	|	И &ИспользоватьСтатусЗакрыт
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	Остатки.ЗаказПоставщику КАК Заказ,
	|	Остатки.Номенклатура КАК Номенклатура,
	|	Остатки.Характеристика КАК Характеристика,
	|	Остатки.Склад КАК Склад,
	|	ВЫБОР
	|		КОГДА ВЫРАЗИТЬ(Остатки.ЗаказПоставщику КАК Документ.ЗаказПоставщику).Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПоставщикам.Подтвержден)
	|			ТОГДА Остатки.КОформлениюКонечныйОстаток
	|		ИНАЧЕ Остатки.ЗаказаноКонечныйОстаток
	|	КОНЕЦ КАК Количество,
	|	Остатки.ЗаказаноПриход КАК Заказано
	|ИЗ
	|	РегистрНакопления.ЗаказыПоставщикам.ОстаткиИОбороты(&НачПериодЗаказыПоставщикам, &КонПериодЗаказыПоставщикам,
	|		,, ЗаказПоставщику В (&ЗаказыПоставщикам)) КАК Остатки
	|ГДЕ
	|	Остатки.КОформлениюКонечныйОстаток <> 0
	|	ИЛИ Остатки.ЗаказаноКонечныйОстаток <> 0
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ТоварыКПоступлению.Номенклатура         КАК Номенклатура,
	|	ТоварыКПоступлению.Характеристика       КАК Характеристика,
	|	ТоварыКПоступлению.Склад                КАК Склад,
	|	ТоварыКПоступлению.ЗаказПоставщику      КАК Заказ,
	|	СУММА(ТоварыКПоступлению.КОформлениюПриход
	|		* (&ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров / 100)) КАК ДопустимоеОтклонение
	|ИЗ
	|	РегистрНакопления.ЗаказыПоставщикам.Обороты(&НачПериодЗаказыПоставщикам, &КонПериодЗаказыПоставщикам,
	|		, ЗаказПоставщику В (&ЗаказыПоставщикам)) КАК ТоварыКПоступлению
	|ГДЕ
	|	ТоварыКПоступлению.Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины В (&МерныеТипыЕдиницИзмерений)
	|СГРУППИРОВАТЬ ПО
	|	ТоварыКПоступлению.Номенклатура,
	|	ТоварыКПоступлению.Характеристика,
	|	ТоварыКПоступлению.Склад,
	|	ТоварыКПоступлению.ЗаказПоставщику
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ЗаказПоставщику.Ссылка КАК ЗаказПоставщику
	|ПОМЕСТИТЬ ВТРаспоряжения
	|ИЗ
	|	Документ.ЗаказПоставщику КАК ЗаказПоставщику
	|ГДЕ
	|	ЗаказПоставщику.Ссылка В(&ЗаказыПоставщикам)
	|	И ЗаказПоставщику.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПоставщикам.Закрыт)
	|	И &ИспользоватьСтатусЗакрыт
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	ЗаказПоставщику.Договор КАК ЗаказПоставщику
	|ИЗ
	|	Документ.ЗаказПоставщику КАК ЗаказПоставщику
	|ГДЕ
	|	ЗаказПоставщику.Ссылка В(&ЗаказыПоставщикам)
	|	И ЗаказПоставщику.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПоставщикам.Закрыт)
	|	И &ИспользоватьСтатусЗакрыт
	|	И ЗаказПоставщику.Договор.ВариантПриемкиТоваров В (
	|		ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.ПоДоговорамБезЗаказовИНакладных),
	|		ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.ПоДоговорамПослеЗаказовИлиНакладных),
	|		ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.ПоДоговорамПослеНакладных))
	|
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	РасхождениеДвухходовки.ДокументПоступления КАК Заказ,
	|	РасхождениеДвухходовки.Номенклатура КАК Номенклатура,
	|	РасхождениеДвухходовки.Характеристика КАК Характеристика,
	|	РасхождениеДвухходовки.Назначение КАК Назначение,
	|	РасхождениеДвухходовки.Серия КАК Серия,
	|	РасхождениеДвухходовки.КОформлениюПоступленийПоНакладнымОстаток КАК Количество
	|ИЗ
	|	РегистрНакопления.ТоварыКПоступлению.Остатки(
	|		,
	|		ДокументПоступления В (
	|			ВЫБРАТЬ
	|				Распоряжения.ЗаказПоставщику
	|			ИЗ
	|				ВТРаспоряжения КАК Распоряжения
	|			)) КАК РасхождениеДвухходовки
	|ГДЕ
	|	РасхождениеДвухходовки.КОформлениюПоступленийПоНакладнымОстаток <> 0
	|	И &ИспользуетсяДвухходовка
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ РАЗЛИЧНЫЕ
	|	ЗаказыПоставщикам.Регистратор                                                 КАК ДокументПоступления,
	|	ВЫРАЗИТЬ(ЗаказыПоставщикам.ЗаказПоставщику КАК Документ.ЗаказПоставщику)      КАК ЗаказПоставщику
	|ПОМЕСТИТЬ ДокументыПоступления
	|ИЗ
	|	РегистрНакопления.ЗаказыПоставщикам КАК ЗаказыПоставщикам
	|ГДЕ
	|	ЗаказыПоставщикам.ЗаказПоставщику В (&ЗаказыПоставщикам)
	|	И ЗаказыПоставщикам.Регистратор ССЫЛКА Документ.ПриобретениеТоваровУслуг
	|;
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ПриобретениеТоваровУслугТовары.КодСтроки                                            КАК КодСтроки,
	|	ДокументыПоступления.ДокументПоступления.Валюта                        КАК Валюта,
	|	ДокументыПоступления.ДокументПоступления.ВалютаВзаиморасчетов          КАК ВалютаВзаиморасчетов,
	|	ДокументыПоступления.ДокументПоступления.КурсЗнаменатель               КАК КурсЗнаменатель,
	|	ДокументыПоступления.ДокументПоступления.КурсЧислитель                 КАК КурсЧислитель,
	|	НАЧАЛОПЕРИОДА(ДокументыПоступления.ДокументПоступления.Дата, ДЕНЬ)     КАК Дата,
	|	ПриобретениеТоваровУслугТовары.Цена                                    КАК Цена,
	|	ПриобретениеТоваровУслугТовары.ЗаказПоставщику                         КАК ЗаказПоставщику,
	|	ПриобретениеТоваровУслугТовары.Сумма                                   КАК Сумма,
	|	ПриобретениеТоваровУслугТовары.Номенклатура                            КАК Номенклатура,
	|	ПриобретениеТоваровУслугТовары.Количество                              КАК Количество,
	|	ПриобретениеТоваровУслугТовары.СуммаРучнойСкидки                       КАК СуммаРучнойСкидки,
	|	ПриобретениеТоваровУслугТовары.ПроцентРучнойСкидки                     КАК ПроцентРучнойСкидки,
	|	ПриобретениеТоваровУслугТовары.Упаковка                                КАК Упаковка,
	|	ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки2, 1)                         КАК КоэффициентПересчетаУпаковки,
	|	ПриобретениеТоваровУслугТовары.Ссылка                                  КАК Приобретение
	|ПОМЕСТИТЬ ПриобретениеТоваровУслугТовары
	|ИЗ
	|	ДокументыПоступления КАК ДокументыПоступления
	|	ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриобретениеТоваровУслуг.Товары КАК ПриобретениеТоваровУслугТовары
	|		ПО ДокументыПоступления.ДокументПоступления = ПриобретениеТоваровУслугТовары.Ссылка
	|ГДЕ
	|	ПриобретениеТоваровУслугТовары.КодСтроки > 0
	|	И ПриобретениеТоваровУслугТовары.ЗаказПоставщику В (&ЗаказыПоставщикам)
	|
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ РАЗЛИЧНЫЕ
	|	ПриобретениеТоваровУслугТовары.Валюта                                               КАК Валюта,
	|	ПриобретениеТоваровУслугТовары.Дата                                                 КАК Дата,
	|	ДокументЗаказПоставщику.Валюта                                                 КАК ВалютаЗаказа,
	|	ПриобретениеТоваровУслугТовары.Приобретение.Организация.ВалютаРегламентированногоУчета КАК ВалютаРеглУчета,
	|	ДокументЗаказПоставщику.Организация.ВалютаРегламентированногоУчета КАК ВалютаРеглУчетаЗаказа
	|ПОМЕСТИТЬ ДатыКурсовВалютПоступлений
	|ИЗ
	|	ПриобретениеТоваровУслугТовары КАК ПриобретениеТоваровУслугТовары
	|	ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПоставщику КАК ДокументЗаказПоставщику
	|		ПО ПриобретениеТоваровУслугТовары.ЗаказПоставщику = ДокументЗаказПоставщику.Ссылка
	|ГДЕ
	|	НЕ ПриобретениеТоваровУслугТовары.Валюта = ДокументЗаказПоставщику.Валюта
	|	И НЕ ПриобретениеТоваровУслугТовары.ВалютаВзаиморасчетов = ДокументЗаказПоставщику.Валюта
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|
	|ВЫБРАТЬ РАЗЛИЧНЫЕ
	|	ДатыКурсовВалютПоступлений.Валюта                                      КАК Валюта,
	|	ДатыКурсовВалютПоступлений.Дата                                        КАК Дата,
	|	ДатыКурсовВалютПоступлений.ВалютаРеглУчета                             КАК ВалютаРеглУчета
	|ПОМЕСТИТЬ ДатыКурсовВалют
	|ИЗ
	|	ДатыКурсовВалютПоступлений КАК ДатыКурсовВалютПоступлений
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	ДатыКурсовВалютПоступлений.ВалютаЗаказа                                КАК Валюта,
	|	ДатыКурсовВалютПоступлений.Дата                                        КАК Дата,
	|	ДатыКурсовВалютПоступлений.ВалютаРеглУчетаЗаказа                       КАК ВалютаРеглУчета
	|
	|ИЗ
	|	ДатыКурсовВалютПоступлений КАК ДатыКурсовВалютПоступлений
	|
	|ИНДЕКСИРОВАТЬ ПО
	|	Валюта,
	|	Дата
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ 
	|	ВложенныйЗапрос.Дата                                                   КАК Дата,
	|	ВложенныйЗапрос.Валюта                                                 КАК Валюта,
	|	КурсыВалют.КурсЧислитель                                               КАК КурсЧислитель,
	|	КурсыВалют.КурсЗнаменатель                                             КАК КурсЗнаменатель
	|ПОМЕСТИТЬ КурсыВалютДляПересчета
	|ИЗ
	|	(ВЫБРАТЬ
	|		ДатыКурсовВалют.Дата КАК Дата,
	|		КурсыВалют.Валюта КАК Валюта,
	|		КурсыВалют.БазоваяВалюта КАК БазоваяВалюта,
	|		МАКСИМУМ(КурсыВалют.Период) КАК Период
	|	ИЗ
	|		ДатыКурсовВалют КАК ДатыКурсовВалют
	|			ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ОтносительныеКурсыВалют КАК КурсыВалют
	|			ПО ДатыКурсовВалют.Валюта = КурсыВалют.Валюта
	|				И ДатыКурсовВалют.Дата >= КурсыВалют.Период
	|				И ДатыКурсовВалют.ВалютаРеглУчета >= КурсыВалют.БазоваяВалюта
	|	
	|	СГРУППИРОВАТЬ ПО
	|		ДатыКурсовВалют.Дата,
	|		КурсыВалют.Валюта,
	|		КурсыВалют.БазоваяВалюта) КАК ВложенныйЗапрос
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ОтносительныеКурсыВалют КАК КурсыВалют
	|		ПО ВложенныйЗапрос.Валюта = КурсыВалют.Валюта
	|			И ВложенныйЗапрос.БазоваяВалюта = КурсыВалют.БазоваяВалюта
	|			И ВложенныйЗапрос.Период = КурсыВалют.Период
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ДатыКурсовВалютПоступлений.Дата                                        КАК Дата,
	|	ДатыКурсовВалютПоступлений.Валюта                                      КАК Валюта,
	|	КурсыВалютЗаказа.Валюта                                                КАК ВалютаЗаказа,
	|	КурсыВалютПриобретений.КурсЧислитель * КурсыВалютЗаказа.КурсЗнаменатель /
	|		(КурсыВалютЗаказа.КурсЧислитель * КурсыВалютПриобретений.КурсЗнаменатель) КАК КоэффициентПересчета
	|ПОМЕСТИТЬ КурсыВалют
	|ИЗ
	|	ДатыКурсовВалютПоступлений КАК ДатыКурсовВалютПоступлений
	|	ЛЕВОЕ СОЕДИНЕНИЕ КурсыВалютДляПересчета КАК КурсыВалютПриобретений
	|	ПО 
	|		ДатыКурсовВалютПоступлений.Дата = КурсыВалютПриобретений.Дата
	|		И ДатыКурсовВалютПоступлений.Валюта = КурсыВалютПриобретений.Валюта
	|		
	|	ЛЕВОЕ СОЕДИНЕНИЕ КурсыВалютДляПересчета КАК КурсыВалютЗаказа
	|	ПО ДатыКурсовВалютПоступлений.Дата = КурсыВалютЗаказа.Дата
	|	И КурсыВалютЗаказа.Валюта = ДатыКурсовВалютПоступлений.ВалютаЗаказа
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ТоварыЗаказа.Ссылка                            КАК ЗаказПоставщику,
	|	ТоварыЗаказа.КодСтроки                         КАК КодСтроки,
	|	ТоварыЗаказа.Номенклатура                      КАК Номенклатура,
	|	ТоварыЗаказа.Характеристика                    КАК Характеристика,
	|	ТоварыЗаказа.Ссылка.Валюта                     КАК ВалютаЗаказа,
	|	ТоварыЗаказа.Количество                        КАК Количество,
	|	ТоварыЗаказа.Цена                              КАК Цена,
	|	ТоварыЗаказа.Сумма                             КАК Сумма,
	|	ТоварыЗаказа.ПроцентРучнойСкидки               КАК ПроцентРучнойСкидки,
	|	ТоварыЗаказа.Упаковка                          КАК Упаковка,
	|	ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1, 1) КАК КоэффициентПересчетаУпаковки
	|ПОМЕСТИТЬ ТоварыЗаказа
	|ИЗ
	|	Документ.ЗаказПоставщику.Товары КАК ТоварыЗаказа
	|ГДЕ
	|	ТоварыЗаказа.Ссылка В(&ЗаказыПоставщикам)
	|	И ТоварыЗаказа.Ссылка.Проведен
	|	И НЕ ТоварыЗаказа.Отменено
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ТоварыЗаказа.ЗаказПоставщику                     КАК ЗаказПоставщику,
	|	ТоварыЗаказа.КодСтроки                           КАК КодСтроки,
	|	СУММА(ВЫРАЗИТЬ(ВЫБОР
	|		КОГДА ТоварыЗаказа.ВалютаЗаказа <> ПриобретениеТоваровУслугТовары.Валюта ТОГДА
	|			ВЫБОР
	|				КОГДА ТоварыЗаказа.ВалютаЗаказа = ПриобретениеТоваровУслугТовары.ВалютаВзаиморасчетов ТОГДА
	|					ВЫБОР
	|						КОГДА ПриобретениеТоваровУслугТовары.Валюта = ПриобретениеТоваровУслугТовары.Приобретение.Организация.ВалютаРегламентированногоУчета ТОГДА
	|							ПриобретениеТоваровУслугТовары.Цена / ПриобретениеТоваровУслугТовары.КурсЧислитель * ПриобретениеТоваровУслугТовары.КурсЗнаменатель
	|						ИНАЧЕ ПриобретениеТоваровУслугТовары.Цена * ПриобретениеТоваровУслугТовары.КурсЧислитель / ПриобретениеТоваровУслугТовары.КурсЗнаменатель
	|					КОНЕЦ
	|				ИНАЧЕ ПриобретениеТоваровУслугТовары.Цена * ЕСТЬNULL(КурсыВалют.КоэффициентПересчета, 1)
	|			КОНЕЦ
	|		ИНАЧЕ ПриобретениеТоваровУслугТовары.Цена
	|	КОНЕЦ * ПриобретениеТоваровУслугТовары.Количество / ПриобретениеТоваровУслугТовары.КоэффициентПересчетаУпаковки КАК ЧИСЛО(31, 2))) КАК СуммаЦенПоступления,
	|	СУММА(ВЫРАЗИТЬ(ВЫБОР
	|		КОГДА ТоварыЗаказа.ВалютаЗаказа <> ПриобретениеТоваровУслугТовары.Валюта ТОГДА
	|			ВЫБОР
	|				КОГДА ТоварыЗаказа.ВалютаЗаказа = ПриобретениеТоваровУслугТовары.ВалютаВзаиморасчетов ТОГДА
	|					ВЫБОР
	|						КОГДА ПриобретениеТоваровУслугТовары.Валюта = ПриобретениеТоваровУслугТовары.Приобретение.Организация.ВалютаРегламентированногоУчета ТОГДА
	|							ПриобретениеТоваровУслугТовары.Сумма / ПриобретениеТоваровУслугТовары.КурсЧислитель * ПриобретениеТоваровУслугТовары.КурсЗнаменатель
	|						ИНАЧЕ ПриобретениеТоваровУслугТовары.Сумма * ПриобретениеТоваровУслугТовары.КурсЧислитель / ПриобретениеТоваровУслугТовары.КурсЗнаменатель
	|					КОНЕЦ
	|				ИНАЧЕ ПриобретениеТоваровУслугТовары.Сумма * ЕСТЬNULL(КурсыВалют.КоэффициентПересчета, 1)
	|			КОНЕЦ
	|		ИНАЧЕ ПриобретениеТоваровУслугТовары.Сумма
	|	КОНЕЦ КАК ЧИСЛО(31, 2)))                         КАК СуммаПоступления,
	|	СУММА(ВЫРАЗИТЬ(ВЫБОР
	|		КОГДА ТоварыЗаказа.ВалютаЗаказа <> ПриобретениеТоваровУслугТовары.Валюта ТОГДА
	|			ВЫБОР
	|				КОГДА ТоварыЗаказа.ВалютаЗаказа = ПриобретениеТоваровУслугТовары.ВалютаВзаиморасчетов ТОГДА
	|					ВЫБОР
	|						КОГДА ПриобретениеТоваровУслугТовары.Валюта = ПриобретениеТоваровУслугТовары.Приобретение.Организация.ВалютаРегламентированногоУчета ТОГДА
	|							ПриобретениеТоваровУслугТовары.СуммаРучнойСкидки / ПриобретениеТоваровУслугТовары.КурсЧислитель * ПриобретениеТоваровУслугТовары.КурсЗнаменатель
	|						ИНАЧЕ ПриобретениеТоваровУслугТовары.СуммаРучнойСкидки * ПриобретениеТоваровУслугТовары.КурсЧислитель / ПриобретениеТоваровУслугТовары.КурсЗнаменатель
	|					КОНЕЦ
	|				ИНАЧЕ ПриобретениеТоваровУслугТовары.СуммаРучнойСкидки * ЕСТЬNULL(КурсыВалют.КоэффициентПересчета, 1)
	|			КОНЕЦ
	|		ИНАЧЕ ПриобретениеТоваровУслугТовары.СуммаРучнойСкидки
	|	КОНЕЦ КАК ЧИСЛО(31, 2)))                         КАК СуммаРучнойСкидкиПоступления,
	|	СУММА(ПриобретениеТоваровУслугТовары.Количество) КАК КоличествоПоступления,
	|	МАКСИМУМ(ПриобретениеТоваровУслугТовары.ПроцентРучнойСкидки) КАК ПроцентРучнойСкидкиПоступления
	|ПОМЕСТИТЬ ДанныеПоЦенамПоступлений
	|ИЗ
	|	ТоварыЗаказа КАК ТоварыЗаказа
	|		ЛЕВОЕ СОЕДИНЕНИЕ ПриобретениеТоваровУслугТовары КАК ПриобретениеТоваровУслугТовары
	|		ПО ТоварыЗаказа.ЗаказПоставщику = ПриобретениеТоваровУслугТовары.ЗаказПоставщику
	|			И ТоварыЗаказа.КодСтроки = ПриобретениеТоваровУслугТовары.КодСтроки
	|		ЛЕВОЕ СОЕДИНЕНИЕ КурсыВалют КАК КурсыВалют
	|		ПО ПриобретениеТоваровУслугТовары.Валюта = КурсыВалют.Валюта
	|			И ПриобретениеТоваровУслугТовары.Дата = КурсыВалют.Дата
	|			И ТоварыЗаказа.ВалютаЗаказа = КурсыВалют.ВалютаЗаказа
	|СГРУППИРОВАТЬ ПО
	|	ТоварыЗаказа.ЗаказПоставщику,
	|	ТоварыЗаказа.КодСтроки
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ТоварыЗаказа.ЗаказПоставщику                                      КАК ЗаказПоставщику,
	|	ТоварыЗаказа.КодСтроки                                            КАК КодСтроки,
	|	ТоварыЗаказа.ВалютаЗаказа                                         КАК ВалютаЗаказа,
	|	ТоварыЗаказа.Номенклатура                                         КАК Номенклатура,
	|	ТоварыЗаказа.Характеристика                                       КАК Характеристика,
	|	МАКСИМУМ(ДанныеПоЦенамПоступлений.ПроцентРучнойСкидкиПоступления) КАК ПроцентРучнойСкидкиПоступления,
	|	ВЫРАЗИТЬ(СРЕДНЕЕ(ДанныеПоЦенамПоступлений.СуммаЦенПоступления / ДанныеПоЦенамПоступлений.КоличествоПоступления * ТоварыЗаказа.КоэффициентПересчетаУпаковки)
	|		КАК ЧИСЛО(31,2))                                              КАК ЦенаПоступления,
	|	ДанныеПоЦенамПоступлений.СуммаПоступления                         КАК СуммаПоступления,
	|	ДанныеПоЦенамПоступлений.СуммаРучнойСкидкиПоступления             КАК СуммаРучнойСкидкиПоступления,
	|	ДанныеПоЦенамПоступлений.КоличествоПоступления                    КАК КоличествоПоступления,
	|	NULL                                                              КАК КоличествоЗаказа,
	|	NULL                                                              КАК ЦенаЗаказа,
	|	NULL                                                              КАК СуммаЗаказа,
	|	NULL                                                              КАК ПроцентРучнойСкидкиЗаказа
	|ПОМЕСТИТЬ ОтклоненияЦен
	|ИЗ
	|	ТоварыЗаказа КАК ТоварыЗаказа
	|		ЛЕВОЕ СОЕДИНЕНИЕ ДанныеПоЦенамПоступлений КАК ДанныеПоЦенамПоступлений
	|			ПО ТоварыЗаказа.ЗаказПоставщику = ДанныеПоЦенамПоступлений.ЗаказПоставщику
	|			И ТоварыЗаказа.КодСтроки = ДанныеПоЦенамПоступлений.КодСтроки
	|СГРУППИРОВАТЬ ПО
	|	ТоварыЗаказа.Номенклатура,
	|	ТоварыЗаказа.Характеристика,
	|	ТоварыЗаказа.ЗаказПоставщику,
	|	ТоварыЗаказа.КодСтроки,
	|	ТоварыЗаказа.ВалютаЗаказа,
	|	ДанныеПоЦенамПоступлений.СуммаПоступления,
	|	ДанныеПоЦенамПоступлений.СуммаРучнойСкидкиПоступления,
	|	ДанныеПоЦенамПоступлений.КоличествоПоступления
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	ТоварыЗаказа.ЗаказПоставщику                                      КАК ЗаказПоставщику,
	|	ТоварыЗаказа.КодСтроки                                            КАК КодСтроки,
	|	ТоварыЗаказа.ВалютаЗаказа                                         КАК ВалютаЗаказа,
	|	ТоварыЗаказа.Номенклатура                                         КАК Номенклатура,
	|	ТоварыЗаказа.Характеристика                                       КАК Характеристика,
	|	NULL,
	|	NULL,
	|	NULL,
	|	NULL,
	|	NULL,
	|	ТоварыЗаказа.Количество                                           КАК КоличествоЗаказа,
	|	ТоварыЗаказа.Цена                                                 КАК ЦенаЗаказа,
	|	ТоварыЗаказа.Сумма                                                КАК СуммаЗаказа,
	|	ТоварыЗаказа.ПроцентРучнойСкидки                                  КАК ПроцентРучнойСкидкиЗаказа
	|ИЗ
	|	ТоварыЗаказа КАК ТоварыЗаказа
	|		ЛЕВОЕ СОЕДИНЕНИЕ ДанныеПоЦенамПоступлений КАК ДанныеПоЦенамПоступлений
	|			ПО ТоварыЗаказа.ЗаказПоставщику = ДанныеПоЦенамПоступлений.ЗаказПоставщику
	|			И ТоварыЗаказа.КодСтроки = ДанныеПоЦенамПоступлений.КодСтроки
	|СГРУППИРОВАТЬ ПО
	|	ТоварыЗаказа.Номенклатура,
	|	ТоварыЗаказа.Характеристика,
	|	ТоварыЗаказа.ЗаказПоставщику,
	|	ТоварыЗаказа.КодСтроки,
	|	ТоварыЗаказа.ВалютаЗаказа,
	|	ТоварыЗаказа.Цена,
	|	ТоварыЗаказа.Сумма,
	|	ТоварыЗаказа.Количество,
	|	ТоварыЗаказа.ПроцентРучнойСкидки
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ОтклоненияЦен.ЗаказПоставщику                          КАК ЗаказПоставщику,
	|	ОтклоненияЦен.КодСтроки                                КАК КодСтроки,
	|	ОтклоненияЦен.Номенклатура                             КАК Номенклатура,
	|	ОтклоненияЦен.Характеристика                           КАК Характеристика,
	|	ОтклоненияЦен.ВалютаЗаказа                             КАК ВалютаЗаказа,
	|	СРЕДНЕЕ(ОтклоненияЦен.ЦенаЗаказа)                      КАК ЦенаЗаказа,
	|	СУММА(ОтклоненияЦен.СуммаЗаказа)                       КАК СуммаЗаказа,
	|	СУММА(ОтклоненияЦен.ЦенаПоступления)                   КАК ЦенаПоступления,
	|	СУММА(ОтклоненияЦен.СуммаПоступления)                  КАК СуммаПоступления,
	|	СУММА(ОтклоненияЦен.СуммаРучнойСкидкиПоступления)      КАК СуммаРучнойСкидкиПоступления,
	|	ВЫБОР
	|		КОГДА СРЕДНЕЕ(ОтклоненияЦен.ЦенаЗаказа) = 0
	|				ИЛИ СУММА(ОтклоненияЦен.ЦенаПоступления) = 0
	|			ТОГДА 0
	|		ИНАЧЕ СУММА(ОтклоненияЦен.ЦенаПоступления) * 100 / СРЕДНЕЕ(ОтклоненияЦен.ЦенаЗаказа) - 100
	|	КОНЕЦ КАК ПроцентОтклоненияОтЦеныЗаказа,
	|	ВЫБОР
	|		КОГДА СУММА(ОтклоненияЦен.СуммаЗаказа) = 0
	|				ИЛИ СУММА(ОтклоненияЦен.СуммаПоступления) = 0
	|			ТОГДА 0
	|		ИНАЧЕ СУММА(ОтклоненияЦен.СуммаПоступления) * 100 / СУММА(ОтклоненияЦен.СуммаЗаказа) - 100
	|	КОНЕЦ                                                  КАК ПроцентОтклоненияОтСуммыЗаказа,
	|	ВЫБОР
	|		КОГДА СРЕДНЕЕ(ОтклоненияЦен.ЦенаЗаказа) <> 0
	|				И СУММА(ОтклоненияЦен.ЦенаПоступления) <> 0
	|				И СУММА(ОтклоненияЦен.ЦенаПоступления) < СРЕДНЕЕ(ОтклоненияЦен.ЦенаЗаказа)
	|			ТОГДА 3
	|		КОГДА СРЕДНЕЕ(ОтклоненияЦен.ЦенаЗаказа) <> 0
	|				И СУММА(ОтклоненияЦен.ЦенаПоступления) <> 0
	|				И СУММА(ОтклоненияЦен.ЦенаПоступления) > СРЕДНЕЕ(ОтклоненияЦен.ЦенаЗаказа)
	|			ТОГДА 1
	|		ИНАЧЕ 8
	|	КОНЕЦ                                                  КАК ИндексКартинки,
	|	ВЫБОР
	|		КОГДА СУММА(ОтклоненияЦен.СуммаЗаказа) <> 0
	|				И СУММА(ОтклоненияЦен.СуммаПоступления) < СУММА(ОтклоненияЦен.СуммаЗаказа)
	|			ТОГДА 3
	|		КОГДА СУММА(ОтклоненияЦен.СуммаЗаказа) <> 0
	|				И СУММА(ОтклоненияЦен.СуммаПоступления) > СУММА(ОтклоненияЦен.СуммаЗаказа)
	|			ТОГДА 1
	|		ИНАЧЕ 8
	|	КОНЕЦ                                                  КАК ИндексКартинкиСуммы,
	|	ВЫБОР
	|		КОГДА СУММА(ОтклоненияЦен.ЦенаПоступления) <> 0
	|				И СРЕДНЕЕ(ОтклоненияЦен.ЦенаЗаказа) <> 0
	|				И СУММА(ОтклоненияЦен.ЦенаПоступления) <> СРЕДНЕЕ(ОтклоненияЦен.ЦенаЗаказа)
	|			ТОГДА ИСТИНА
	|		ИНАЧЕ ЛОЖЬ
	|	КОНЕЦ                                                  КАК ЦенаИзменилась,
	|	ВЫБОР
	|		КОГДА МАКСИМУМ(ОтклоненияЦен.КоличествоЗаказа) = СУММА(ОтклоненияЦен.КоличествоПоступления)
	|				И СУММА(ОтклоненияЦен.СуммаЗаказа) <> 0
	|				И СУММА(ОтклоненияЦен.СуммаПоступления) <> 0
	|				И СУММА(ОтклоненияЦен.СуммаПоступления) <> СУММА(ОтклоненияЦен.СуммаЗаказа)
	|			ТОГДА ИСТИНА
	|		ИНАЧЕ ЛОЖЬ
	|	КОНЕЦ                                                  КАК СуммаИзменилась,
	|	МАКСИМУМ(ОтклоненияЦен.ПроцентРучнойСкидкиЗаказа)      КАК ПроцентРучнойСкидкиЗаказа,
	|	МАКСИМУМ(ОтклоненияЦен.ПроцентРучнойСкидкиПоступления) КАК ПроцентРучнойСкидкиПоступления
	|ИЗ
	|	ОтклоненияЦен КАК ОтклоненияЦен
	|
	|СГРУППИРОВАТЬ ПО
	|	ОтклоненияЦен.ЗаказПоставщику,
	|	ОтклоненияЦен.КодСтроки,
	|	ОтклоненияЦен.Номенклатура,
	|	ОтклоненияЦен.Характеристика,
	|	ОтклоненияЦен.ВалютаЗаказа
	|
	|ИМЕЮЩИЕ
	|	(СУММА(ОтклоненияЦен.ЦенаПоступления) <> 0 И СРЕДНЕЕ(ОтклоненияЦен.ЦенаЗаказа) <> СУММА(ОтклоненияЦен.ЦенаПоступления))
	|	ИЛИ (СУММА(ОтклоненияЦен.ЦенаПоступления) = 0 И СРЕДНЕЕ(ОтклоненияЦен.ЦенаЗаказа) <> СУММА(ОтклоненияЦен.ЦенаПоступления))
	|		ИЛИ ((МАКСИМУМ(ОтклоненияЦен.КоличествоЗаказа) = СУММА(ОтклоненияЦен.КоличествоПоступления)
	|			И СУММА(ОтклоненияЦен.СуммаЗаказа) <> СУММА(ОтклоненияЦен.СуммаПоступления)))");
	
	Запрос.Текст = СтрЗаменить(Запрос.Текст,
		"&ТекстЗапросаКоэффициентУпаковки1",
		Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
		"ТоварыЗаказа.Упаковка",
		"ТоварыЗаказа.Номенклатура"));
		
	Запрос.Текст = СтрЗаменить(Запрос.Текст,
		"&ТекстЗапросаКоэффициентУпаковки2",
		Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
		"ПриобретениеТоваровУслугТовары.Упаковка",
		"ПриобретениеТоваровУслугТовары.Номенклатура"));
	
	ИспользуетсяДвухходовка = ПолучитьФункциональнуюОпцию("ИспользоватьТоварыВПутиОтПоставщиков")
		Или ПолучитьФункциональнуюОпцию("ИспользоватьИмпортныеЗакупкиТоваровВПути")
		Или ПолучитьФункциональнуюОпцию("ИспользоватьВвозТоваровИзТаможенногоСоюзаТоварыВПути")
		Или ПолучитьФункциональнуюОпцию("ИспользоватьВвозТоваровИзТаможенногоСоюзаНеотфактурованныеПоставки")
		Или ПолучитьФункциональнуюОпцию("ИспользоватьНеотфактурованныеПоставки");
	
	Запрос.УстановитьПараметр("ЗаказыПоставщикам", Заказы.ВыгрузитьЗначения());
	Запрос.УстановитьПараметр("ДокументыПоступления", Заказы.ВыгрузитьЗначения());
	Запрос.УстановитьПараметр("ИспользуетсяДвухходовка", ИспользуетсяДвухходовка);
	
	Запрос.УстановитьПараметр("ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров",
		ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров);
	Запрос.УстановитьПараметр("МерныеТипыЕдиницИзмерений",
		Справочники.УпаковкиЕдиницыИзмерения.МерныеТипыЕдиницИзмерений());
	
	Запрос.УстановитьПараметр("ИспользоватьСтатусЗакрыт", ИспользуетсяСтатусЗакрыт);
	
	ГраницыОборотов = ОбщегоНазначенияУТ.ГраницыОборотовРегистра("ЗаказыПоставщикам",
																"ЗаказПоставщику В (&ЗаказыПоставщикам)",
																Запрос.Параметры);
	
	Запрос.УстановитьПараметр("НачПериодЗаказыПоставщикам", ГраницыОборотов.МинимальнаяДата);
	Запрос.УстановитьПараметр("КонПериодЗаказыПоставщикам", ГраницыОборотов.МаксимальнаяДата);
	
	Результат = Запрос.ВыполнитьПакет();
	УстановитьПривилегированныйРежим(Ложь);
	
	ВыборкаЗаказы = Результат[0].Выбрать();
	ТаблицаТоварыКОтмене = Результат[1].Выгрузить();
	ТоварыКОтмене.Загрузить(ТаблицаТоварыКОтмене);
	ДопустимыеОтклонения = Результат[2].Выгрузить();
	ТаблицаТоварыРасхожденияДвухходовки = Результат[4].Выгрузить();
	ТоварыРасхожденияДвухходовки.Загрузить(ТаблицаТоварыРасхожденияДвухходовки);
	ОтклоненияЦен.Загрузить(Результат[14].Выгрузить());
	
	СтруктураПоиска = Новый Структура("Номенклатура, Характеристика, Склад, Заказ");
	ВыделитьМерныеТовары(ТоварыКОтмене, ДопустимыеОтклонения, СтруктураПоиска);
	
	Если ВыборкаЗаказы.Количество() = 0
		И ТоварыКОтмене.Количество() = 0
		И МерныеТоварыККорректировке.Количество() = 0
		И ОтклоненияЦен.Количество() = 0
		И ТаблицаТоварыРасхожденияДвухходовки.Количество() = 0 Тогда
		ЗаказыЗакрыты = Истина;
		Возврат;
	КонецЕсли;
	
	Если ВыборкаЗаказы.Количество() = 0 Тогда
		СтатусЗакрытУстановлен = Истина;
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьОтклоненияПоЗаказамКлиентов(ТаблицаТоваровРасход)
	
	УстановитьПривилегированныйРежим(Истина);
	
	Запрос = Новый Запрос(
	"ВЫБРАТЬ
	|	ЗаказКлиента.Ссылка КАК ЗаказКлиента
	|ИЗ
	|	Документ.ЗаказКлиента КАК ЗаказКлиента
	|ГДЕ
	|	ЗаказКлиента.Ссылка В (&ЗаказыКлиента)
	|	И ЗаказКлиента.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.Закрыт)
	|	И &ИспользоватьСтатусЗакрыт
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	РаспоряженияНаОтгрузкуОбороты.Распоряжение КАК ЗаказКлиента,
	|	РаспоряженияНаОтгрузкуОбороты.Номенклатура КАК Номенклатура,
	|	РаспоряженияНаОтгрузкуОбороты.Характеристика КАК Характеристика,
	|	РаспоряженияНаОтгрузкуОбороты.Склад КАК Склад,
	|	РаспоряженияНаОтгрузкуОбороты.Серия КАК Серия,
	|	СУММА(РаспоряженияНаОтгрузкуОбороты.КОтгрузкеКоличествоОборот) -
	|		СУММА(РаспоряженияНаОтгрузкуОбороты.ОтгруженоКоличествоОборот) КАК КОформлениюКонечныйОстаток,
	|	СУММА(РаспоряженияНаОтгрузкуОбороты.КОтгрузкеКоличествоОборот) КАК КОформлениюПриход
	|ПОМЕСТИТЬ ВтРаспоряженияНаОтгрузкуОбороты
	|ИЗ
	|	#РаспоряженияНаОтгрузкуОборотыРазвернутая1 КАК РаспоряженияНаОтгрузкуОбороты
	|СГРУППИРОВАТЬ ПО
	|	РаспоряженияНаОтгрузкуОбороты.Распоряжение,
	|	РаспоряженияНаОтгрузкуОбороты.Номенклатура,
	|	РаспоряженияНаОтгрузкуОбороты.Характеристика,
	|	РаспоряженияНаОтгрузкуОбороты.Склад,
	|	РаспоряженияНаОтгрузкуОбороты.Серия
	|ИМЕЮЩИЕ
	|	СУММА(РаспоряженияНаОтгрузкуОбороты.КОтгрузкеКоличествоОборот) -
	|		СУММА(РаспоряженияНаОтгрузкуОбороты.ОтгруженоКоличествоОборот) <> 0
	|	ИЛИ СУММА(РаспоряженияНаОтгрузкуОбороты.КОтгрузкеКоличествоОборот) <> 0
	|
	|ИНДЕКСИРОВАТЬ ПО
	|	ЗаказКлиента,
	|	Номенклатура,
	|	Характеристика,
	|	Склад,
	|	Серия
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ТаблицаТовары.Ссылка КАК Заказ,
	|	ТаблицаТовары.Номенклатура КАК Номенклатура,
	|	ТаблицаТовары.Характеристика КАК Характеристика,
	|	ТаблицаТовары.Склад КАК Склад,
	|	ТаблицаТовары.Серия КАК Серия,
	|	ТаблицаТовары.Количество КАК Количество,
	|	ИСТИНА КАК ЭтоОтгрузка
	|ИЗ
	|	Документ.ЗаказКлиента.Товары КАК ТаблицаТовары
	|ГДЕ
	|	ТаблицаТовары.Ссылка В (&ЗаказыКлиента)
	|	И (ТаблицаТовары.Ссылка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.НеСогласован)
	|	ИЛИ ТаблицаТовары.ВариантОбеспечения <> ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить))
	|	И НЕ ТаблицаТовары.Ссылка.ЭтоЗаказКакСчет
	|	И НЕ ТаблицаТовары.Отменено
	|	И НЕ ТаблицаТовары.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоставкаПодПринципала)
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ТоварыКОтгрузкеОстатки.Заказ КАК Заказ,
	|	ТоварыКОтгрузкеОстатки.Номенклатура КАК Номенклатура,
	|	ТоварыКОтгрузкеОстатки.Характеристика КАК Характеристика,
	|	ТоварыКОтгрузкеОстатки.Серия КАК Серия,
	|	ТоварыКОтгрузкеОстатки.Склад КАК Склад,
	|	ВЫБОР
	|		КОГДА СУММА(ТоварыКОтгрузкеОстатки.КОтгрузкеСверхЗаказа) >= СУММА(ТоварыКОтгрузкеОстатки.Количество)
	|			ТОГДА 0
	|		ИНАЧЕ СУММА(ТоварыКОтгрузкеОстатки.Количество) - СУММА(ТоварыКОтгрузкеОстатки.КОтгрузкеСверхЗаказа)
	|	КОНЕЦ КАК Количество,
	|	СУММА(ТоварыКОтгрузкеОстатки.ДопустимоеОтклонение) КАК ДопустимоеОтклонение
	|ИЗ
	|	(ВЫБРАТЬ
	|		ТоварыКОтгрузкеОстатки.ДокументОтгрузки КАК Заказ,
	|		ТоварыКОтгрузкеОстатки.Номенклатура КАК Номенклатура,
	|		ТоварыКОтгрузкеОстатки.Характеристика КАК Характеристика,
	|		ТоварыКОтгрузкеОстатки.Серия КАК Серия,
	|		ТоварыКОтгрузкеОстатки.Склад КАК Склад,
	|		ТоварыКОтгрузкеОстатки.КОтгрузкеРасход + ТоварыКОтгрузкеОстатки.СобраноПриход +
	|			ТоварыКОтгрузкеОстатки.СобираетсяПриход КАК Количество,
	|		ТоварыКОтгрузкеОстатки.КОтгрузкеПриход КАК КОтгрузкеСверхЗаказа,
	|		0 КАК ДопустимоеОтклонение
	|	ИЗ
	|		РегистрНакопления.ТоварыКОтгрузке.ОстаткиИОбороты(&НачПериодТоварыКОтгрузке, &КонПериодТоварыКОтгрузке,,,
	|			ДокументОтгрузки В (&ЗаказыКлиента)
	|		И Номенклатура.ТипНоменклатуры НЕ В
	|		(ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга), ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа))) КАК
	|			ТоварыКОтгрузкеОстатки
	|
	|	ОБЪЕДИНИТЬ ВСЕ
	|
	|	ВЫБРАТЬ
	|		ОстаткиКОформлению.Распоряжение КАК Заказ,
	|		ОстаткиКОформлению.Номенклатура КАК Номенклатура,
	|		ОстаткиКОформлению.Характеристика КАК Характеристика,
	|		ОстаткиКОформлению.Серия КАК Серия,
	|		ОстаткиКОформлению.Склад КАК Склад,
	|		0 КАК Количество,
	|		-ОстаткиКОформлению.КОтгрузкеКоличествоОборот КАК КОтгрузкеСверхЗаказа,
	|		0 КАК ДопустимоеОтклонение
	|	ИЗ
	|		#РаспоряженияНаОтгрузкуОборотыРазвернутая2 КАК ОстаткиКОформлению) КАК ТоварыКОтгрузкеОстатки
	|СГРУППИРОВАТЬ ПО
	|	ТоварыКОтгрузкеОстатки.Заказ,
	|	ТоварыКОтгрузкеОстатки.Номенклатура,
	|	ТоварыКОтгрузкеОстатки.Характеристика,
	|	ТоварыКОтгрузкеОстатки.Серия,
	|	ТоварыКОтгрузкеОстатки.Склад
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	ЗаказыКлиентовОстатки.Распоряжение КАК Заказ,
	|	ЗаказыКлиентовОстатки.Номенклатура КАК Номенклатура,
	|	ЗаказыКлиентовОстатки.Характеристика КАК Характеристика,
	|	ЗаказыКлиентовОстатки.Серия КАК Серия,
	|	ЗаказыКлиентовОстатки.Склад КАК Склад,
	|	ЗаказыКлиентовОстатки.ОтгруженоКоличествоОборот КАК Количество,
	|	0 КАК ДопустимоеОтклонение
	|ИЗ
	|	#РаспоряженияНаОтгрузкуОборотыРазвернутая3 КАК ЗаказыКлиентовОстатки
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	ТоварыКОтгрузке.Распоряжение КАК Заказ,
	|	ТоварыКОтгрузке.Номенклатура КАК Номенклатура,
	|	ТоварыКОтгрузке.Характеристика КАК Характеристика,
	|	ТоварыКОтгрузке.Серия КАК Серия,
	|	ТоварыКОтгрузке.Склад КАК Склад,
	|	0,
	|	СУММА(ТоварыКОтгрузке.КОтгрузкеКоличествоОборот * (&ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров / 100))
	|ИЗ
	|	#РаспоряженияНаОтгрузкуОборотыРазвернутая4 КАК ТоварыКОтгрузке
	|СГРУППИРОВАТЬ ПО
	|	ТоварыКОтгрузке.Распоряжение,
	|	ТоварыКОтгрузке.Номенклатура,
	|	ТоварыКОтгрузке.Характеристика,
	|	ТоварыКОтгрузке.Серия,
	|	ТоварыКОтгрузке.Склад
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	ЗаказКлиентаТовары.Ссылка,
	|	ЗаказКлиентаТовары.Номенклатура,
	|	ЗаказКлиентаТовары.Характеристика,
	|	ЗаказКлиентаТовары.Серия,
	|	ЗаказКлиентаТовары.Склад,
	|	ТоварыУслугиКОформлениюОтчетовКомитентуОЗакупкахОстатки.КоличествоОстаток,
	|	0
	|ИЗ
	|	Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыУслугиКОформлениюОтчетовКомитентуОЗакупках.Остатки КАК
	|			ТоварыУслугиКОформлениюОтчетовКомитентуОЗакупкахОстатки
	|		ПО (ЗаказКлиентаТовары.Ссылка.Назначение = ТоварыУслугиКОформлениюОтчетовКомитентуОЗакупкахОстатки.Назначение)
	|		И (ЗаказКлиентаТовары.Номенклатура = ТоварыУслугиКОформлениюОтчетовКомитентуОЗакупкахОстатки.Номенклатура)
	|ГДЕ
	|	ЗаказКлиентаТовары.Ссылка В (&ЗаказыКлиента)
	|	И
	|		ЗаказКлиентаТовары.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоставкаПодПринципала)
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ТаблицаТовары.Ссылка КАК Заказ,
	|	ТаблицаТовары.Номенклатура КАК Номенклатура,
	|	ТаблицаТовары.Характеристика КАК Характеристика,
	|	ТаблицаТовары.Склад КАК Склад,
	|	ТаблицаТовары.Серия КАК Серия,
	|	ТаблицаТовары.Количество КАК Количество
	|ПОМЕСТИТЬ ВТАктуальныеТоварыЗаказов
	|ИЗ
	|	Документ.ЗаказКлиента.Товары КАК ТаблицаТовары
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ТаблицаТовары.Заказ КАК Заказ,
	|	ТаблицаТовары.Номенклатура КАК Номенклатура,
	|	ТаблицаТовары.Характеристика КАК Характеристика,
	|	ТаблицаТовары.Склад КАК Склад,
	|	ТаблицаТовары.Количество КАК Количество,
	|	ЗаказыКлиентовОстатки.КОформлениюКонечныйОстаток КАК КОформлениюОстаток,
	|	ВЫБОР
	|		КОГДА ТаблицаТовары.Количество > ЗаказыКлиентовОстатки.КОформлениюПриход
	|			ТОГДА ТаблицаТовары.Количество - ЗаказыКлиентовОстатки.КОформлениюПриход
	|		ИНАЧЕ 0
	|	КОНЕЦ КАК КоличествоСверхОформленного,
	|	ТаблицаТовары.Серия КАК Серия,
	|	ИСТИНА КАК ЭтоОтгрузка
	|ИЗ
	|	ВТАктуальныеТоварыЗаказов КАК ТаблицаТовары
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтРаспоряженияНаОтгрузкуОбороты КАК ЗаказыКлиентовОстатки
	|		ПО ТаблицаТовары.Заказ = ЗаказыКлиентовОстатки.ЗаказКлиента
	|		И ТаблицаТовары.Номенклатура = ЗаказыКлиентовОстатки.Номенклатура
	|		И ТаблицаТовары.Характеристика = ЗаказыКлиентовОстатки.Характеристика
	|		И ТаблицаТовары.Склад = ЗаказыКлиентовОстатки.Склад
	|		И ТаблицаТовары.Серия = ЗаказыКлиентовОстатки.Серия
	|
	|УПОРЯДОЧИТЬ ПО
	|	КОформлениюОстаток ВОЗР");
	
	// подзапрос #РаспоряженияНаОтгрузкуОборотыРазвернутая1
	ПараметрыФормированияТаблицы = РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.НовыйПараметрыФормированияРазвернутойТаблицы();
	ПараметрыФормированияТаблицы.НачалоПериода = "&НачПериодЗаказыКлиентов";
	ПараметрыФормированияТаблицы.КонецПериода = "&КонПериодЗаказыКлиентов";
	ПараметрыФормированияТаблицы.ТекстУсловия =
		"Распоряжение В (&ЗаказыКлиента)
		|		И КодСтроки <> 0";
	ПараметрыФормированияТаблицы.Группировка = "Распоряжение, Номенклатура, Характеристика, Склад, Серия";
	ПараметрыФормированияТаблицы.Показатели = "КОтгрузке, Отгружено";
	ПараметрыФормированияТаблицы.Ресурсы = "Количество";
	
	РаспоряженияНаОтгрузкуОборотыРазвернутая1 =
		РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.ТекстЗапросаРазвернутаяТаблица(
			ПараметрыФормированияТаблицы);
	
	Запрос.Текст = СтрЗаменить(Запрос.Текст,
		"#РаспоряженияНаОтгрузкуОборотыРазвернутая1",
		РаспоряженияНаОтгрузкуОборотыРазвернутая1);
	
	// подзапрос #РаспоряженияНаОтгрузкуОборотыРазвернутая2
	ПараметрыФормированияТаблицы = РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.НовыйПараметрыФормированияРазвернутойТаблицы();
	ПараметрыФормированияТаблицы.НачалоПериода = "&НачПериодЗаказыКлиентов";
	ПараметрыФормированияТаблицы.КонецПериода = "&КонПериодЗаказыКлиентов";
	ПараметрыФормированияТаблицы.ТекстУсловия =
		"Распоряжение В (&ЗаказыКлиента)
		|		И КодСтроки <> 0
		|		И Номенклатура.ТипНоменклатуры НЕ В
		|			(ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга),
		|			ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа))";
	ПараметрыФормированияТаблицы.Группировка = "Распоряжение, Номенклатура, Характеристика, Склад, Серия";
	ПараметрыФормированияТаблицы.Показатели = "КОтгрузке";
	ПараметрыФормированияТаблицы.Ресурсы = "Количество";
	
	РаспоряженияНаОтгрузкуОборотыРазвернутая2 =
		РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.ТекстЗапросаРазвернутаяТаблица(
			ПараметрыФормированияТаблицы);
	
	Запрос.Текст = СтрЗаменить(Запрос.Текст,
		"#РаспоряженияНаОтгрузкуОборотыРазвернутая2",
		РаспоряженияНаОтгрузкуОборотыРазвернутая2);
	
	// подзапрос #РаспоряженияНаОтгрузкуОборотыРазвернутая3
	ПараметрыФормированияТаблицы = РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.НовыйПараметрыФормированияРазвернутойТаблицы();
	ПараметрыФормированияТаблицы.ТекстУсловия =
		"Распоряжение В (&ЗаказыКлиента)
		|		И Номенклатура.ТипНоменклатуры В
		|			(ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга),
		|			ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа))";
	ПараметрыФормированияТаблицы.Группировка = "Распоряжение, Номенклатура, Характеристика, Склад, Серия";
	ПараметрыФормированияТаблицы.Показатели = "Отгружено";
	ПараметрыФормированияТаблицы.Ресурсы = "Количество";
	
	РаспоряженияНаОтгрузкуОборотыРазвернутая3 =
		РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.ТекстЗапросаРазвернутаяТаблица(
			ПараметрыФормированияТаблицы);
	
	Запрос.Текст = СтрЗаменить(Запрос.Текст,
		"#РаспоряженияНаОтгрузкуОборотыРазвернутая3",
		РаспоряженияНаОтгрузкуОборотыРазвернутая3);
	
	// подзапрос #РаспоряженияНаОтгрузкуОборотыРазвернутая4
	ПараметрыФормированияТаблицы = РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.НовыйПараметрыФормированияРазвернутойТаблицы();
	ПараметрыФормированияТаблицы.НачалоПериода = "&НачПериодЗаказыКлиентов";
	ПараметрыФормированияТаблицы.КонецПериода = "&КонПериодЗаказыКлиентов";
	ПараметрыФормированияТаблицы.ТекстУсловия =
		"Распоряжение В (&ЗаказыКлиента)
		|		И КодСтроки <> 0
		|		И Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины В (&МерныеТипыЕдиницИзмерений)";
	ПараметрыФормированияТаблицы.Группировка = "Распоряжение, Номенклатура, Характеристика, Склад, Серия";
	ПараметрыФормированияТаблицы.Показатели = "КОтгрузке";
	ПараметрыФормированияТаблицы.Ресурсы = "Количество";
	
	РаспоряженияНаОтгрузкуОборотыРазвернутая4 =
		РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.ТекстЗапросаРазвернутаяТаблица(
			ПараметрыФормированияТаблицы);
	
	Запрос.Текст = СтрЗаменить(Запрос.Текст,
		"#РаспоряженияНаОтгрузкуОборотыРазвернутая4",
		РаспоряженияНаОтгрузкуОборотыРазвернутая4);
	
	Запрос.УстановитьПараметр("ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров",
		ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров);
	Запрос.УстановитьПараметр("МерныеТипыЕдиницИзмерений",
		Справочники.УпаковкиЕдиницыИзмерения.МерныеТипыЕдиницИзмерений());
	Запрос.УстановитьПараметр("ЗаказыКлиента", Заказы.ВыгрузитьЗначения());
	Запрос.УстановитьПараметр("ИспользоватьСтатусЗакрыт", ИспользуетсяСтатусЗакрыт);
	
	ГраницыОборотов = ОбщегоНазначенияУТ.ГраницыОборотовРегистра("РаспоряженияНаОтгрузкуИВозврат",
																"Распоряжение В (&ЗаказыКлиента)",
																Запрос.Параметры);
	
	Запрос.УстановитьПараметр("НачПериодЗаказыКлиентов", ГраницыОборотов.МинимальнаяДата);
	Запрос.УстановитьПараметр("КонПериодЗаказыКлиентов", ГраницыОборотов.МаксимальнаяДата);
	
	ГраницыОборотов = ОбщегоНазначенияУТ.ГраницыОборотовРегистра("ТоварыКОтгрузке",
																"ДокументОтгрузки В (&ЗаказыКлиента)",
																Запрос.Параметры);
	
	Запрос.УстановитьПараметр("НачПериодТоварыКОтгрузке", ГраницыОборотов.МинимальнаяДата);
	Запрос.УстановитьПараметр("КонПериодТоварыКОтгрузке", ГраницыОборотов.МаксимальнаяДата);
	
	ПоДокументу = Заказы.Количество() = 1 И Заказы[0].Значение = ДокументИнициатор;
	
	ТекстЗапросаДляПодмены =
	"ВЫБРАТЬ
	|	ТаблицаТовары.Ссылка КАК Заказ,
	|	ТаблицаТовары.Номенклатура КАК Номенклатура,
	|	ТаблицаТовары.Характеристика КАК Характеристика,
	|	ТаблицаТовары.Склад КАК Склад,
	|	ТаблицаТовары.Серия КАК Серия,
	|	ТаблицаТовары.Количество КАК Количество
	|ПОМЕСТИТЬ ВТАктуальныеТоварыЗаказов
	|ИЗ
	|	Документ.ЗаказКлиента.Товары КАК ТаблицаТовары";
	
	Запрос.УстановитьПараметр("ПоДокументу", ПоДокументу);
	Если ПоДокументу Тогда
		
		Запрос.Текст = СтрЗаменить(Запрос.Текст,
			ТекстЗапросаДляПодмены,
			"ВЫБРАТЬ
			|	&Заказ КАК Ссылка,
			|	Таблица.Номенклатура КАК Номенклатура,
			|	Таблица.Характеристика КАК Характеристика,
			|	Таблица.Склад КАК Склад,
			|	Таблица.Серия КАК Серия,
			|	Таблица.Количество КАК Количество,
			|	Таблица.Отменено КАК Отменено,
			|	Таблица.ВариантОбеспечения КАК ВариантОбеспечения
			|ПОМЕСТИТЬ ВтТовары
			|ИЗ
			|	&Товары КАК Таблица
			|;
			|
			|////////////////////////////////////////////////////////////////////////////////
			|ВЫБРАТЬ
			|	ТаблицаТовары.Ссылка КАК Заказ,
			|	ТаблицаТовары.Номенклатура КАК Номенклатура,
			|	ТаблицаТовары.Характеристика КАК Характеристика,
			|	ТаблицаТовары.Склад КАК Склад,
			|	ТаблицаТовары.Серия КАК Серия,
			|	СУММА(ТаблицаТовары.Количество) КАК Количество
			|ПОМЕСТИТЬ ВТАктуальныеТоварыЗаказов
			|ИЗ
			|	ВтТовары КАК ТаблицаТовары
			|ГДЕ
			|	ТаблицаТовары.Ссылка В (&ЗаказыКлиента)
			|	И НЕ ТаблицаТовары.Ссылка.ЭтоЗаказКакСчет
			|	И ТаблицаТовары.Ссылка.Статус НЕ В (ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.НеСогласован),
			|		ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.НеСогласована),
			|		ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КВозврату),
			|		ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Отклонена))
			|	И ТаблицаТовары.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
			|	И НЕ ТаблицаТовары.Отменено
			|СГРУППИРОВАТЬ ПО
			|	ТаблицаТовары.Ссылка,
			|	ТаблицаТовары.Номенклатура,
			|	ТаблицаТовары.Характеристика,
			|	ТаблицаТовары.Склад,
			|	ТаблицаТовары.Серия");
		
		Запрос.УстановитьПараметр("Товары",ТаблицаТоваровРасход);
		
		Запрос.УстановитьПараметр("Заказ",ДокументИнициатор);
		
		КоличествоЗапросов = 6;
		
	Иначе
		
		Запрос.Текст = СтрЗаменить(Запрос.Текст,
			ТекстЗапросаДляПодмены,
			"ВЫБРАТЬ
			|	ТаблицаТовары.Ссылка КАК Заказ,
			|	ТаблицаТовары.Номенклатура КАК Номенклатура,
			|	ТаблицаТовары.Характеристика КАК Характеристика,
			|	ТаблицаТовары.Склад КАК Склад,
			|	ТаблицаТовары.Серия КАК Серия,
			|	СУММА(ТаблицаТовары.Количество) КАК Количество
			|ПОМЕСТИТЬ ВТАктуальныеТоварыЗаказов
			|ИЗ
			|	Документ.ЗаказКлиента.Товары КАК ТаблицаТовары
			|ГДЕ
			|	ТаблицаТовары.Ссылка В (&ЗаказыКлиента)
			|	И НЕ ТаблицаТовары.Ссылка.ЭтоЗаказКакСчет
			|	И НЕ ТаблицаТовары.Ссылка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.НеСогласован)
			|	И ТаблицаТовары.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
			|СГРУППИРОВАТЬ ПО
			|	ТаблицаТовары.Ссылка,
			|	ТаблицаТовары.Номенклатура,
			|	ТаблицаТовары.Характеристика,
			|	ТаблицаТовары.Склад,
			|	ТаблицаТовары.Серия");
		
		КоличествоЗапросов = 5;
	КонецЕсли;
	
	Результат             = Запрос.ВыполнитьПакет();
	ВыборкаЗаказы         = Результат[0].Выбрать();
	ВыборкаКОтмене        = Результат[2].Выбрать();
	ОтгруженныеТовары     = Результат[3].Выгрузить();
	Выборка               = Результат[КоличествоЗапросов].Выбрать();
	
	Если ВыборкаЗаказы.Количество() = 0 Тогда
		СтатусЗакрытУстановлен = Истина;
	КонецЕсли;
	
	ОтгруженныеТовары.Свернуть("Заказ, Номенклатура, Характеристика, Серия, Склад","Количество, ДопустимоеОтклонение");
	
	УстановитьПривилегированныйРежим(Ложь);
	
	СписокСвойствТоварыКОтмене = "Заказ,Номенклатура,Характеристика,Склад,Серия,ЭтоОтгрузка,Количество";
	
	// Отменяем непосредственно
	
	Пока ВыборкаКОтмене.Следующий() Цикл
		
		НовСтр = ТоварыКОтмене.Добавить();
		ЗаполнитьЗначенияСвойств(НовСтр, ВыборкаКОтмене, СписокСвойствТоварыКОтмене);
		НовСтр.Заказано = НовСтр.Количество;
		
	КонецЦикла;
	
	// Отменяем строки
	
	Пока Выборка.Следующий() Цикл
		
		ПараметрыПоиска = Новый Структура();
		ПараметрыПоиска.Вставить("Заказ", Выборка.Заказ);
		ПараметрыПоиска.Вставить("Номенклатура", Выборка.Номенклатура);
		ПараметрыПоиска.Вставить("Характеристика", Выборка.Характеристика);
		ПараметрыПоиска.Вставить("Склад", Выборка.Склад);
		ПараметрыПоиска.Вставить("Серия", Выборка.Серия);
			
		ОтгруженноеКоличество = 0;
		ДопустимоеОтклонение  = 0;
		ОтгруженнаяСтрока     = Неопределено;
		
		НайденныеСтроки = ОтгруженныеТовары.НайтиСтроки(ПараметрыПоиска);
		Если НайденныеСтроки.Количество() > 0 Тогда
			ОтгруженнаяСтрока = НайденныеСтроки[0];
			ОтгруженноеКоличество = ОтгруженнаяСтрока.Количество;
			ДопустимоеОтклонение = ОтгруженнаяСтрока.ДопустимоеОтклонение;
		КонецЕсли;
		
		ОтменитьКоличество = 0;
		
		Если Выборка.Количество >= ОтгруженноеКоличество Тогда
			ОтменитьКоличество = Мин(Выборка.КОформлениюОстаток, Выборка.Количество - ОтгруженноеКоличество);
			Если ОтгруженнаяСтрока <> Неопределено Тогда
				Если ОтгруженноеКоличество >
						(Выборка.Количество - Выборка.КоличествоСверхОформленного - Выборка.КОформлениюОстаток) Тогда
					ОтгруженнаяСтрока.Количество = ОтгруженноеКоличество - (Выборка.Количество
						- Выборка.КоличествоСверхОформленного - Выборка.КОформлениюОстаток);
				Иначе
					ОтгруженнаяСтрока.Количество = 0;
				КонецЕсли;
			КонецЕсли;
		Иначе
			ОтгруженнаяСтрока.Количество = ОтгруженнаяСтрока.Количество - Выборка.Количество;
		КонецЕсли;
		
		Если ОтменитьКоличество <= ДопустимоеОтклонение Тогда
			ОтклонениеВПределахДельты = Истина;
			ОтгруженнаяСтрока.ДопустимоеОтклонение = ОтгруженнаяСтрока.ДопустимоеОтклонение - ОтменитьКоличество;
		Иначе
			ОтклонениеВПределахДельты = Ложь;
		КонецЕсли;
		
		Если ОтменитьКоличество = Выборка.Количество Тогда
			НоваяСтрока = ТоварыКОтмене.Добавить();
			ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка);
			НоваяСтрока.Заказано    = НоваяСтрока.Количество;
		ИначеЕсли ОтменитьКоличество > 0 Тогда
			
			ОтменитьКоличество = ОтменитьКоличество + Выборка.КоличествоСверхОформленного;
			
			Если ОтклонениеВПределахДельты Тогда
				НоваяСтрока = МерныеТоварыККорректировке.Добавить();
				Множитель = -1;
			Иначе
				НоваяСтрока = ТоварыКОтмене.Добавить();
				Множитель = 1;
			КонецЕсли;
			
			ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка, СписокСвойствТоварыКОтмене);
			
			НоваяСтрока.Количество  = Множитель*ОтменитьКоличество;
			НоваяСтрока.Заказано    = Выборка.Количество;
		Иначе
			
			Продолжить;
			
		КонецЕсли;
		
	КонецЦикла;
	
	// Корректируем в плюс
	
	Если СкорректироватьМерныеТовары Тогда
		
		Выборка.Сбросить();
		
		Пока Выборка.Следующий() Цикл
			
			ПараметрыПоиска = Новый Структура("Заказ, Номенклатура, Характеристика, Склад, Серия");
			ЗаполнитьЗначенияСвойств(ПараметрыПоиска, Выборка);
			
			НайденныеСтроки = ОтгруженныеТовары.НайтиСтроки(ПараметрыПоиска);
			Если НайденныеСтроки.Количество() > 0 
				И НайденныеСтроки[0].Количество > 0 Тогда
				ОтгруженнаяСтрока = НайденныеСтроки[0];
				ОтгруженоСверхСтроки = ОтгруженнаяСтрока.Количество;
			Иначе
				Продолжить;
			КонецЕсли;
			
			Если Выборка.КОформлениюОстаток < 0 И ОтгруженоСверхСтроки > 0 Тогда
				
				КоличествоПереоформлено = -Выборка.КОформлениюОстаток;
				
				Если КоличествоПереоформлено >= ОтгруженоСверхСтроки Тогда
					ОтгруженнаяСтрока.Количество = 0;
					КоличествоДобавить = ОтгруженоСверхСтроки;
				Иначе
					ОтгруженнаяСтрока.Количество = ОтгруженнаяСтрока.Количество - КоличествоПереоформлено;
					КоличествоДобавить = КоличествоПереоформлено;
				КонецЕсли;
				
				НовСтр = МерныеТоварыККорректировке.Добавить();
				ЗаполнитьЗначенияСвойств(НовСтр,Выборка);
				НовСтр.Количество = КоличествоДобавить;
				НовСтр.Заказано = Выборка.Количество;
			КонецЕсли;
			
		КонецЦикла;
		
	КонецЕсли;
	
	Если ВыборкаЗаказы.Количество() = 0 И
		ТоварыКОтмене.Количество() = 0 И
		МерныеТоварыККорректировке.Количество() = 0 Тогда
		ЗаказыЗакрыты = Истина;
		Возврат;
	КонецЕсли;

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

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

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

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

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

//++ НЕ УТ

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

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


&НаСервере
Процедура ВыделитьМерныеТовары(ТоварыКОтмене, ДопустимыеОтклонения, СтруктураПоиска)
	
	Сч = ТоварыКОтмене.Количество()-1;
	Пока Сч >= 0 Цикл
		
		СтрокаОстатков = ТоварыКОтмене[сч];
		
		ЗаполнитьЗначенияСвойств(СтруктураПоиска, СтрокаОстатков);
		
		СтрокиДопустимыхОтклонений = ДопустимыеОтклонения.НайтиСтроки(СтруктураПоиска);
		
		Если СтрокаОстатков.Количество < 0 Тогда //превышение распоряжения
			
			Если СтрокиДопустимыхОтклонений.Количество() > 0 Тогда
				
				ДопустимоеОтклонение = СтрокиДопустимыхОтклонений[0].ДопустимоеОтклонение;
				
				Если -СтрокаОстатков.Количество <= ДопустимоеОтклонение Тогда
					НовСтр = МерныеТоварыККорректировке.Добавить();
					ЗаполнитьЗначенияСвойств(НовСтр, СтрокаОстатков);
					НовСтр.Количество = -НовСтр.Количество;
				КонецЕсли;
				
			КонецЕсли;
			
			ТоварыКОтмене.Удалить(сч);
			
		ИначеЕсли СтрокаОстатков.Количество > 0 Тогда
			
			Если СтрокиДопустимыхОтклонений.Количество() > 0 Тогда
				
				ДопустимоеОтклонение = СтрокиДопустимыхОтклонений[0].ДопустимоеОтклонение;
				
				Если СтрокаОстатков.Количество <= ДопустимоеОтклонение Тогда
					НовСтр = МерныеТоварыККорректировке.Добавить();
					ЗаполнитьЗначенияСвойств(НовСтр,СтрокаОстатков);
					НовСтр.Количество = -НовСтр.Количество;
					ТоварыКОтмене.Удалить(Сч);
				КонецЕсли;
				
			КонецЕсли;
			
		КонецЕсли;
		
		Сч = Сч - 1;
		
	КонецЦикла;
	
КонецПроцедуры

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

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

	КонецЕсли;
	
	ТекстДействия = "";
	Если СкорректироватьМерныеТовары Тогда
		ТекстДействия = ТекстДействия + НСтр("ru='скорректированы строки мерных товаров'");
	КонецЕсли;
	
	Если СкорректироватьЦены Тогда
		ТекстДействия = ТекстДействия + ?(ТекстДействия="","",", ") + НСтр("ru='скорректированы цены'");
	КонецЕсли;
	
	Если ОтменитьНеотработанныеСтроки Тогда
		ТекстДействия = ТекстДействия + ?(ТекстДействия="","",", ") + НСтр("ru='отменены непоставленные строки'");
	КонецЕсли;
	
	Если ЗакрыватьЗаказы Тогда
		ТекстДействия = ТекстДействия + ?(ТекстДействия="","",", ") + НСтр("ru='установлен статус ""Закрыт""'");
	КонецЕсли;
	
	ТекстДля = СтрЗаменить(ТекстДля, "%КоличествоОбработанных%", Заказы.Количество()-НеотработанныеЗаказы.Количество());
	
	Если НеотработанныеЗаказы.Количество() > 0 Тогда
		 ТекстДействия = ТекстДействия + Символы.ПС + СтрШаблон(НСтр("ru='Не удалось обработать %1:'"), ТекстИПМЧ);
	КонецЕсли;
	
	ТекстДля = СтрЗаменить(ТекстДля, "%ТекстДействия%", ТекстДействия);
	
	Возврат ТекстДля;
	
КонецФункции

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

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

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

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

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