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