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