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