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