Документы передачи в переработку / Документы передачи в переработку (к оформлению) / Модуль формы

файл

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область Оформить

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

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

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

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

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

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

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

#Область НастройкаКомплектаДокументов

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

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

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

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

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

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

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

&НаКлиенте
Процедура ОбновитьСписокРаспоряженияНаПередачу(Команда)
	
	// &ЗамерПроизводительности
	ОценкаПроизводительностиКлиент.ЗамерВремени(
		"Обработка.ЖурналДокументовПередачиВПереработку2_5.Форма.КОформлениюНакладных.Команда.ОбновитьСписокРаспоряженияНаПередачу");
	
	ОбновитьСписокРаспоряженияНаПередачуНаСервере();
	
КонецПроцедуры

&НаКлиенте
Процедура ОбновитьСписокРаспоряженияНаПоступление(Команда)
	
	// &ЗамерПроизводительности
	ОценкаПроизводительностиКлиент.ЗамерВремени(
		"Обработка.ЖурналДокументовПередачиВПереработку2_5.Форма.КОформлениюНакладных.Команда.ОбновитьСписокРаспоряженияНаПоступление");
	
	ОбновитьСписокРаспоряженияНаПоступлениеНаСервере();
	
КонецПроцедуры

&НаКлиенте
Процедура ОбновитьСписокРаспоряженияНаОтчеты(Команда)
	
	// &ЗамерПроизводительности
	ОценкаПроизводительностиКлиент.ЗамерВремени(
		"Обработка.ЖурналДокументовПередачиВПереработку2_5.Форма.КОформлениюНакладных.Команда.ОбновитьСписокРаспоряженияНаОтчеты");
	
	ОбновитьСписокРаспоряженияНаОтчетыНаСервере();
	
КонецПроцедуры

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

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

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

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

#Область НастройкаФормы

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

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

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

#Область ШтрихкодыИТорговоеОборудование

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

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

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

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

#Область Оформить

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

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

	ВыделенныеСтроки = Элементы[ИмяЭлемента].ВыделенныеСтроки;
	
	СписокРаспоряжений.Очистить();
	Для Каждого Строка Из ВыделенныеСтроки Цикл
		ЗаполнитьЗначенияСвойств(СписокРаспоряжений.Добавить(), Элементы[ИмяЭлемента].ДанныеСтроки(Строка));
	КонецЦикла;
	
КонецПроцедуры

&НаКлиенте
Функция ВыделенныеСклады(ИмяЭлемента)
	
	Результат = Новый Массив;
	
	ВыделенныеСтроки = Элементы[ИмяЭлемента].ВыделенныеСтроки;
	Для Каждого Строка Из ВыделенныеСтроки Цикл
		Результат.Добавить(Элементы[ИмяЭлемента].ДанныеСтроки(Строка).Склад);
	КонецЦикла;
	
	Результат = ОбщегоНазначенияКлиентСервер.СвернутьМассив(Результат);
	
	Возврат Результат;
	
КонецФункции

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

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

#Область ОбновитьСписокРаспоряжения

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

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

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

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

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

#Область СохраняемыеНастройкиФормы

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

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

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

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

#Область Прочее

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

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

&НаСервере
Процедура УстановитьОтборПоОрганизации()

	СписокОрганизаций.Очистить();
	Если ЗначениеЗаполнено(Организация) Тогда
		СписокОрганизаций.ЗагрузитьЗначения(Справочники.Организации.ФилиалыСРасчетамиЧерезГоловнуюОрганизацию(Организация));
		СписокОрганизаций.Добавить(Организация);
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура УстановитьОтборПоСкладу()
	
	СписокСкладов = СкладыСервер.СписокПодчиненныхСкладов(Склад);
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Функция КлючНазначенияФормыПоУмолчанию()
	
	Возврат "ДокументыПередачиВПереработку";
	
КонецФункции

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

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

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

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

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

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

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

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

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

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

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

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