Первичный документ / Форма выбора / Модуль формы

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

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

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

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

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

&НаКлиенте
Процедура ОтборТипПервичногоДокументаПриИзменении(Элемент)
	
	ОтборТипПервичногоДокументаПриИзмененииСервер()
	
КонецПроцедуры

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

&НаКлиенте
Процедура ОтборНомерПриИзменении(Элемент)

	ОтборыСписковКлиентСервер.ИзменитьЭлементОтбораСписка(
		Список, 
		"Номер", 
		Номер, 
		ЗначениеЗаполнено(Номер),
		ВидСравненияКомпоновкиданных.Содержит);

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

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

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

&НаКлиенте
Процедура ОтборНомерВходящегоДокументаПриИзменении(Элемент)

	ОтборыСписковКлиентСервер.ИзменитьЭлементОтбораСписка(
		Список, 
		"НомерВходящегоДокумента", 
		НомерВходящегоДокумента, 
		ЗначениеЗаполнено(НомерВходящегоДокумента),
		ВидСравненияКомпоновкиданных.Содержит);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура УстановитьПараметрыВыбораПартнера()
	
	МассивПараметров = Новый Массив;

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

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

	Элементы.ОтборПартнер.ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметров);
	
КонецПроцедуры

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

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

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