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

файл

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

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

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

	КоммерческиеПредложенияДокументыКлиентПереопределяемый.ОбработкаОповещенияФормСписка(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
	
КонецПроцедуры

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

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

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

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

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

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

&НаКлиенте
Процедура ОтборСостояниеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	МножественныйОтборСпискаНачалоВыбора(ЭтотОбъект,
	                                                                            Элемент,
	                                                                            СостояниеОтбор,
	                                                                            Тип(ИмяТипаСостояние),
	                                                                            НСтр("ru = 'Выбранные состояния'"));
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// Обработчик события начала выбора быстрого множественного отбора в списке.
//
// Параметры:
//  Форма              - ФормаКлиентскогоПриложения - Форма, в которой выполняется действие.
//  Элемент            - ЭлементыФормы - элемент, для которого обрабатывается событие.
//  Значения           - СписокЗначений - содержит уже выбранные значения.
//  ТипПеречисления    - Тип - тип перечисления, по которому происходит отбор.
//  Заголовок - Строка - заголовок формы выбора.
//
&НаКлиенте
Процедура МножественныйОтборСпискаНачалоВыбора(Форма, Элемент, Значения, ТипПеречисления, Заголовок)

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

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

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

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

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

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

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

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

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