Документы продажи / Список документов / Модуль формы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервереБезКонтекста
Процедура СписокДокументыПродажиПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)
	
	// СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов
	УчетОригиналовПервичныхДокументов.ПриПолученииДанныхНаСервере(Строки);
	// Конец СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов
	
	//++ Локализация
	СоответствиеТребованиямГИСМТ.ПриПолученииДанныхНаСервереДокумента(Строки);
	//-- Локализация
	
КонецПроцедуры

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

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

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

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

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

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

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

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

// ЭлектронноеВзаимодействие.ОбменСКонтрагентами

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

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

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

// Конец ЭлектронноеВзаимодействие.ОбменСКонтрагентами

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

#Область КнопкаСоздать

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура УстановитьУсловноеОформление()
	
	СтандартныеПодсистемыСервер.УстановитьУсловноеОформлениеПоляДата(ЭтотОбъект, "СписокДокументыПродажи.Дата", "СписокДокументыПродажиДата");
	
КонецПроцедуры

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

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

		ИспользоватьЗагрузкуНастроек    = Параметры.ИспользоватьЗагрузкуСохраненныхНастроек;
		ЗаполнитьБыстрыйОтборИзНастроек = Ложь;
	Иначе
		ИспользоватьЗагрузкуНастроек    = Истина;
		ЗаполнитьБыстрыйОтборИзНастроек = Истина;
	КонецЕсли;

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

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

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

&НаСервере
Процедура СкладПриИзмененииСервер()
	
	УстановитьОтборыДинамическихСписков();
	ОбновитьГиперссылкуКОформлениюНаСервере();
		
КонецПроцедуры

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

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

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

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

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

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

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

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

#Область Отборы

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

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

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

&НаСервере
Процедура УстановитьОтборПоПериоду()
	
	СписокДокументыПродажи.Параметры.УстановитьЗначениеПараметра("НачалоПериода",
		Период.ДатаНачала);
	СписокДокументыПродажи.Параметры.УстановитьЗначениеПараметра("КонецПериода", 
		?(ЗначениеЗаполнено(Период.ДатаОкончания), Период.ДатаОкончания, КонецДня(Дата(3999, 12, 31))));
	
	// НастройкиДинамическихСписков
	РаботаСЖурналамиДокументов.УстановитьВидимостьГруппыНастройкиОбновленияПоУмолчанию(ЭтотОбъект, "СписокДокументыПродажи");
	// Конец НастройкиДинамическихСписков
	
КонецПроцедуры

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

#Область ГиперссылкаКОформлению

&НаСервере
Функция ОбновитьГиперссылкуКОформлениюНаСервере()
	
	ОбновитьГиперссылкуКОформлению();

КонецФункции

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

&НаКлиентеНаСервереБезКонтекста
//
// Параметры:
// 	АдресХранилища - Строка - адрес данных во временном хранилище
// 	КОформлению - ФорматированнаяСтрока - реквизит формы КОформлению
// 	СмТакжеВРаботеВидимость - Булево - видимость реквизита СмТакжеВРаботе
// 	СмТакжеВРаботеЗначение - Строка - значение реквизита СмТакжеВРаботе
// 		
Процедура ОбновитьГиперссылкуКОформлениюЗавершение(
	Знач АдресХранилища,
	КОформлению,
	СмТакжеВРаботеВидимость, 
	СмТакжеВРаботеЗначение)

	Результат = ПолучитьИзВременногоХранилища(АдресХранилища);

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

	Если Не ЗначениеЗаполнено(Результат.СмТакжеВРаботе) Тогда
		СмТакжеВРаботеВидимость = Ложь;
	Иначе
		СмТакжеВРаботеВидимость = Истина;
		СмТакжеВРаботеЗначение = Результат.СмТакжеВРаботе;
	КонецЕсли;

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

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

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

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

#Область НастройкиДинамическихСписков

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

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

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

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

