Условия обслуживания клиентов торговыми представителями / Изменяемые условия обслуживания / Модуль формы

файл

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

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

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

	СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);

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

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

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

&НаКлиенте
Процедура ИзменятьНаименованиеПриИзменении(Элемент)
	
	Элементы.Наименование.Доступность = ИзменятьНаименование;
	
	Если Не ИзменятьНаименование И ЗначениеЗаполнено(Наименование) Тогда
		Наименование = "";
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ИзменятьКуратораПриИзменении(Элемент)
	
	Элементы.Куратор.Доступность = ИзменятьКуратора;
	
	Если Не ИзменятьКуратора И ЗначениеЗаполнено(Куратор) Тогда
		Куратор = Неопределено;
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ИзменятьСоглашениеПриИзменении(Элемент)
	
	Элементы.Соглашение.Доступность = ИзменятьСоглашение;
	
	Если Не ИзменятьСоглашение И ЗначениеЗаполнено(Соглашение) Тогда
		Соглашение = Неопределено;
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ИзменятьТорговогоПредставителяПриИзменении(Элемент)
	
	Элементы.ТорговыйПредставитель.Доступность = ИзменятьТорговогоПредставителя;
	
	Если Не ИзменятьТорговогоПредставителя И ЗначениеЗаполнено(ТорговыйПредставитель) Тогда
		ТорговыйПредставитель = Неопределено;
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ИзменятьКомментарийПриИзменении(Элемент)
	
	Элементы.Комментарий.Доступность = ИзменятьКомментарий;
	
	Если Не ИзменятьКомментарий И ЗначениеЗаполнено(Комментарий) Тогда
		Комментарий = "";
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

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

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

&НаКлиенте
Процедура УстановитьОтметкиВсехДнейНедели(Команда)
	
	Для Каждого ТекущаяСтрока Из ГрафикПосещения Цикл
		
		Если Не ТекущаяСтрока.Посещение Тогда
			ТекущаяСтрока.Посещение = Истина;
		КонецЕсли;
		
	КонецЦикла;
	
КонецПроцедуры

&НаКлиенте
Процедура СнятьОтметкиВсехДнейНедели(Команда)
	
	Для Каждого ТекущаяСтрока Из ГрафикПосещения Цикл
		
		Если ТекущаяСтрока.Посещение Тогда
			ТекущаяСтрока.Посещение = Ложь;
		КонецЕсли;
		
	КонецЦикла;
	
КонецПроцедуры

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

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

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

&НаСервере
Процедура ЗаполнитьГрафик()
	
	Для Каждого ДеньНедели Из Перечисления.ДниНедели Цикл
		НоваяСтрока            = ГрафикПосещения.Добавить();
		НоваяСтрока.ДеньНедели = ДеньНедели;
	КонецЦикла;
	
КонецПроцедуры

&НаСервере
Процедура УстановитьДоступностьПолей()
	
	Элементы.Наименование.Доступность = ИзменятьНаименование;
	Элементы.Куратор.Доступность = ИзменятьКуратора;
	Элементы.Соглашение.Доступность = ИзменятьСоглашение;
	Элементы.ТорговыйПредставитель.Доступность = ИзменятьТорговогоПредставителя;
	Элементы.Комментарий.Доступность = ИзменятьКомментарий;
	Элементы.ГрафикПосещения.Доступность = ИзменятьГрафикПосещения;
	Элементы.НадписьГрафикПосещения.Доступность = ИзменятьГрафикПосещения;
	
КонецПроцедуры

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

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

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