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

файл

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

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)

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

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

&НаКлиенте
Процедура ПриОткрытии(Отказ)

	// СтандартныеПодсистемы.РаботаСФайлами
	РаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ);
	// Конец СтандартныеПодсистемы.РаботаСФайлами

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

	Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
		Возврат;
	КонецЕсли;

	ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);

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

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

&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
	
	// Обработчик подсистемы запрета редактирования реквизитов объектов
	ЗапретРедактированияРеквизитовОбъектов.ЗаблокироватьРеквизиты(ЭтаФорма);

	МодификацияКонфигурацииПереопределяемый.ПослеЗаписиНаСервере(ЭтаФорма, ТекущийОбъект, ПараметрыЗаписи);

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

&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)

	МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтаФорма, ПараметрыЗаписи);

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

&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)

	МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтаФорма, Отказ, ТекущийОбъект, ПараметрыЗаписи);

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

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)

	МодификацияКонфигурацииПереопределяемый.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);

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

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

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

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

	Если ЗначениеЗаполнено(Объект.ТипСделки) Тогда
		СформироватьЭтапыИНаименование();
	КонецЕсли;

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

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

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

&НаКлиенте
Процедура ЭтапыСделкиПоПродажеПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)

	СортироватьЭтапы();

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

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура СортироватьЭтапы()

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

	// загрузить упорядоченный список
	Объект.ЭтапыСделкиПоПродаже.Загрузить(Запрос.Выполнить().Выгрузить());

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

&НаСервере
Процедура СформироватьЭтапыИНаименование()

	Объект.ЭтапыСделкиПоПродаже.Очистить();

	Если НЕ Объект.ТипСделки = Перечисления.ТипыСделокСКлиентами.СделкиСРучнымПереходомПоЭтапам
		И НЕ Объект.ТипСделки = Перечисления.ТипыСделокСКлиентами.ПрочиеНепроцессныеСделки Тогда
		
		// для сделок с управлением бизнес-процессом заполнить наименование и набор этапов
		ОписаниеТипа = СделкиСервер.ПолучитьОписаниеТипаСделки(Объект.ТипСделки);
		Если ПустаяСтрока(Объект.Наименование) Тогда
			Объект.Наименование = ОписаниеТипа.Представление;
		КонецЕсли;
		ЭтапыПроцесса = БизнесПроцессы[ОписаниеТипа.Имя].СписокЭтапов();
		Для Каждого ЭтапПроцесса Из ЭтапыПроцесса Цикл
			Этап = Объект.ЭтапыСделкиПоПродаже.Добавить();
			Этап.ЭтапПроцессаПродажи = ЭтапПроцесса;
		КонецЦикла;
		
	КонецЕсли;

	УправлениеДоступностью();

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

&НаСервере
Процедура УправлениеДоступностью()

	Элементы.ГруппаЭтапы.ТолькоПросмотр = 
		(Объект.ТипСделки <> Перечисления.ТипыСделокСКлиентами.СделкиСРучнымПереходомПоЭтапам);
	Элементы.ГруппаЭтапы.Видимость = 
		(Объект.ТипСделки <> Перечисления.ТипыСделокСКлиентами.ПрочиеНепроцессныеСделки);

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

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

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