Тарифные группы / Форма элемента / Модуль формы

файл

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

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

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

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	// СтандартныеПодсистемы.Свойства
	УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.Свойства
	
КонецПроцедуры

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

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

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

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

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


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

&НаКлиенте
Процедура НаименованиеПриИзменении(Элемент)
	
	Если Не ЗначениеЗаполнено(Объект.НаименованиеПолное) Тогда 
		Объект.НаименованиеПолное = Объект.Наименование;
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ПрименениеТарифныхКоэффициентовПриИзменении(Элемент)
	
	УстановитьВидимостьКолонкиКоэффициент(ЭтаФорма);
	
КонецПроцедуры

&НаКлиенте
Процедура ВидТарифнойСеткиПриИзменении(Элемент)
	ВидТарифнойСетки = Объект.ВидТарифнойСетки;
	УстановитьЗаголовки();
КонецПроцедуры

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


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

// СтандартныеПодсистемы.Свойства
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
	УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
// Конец СтандартныеПодсистемы.Свойства

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

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

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

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

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


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

// СтандартныеПодсистемы.Свойства 
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
	УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры

&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
	УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
	УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
// Конец СтандартныеПодсистемы.Свойства

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьВидимостьКолонкиКоэффициент(Форма)
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Форма.Элементы, "РазрядыТарифнойСеткиРазрядныйКоэффициент", "Видимость", Форма.Объект.ПрименениеТарифныхКоэффициентов);
	
КонецПроцедуры

&НаСервере
Процедура УстановитьВидимостьНачисления()
	
	ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Начисление", "Видимость", Объект.ВидТарифнойСетки = Перечисления.ВидыТарифныхСеток.Надбавка);
	
КонецПроцедуры

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

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

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

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

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

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