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

файл

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

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

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

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

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

&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
	
	Для Каждого СтрокаТаблицы Из Партнеры Цикл
		
		Если НЕ ЗначениеЗаполнено(СтрокаТаблицы.Партнер) Тогда
			ТекстСообщения = НСтр("ru='Не заполнено поле Клиент'");
			
			Поле = "Партнеры[%Индекс%].Партнер";
			Поле = СтрЗаменить(Поле, "%Индекс%", партнеры.Индекс(СтрокаТаблицы));
			
			ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения,, Поле);
			Отказ = Истина;
		КонецЕсли;
	КонецЦикла;
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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