&НаСервере
Функция ПолучитьИсполняемыеНастройкиКомпоновкиДанных(ИмяСписка)
	
	ИмяЭлемента = РаботаСЖурналамиДокументов.ЗначениеНастройкиСпискаДокументов(ЭтотОбъект, ИмяСписка,
		"ИмяЭлементаСписка");
	ЭлементФормыСписок = Элементы[ИмяЭлемента];
	НастройкиКомпоновкиДанных = ЭлементФормыСписок.ПолучитьИсполняемыеНастройкиКомпоновкиДанных();

	СтруктураВозврата = Новый Структура;
	СтруктураВозврата.Вставить("НастройкиКомпоновкиДанных", НастройкиКомпоновкиДанных);

	СписокПолейСоставногоТипа = РаботаСЖурналамиДокументов.ЗначениеНастройкиСпискаДокументов(ЭтотОбъект,
		ИмяСписка, "СписокПолейСоставногоТипа");

	СтруктураПользовательскихНастроек = РаботаСЖурналамиДокументов.ПроверитьПользовательскиеНастройкиДинамическогоСписка(
		НастройкиКомпоновкиДанных, СписокПолейСоставногоТипа);

	СтруктураВозврата.Вставить("СтруктураПользовательскихНастроек", СтруктураПользовательскихНастроек);
	
	Возврат СтруктураВозврата;
	
КонецФункции

&НаКлиенте
Процедура УстановитьПараметрыОбновленияСписковДокументов(ДанныеУстарели, ДлительностьОбновления = Неопределено)
	
	ИмяНастройки = "СписокДокументовКэшНастроек";
	ИмяСписка = "";
	Для Каждого НастройкаСписокДокументов Из ЭтотОбъект[ИмяНастройки] Цикл
		ИмяСписка = НастройкаСписокДокументов.Ключ;
		РаботаСЖурналамиДокументовКлиент.УстановитьПараметрыОбновленияСпискаДокументов(ЭтотОбъект, ИмяСписка, ДанныеУстарели,
			ДлительностьОбновления);
		ОтображениеГруппыПользовательскихОтборовИНастроек(ИмяСписка);
	КонецЦикла;
	
КонецПроцедуры

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

	Если Не УчитыватьПараметрАвтообновления Тогда

		ТребуетсяОбновлениеСписка = Истина;

	Иначе

		ТребуетсяОбновлениеСписка = РаботаСЖурналамиДокументовКлиент.ЗначениеНастройкиАвтообновленияСпискаДокументов(
			ЭтотОбъект, ИмяСписка);

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

	КонецЕсли;

	Если ТребуетсяОбновлениеСписка Тогда

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

	КонецЕсли;

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

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

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

// Обработка события элемента формы.
// 
// Параметры:
//  Элемент - ПолеФормы
//@skip-check module-unused-method
&НаКлиенте
Процедура СписокДокументовОбработкаСобытияЭлементаФормы(Элемент)

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

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

// Изменяет состав хозяйственных операций и виды документов, оставляя только переданные.
// Также заполняется возможный заголовок формы по хозяйственной операции.
//
// Параметры:
//   ТЗХозОперацииИТипыДокументов - ТаблицаЗначений - см. ОписаниеОперацийИТиповДокументов.
//   ИспользуемыеХозОперации - Неопределено - параметр формы не заполнен.
//                           - Соответствие из КлючИЗначение - используемые хозяйственные операции:
//     * Ключ  - ПеречислениеСсылка.ХозяйственныеОперации - используемая хозяйственная операция;
//     * Значение - Соответствие Из КлючИЗначение - используемые виды документов:
//       ** Ключ     - Строка - полное имя документа, для которого используется текущая хозяйственная операция;
//       ** Значение - Строка - заголовок формы при выборе текущей хозяйственной операции и вида документа.
//
&НаСервере
Процедура ОписаниеОперацийИТиповДокументовПоПараметруОткрытияФормы(ТЗХозОперацииИТипыДокументов)

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

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

					Если Не ЕстьСтрокиОтбора Тогда
						ЕстьСтрокиОтбора = ДанныеХозОперации.Отбор;
					КонецЕсли;
				КонецЕсли;
			КонецЕсли;
		КонецЦикла;

		Если СтрокиКУдалению.Количество() > 0 Тогда
			Для Каждого СтрокаКУдалению Из СтрокиКУдалению Цикл
				ТЗХозОперацииИТипыДокументов.Удалить(СтрокаКУдалению);
			КонецЦикла;

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

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

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

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

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

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

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

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