Контрагенты / Форма списка параметрическая / Модуль формы

файл

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

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

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

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

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	// ЭлектронноеВзаимодействие.ОбменСКонтрагентами
	ОбменСКонтрагентамиКлиент.ПриОткрытии(ЭтотОбъект);
	// Конец ЭлектронноеВзаимодействие.ОбменСКонтрагентами
КонецПроцедуры

&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
	
	Если Не ЗавершениеРаботы Тогда
		СохранитьНастройки();
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

	УстановитьОтборПартнеров(ПоказыватьГрупповые);
	ЭтаФорма.Модифицированность = Ложь;

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

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

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

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

&НаКлиенте
Процедура СписокПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	ПартнерыИКонтрагенты.УстановитьОформлениеГоловногоКонтрагентаВСписке(ЭтаФорма);

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

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

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

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

	Элементы.ФормаСоздатьПартнера.Видимость = ВидимостьКомандыСозданияПартнеров;
	
КонецПроцедуры

&НаСервере
Процедура СохранитьНастройки()

	Перем Настройки;
	
	Настройки = Новый Соответствие;
	Настройки.Вставить("ПоказыватьГрупповые",ПоказыватьГрупповые);
	Настройки.Вставить("ПоПартнеру", ПоПартнеру);
	
	ОбщегоНазначения.ХранилищеОбщихНастроекСохранить("Справочники.Контрагенты", КлючНастроек, Настройки);

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

&НаСервере
Процедура ЗагрузитьНастройки()

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

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

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

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

#Область Локализация

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

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

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

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