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