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

файл

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ФильтрСтатусПриИзменении(Элемент)

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

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

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

&НаКлиенте
Процедура ФильтрОтветственныйПриИзменении(Элемент)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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