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

файл

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

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

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

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

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

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

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

	// СтандартныеПодсистемы.УправлениеДоступом
	УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
	// Конец СтандартныеПодсистемы.УправлениеДоступом
	
	ПрочитатьГрафикПосещенияСервер();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	ПродажиКлиент.НачалоВыбораСоглашенияСКлиентом(ПараметрыВыбораСоглашения, СтандартнаяОбработка);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервереБезКонтекста
Функция ТекущаяДатаСервера()
	
	Возврат ТекущаяДатаСеанса();
	
КонецФункции

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

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