#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Ключ.Пустая() Тогда
РаботаВБюджетномУчреждении = ПолучитьФункциональнуюОпцию("РаботаВБюджетномУчреждении");
ИспользоватьСтатьиФинансирования = ПолучитьФункциональнуюОпцию("ИспользоватьСтатьиФинансированияЗарплата");
ЗаполнитьКатегорииДоходовНДФЛ();
ВыполнитьЧтениеНаСервере();
Если ЗначениеЗаполнено(Параметры.ЗначениеКопирования) Тогда
СкопироватьСпискиЗависимыхВидовРасчетаПриКопировании(Параметры.ЗначениеКопирования);
Иначе
ЗаполнитьСвязиНачисления();
ЗаполнитьСвойстваПоКатегории(ЭтаФорма);
КонецЕсли;
ОблагаетсяНДФЛ = Число(ЗначениеЗаполнено(Объект.КодДоходаНДФЛ));
УстановитьДоступностьКодаДоходаНДФЛ(ЭтаФорма);
ВключаетсяВРасходыПоСт255НКРФ = Число(ЗначениеЗаполнено(Объект.ВидНачисленияДляНУ));
УстановитьДоступностьВидаНачисленияДляНУ(ЭтаФорма);
Объект.СтратегияОтраженияВУчете = Перечисления.СтратегииОтраженияВУчетеНачисленийУдержаний.ПоДаннымОСотрудникеИЕгоПлановыхНачислениях;
УстановитьДоступностьКатегорииСтатистическогоНаблюдения57Т(ЭтотОбъект);
УстановитьВидимостьСпособаОпределенияМесяцаДоходаВНалоговомУчете(ЭтотОбъект);
УстановитьВидимостьПредупрежденияОСуществующихНачислениях();
УстановитьВидимостьПолейЛьгот(ЭтотОбъект);
УстановитьВидимостьПолейДенежногоДовольствияСодержания(ЭтотОбъект);
УстановитьВидимостьПризнакаПоддерживаетНесколькоПлановыхНачислений();
УстановитьВидимостьПоляФОТНеРедактируется();
УстановитьДоступностьПоляВыполнятьВДокументахРазовыхНачислений(ЭтотОбъект);
КонецЕсли;
Элементы.ВедущиеВидыРасчетаВидРасчета.ОграничениеТипа = Новый ОписаниеТипов("ПланВидовРасчетаСсылка.Начисления");
Элементы.ПостоянныеПоказатели.ОтборСтрок = Новый ФиксированнаяСтруктура("МожетЗапрашиватьсяПриВводе", Истина);
Элементы.СписокЗависимыеНачисления.ОтборСтрок = Новый ФиксированнаяСтруктура("ДоплатаДоСреднего", Ложь);
ОтражениеЗарплатыВБухучете.УстановитьСписокВыбораОтношениеКЕНВД(Элементы, "ОтношениеКЕНВД");
ДатаИзмененийК353ФЗ = ЗарплатаКадрыПовтИсп.ДатаВступленияВСилуНА("ИзмененияК353ФЗ");
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ВидДоходаИсполнительногоПроизводства",
"Заголовок",
СтрШаблон(НСтр("ru = 'Вид дохода до %1'"), Формат(ДатаИзмененийК353ФЗ,"ДЛФ=DD")));
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ВидДоходаИсполнительногоПроизводства2022",
"Заголовок",
СтрШаблон(НСтр("ru = 'Вид дохода с %1'"), Формат(ДатаИзмененийК353ФЗ,"ДЛФ=DD")));
ВидыДоходовИсполнительногоПроизводстваКлиентСервер.НастроитьПолеВидДоходаДляВыплатыЗарплаты(ЭтотОбъект,ДатаИзмененийК353ФЗ - 1);
ВидыДоходовИсполнительногоПроизводстваКлиентСервер.НастроитьПолеВидДоходаДляВыплатыЗарплаты(ЭтотОбъект,ДатаИзмененийК353ФЗ,"ВидДоходаИсполнительногоПроизводства2022");
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ЛьготыСотрудников") Тогда
Модуль = ОбщегоНазначения.ОбщийМодуль("ЛьготыСотрудников");
Модуль.УстановитьВидимостьНастроекСамообслуживанияЛьготы(ЭтотОбъект);
КонецЕсли;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
УправлениеСвойствами.ПриСозданииНаСервере(ЭтотОбъект, ДополнительныеПараметры);
ВидимостьВидДоходаСтраховыеВзносыИнфо(ЭтаФорма);
УстановитьВидимостьКатегорииСтатистическогоНаблюденияЗПОбразование();
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
УправлениеСвойствами.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
РаботаВБюджетномУчреждении = ПолучитьФункциональнуюОпцию("РаботаВБюджетномУчреждении");
ИспользоватьСтатьиФинансирования = ПолучитьФункциональнуюОпцию("ИспользоватьСтатьиФинансированияЗарплата");
ЗаполнитьКатегорииДоходовНДФЛ();
ВыполнитьЧтениеНаСервере(ТекущийОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтотОбъект, ИмяСобытия, Параметр) Тогда
ОбновитьЭлементыДополнительныхРеквизитов();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
Если ИмяСобытия = "Запись_ПоказателиРасчетаЗарплаты" И Источник = ЭтотОбъект Тогда
Отбор = Новый Структура("Показатель", Параметр);
Если Объект.Показатели.НайтиСтроки(Отбор).Количество() > 0 Тогда
ИзмененыПоказателиНачисления = Истина;
КонецЕсли;
КонецЕсли;
Если ИмяСобытия = "ИзмененыВидыДоходаСтраховыхВзносов" И Источник = ЭтотОбъект Тогда
ЗаполнитьЗначенияСвойств(Объект, Параметр);
ВидимостьВидДоходаСтраховыеВзносыИнфо(ЭтаФорма);
КонецЕсли;
Если ИмяСобытия = "ИзмененКодДоходаНДФЛ" И Источник = Объект.КодДоходаНДФЛ Тогда
ЗаполнитьКатегорииДоходовНДФЛ();
УстановитьСвойстваКатегорииДоходаНДФЛ(ЭтаФорма);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
ТекущийОбъект = РеквизитФормыВЗначение("Объект");
ЗаполнитьПризнакОпределяющихПоказателей(ТекущийОбъект);
Если Не ТекущийОбъект.ПроверитьЗаполнение() Тогда
Отказ = Истина;
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба") Тогда
Модуль = ОбщегоНазначения.ОбщийМодуль("ГосударственнаяСлужба");
Модуль.ПроверитьЗаписьНачисленияВФорме(ЭтаФорма, Отказ);
КонецЕсли;
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(ПроверяемыеРеквизиты, "Объект");
Если Элементы.НалоговыйИБухгалтерскийУчет.Видимость Тогда
Если ОблагаетсяНДФЛ = 1 И Не ЗначениеЗаполнено(Объект.КодДоходаНДФЛ) Тогда
ОбщегоНазначения.СообщитьПользователю(НСтр("ru = 'Код дохода НДФЛ не заполнен.'"), , , "Объект.КодДоходаНДФЛ" , Отказ);
КонецЕсли;
Если ОблагаетсяНДФЛ = 1 И Не ЗначениеЗаполнено(Объект.КатегорияДохода) Тогда
ОбщегоНазначения.СообщитьПользователю(НСтр("ru = 'Категория дохода НДФЛ не заполнена.'"), , , "Объект.КатегорияДохода" , Отказ);
КонецЕсли;
Если ВключаетсяВРасходыПоСт255НКРФ = 1 И Не ЗначениеЗаполнено(Объект.ВидНачисленияДляНУ) Тогда
ОбщегоНазначения.СообщитьПользователю(НСтр("ru = 'Вид расхода по ст. 255 НК РФ не заполнен.'"), , , "Объект.ВидНачисленияДляНУ" , Отказ);
КонецЕсли;
КонецЕсли;
Если Объект.ВидДоходаИсполнительногоПроизводства = Перечисления.ВидыДоходовИсполнительногоПроизводства.КомпенсацииНеоблагаемые Тогда
Удержания = ОбщегоНазначения.ВыгрузитьКолонку(СписокЗависимыеУдержания, "ВидРасчета");
КатегорииУдержаний = ОбщегоНазначения.ЗначениеРеквизитаОбъектов(Удержания, "КатегорияУдержания");
ТекстСообщения = НСтр("ru = 'Начисление с видом дохода по исполнительному производству
|""Доходы, на которые не может быть обращено взыскание (без оговорок)""
|не может входить в расчетную базу удержаний по исполнительным листам.'");
Для Каждого СтрокаУдержание Из СписокЗависимыеУдержания Цикл
КатегорияУдержания = КатегорииУдержаний[СтрокаУдержание.ВидРасчета];
Если КатегорияУдержания = Перечисления.КатегорииУдержаний.ИсполнительныйЛист Тогда
ОбщегоНазначения.СообщитьПользователю(
ТекстСообщения,
,
"СписокЗависимыеУдержания[" + СписокЗависимыеУдержания.Индекс(СтрокаУдержание) + "].ВидРасчета",
,
Отказ);
КонецЕсли;
КонецЦикла;
КонецЕсли;
УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
Оповещение = Новый ОписаниеОповещения("ЗаписатьИЗакрытьНаКлиенте", ЭтотОбъект);
ОбщегоНазначенияКлиент.ПоказатьПодтверждениеЗакрытияФормы(Оповещение, Отказ, ЗавершениеРаботы);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
Если Не ПараметрыЗаписи.Свойство("ПроверкаПередЗаписьюВыполнена") Тогда
Отказ = Истина;
ЗаписатьНаКлиенте(Ложь);
Возврат;
КонецЕсли;
Объект.МесяцыНачисления.Очистить();
Для НомерМесяца = 1 По 12 Цикл
Если ЭтаФорма["НачисляетсяВМесяце" + Формат(НомерМесяца, "ЧЦ=2; ЧВН=")] = Истина Тогда
Объект.МесяцыНачисления.Добавить().Месяц = НомерМесяца;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
СсылкаТекущего = ТекущийОбъект.Ссылка;
Если ТекущийОбъект.Ссылка.Пустая() Тогда
СсылкаТекущего = ПланыВидовРасчета.Начисления.ПолучитьСсылку();
ТекущийОбъект.УстановитьСсылкуНового(СсылкаТекущего);
КонецЕсли;
ЗаписатьНастройкиСреднегоЗаработка(ТекущийОбъект);
ТекущийОбъект.ИспользоватьОперативныеПоказателиВЦеломЗаМесяц = ИспользоватьОперативныеПоказателиВЦеломЗаМесяцЧисло;
УстановитьКатегориюСтатистическогоНаблюдения57Т(ЭтаФорма);
ПакетВидовРасчета = Новый Соответствие;
ПакетВидовРасчета.Вставить(СсылкаТекущего, ТекущийОбъект);
ДополнительныеНачисленияДолейРКСН = РасчетЗарплатыРасширенный.ДополнительныеНачисленияОсновныхВидовРасчета(СсылкаТекущего);
ЗаполнитьЗависимыеВидыРасчетовДляЗаписи(ПакетВидовРасчета, СсылкаТекущего, СписокРассчитываемыхПосле, "ВедущиеВидыРасчета", ,ДополнительныеНачисленияДолейРКСН);
ЗаполнитьЗависимыеВидыРасчетовДляЗаписи(ПакетВидовРасчета, СсылкаТекущего, СписокПриоритетНиже, "ВытесняющиеВидыРасчета");
ЗаполнитьЗависимыеВидыРасчетовДляЗаписи(ПакетВидовРасчета, СсылкаТекущего, СписокЗависимыеНачисления, "БазовыеВидыРасчета", ,ДополнительныеНачисленияДолейРКСН);
Для Каждого КлючИЗначение Из ПакетВидовРасчета Цикл
КлючИЗначение.Значение.ВедущиеВидыРасчета.Очистить();
КонецЦикла;
РасчетЗарплатыРасширенный.ДозаполнитьВидыРасчета(ПакетВидовРасчета);
ПакетВидовРасчета.Удалить(СсылкаТекущего);
ЗаполнитьЗависимыеВидыРасчетовДляЗаписи(ПакетВидовРасчета, СсылкаТекущего, СписокЗависимыеУдержания, "БазовыеВидыРасчета", Истина , ДополнительныеНачисленияДолейРКСН);
РасчетЗарплатыРасширенный.ЗаписатьПакетВидовРасчета(ПакетВидовРасчета, Ложь);
ЗаполнитьПризнакОпределяющихПоказателей(ТекущийОбъект);
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба") Тогда
Модуль = ОбщегоНазначения.ОбщийМодуль("ГосударственнаяСлужба");
Модуль.ЗаписатьДополнительныеСвойстваНачисления(ЭтаФорма, СсылкаТекущего);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.РеестрГосслужащих") Тогда
Модуль = ОбщегоНазначения.ОбщийМодуль("РеестрГосслужащих");
Модуль.ЗаписатьДополнительныеСвойстваНачисления(ЭтаФорма, СсылкаТекущего);
КонецЕсли;
УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект);
ЗаписатьВидыВремени(ТекущийОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
Оповестить("Запись_Начисление", ПараметрыЗаписи, Объект.Ссылка);
ОбновитьИнтерфейс();
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
ВыполнитьЧтениеНаСервере(ТекущийОбъект);
УстановитьВидимостьПредупрежденияОСуществующихНачислениях();
КонецПроцедуры
&НаСервере
Процедура ВыполнитьЧтениеНаСервере(ТекущийОбъект = Неопределено)
КонтролируемыеРеквизитыРасчетаСреднегоЗаработкаСоответствие = КонтролируемыеРеквизитыРасчетаСреднегоЗаработкаСоответствие();
КонтролируемыеРеквизитыРасчетаСреднегоЗаработка = Новый ФиксированноеСоответствие(КонтролируемыеРеквизитыРасчетаСреднегоЗаработкаСоответствие);
ПрочитатьНастройкиСреднегоЗаработка(ТекущийОбъект);
Если ТекущийОбъект = Неопределено Тогда
ТекущийОбъект = Объект;
КонецЕсли;
ОблагаетсяНДФЛ = Число(ЗначениеЗаполнено(ТекущийОбъект.КодДоходаНДФЛ));
ВключаетсяВРасходыПоСт255НКРФ = Число(ЗначениеЗаполнено(ТекущийОбъект.ВидНачисленияДляНУ));
ДобавляемыеНачисленияПриоритетВыше = Новый ФиксированныйМассив(Новый Массив);
ДобавляемыеНачисленияПриоритетНиже = Новый ФиксированныйМассив(Новый Массив);
УдаляемыеНачисленияПриоритетВыше = Новый ФиксированныйМассив(Новый Массив);
УдаляемыеНачисленияПриоритетНиже = Новый ФиксированныйМассив(Новый Массив);
СведенияОПоказателях = ЗарплатаКадрыРасширенный.СведенияОПоказателяхРасчетаЗарплаты(
ОбщегоНазначения.ВыгрузитьКолонку(ТекущийОбъект.Показатели, "Показатель"));
ЗарплатаКадрыРасширенныйКлиентСервер.ЗаполнитьСписокОпределяющихПоказателей(СписокОпределяющихПоказателей, ТекущийОбъект.Показатели, СведенияОПоказателях);
ЗарплатаКадрыРасширенныйКлиентСервер.ЗаполнитьПризнакПоказателейМожетЗапрашиватьсяПриВводе(ЭтаФорма, СведенияОПоказателях);
ЕстьПоказателиУчетаВремени = РасчетЗарплатыРасширенный.ЕстьПоказателиВКоллекции(Объект.Показатели, Справочники.ПоказателиРасчетаЗарплаты.ПоказателиУчетаВремени());
ЕстьПоказательРасчетнаяБаза = РасчетЗарплатыРасширенный.ЕстьПоказательВКоллекции(ТекущийОбъект.Показатели, "РасчетнаяБаза");
ЕстьПоказательСдельныйЗаработок = РасчетЗарплатыРасширенный.ЕстьПоказательВКоллекции(ТекущийОбъект.Показатели, "СдельныйЗаработок");
ЕстьОперативныеПоказатели = РасчетЗарплатыРасширенный.ЕстьПоказателиВКоллекции(Объект.Показатели, Справочники.ПоказателиРасчетаЗарплаты.ОперативныеПоказатели());
УстановитьДоступностьВариантаИспользованияОперативныхПоказателей(ЭтаФорма);
ЕстьПоказательСтоимостьДняЧасаСУчетомРазовыхНачислений = РасчетЗарплатыРасширенный.ЕстьПоказательВКоллекции(ТекущийОбъект.Показатели, "СтоимостьДняЧасаСУчетомРазовыхНачислений");
РасчетЗарплатыРасширенный.ЗаполнитьСписокЗависимыхВидовРасчета(ТекущийОбъект.Ссылка, СписокРассчитываемыхПосле, "ВедущиеВидыРасчета");
РасчетЗарплатыРасширенный.ЗаполнитьСписокЗависимыхВидовРасчета(ТекущийОбъект.Ссылка, СписокПриоритетНиже, "ВытесняющиеВидыРасчета");
РасчетЗарплатыРасширенный.ЗаполнитьСписокЗависимыхВидовРасчета(ТекущийОбъект.Ссылка, СписокЗависимыеНачисления, "БазовыеВидыРасчета");
РасчетЗарплатыРасширенный.ЗаполнитьСписокЗависимыхВидовРасчета(ТекущийОбъект.Ссылка, СписокЗависимыеУдержания, "БазовыеВидыРасчета", Истина);
Для НомерМесяца = 1 По 12 Цикл
ЭтаФорма["НачисляетсяВМесяце" + Формат(НомерМесяца, "ЧЦ=2; ЧВН=")] = Ложь;
КонецЦикла;
Для Каждого СтрокаМесяцев Из ТекущийОбъект.МесяцыНачисления Цикл
ЭтаФорма["НачисляетсяВМесяце" + Формат(СтрокаМесяцев.Месяц, "ЧЦ=2; ЧВН=")] = Истина;
КонецЦикла;
УстановитьПризнакРассчитывается();
РассчитыватьРезультат = ?(Объект.Рассчитывается, 0, 1);
ИспользоватьОперативныеПоказателиВЦеломЗаМесяцЧисло = ТекущийОбъект.ИспользоватьОперативныеПоказателиВЦеломЗаМесяц;
СвойстваПоКатегориям = Новый ФиксированноеСоответствие(ПланыВидовРасчета.Начисления.СвойстваНачисленийПоКатегориям());
ИзменитьСвойстваНачисленияОплачиваемогоОтпускаЧАЭС(СвойстваПоКатегориям, ТекущийОбъект.КатегорияНачисленияИлиНеоплаченногоВремени, ТекущийОбъект.ВидОтпуска);
Если ЗначениеЗаполнено(Объект.ОсновнойВидРасчета) Тогда
КатегорияОсновногоВидаРасчета = КатегорияНачисленияОсновногоВидаРасчета(Объект.ОсновнойВидРасчета);
КонецЕсли;
ИзменитьСвойстваПоКатегорииОсновногоВидаРасчета(СвойстваПоКатегориям, ТекущийОбъект.КатегорияНачисленияИлиНеоплаченногоВремени);
ЗаполнитьСведенияОКатегориях();
КатегорииСоставФОТ = Новый ФиксированныйМассив(КадровыйУчетРасширенный.ПараметрыВыбораКатегорииНачислений());
ПерестроитьФормуПоКатегории(ЭтаФорма);
УстановитьИнформациюПоСпособуНачисления(ЭтаФорма);
УстановитьДоступностьКоличестваМесяцевБазовогоПериода(ЭтаФорма);
УстановитьДоступностьКоличестваМесяцевБазовогоПериодаПремии(ЭтаФорма);
УстановитьДоступностьРасчетаБазы(ЭтаФорма);
УстановитьДоступностьМесяцевНачисления(ЭтаФорма);
УстановитьСписокВыбораПериодаРасчетаБазовыхНачислений(ЭтаФорма, Ложь);
УстановитьИнформационныйТекстСписковВытеснения(ЭтаФорма);
ЗарплатаКадрыРасширенныйКлиентСервер.ЗаполнитьПризнакПоказателейМожетЗапрашиватьсяПриВводе(ЭтаФорма, СведенияОПоказателях);
УстановитьСвойстваПериодаРасчетаСреднегоЗаработка(ЭтаФорма);
УстановитьВидимостьПредупрежденияОСуществующихПоВидуВремениНачислениях();
УстановитьДоступностьДополнительныхВидовВремени(ЭтаФорма);
УстановитьВидимостьПолейЛьгот(ЭтотОбъект);
УстановитьСтраницуВыбораПериодаПремииДляСреднегоЗаработка(ЭтаФорма);
УстановитьДоступностьКоличестваМесяцевПериодаПремии(ЭтаФорма);
УстановитьДоступностьВыбораПериодаПремииДляСреднегоЗаработка(ЭтаФорма);
УстановитьДоступностьВключатьВФОТ(ЭтаФорма);
УстановитьВидимостьПризнакаПоддерживаетНесколькоПлановыхНачислений();
ЗаполнитьПодсказкуВариантаИспользованияОперативныхПоказателей(ЭтаФорма);
УстановитьВидимостьСтратегияОтраженияВСреднемЗаработке(ЭтаФорма);
УстановитьВидимостьНастроекСреднегоЗаработка(ЭтаФорма);
ОтражениеЗарплатыВБухучетеКлиентСерверРасширенный.УстановитьСтраницуНастройкиБухучетаНачислений(ЭтаФорма);
УстановитьДоступностьПериодаОпределенияЗначенийПоказателей(ЭтаФорма);
УстановитьПредставлениеПериодаОпределенияЗначенийПоказателей(ЭтаФорма);
УстановитьЗаголовокПериодаОпределенияЗначенийПоказателей();
УстановитьВидимостьСпособаРасчетовСФизическимиЛицами();
УстановитьДоступностьПоляВыполнятьВДокументахРазовыхНачислений(ЭтотОбъект);
УстановитьВидимостьНеУчитыватьПриОплатеБольничногоЗаСчетРаботодателя();
УстановитьВидимостьРасчетТарифнойСтавки(ЭтотОбъект);
ВключаетсяВРасходыПоСт255НКРФ = Число(ЗначениеЗаполнено(ТекущийОбъект.ВидНачисленияДляНУ));
УстановитьДоступностьВидаНачисленияДляНУ(ЭтаФорма);
УстановитьДоступностьКатегорииСтатистическогоНаблюдения57Т(ЭтаФорма);
БылаКатегория = ТекущийОбъект.КатегорияНачисленияИлиНеоплаченногоВремени;
БылоОтношениеКЕНВД = ТекущийОбъект.ОтношениеКЕНВД;
БылаСтатьяРасходов = ТекущийОбъект.СтатьяРасходов;
БылВидВремени = ТекущийОбъект.ВидВремени;
БылВидОтпуска = ТекущийОбъект.ВидОтпуска;
БылаСтатьяФинансирования = ТекущийОбъект.СтатьяФинансирования;
БылСпособОтраженияЗарплатыВБухучете = ТекущийОбъект.СпособОтраженияЗарплатыВБухучете;
БылоОбозначениеВТабелеУчетаРабочегоВремени = ТекущийОбъект.ОбозначениеВТабелеУчетаРабочегоВремени;
УстановитьЗапрашиваемыеПоказателиЛьгот(ЭтотОбъект);
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба") Тогда
Модуль = ОбщегоНазначения.ОбщийМодуль("ГосударственнаяСлужба");
Модуль.ДополнитьФормуПланаВидовРасчетаНачисления(ЭтаФорма);
Модуль.ПрочитатьДополнительныеДанныеНачисления(ЭтаФорма);
УстановитьВидимостьПолейДенежногоДовольствияСодержания(ЭтотОбъект);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.РеестрГосслужащих") Тогда
Модуль = ОбщегоНазначения.ОбщийМодуль("РеестрГосслужащих");
Модуль.ДополнитьФормуПланаВидовРасчетаНачисления(ЭтаФорма);
Модуль.ПрочитатьДополнительныеДанныеНачисления(ЭтаФорма);
КонецЕсли;
УстановитьОтображениеНадписиПроверкаСвязейНачислений();
УстановитьТекстНадписиБазовогоПериода(ЭтотОбъект, ТекущаяДатаСеанса());
УстановитьТекстПодсказкиБазовогоПериода(ЭтотОбъект);
ЗаполнитьДополнительныеВидыВремени();
КонтролируемыеРеквизитыРасчетаСреднегоЗаработкаСоответствие = Новый Соответствие(КонтролируемыеРеквизитыРасчетаСреднегоЗаработка);
КонтролируемыеРеквизитыРасчетаСреднегоЗаработкаСоответствие["Объект.ПериодРасчетаБазовыхНачислений"] = Объект.ПериодРасчетаБазовыхНачислений;
КонтролируемыеРеквизитыРасчетаСреднегоЗаработкаСоответствие["Объект.КоличествоМесяцевБазовогоПериода"] = Объект.КоличествоМесяцевБазовогоПериода;
КонтролируемыеРеквизитыРасчетаСреднегоЗаработкаСоответствие["Объект.СдвигБазовогоПериода"] = Объект.СдвигБазовогоПериода;
КонтролируемыеРеквизитыРасчетаСреднегоЗаработкаСоответствие["Объект.СтратегияОтраженияВСреднемЗаработке"] = Объект.СтратегияОтраженияВСреднемЗаработке;
КонтролируемыеРеквизитыРасчетаСреднегоЗаработкаСоответствие["Объект.УчитыватьВесьЗаработок"] =
Объект.УчитыватьВесьЗаработок;
КонтролируемыеРеквизитыРасчетаСреднегоЗаработка = Новый ФиксированноеСоответствие(КонтролируемыеРеквизитыРасчетаСреднегоЗаработкаСоответствие);
УстановитьВидимостьПоляФОТНеРедактируется();
УстановитьСвойстваКатегорииДоходаНДФЛ(ЭтаФорма);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ПостоянныеПоказателиЗадаетБухучет",
"Видимость",
ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ОбразовательныеУчреждения"));
УстановитьВидимостьОсновногоВидаРасчета();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура НаименованиеПриИзменении(Элемент)
УстановитьИнформационныйТекстСписковВытеснения(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура КатегорияНачисленияИлиНеоплаченногоВремениПриИзменении(Элемент)
Если БылаКатегория = Объект.КатегорияНачисленияИлиНеоплаченногоВремени Тогда
Возврат;
КонецЕсли;
ОбработатьИзменениеКатегорииНачисленияНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура КодДоходаСтраховыеВзносыПриИзменении(Элемент)
УстановитьСвойстваЭлементовСреднегоЗаработкаФСС(ЭтаФорма);
Если Не Элементы.ВидДоходаСтраховыеВзносыИнфо.Видимость Тогда
Объект.КодДоходаСтраховыеВзносы = Объект.КодДоходаСтраховыеВзносы2017;
КонецЕсли;
ВидимостьВидДоходаСтраховыеВзносыИнфо(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура СпособВыполненияНачисленияПриИзменении(Элемент)
СпособВыполненияНачисленияПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ВидДокументаНачисленияПриИзменении(Элемент)
ВидДокументаНачисленияПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ИспользоватьОперативныеПоказателиВЦеломЗаМесяцЧислоПриИзменении(Элемент)
ЗаполнитьПодсказкуВариантаИспользованияОперативныхПоказателей(ЭтаФорма);
БылПризнакНачисляетсяВЦеломЗаМесяц = Объект.НачисляетсяВЦеломЗаМесяц;
ЗаполнитьПризнакНачисляетсяВЦеломЗаМесяц(ЭтаФорма);
Если БылПризнакНачисляетсяВЦеломЗаМесяц <> Объект.НачисляетсяВЦеломЗаМесяц Тогда
ЗаполнитьСвязиНачисления(Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВидОтпускаПриИзменении(Элемент)
Если БылВидОтпуска = Объект.ВидОтпуска Тогда
Возврат;
КонецЕсли;
ОбработатьИзменениеВидаОтпускаНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ВидОтпускаОткрытие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПараметрыОткрытия = Новый Структура("Ключ, ДополнительныеПараметры", Объект.ВидОтпуска, Новый Структура("СоздаватьНачисления", Ложь));
ОткрытьФорму("Справочник.ВидыОтпусков.ФормаОбъекта", ПараметрыОткрытия);
КонецПроцедуры
&НаКлиенте
Процедура ПорядокОпределенияРасчетногоПериодаСреднегоЗаработкаПриИзменении(Элемент)
УстановитьСвойстваПериодаРасчетаСреднегоЗаработка(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ВидВремениОтработанногоПриИзменении(Элемент)
ПриИзмененииВидаВремени();
КонецПроцедуры
&НаКлиенте
Процедура ВидВремениНеОтработанногоПриИзменении(Элемент)
ПриИзмененииВидаВремени();
КонецПроцедуры
&НаКлиенте
Процедура ВидыВремениНажатие(Элемент)
ПараметрыФормы = Новый Структура(
"ВыбранныеВидыВремени,
|ИсключаемыеВидыВремени");
ПараметрыФормы.ВыбранныеВидыВремени = Новый Массив;
Для Каждого Строка Из ДополнительныеВидыВремени Цикл
ПараметрыФормы.ВыбранныеВидыВремени.Добавить(Строка.ВидВремени);
КонецЦикла;
ПараметрыФормы.ИсключаемыеВидыВремени = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Объект.ОбозначениеВТабелеУчетаРабочегоВремени);
ОписаниеОповещения = Новый ОписаниеОповещения("ВидыВремениПослеВыбора", ЭтотОбъект);
ОткрытьФорму("ПланВидовРасчета.Начисления.Форма.ФормаВыбораВидовВремени", ПараметрыФормы, ЭтаФорма, , , , ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ВидыВремениПослеВыбора(ВыбранныеВидыВремени, ДополнительныеПараметры) Экспорт
Если ВыбранныеВидыВремени = Неопределено Тогда
Возврат;
КонецЕсли;
ДополнительныеВидыВремени.Очистить();
Для Каждого ВидВремени Из ВыбранныеВидыВремени Цикл
Если ВидВремени = Объект.ОбозначениеВТабелеУчетаРабочегоВремени Тогда
Продолжить;
КонецЕсли;
ДополнительныеВидыВремени.Добавить().ВидВремени = ВидВремени;
КонецЦикла;
Модифицированность = Истина;
ОбновитьНадписьДополнительныхВидовВремени(ЭтаФорма);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьНадписьДополнительныхВидовВремени(Форма)
Представление = "";
ВидовВремени = 0;
Для Каждого Строка Из Форма.ДополнительныеВидыВремени Цикл
Если ВидовВремени = 2 Тогда
Прервать;
КонецЕсли;
Представление = Представление + Строка(Строка.ВидВремени) + ", ";
ВидовВремени = ВидовВремени + 1;
КонецЦикла;
СтроковыеФункцииКлиентСервер.УдалитьПоследнийСимволВСтроке(Представление, 2);
Если ВидовВремени < Форма.ДополнительныеВидыВремени.Количество() Тогда
Представление = Представление + " " + СтрШаблон(НСтр("ru = 'и еще %1'"), Форма.ДополнительныеВидыВремени.Количество() - ВидовВремени);
КонецЕсли;
Если ПустаяСтрока(Представление) Тогда
Представление = НСтр("ru = '<Не выбраны>'");
КонецЕсли;
Форма.Элементы.ВидыВремени.Заголовок = СтрШаблон(НСтр("ru = 'Дополнительные виды времени (%1)'"), Представление);
КонецПроцедуры
&НаКлиенте
Процедура СтратегияОтраженияВУчетеПриИзменении(Элемент)
ОтражениеЗарплатыВБухучетеКлиентСерверРасширенный.ОбработатьИзменениеСтратегииОтраженияВБухучетеНачисления(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ВидНачисленияДляНУПриИзменении(Элемент)
ОтражениеЗарплатыВБухучетеКлиентСерверРасширенный.ОбновитьПредставлениеВидаНачисленияПоНКРФ(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ОблагаетсяНДФЛПриИзменении(Элемент)
УстановитьДоступностьКодаДоходаНДФЛ(ЭтаФорма);
УстановитьСвойстваКатегорииДоходаНДФЛ(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура КодДоходаНДФЛПриИзменении(Элемент)
УстановитьСвойстваКатегорииДоходаНДФЛ(ЭтаФорма);
Объект.СтрокаРаздела2Расчета6НДФЛ = УчетНДФЛКлиентПовтИсп.СтрокаРаздела2Расчета6НДФЛПоКодуДохода(Объект.КодДоходаНДФЛ);
КонецПроцедуры
&НаКлиенте
Процедура КатегорияДоходаПриИзменении(Элемент)
УстановитьВидимостьСпособаОпределенияМесяцаДоходаВНалоговомУчете(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ВключаетсяВРасходыПоСт255НКРФПриИзменении(Элемент)
УстановитьДоступностьВидаНачисленияДляНУ(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура РассчитыватьРезультатПриИзменении(Элемент)
Объект.Рассчитывается = ?(РассчитыватьРезультат = 0, Истина, Ложь);
РассчитыватьРезультатПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ЛьготаУчитываетсяПриРасчетеЗарплатыПриИзменении(Элемент)
ЛьготаУчитываетсяПриРасчетеЗарплатыПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура КатегорияСтатистическогоНаблюденияПриИзменении(Элемент)
УстановитьДоступностьКатегорииСтатистическогоНаблюдения57Т(ЭтотОбъект);
УстановитьКатегориюСтатистическогоНаблюдения57Т(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура КатегорияСтатистическогоНаблюдения2019ПриИзменении(Элемент)
УстановитьДоступностьКатегорииСтатистическогоНаблюдения57Т(ЭтотОбъект);
УстановитьКатегориюСтатистическогоНаблюдения57Т(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОсновнойВидРасчетаПриИзменении(Элемент)
ОбработчикИзмененияОсновногоВидаРасчета();
КонецПроцедуры
&НаКлиенте
Процедура ОсновнойВидРасчетаНачалоВыбора(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОписаниеОповещения = Новый ОписаниеОповещения("ОткрытьФормуВыбораОсновногоНачисленияЗавершение", ЭтотОбъект);
ПараметрыОткрытия = Новый Структура("КатегорияНачисленияИлиНеоплаченногоВремени, ТекущийОсновнойВидРасчета, РежимВыбора", Объект.КатегорияНачисленияИлиНеоплаченногоВремени, Объект.ОсновнойВидРасчета, Истина);
ОткрытьФорму("ПланВидовРасчета.Начисления.ФормаВыбора", ПараметрыОткрытия, ЭтотОбъект,,,, ОписаниеОповещения, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ОсновнойВидРасчетаАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
ПараметрыПолученияДанных.Отбор.Вставить("ОграничиватьВыборОсновныхВидовРасчетаОплатыПоСреднему", Истина);
ПараметрыПолученияДанных.Отбор.Вставить("КатегорияНачисленияИлиНеоплаченногоВремени", Объект.КатегорияНачисленияИлиНеоплаченногоВремени);
ПараметрыПолученияДанных.Отбор.Вставить("ТекущийОсновнойВидРасчета", Объект.ОсновнойВидРасчета);
КонецПроцедуры
#Область ЭлементыНастройкиСреднегоЗаработка
&НаКлиенте
Процедура СреднийЗаработокОбщийИспользоватьПриИзменении(Элемент)
УстановитьСвойстваЭлементовОбщегоСреднегоЗаработка(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура СреднийЗаработокОбщийЗначениеЕдинственныйОчистка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура СреднийЗаработокОбщийЗначениеОчистка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура СреднийЗаработокОбщийЗначениеПриИзменении(Элемент)
ТекущиеДанные = Элементы.СреднийЗаработокОбщий.ТекущиеДанные;
Если ТекущиеДанные.Значение = ПредопределенноеЗначение("Перечисление.УчетНачисленийВСреднемЗаработкеОбщий.НеВключать") Тогда
ТекущиеДанные.Индексируется = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПериодРасчетаБазовыхНачисленийПриИзменении(Элемент)
ЗаполнитьМесяцыНачисления();
УстановитьДоступностьКоличестваМесяцевБазовогоПериода(ЭтаФорма);
УстановитьДоступностьМесяцевНачисления(ЭтаФорма);
УстановитьДоступностьПериодаОпределенияЗначенийПоказателей(ЭтаФорма);
УстановитьПериодОпределенияЗначенийПоказателейПоУмолчанию(ЭтаФорма);
УстановитьДоступностьПоляВыполнятьВДокументахРазовыхНачислений(ЭтотОбъект);
УстановитьЗначениеВыполнятьВДокументахРазовыхНачислений(ЭтотОбъект);
УстановитьЗначениеПериодДействияБазовый();
БылПризнакНачисляетсяВЦеломЗаМесяц = Объект.НачисляетсяВЦеломЗаМесяц;
ЗаполнитьПризнакНачисляетсяВЦеломЗаМесяц(ЭтаФорма);
Если БылПризнакНачисляетсяВЦеломЗаМесяц <> Объект.НачисляетсяВЦеломЗаМесяц Тогда
ЗаполнитьСвязиНачисления(Ложь);
КонецЕсли;
ОтражениеЗарплатыВБухучетеКлиентСерверРасширенный.УстановитьСтраницуНастройкиБухучетаНачислений(ЭтаФорма);
УстановитьСреднийЗаработокОбщийЗначениеЕдинственный();
УстановитьТекстНадписиБазовогоПериода(ЭтотОбъект, ОбщегоНазначенияКлиент.ДатаСеанса());
ОчиститьСписокВытесняющихНачислений(ЭтотОбъект);
УстановитьВидимостьСпособаОпределенияМесяцаДоходаВНалоговомУчете(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура КоличествоМесяцевБазовогоПериодаПриИзменении(Элемент)
УстановитьТекстНадписиБазовогоПериода(ЭтотОбъект, ОбщегоНазначенияКлиент.ДатаСеанса());
КонецПроцедуры
&НаКлиенте
Процедура СдвигБазовогоПериодаПриИзменении(Элемент)
УстановитьТекстНадписиБазовогоПериода(ЭтотОбъект, ОбщегоНазначенияКлиент.ДатаСеанса());
КонецПроцедуры
&НаКлиенте
Процедура УчитыватьИзменениеЗначенийПоказателейВБазовомПериодеЧислоПриИзменении(Элемент)
Объект.УчитыватьИзменениеЗначенийПоказателейВБазовомПериоде = ?(УчитыватьИзменениеЗначенийПоказателейВБазовомПериодеЧисло = 0, Ложь, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПериодДействияБазовыйПриИзменении(Элемент)
УстановитьТекстПодсказкиБазовогоПериода(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПериодРасчетаПремииНеГодоваяПриИзменении(Элемент)
УстановитьДоступностьКоличестваМесяцевПериодаПремии(ЭтаФорма);
УстановитьТекстНадписиБазовогоПериода(ЭтотОбъект, ОбщегоНазначенияКлиент.ДатаСеанса());
ОчиститьСписокВытесняющихНачислений(ЭтотОбъект);
УстановитьВидимостьСпособаОпределенияМесяцаДоходаВНалоговомУчете(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура СреднийЗаработокОбщийЗначениеЕдинственныйПриИзменении(Элемент)
УстановитьДоступностьКоличестваМесяцевБазовогоПериодаПремии(ЭтаФорма);
УстановитьЗначенияПоУмолчаниюБазовогоПериодаПремии(ЭтаФорма);
УстановитьСтраницуВыбораПериодаПремииДляСреднегоЗаработка(ЭтаФорма);
УстановитьДоступностьВыбораПериодаПремииДляСреднегоЗаработка(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура КоличествоМесяцевБазовогоПериодаПремииПриИзменении(Элемент)
Если Объект.КоличествоМесяцевБазовогоПериода > 1 Тогда
Объект.ПериодРасчетаБазовыхНачислений = ПредопределенноеЗначение("Перечисление.ПериодыРасчетаБазовыхНачислений.НесколькоПредыдущихМесяцев");
КонецЕсли;
УстановитьТекстНадписиБазовогоПериода(ЭтотОбъект, ОбщегоНазначенияКлиент.ДатаСеанса());
КонецПроцедуры
&НаКлиенте
Процедура СдвигБазовогоПериодаПремииПриИзменении(Элемент)
УстановитьТекстНадписиБазовогоПериода(ЭтотОбъект, ОбщегоНазначенияКлиент.ДатаСеанса());
КонецПроцедуры
&НаКлиенте
Процедура СреднийЗаработокФССИспользоватьПриИзменении(Элемент)
УстановитьВидимостьНеУчитыватьПриОплатеБольничногоЗаСчетРаботодателя();
КонецПроцедуры
&НаКлиенте
Процедура ОбозначениеВТабелеУчетаРабочегоВремениПриИзменении(Элемент)
УстановитьВидимостьПредупрежденияОСуществующихПоВидуВремениНачислениях();
ПриИзмененииОбозначениеВТабелеУчетаРабочегоВремени(ЭтаФорма);
УстановитьДоступностьДополнительныхВидовВремени(ЭтаФорма);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ПриИзмененииОбозначениеВТабелеУчетаРабочегоВремени(Форма)
Если Не ЗначениеЗаполнено(Форма.Объект.ОбозначениеВТабелеУчетаРабочегоВремени) Тогда
Форма.ДополнительныеВидыВремени.Очистить();
БылоОбозначениеВТабелеУчетаРабочегоВремени = Форма.Объект.ОбозначениеВТабелеУчетаРабочегоВремени;
Возврат;
КонецЕсли;
Если Не ЗначениеЗаполнено(Форма.БылоОбозначениеВТабелеУчетаРабочегоВремени) Тогда
БылоОбозначениеВТабелеУчетаРабочегоВремени = Форма.Объект.ОбозначениеВТабелеУчетаРабочегоВремени;
Возврат;
КонецЕсли;
Если Форма.Объект.ОбозначениеВТабелеУчетаРабочегоВремени <> Форма.БылоОбозначениеВТабелеУчетаРабочегоВремени Тогда
УдалитьДополнительныйВидВремени(Форма, Форма.БылоОбозначениеВТабелеУчетаРабочегоВремени);
УдалитьДополнительныйВидВремени(Форма, Форма.Объект.ОбозначениеВТабелеУчетаРабочегоВремени);
ОбновитьНадписьДополнительныхВидовВремени(Форма);
БылоОбозначениеВТабелеУчетаРабочегоВремени = Форма.Объект.ОбозначениеВТабелеУчетаРабочегоВремени;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УдалитьДополнительныйВидВремени(Форма, ВидВремени)
ОтборСтрок = Новый Структура("ВидВремени");
ОтборСтрок.ВидВремени = ВидВремени;
НайденныеСтроки = Форма.ДополнительныеВидыВремени.НайтиСтроки(ОтборСтрок);
Для Каждого Строка Из НайденныеСтроки Цикл
Форма.ДополнительныеВидыВремени.Удалить(Строка);
КонецЦикла;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступностьДополнительныхВидовВремени(Форма)
Доступны = ЗначениеЗаполнено(Форма.Объект.ОбозначениеВТабелеУчетаРабочегоВремени);
Форма.Элементы.ВидыВремени.Доступность = Доступны;
Если Не Доступны Тогда
Форма.ДополнительныеВидыВремени.Очистить();
ОбновитьНадписьДополнительныхВидовВремени(Форма);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НадписьПроверкаСвязейНачисленийНажатие(Элемент)
ОткрытьФормуИсправленияСвязейНачислений(Ложь, Ложь);
КонецПроцедуры
#КонецОбласти
#Область МесяцыНачисления
&НаКлиенте
Процедура МесяцНачисления01ПриИзменении(Элемент)
УстановитьСписокВыбораПериодаРасчетаБазовыхНачислений(ЭтаФорма);
УстановитьДоступностьВыбораПериодаПремииДляСреднегоЗаработка(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура МесяцНачисления02ПриИзменении(Элемент)
УстановитьСписокВыбораПериодаРасчетаБазовыхНачислений(ЭтаФорма);
УстановитьДоступностьВыбораПериодаПремииДляСреднегоЗаработка(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура МесяцНачисления03ПриИзменении(Элемент)
УстановитьСписокВыбораПериодаРасчетаБазовыхНачислений(ЭтаФорма);
УстановитьДоступностьВыбораПериодаПремииДляСреднегоЗаработка(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура МесяцНачисления04ПриИзменении(Элемент)
УстановитьСписокВыбораПериодаРасчетаБазовыхНачислений(ЭтаФорма);
УстановитьДоступностьВыбораПериодаПремииДляСреднегоЗаработка(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура МесяцНачисления05ПриИзменении(Элемент)
УстановитьСписокВыбораПериодаРасчетаБазовыхНачислений(ЭтаФорма);
УстановитьДоступностьВыбораПериодаПремииДляСреднегоЗаработка(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура МесяцНачисления06ПриИзменении(Элемент)
УстановитьСписокВыбораПериодаРасчетаБазовыхНачислений(ЭтаФорма);
УстановитьДоступностьВыбораПериодаПремииДляСреднегоЗаработка(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура МесяцНачисления07ПриИзменении(Элемент)
УстановитьСписокВыбораПериодаРасчетаБазовыхНачислений(ЭтаФорма);
УстановитьДоступностьВыбораПериодаПремииДляСреднегоЗаработка(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура МесяцНачисления08ПриИзменении(Элемент)
УстановитьСписокВыбораПериодаРасчетаБазовыхНачислений(ЭтаФорма);
УстановитьДоступностьВыбораПериодаПремииДляСреднегоЗаработка(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура МесяцНачисления09ПриИзменении(Элемент)
УстановитьСписокВыбораПериодаРасчетаБазовыхНачислений(ЭтаФорма);
УстановитьДоступностьВыбораПериодаПремииДляСреднегоЗаработка(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура МесяцНачисления10ПриИзменении(Элемент)
УстановитьСписокВыбораПериодаРасчетаБазовыхНачислений(ЭтаФорма);
УстановитьДоступностьВыбораПериодаПремииДляСреднегоЗаработка(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура МесяцНачисления11ПриИзменении(Элемент)
УстановитьСписокВыбораПериодаРасчетаБазовыхНачислений(ЭтаФорма);
УстановитьДоступностьВыбораПериодаПремииДляСреднегоЗаработка(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура МесяцНачисления12ПриИзменении(Элемент)
УстановитьСписокВыбораПериодаРасчетаБазовыхНачислений(ЭтаФорма);
УстановитьДоступностьВыбораПериодаПремииДляСреднегоЗаработка(ЭтаФорма);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыВедущиеВидыРасчета
&НаКлиенте
Процедура ВедущиеВидыРасчетаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ОбработкаПодбораНачисленийНаСервере(ВыбранноеЗначение, "Объект.ВедущиеВидыРасчета");
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыСписокРассчитываемыхПосле
&НаКлиенте
Процедура СписокРассчитываемыхПослеОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ОбработкаПодбораНачисленийНаСервере(ВыбранноеЗначение, "СписокРассчитываемыхПосле");
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыБазовыеВидыРасчета
&НаКлиенте
Процедура БазовыеВидыРасчетаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ОбработкаПодбораНачисленийНаСервере(ВыбранноеЗначение, "Объект.БазовыеВидыРасчета");
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыВытесняющиеВидыРасчета
&НаКлиенте
Процедура ВытесняющиеВидыРасчетаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ОбработкаПодбораНачисленийНаСервере(ВыбранноеЗначение, "Объект.ВытесняющиеВидыРасчета");
КонецПроцедуры
&НаКлиенте
Процедура ВытесняющиеВидыРасчетаПослеУдаления(Элемент)
ПроверитьНастройкуПриоритета("Объект.ВытесняющиеВидыРасчета");
КонецПроцедуры
&НаКлиенте
Процедура ВытесняющиеВидыРасчетаВидРасчетаПриИзменении(Элемент)
ПроверитьНастройкуПриоритета("Объект.ВытесняющиеВидыРасчета");
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыСписокПриоритетНиже
&НаКлиенте
Процедура СписокПриоритетНижеОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ОбработкаПодбораНачисленийНаСервере(ВыбранноеЗначение, "СписокПриоритетНиже");
КонецПроцедуры
&НаКлиенте
Процедура СписокПриоритетНижеПослеУдаления(Элемент)
ПроверитьНастройкуПриоритета("СписокПриоритетНиже");
КонецПроцедуры
&НаКлиенте
Процедура СписокПриоритетНижеВидРасчетаПриИзменении(Элемент)
ПроверитьНастройкуПриоритета("СписокПриоритетНиже");
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыСписокЗависимыеНачисления
&НаКлиенте
Процедура СписокЗависимыеНачисленияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ОбработкаПодбораНачисленийНаСервере(ВыбранноеЗначение, "СписокЗависимыеНачисления");
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыСписокЗависимыеУдержания
&НаКлиенте
Процедура СписокЗависимыеУдержанияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ОбработкаПодбораНачисленийНаСервере(ВыбранноеЗначение, "СписокЗависимыеУдержания");
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура КомандаЗаписатьИЗакрыть(Команда)
ЗаписатьНаКлиенте(Истина);
КонецПроцедуры
&НаКлиенте
Процедура КомандаЗаписать(Команда)
ЗаписатьНаКлиенте(Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ПодборВедущих(Команда)
МассивВидовРасчета = РасчетЗарплатыРасширенныйКлиентСервер.ВидыРасчетаКоллекции(Объект.ВедущиеВидыРасчета);
ПараметрыФормы = Новый Структура("МассивВидовРасчета", МассивВидовРасчета);
ОткрытьФорму("ОбщаяФорма.ПодборВидовРасчета", ПараметрыФормы, Элементы.ВедущиеВидыРасчета);
КонецПроцедуры
&НаКлиенте
Процедура ПодборРассчитываемыхПосле(Команда)
МассивВидовРасчета = РасчетЗарплатыРасширенныйКлиентСервер.ВидыРасчетаКоллекции(СписокРассчитываемыхПосле);
ПараметрыФормы = Новый Структура("МассивВидовРасчета", МассивВидовРасчета);
ОткрытьФорму("ОбщаяФорма.ПодборВидовРасчета", ПараметрыФормы, Элементы.СписокРассчитываемыхПосле);
КонецПроцедуры
&НаКлиенте
Процедура ПодборВытесняющих(Команда)
Отбор = Новый Массив;
ЭлементОтбора = Новый Структура(
"ЛевоеЗначение,
|ВидСравнения,
|ПравоеЗначение",
"ЗачетНормыВремени",
ВидСравненияКомпоновкиДанных.Равно,
Истина);
Отбор.Добавить(ЭлементОтбора);
МассивВидовРасчета = РасчетЗарплатыРасширенныйКлиентСервер.ВидыРасчетаКоллекции(Объект.ВытесняющиеВидыРасчета);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("МассивВидовРасчета", МассивВидовРасчета);
ПараметрыФормы.Вставить("УсловияОтбора", Отбор);
ПараметрыФормы.Вставить("ПроверятьСвязи", Истина);
ПараметрыФормы.Вставить("ИмяТаблицы", "ВытесняющиеВидыРасчета");
ОткрытьФорму("ОбщаяФорма.ПодборВидовРасчета", ПараметрыФормы, Элементы.ВытесняющиеВидыРасчета);
КонецПроцедуры
&НаКлиенте
Процедура ПодборПриоритетНиже(Команда)
МассивВидовРасчета = РасчетЗарплатыРасширенныйКлиентСервер.ВидыРасчетаКоллекции(СписокПриоритетНиже);
ПараметрыФормы = Новый Структура("МассивВидовРасчета, ПроверятьСвязи, ИмяТаблицы", МассивВидовРасчета, Истина, "СписокПриоритетНиже");
ОткрытьФорму("ОбщаяФорма.ПодборВидовРасчета", ПараметрыФормы, Элементы.СписокПриоритетНиже);
КонецПроцедуры
&НаКлиенте
Процедура ПодборБазовых(Команда)
МассивВидовРасчета = РасчетЗарплатыРасширенныйКлиентСервер.ВидыРасчетаКоллекции(Объект.БазовыеВидыРасчета);
ПараметрыФормы = Новый Структура("МассивВидовРасчета", МассивВидовРасчета);
ОткрытьФорму("ОбщаяФорма.ПодборВидовРасчета", ПараметрыФормы, Элементы.БазовыеВидыРасчета);
КонецПроцедуры
&НаКлиенте
Процедура ПодборЗависимыхНачислений(Команда)
МассивВидовРасчета = Новый Массив;
МассивДоплатаДоСреднего = Новый Массив;
Для каждого СтрокаКоллекции Из СписокЗависимыеНачисления Цикл
Если СтрокаКоллекции.ДоплатаДоСреднего Тогда
МассивДоплатаДоСреднего.Добавить(СтрокаКоллекции.ВидРасчета);
Иначе
МассивВидовРасчета.Добавить(СтрокаКоллекции.ВидРасчета);
КонецЕсли;
КонецЦикла;
Отбор = Новый Массив;
Отбор.Добавить(Новый Структура("ЛевоеЗначение, ВидСравнения, ПравоеЗначение", "ТребуетсяРасчетБазы", ВидСравненияКомпоновкиДанных.Равно, Истина));
Отбор.Добавить(Новый Структура("ЛевоеЗначение, ВидСравнения, ПравоеЗначение", "Ссылка", ВидСравненияКомпоновкиДанных.НеВСписке, МассивДоплатаДоСреднего));
ПараметрыФормы = Новый Структура("МассивВидовРасчета, УсловияОтбора", МассивВидовРасчета, Отбор);
ОткрытьФорму("ОбщаяФорма.ПодборВидовРасчета", ПараметрыФормы, Элементы.СписокЗависимыеНачисления);
КонецПроцедуры
&НаКлиенте
Процедура ПодборЗависимыхУдержаний(Команда)
Отбор = Новый Массив;
Отбор.Добавить(Новый Структура("ЛевоеЗначение, ВидСравнения, ПравоеЗначение", "ТребуетсяРасчетБазы", ВидСравненияКомпоновкиДанных.Равно, Истина));
Если Объект.ВидДоходаИсполнительногоПроизводства = ПредопределенноеЗначение("Перечисление.ВидыДоходовИсполнительногоПроизводства.КомпенсацииНеоблагаемые") Тогда
ЭлементОтбора = Новый Структура("ЛевоеЗначение, ВидСравнения, ПравоеЗначение");
ЭлементОтбора.ЛевоеЗначение = "КатегорияУдержания";
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ЭлементОтбора.ПравоеЗначение = ПредопределенноеЗначение("Перечисление.КатегорииУдержаний.ИсполнительныйЛист");
Отбор.Добавить(ЭлементОтбора);
КонецЕсли;
МассивВидовРасчета = РасчетЗарплатыРасширенныйКлиентСервер.ВидыРасчетаКоллекции(СписокЗависимыеУдержания);
ПараметрыФормы = Новый Структура("МассивВидовРасчета, УсловияОтбора, ПодборУдержаний", МассивВидовРасчета, Отбор, Истина);
ОткрытьФорму("ОбщаяФорма.ПодборВидовРасчета", ПараметрыФормы, Элементы.СписокЗависимыеУдержания);
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьФормулу(Команда)
ПараметрыРедактирования = Новый Структура;
ПараметрыРедактирования.Вставить("Формула", Объект.ФормулаРасчета);
ПараметрыРедактирования.Вставить("НаименованиеВидаРасчета", Объект.Наименование);
ПараметрыРедактирования.Вставить("ВидРасчета", Объект.Ссылка);
Оповещение = Новый ОписаниеОповещения("ИзменитьФормулуЗавершение", ЭтотОбъект);
ОткрытьФорму("ОбщаяФорма.РедактированиеФормулыРасчетаЗарплаты", ПараметрыРедактирования, ЭтаФорма, , , , Оповещение, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьФормулуЗавершение(РезультатРедактирования, ДополнительныеПараметры) Экспорт
Если ИзмененыПоказателиНачисления И Не Модифицированность Тогда
Прочитать();
ИзмененыПоказателиНачисления = Ложь;
КонецЕсли;
Если РезультатРедактирования = Неопределено Тогда
Возврат;
КонецЕсли;
Если Объект.ФормулаРасчета = РезультатРедактирования.Формула Тогда
Возврат;
КонецЕсли;
ФормулаПриИзмененииНаСервере(РезультатРедактирования);
КонецПроцедуры
&НаСервере
Процедура ФормулаПриИзмененииНаСервере(РезультатРедактирования)
Объект.ФормулаРасчета = РезультатРедактирования.Формула;
БылПоказательРасчетнаяБаза = ЕстьПоказательРасчетнаяБаза;
БылПризнакНачисляетсяВЦеломЗаМесяц = Объект.НачисляетсяВЦеломЗаМесяц;
ОбновитьФормуПоИзменениюФормулыРасчета(
ЭтаФорма,
РезультатРедактирования.СведенияОПоказателях,
РезультатРедактирования.ЗапрашиваемыеПоказатели,
РезультатРедактирования);
Если РасчетЗарплатыРасширенный.ФОТРассчитываетсяАвтоматически(Объект) = Неопределено Тогда
Объект.ФОТНеРедактируется = Ложь;
КонецЕсли;
УстановитьВидимостьПоляФОТНеРедактируется();
УстановитьТекстНадписиОЗаполненностиФормулы(ЭтаФорма);
Если БылПоказательРасчетнаяБаза <> ЕстьПоказательРасчетнаяБаза
Или БылПризнакНачисляетсяВЦеломЗаМесяц <> Объект.НачисляетсяВЦеломЗаМесяц Тогда
ЗаполнитьСвязиНачисления(Ложь);
КонецЕсли;
Если Не БылПоказательРасчетнаяБаза И ЕстьПоказательРасчетнаяБаза
И Объект.ПорядокОпределенияМесяцаДоходаВВидеОплатыТруда = ПредопределенноеЗначение("Перечисление.ПорядокОпределенияМесяцаДоходаВВидеОплатыТруда.ПоПредшествующемуМесяцуПериодаДействия") Тогда
Объект.ПорядокОпределенияМесяцаДоходаВВидеОплатыТруда = ПредопределенноеЗначение("Перечисление.ПорядокОпределенияМесяцаДоходаВВидеОплатыТруда.ПоПериодуНачисления")
КонецЕсли;
Если БылПоказательРасчетнаяБаза <> ЕстьПоказательРасчетнаяБаза Тогда
УстановитьСписокВыбораПериодаРасчетаБазовыхНачислений(ЭтаФорма);
УстановитьЗначениеПериодДействияБазовый();
КонецЕсли;
УстановитьДоступностьВыбораПериодаПремииДляСреднегоЗаработка(ЭтаФорма);
ОтражениеЗарплатыВБухучетеКлиентСерверРасширенный.УстановитьСтраницуНастройкиБухучетаНачислений(ЭтаФорма);
УстановитьЗаголовокПериодаОпределенияЗначенийПоказателей();
УстановитьДоступностьПоляВыполнятьВДокументахРазовыхНачислений(ЭтотОбъект);
УстановитьЗначениеВыполнятьВДокументахРазовыхНачислений(ЭтотОбъект);
ОчиститьСписокВытесняющихНачислений(ЭтотОбъект);
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Процедура СтратегияОтраженияВСреднемЗаработкеПриИзменении(Элемент)
УстановитьВидимостьНастроекСреднегоЗаработка(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ПодборНачисленийТарифнойСтавки(Команда)
МассивВидовРасчета = РасчетЗарплатыРасширенныйКлиентСервер.ВидыРасчетаКоллекции(Объект.ВидыРасчетаТарифнойСтавки);
ПараметрыФормы = Новый Структура("МассивВидовРасчета", МассивВидовРасчета);
ОткрытьФорму("ОбщаяФорма.ПодборВидовРасчета", ПараметрыФормы, Элементы.ВидыРасчетаТарифнойСтавки);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтаФорма, РеквизитФормыВЗначение("Объект"));
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ЗаполнитьЗависимыеВидыРасчетовДляЗаписи(ВидыРасчетаДляЗаписи, ТекущийВидРасчета, ЗависимыеВидыРасчета, ИмяТаблицыЗависимых, ЗапросПоУдержаниям = Ложь, ДополнительныеНачисленияДолейРКСН = Неопределено)
ТекстЗапроса =
"ВЫБРАТЬ
| ТабличнаяЧасть.Ссылка
|ПОМЕСТИТЬ ВТЗависимыеДоРедактирования
|ИЗ
| ПланВидовРасчета.Начисления.ВедущиеВидыРасчета КАК ТабличнаяЧасть
|ГДЕ
| ТабличнаяЧасть.ВидРасчета = &ТекущийВидРасчета
|;
|
|
|ВЫБРАТЬ
| ЗависимыеДоРедактирования.Ссылка
|ИЗ
| ВТЗависимыеДоРедактирования КАК ЗависимыеДоРедактирования
|ГДЕ
| НЕ ЗависимыеДоРедактирования.Ссылка В (&ЗависимыеВидыРасчета)
|;
|
|
|ВЫБРАТЬ
| ВидыРасчета.Ссылка
|ИЗ
| ПланВидовРасчета.Начисления КАК ВидыРасчета
| ЛЕВОЕ СОЕДИНЕНИЕ ВТЗависимыеДоРедактирования КАК ЗависимыеДоРедактирования
| ПО (ЗависимыеДоРедактирования.Ссылка = ВидыРасчета.Ссылка)
|ГДЕ
| ВидыРасчета.Ссылка В(&ЗависимыеВидыРасчета)
| И ЗависимыеДоРедактирования.Ссылка ЕСТЬ NULL ";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ВедущиеВидыРасчета", ИмяТаблицыЗависимых);
Если ЗапросПоУдержаниям Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ПланВидовРасчета.Начисления", "ПланВидовРасчета.Удержания");
КонецЕсли;
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("ТекущийВидРасчета", ТекущийВидРасчета);
Запрос.УстановитьПараметр("ЗависимыеВидыРасчета", ОбщегоНазначения.ВыгрузитьКолонку(ЗависимыеВидыРасчета, "ВидРасчета"));
РезультатыЗапроса = Запрос.ВыполнитьПакет();
ВыборкаУдалить = РезультатыЗапроса[1].Выбрать();
Пока ВыборкаУдалить.Следующий() Цикл
НачислениеОбъект = ВидыРасчетаДляЗаписи[ВыборкаУдалить.Ссылка];
Если НачислениеОбъект = Неопределено Тогда
НачислениеОбъект = ВыборкаУдалить.Ссылка.ПолучитьОбъект();
КонецЕсли;
СтрокаТекущегоВидаРасчета = НачислениеОбъект[ИмяТаблицыЗависимых].Найти(ТекущийВидРасчета, "ВидРасчета");
Если СтрокаТекущегоВидаРасчета <> Неопределено Тогда
НачислениеОбъект[ИмяТаблицыЗависимых].Удалить(СтрокаТекущегоВидаРасчета);
УдалитьВидыРасчетаОплатыДолейРКСНВЗависимыхНачисленияхУдержаниях(НачислениеОбъект[ИмяТаблицыЗависимых], ДополнительныеНачисленияДолейРКСН, ТекущийВидРасчета);
ВидыРасчетаДляЗаписи.Вставить(ВыборкаУдалить.Ссылка, НачислениеОбъект);
КонецЕсли;
КонецЦикла;
ВыборкаДобавить = РезультатыЗапроса[2].Выбрать();
Пока ВыборкаДобавить.Следующий() Цикл
НачислениеОбъект = ВидыРасчетаДляЗаписи[ВыборкаДобавить.Ссылка];
Если НачислениеОбъект = Неопределено Тогда
НачислениеОбъект = ВыборкаДобавить.Ссылка.ПолучитьОбъект();
КонецЕсли;
НачислениеОбъект[ИмяТаблицыЗависимых].Добавить().ВидРасчета = ТекущийВидРасчета;
ДобавитьВидыРасчетаОплатыДолейРКСНВЗависимыхНачисленияхУдержаниях(НачислениеОбъект[ИмяТаблицыЗависимых], ДополнительныеНачисленияДолейРКСН, ТекущийВидРасчета);
ВидыРасчетаДляЗаписи.Вставить(ВыборкаДобавить.Ссылка, НачислениеОбъект);
КонецЦикла;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьВидыРасчетаОплатыДолейРКСНВЗависимыхНачисленияхУдержаниях(ТабличнаяЧастьОбъекта, ДополнительныеНачисленияДолейРКСН, ОсновнойВидРасчета)
Если ДополнительныеНачисленияДолейРКСН = Неопределено Тогда
Возврат;
КонецЕсли;
ВидыРасчетаДолейРКСН = ДополнительныеНачисленияДолейРКСН.Получить(ОсновнойВидРасчета);
Если ВидыРасчетаДолейРКСН <> Неопределено Тогда
Для Каждого КлючИЗначение Из ВидыРасчетаДолейРКСН Цикл
ТабличнаяЧастьОбъекта.Добавить().ВидРасчета = КлючИЗначение.Значение;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УдалитьВидыРасчетаОплатыДолейРКСНВЗависимыхНачисленияхУдержаниях(ТабличнаяЧастьОбъекта, ДополнительныеНачисленияДолейРКСН, ОсновнойВидРасчета)
Если ДополнительныеНачисленияДолейРКСН = Неопределено Тогда
Возврат;
КонецЕсли;
ВидыРасчетаДолейРКСН = ДополнительныеНачисленияДолейРКСН.Получить(ОсновнойВидРасчета);
Если ВидыРасчетаДолейРКСН <> Неопределено Тогда
Для Каждого КлючИЗначение Из ВидыРасчетаДолейРКСН Цикл
СтрокаТекущегоВидаРасчета = ТабличнаяЧастьОбъекта.Найти(КлючИЗначение.Значение, "ВидРасчета");
Если СтрокаТекущегоВидаРасчета <> Неопределено Тогда
ТабличнаяЧастьОбъекта.Удалить(СтрокаТекущегоВидаРасчета);
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьФормуПоИзменениюФормулыРасчета(Форма, СведенияОПоказателях, ЗапрашиваемыеПоказатели, СведенияОПоказателяхФормулы)
Объект = Форма.Объект;
Если РасчетЗарплатыРасширенныйКлиентСервер.СпособРасчетаИспользуетФормулу(Объект.СпособРасчета) Тогда
ЗарплатаКадрыРасширенныйКлиентСервер.ОбновитьПоказателиПоФормуле(СведенияОПоказателях, Объект.Показатели);
КонецЕсли;
ЗарплатаКадрыРасширенныйКлиентСервер.ЗаполнитьСписокОпределяющихПоказателей(Форма.СписокОпределяющихПоказателей, Объект.Показатели, СведенияОПоказателях);
Форма.ЕстьПоказателиУчетаВремени = СведенияОПоказателяхФормулы.ЕстьПоказателиУчетаВремени;
Форма.ЕстьПоказательОтработаноСмен = СведенияОПоказателяхФормулы.ЕстьПоказательОтработаноСмен;
Форма.ЕстьПоказательРасчетнаяБаза = СведенияОПоказателяхФормулы.ЕстьПоказательРасчетнаяБаза;
Форма.ЕстьОперативныеПоказатели = СведенияОПоказателяхФормулы.ЕстьОперативныеПоказатели;
Форма.ЕстьПоказательСдельныйЗаработок = СведенияОПоказателяхФормулы.ЕстьПоказательСдельныйЗаработок;
Форма.ЕстьПоказательСтоимостьДняЧасаСУчетомРазовыхНачислений = СведенияОПоказателяхФормулы.ЕстьПоказательСтоимостьДняЧасаСУчетомРазовыхНачислений;
ЗаполнитьПризнакНачисляетсяВЦеломЗаМесяц(Форма);
ЗарплатаКадрыРасширенныйКлиентСервер.УстановитьОтметкуЗапрашиватьПриВводе(ЗапрашиваемыеПоказатели, Объект.Показатели);
ЗарплатаКадрыРасширенныйКлиентСервер.ЗаполнитьПризнакПоказателейМожетЗапрашиватьсяПриВводе(Форма, СведенияОПоказателях);
УстановитьСвойстваПериодаРасчетаСреднегоЗаработка(Форма);
УстановитьЗначенияПоУмолчаниюБазовогоПериодаПремии(Форма);
УстановитьДоступностьРасчетаБазы(Форма);
УстановитьЗапрашиваемыеПоказателиЛьгот(Форма);
УстановитьПериодОпределенияЗначенийПоказателейПоУмолчанию(Форма);
УстановитьВидимостьСпособаОпределенияМесяцаДоходаВНалоговомУчете(Форма);
УстановитьВидимостьРасчетТарифнойСтавки(Форма);
ОтражениеЗарплатыВБухучетеКлиентСерверРасширенный.УстановитьСтраницуНастройкиБухучетаНачислений(Форма);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступностьКоличестваМесяцевБазовогоПериода(Форма)
ДоступностьВвода = Форма.Объект.ПериодРасчетаБазовыхНачислений = ПредопределенноеЗначение("Перечисление.ПериодыРасчетаБазовыхНачислений.НесколькоПредыдущихМесяцев");
Форма.Элементы.КоличествоМесяцевБазовогоПериода.Доступность = ДоступностьВвода;
Форма.Элементы.КоличествоМесяцевБазовогоПериода.АвтоОтметкаНеЗаполненного = ДоступностьВвода;
Форма.Элементы.КоличествоМесяцевБазовогоПериода.ОтметкаНеЗаполненного = ДоступностьВвода;
Форма.Элементы.СдвигБазовогоПериода.Доступность = ДоступностьВвода;
Если ДоступностьВвода Тогда
Возврат;
КонецЕсли;
ЗаполнитьКоличествоМесяцевПериодаПремииБазовогоПериодаПоУмолчанию(Форма);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступностьКоличестваМесяцевПериодаПремии(Форма)
ДоступностьВвода = Форма.Объект.ПериодРасчетаБазовыхНачислений = ПредопределенноеЗначение("Перечисление.ПериодыРасчетаБазовыхНачислений.НесколькоПредыдущихМесяцев");
Форма.Элементы.КоличествоМесяцевБазовогоПериодаПремии.Доступность = ДоступностьВвода;
Форма.Элементы.КоличествоМесяцевБазовогоПериодаПремии.АвтоОтметкаНеЗаполненного = ДоступностьВвода;
Форма.Элементы.КоличествоМесяцевБазовогоПериодаПремии.ОтметкаНеЗаполненного = ДоступностьВвода;
Форма.Элементы.СдвигБазовогоПериодаПремии.Доступность = ДоступностьВвода;
Если ДоступностьВвода Тогда
Возврат;
КонецЕсли;
ЗаполнитьКоличествоМесяцевПериодаПремииБазовогоПериодаПоУмолчанию(Форма);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступностьПериодаОпределенияЗначенийПоказателей(Форма)
Объект = Форма.Объект;
Элементы = Форма.Элементы;
ДоступностьВвода = Объект.ПериодРасчетаБазовыхНачислений <> ПредопределенноеЗначение("Перечисление.ПериодыРасчетаБазовыхНачислений.ТекущийМесяц")
И Объект.ПериодРасчетаБазовыхНачислений <> ПредопределенноеЗначение("Перечисление.ПериодыРасчетаБазовыхНачислений.ТекущийКвартал")
И Объект.ПериодРасчетаБазовыхНачислений <> ПредопределенноеЗначение("Перечисление.ПериодыРасчетаБазовыхНачислений.ТекущийГод");
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ПериодРасчетаПоказателейСтраницы", "ТекущаяСтраница",
?(ДоступностьВвода, Элементы.ПериодРасчетаПоказателейСтраница, Элементы.ПериодРасчетаПоказателейПустаяСтраница));
Если Не ДоступностьВвода Тогда
Объект.УчитыватьИзменениеЗначенийПоказателейВБазовомПериоде = Ложь;
УстановитьПредставлениеПериодаОпределенияЗначенийПоказателей(Форма);
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ЗаполнитьКоличествоМесяцевПериодаПремииБазовогоПериодаПоУмолчанию(Форма)
КоличествоМесяцевБазовогоПериода = Новый Соответствие;
КоличествоМесяцевБазовогоПериода.Вставить(ПредопределенноеЗначение("Перечисление.ПериодыРасчетаБазовыхНачислений.ТекущийМесяц"), 1);
КоличествоМесяцевБазовогоПериода.Вставить(ПредопределенноеЗначение("Перечисление.ПериодыРасчетаБазовыхНачислений.ПредыдущийМесяц"), 1);
КоличествоМесяцевБазовогоПериода.Вставить(ПредопределенноеЗначение("Перечисление.ПериодыРасчетаБазовыхНачислений.ТекущийКвартал"), 3);
КоличествоМесяцевБазовогоПериода.Вставить(ПредопределенноеЗначение("Перечисление.ПериодыРасчетаБазовыхНачислений.ПредыдущийКвартал"), 3);
КоличествоМесяцевБазовогоПериода.Вставить(ПредопределенноеЗначение("Перечисление.ПериодыРасчетаБазовыхНачислений.ТекущийГод"), 12);
КоличествоМесяцевБазовогоПериода.Вставить(ПредопределенноеЗначение("Перечисление.ПериодыРасчетаБазовыхНачислений.ПредыдущийГод"), 12);
КоличествоМесяцев = КоличествоМесяцевБазовогоПериода[Форма.Объект.ПериодРасчетаБазовыхНачислений];
Если КоличествоМесяцев <> Неопределено Тогда
Форма.Объект.КоличествоМесяцевБазовогоПериода = КоличествоМесяцев;
КонецЕсли;
СдвигБазовогоПериода = Новый Соответствие;
СдвигБазовогоПериода.Вставить(ПредопределенноеЗначение("Перечисление.ПериодыРасчетаБазовыхНачислений.ТекущийМесяц"), 0);
СдвигБазовогоПериода.Вставить(ПредопределенноеЗначение("Перечисление.ПериодыРасчетаБазовыхНачислений.ПредыдущийМесяц"), 1);
СдвигБазовогоПериода.Вставить(ПредопределенноеЗначение("Перечисление.ПериодыРасчетаБазовыхНачислений.ТекущийКвартал"), 0);
СдвигБазовогоПериода.Вставить(ПредопределенноеЗначение("Перечисление.ПериодыРасчетаБазовыхНачислений.ПредыдущийКвартал"), 1);
СдвигБазовогоПериода.Вставить(ПредопределенноеЗначение("Перечисление.ПериодыРасчетаБазовыхНачислений.ТекущийГод"), 0);
СдвигБазовогоПериода.Вставить(ПредопределенноеЗначение("Перечисление.ПериодыРасчетаБазовыхНачислений.ПредыдущийГод"), 1);
СдвигБазовогоПериода.Вставить(ПредопределенноеЗначение("Перечисление.ПериодыРасчетаБазовыхНачислений.НесколькоПредыдущихМесяцев"), 1);
СдвигПериода = СдвигБазовогоПериода[Форма.Объект.ПериодРасчетаБазовыхНачислений];
Если СдвигПериода <> Неопределено Тогда
Форма.Объект.СдвигБазовогоПериода = СдвигПериода;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступностьРасчетаБазы(Форма)
Форма.Элементы.РасчетБазы.Доступность = Форма.ЕстьПоказательРасчетнаяБаза
И Форма.Объект.СпособРасчета <> ПредопределенноеЗначение("Перечисление.СпособыРасчетаНачислений.ДоплатаДоСреднегоЗаработка")
И Форма.Объект.СпособРасчета <> ПредопределенноеЗначение("Перечисление.СпособыРасчетаНачислений.ДоплатаДоСреднегоЗаработкаФСС")
И Форма.Объект.СпособРасчета <> ПредопределенноеЗначение("Перечисление.СпособыРасчетаНачислений.ДоплатаДоСохраняемогоДенежногоСодержанияЗаДниБолезни");
УстановитьДоступностьКоличестваМесяцевБазовогоПериода(Форма);
УстановитьДоступностьКоличестваМесяцевБазовогоПериодаПремии(Форма);
УстановитьДоступностьМесяцевНачисления(Форма);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступностьКоличестваМесяцевБазовогоПериодаПремии(Форма)
Если Не ЭтоПремия(Форма) Тогда
Форма.Элементы.НастройкиПремииСтраницы.ТекущаяСтраница = Форма.Элементы.НастройкиПремииВидимостьЛожь;
Возврат;
КонецЕсли;
Форма.Элементы.НастройкиПремииСтраницы.ТекущаяСтраница = Форма.Элементы.НастройкиПремииВидимостьИстина;
ДоступностьВвода = Не Форма.Элементы.РасчетБазы.Доступность;
Форма.Элементы.ПериодРасчетаПремииСтраницы.Доступность = ДоступностьВвода;
Форма.Элементы.НастройкиПремииВидимостьИстина.ОтображениеПодсказки = ?(ДоступностьВвода, ОтображениеПодсказки.Нет, ОтображениеПодсказки.ОтображатьСнизу);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьСтраницуВыбораПериодаПремииДляСреднегоЗаработка(Форма)
Элементы = Форма.Элементы;
Объект = Форма.Объект;
ГодовыеПремии = Новый Массив;
ГодовыеПремии.Добавить(ПредопределенноеЗначение("Перечисление.УчетНачисленийВСреднемЗаработкеОбщий.ПремияГодоваяПроцентом"));
ГодовыеПремии.Добавить(ПредопределенноеЗначение("Перечисление.УчетНачисленийВСреднемЗаработкеОбщий.ПремияГодоваяФиксированнойСуммой"));
Если ГодовыеПремии.Найти(Форма.СреднийЗаработокОбщийЗначение) <> Неопределено Тогда
Элементы.ПериодРасчетаПремииСтраницы.ТекущаяСтраница = Элементы.ПериодРасчетаПремииГодоваяСтраница;
Иначе
Элементы.ПериодРасчетаПремииСтраницы.ТекущаяСтраница = Элементы.ПериодРасчетаПремииНеГодоваяСтраница;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьЗначенияПоУмолчаниюБазовогоПериодаПремии(Форма)
Если Не ЭтоПремия(Форма) Тогда
Возврат;
КонецЕсли;
Если Форма.СреднийЗаработокОбщийЗначение = ПредопределенноеЗначение("Перечисление.УчетНачисленийВСреднемЗаработкеОбщий.ПремияГодоваяПроцентом")
Или Форма.СреднийЗаработокОбщийЗначение = ПредопределенноеЗначение("Перечисление.УчетНачисленийВСреднемЗаработкеОбщий.ПремияГодоваяФиксированнойСуммой") Тогда
Форма.Объект.КоличествоМесяцевБазовогоПериода = 12;
Если (Форма.Объект.ПериодРасчетаБазовыхНачислений <> ПредопределенноеЗначение("Перечисление.ПериодыРасчетаБазовыхНачислений.ПредыдущийГод")
И Форма.Объект.ПериодРасчетаБазовыхНачислений <> ПредопределенноеЗначение("Перечисление.ПериодыРасчетаБазовыхНачислений.ТекущийГод"))
Или (Форма.Объект.СпособВыполненияНачисления = ПредопределенноеЗначение("Перечисление.СпособыВыполненияНачислений.ПоОтдельномуДокументуДоОкончательногоРасчета")
И Форма.Объект.ПериодРасчетаБазовыхНачислений <> ПредопределенноеЗначение("Перечисление.ПериодыРасчетаБазовыхНачислений.ПредыдущийГод")) Тогда
Форма.Объект.ПериодРасчетаБазовыхНачислений = ПредопределенноеЗначение("Перечисление.ПериодыРасчетаБазовыхНачислений.ПредыдущийГод");
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ЭтоПремия(Форма)
Премии = Новый Массив;
Премии.Добавить(ПредопределенноеЗначение("Перечисление.УчетНачисленийВСреднемЗаработкеОбщий.ПремияГодоваяПроцентом"));
Премии.Добавить(ПредопределенноеЗначение("Перечисление.УчетНачисленийВСреднемЗаработкеОбщий.ПремияГодоваяФиксированнойСуммой"));
Премии.Добавить(ПредопределенноеЗначение("Перечисление.УчетНачисленийВСреднемЗаработкеОбщий.ПремияПроцентом"));
Премии.Добавить(ПредопределенноеЗначение("Перечисление.УчетНачисленийВСреднемЗаработкеОбщий.ПремияФиксированнойСуммой"));
ЭтоПремия = Премии.Найти(Форма.СреднийЗаработокОбщийЗначение) <> Неопределено;
Возврат ЭтоПремия;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьИнформационныйТекстСписковВытеснения(Форма)
Если ПустаяСтрока(Форма.Объект.Наименование) Тогда
ПредставлениеНачисления = НСтр("ru = 'Данное начисление'");
Иначе
Наименование = Форма.Объект.Наименование;
Если СтрДлина(Форма.Объект.Наименование) > 25 Тогда
Наименование = Лев(Наименование, 22) + "...";
КонецЕсли;
ПредставлениеНачисления = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '«%1»'"), Наименование);
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступностьНачисленияВПервуюПоловинуМесяца(Форма)
ДоступностьВПервуюПоловинуМесяца =
Не Форма.Объект.НачисляетсяВЦеломЗаМесяц Или Форма.Объект.ИспользоватьОперативныеПоказателиВЦеломЗаМесяц;
Элемент = Форма.Элементы.НачисляетсяПриРасчетеПервойПоловиныМесяца;
Элемент.Доступность = ДоступностьВПервуюПоловинуМесяца;
Если ДоступностьВПервуюПоловинуМесяца Тогда
Элемент.Подсказка =
НСтр("ru = 'Установите флажок для того, чтобы начисление выполнялось как при окончательном расчете, так и при расчете первой половины месяца'");
Иначе
Элемент.Подсказка =
НСтр("ru = 'Не начисляется при расчете первой половины месяца, так как может начисляться только в целом за месяц при окончательном расчете'");
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьОтображениеНачисляетсяВПервуюПоловинуМесяца(Форма)
Объект = Форма.Объект;
Если ОтображатьНачисляетсяВПервуюПоловинуМесяца(Объект) Тогда
Форма.Элементы.НачислениеВПервуюПоловинуМесяцаСтраницы.ТекущаяСтраница = Форма.Элементы.НачисляетсяВПервуюПоловинуМесяцаСтраница;
УстановитьДоступностьНачисленияВПервуюПоловинуМесяца(Форма);
ИначеЕсли ОтображатьНачисляетсяТолькоВПервуюПоловинуМесяца(Объект) Тогда
Форма.Элементы.НачислениеВПервуюПоловинуМесяцаСтраницы.ТекущаяСтраница = Форма.Элементы.НачисляетсяТолькоВПервуюПоловинуМесяцаСтраница;
Иначе
Форма.Элементы.НачислениеВПервуюПоловинуМесяцаСтраницы.ТекущаяСтраница = Форма.Элементы.НачисляетсяВПервуюПоловинуМесяцаНеОтображаетсяСтраница;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьОтображениеНачисляетсяВОтпускеПоУходу(Форма)
Объект = Форма.Объект;
СпособыНачисления = Новый Массив;
СпособыНачисления.Добавить(ПредопределенноеЗначение("Перечисление.СпособыВыполненияНачислений.ЕжемесячноПриОкончательномРасчете"));
СпособыНачисления.Добавить(ПредопределенноеЗначение("Перечисление.СпособыВыполненияНачислений.ВЗаданныхМесяцахПриОкончательномРасчете"));
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Форма.Элементы,
"НачисляетсяВОтпускеПоУходу",
"Видимость",
СпособыНачисления.Найти(Объект.СпособВыполненияНачисления) <> Неопределено);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьОтображениеВидыВремени(Форма)
Объект = Форма.Объект;
СпособыВыполненияПриОкончательномРасчете = Новый Массив;
СпособыВыполненияПриОкончательномРасчете.Добавить(ПредопределенноеЗначение("Перечисление.СпособыВыполненияНачислений.ЕжемесячноПриОкончательномРасчете"));
СпособыВыполненияПриОкончательномРасчете.Добавить(ПредопределенноеЗначение("Перечисление.СпособыВыполненияНачислений.ВЗаданныхМесяцахПриОкончательномРасчете"));
Если Форма.КатегорииОтработанноеВремя.Найти(Объект.КатегорияНачисленияИлиНеоплаченногоВремени) = Неопределено
И СпособыВыполненияПриОкончательномРасчете.Найти(Объект.СпособВыполненияНачисления) = Неопределено Тогда
Форма.Элементы.ВидыВремениСтраницы.ТекущаяСтраница = Форма.Элементы.ВидыВремениНеОтработанного;
УстановитьСписокВыбораНеотработанногоВидаВремени(Объект.КатегорияНачисленияИлиНеоплаченногоВремени, Форма.Элементы);
Иначе
Форма.Элементы.ВидыВремениСтраницы.ТекущаяСтраница = Форма.Элементы.ВидыВремениОтработанного;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ОтображатьНачисляетсяВПервуюПоловинуМесяца(Объект)
КатегорииНачислений = Новый Массив;
КатегорииНачислений.Добавить(ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ПовременнаяОплатаТруда"));
КатегорииНачислений.Добавить(ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.СдельнаяОплатаТруда"));
КатегорииНачислений.Добавить(ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.Премия"));
КатегорииНачислений.Добавить(ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.РайонныйКоэффициент"));
КатегорииНачислений.Добавить(ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.СевернаяНадбавка"));
КатегорииНачислений.Добавить(ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ДоплатаЗаСовмещение"));
КатегорииНачислений.Добавить(ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.НадбавкаЗаВредность"));
КатегорииНачислений.Добавить(ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ДоплатаДоСреднегоЗаработка"));
КатегорииНачислений.Добавить(ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.Прочее"));
КатегорииНачислений.Добавить(ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ОплатаПоСреднемуЗаработку"));
СпособыНачисления = Новый Массив;
СпособыНачисления.Добавить(ПредопределенноеЗначение("Перечисление.СпособыВыполненияНачислений.ЕжемесячноПриОкончательномРасчете"));
СпособыНачисления.Добавить(ПредопределенноеЗначение("Перечисление.СпособыВыполненияНачислений.ВЗаданныхМесяцахПриОкончательномРасчете"));
СпособыНачисления.Добавить(ПредопределенноеЗначение("Перечисление.СпособыВыполненияНачислений.ПоЗначениюПоказателяПриОкончательномРасчете"));
СпособыНачисления.Добавить(ПредопределенноеЗначение("Перечисление.СпособыВыполненияНачислений.ПоЗначениюВидаВремениПриОкончательномРасчете"));
СпособыНачисления.Добавить(ПредопределенноеЗначение("Перечисление.СпособыВыполненияНачислений.ЗаПраздничныеДниПриОкончательномРасчете"));
КатегорииДолейРКСН = Новый Массив;
КатегорииДолейРКСН.Добавить(ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ОплатаДолиРайонногоКоэффициентаВСреднемЗаработке"));
КатегорииДолейРКСН.Добавить(ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ОплатаДолиСевернойНадбавкиВСреднемЗаработке"));
КатегорииДолейРКСН.Добавить(ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ОплатаДолиРайонногоКоэффициентаВСДС"));
КатегорииДолейРКСН.Добавить(ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ОплатаДолиСевернойНадбавкиВСДС"));
КатегорииДолейРКСН.Добавить(ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ОплатаДолиРайонногоКоэффициентаВСДД"));
КатегорииДолейРКСН.Добавить(ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ОплатаДолиСевернойНадбавкиВСДД"));
Если Объект.КатегорияНачисленияИлиНеоплаченногоВремени = ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ОплатаКомандировки")
ИЛИ Объект.КатегорияНачисленияИлиНеоплаченногоВремени = ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ДенежноеСодержаниеНаПериодКомандировки")
ИЛИ Объект.КатегорияНачисленияИлиНеоплаченногоВремени = ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ДоплатаКомандировки")
ИЛИ Объект.КатегорияНачисленияИлиНеоплаченногоВремени = ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ДенежноеСодержаниеДоплатаКомандировки")
ИЛИ КатегорииДолейРКСН.Найти(Объект.КатегорияНачисленияИлиНеоплаченногоВремени) <> Неопределено Тогда
Возврат Истина;
КонецЕсли;
Если Не Объект.Рассчитывается Тогда
Возврат Ложь;
КонецЕсли;
Если КатегорииНачислений.Найти(Объект.КатегорияНачисленияИлиНеоплаченногоВремени) = Неопределено Тогда
Возврат Ложь;
КонецЕсли;
Если СпособыНачисления.Найти(Объект.СпособВыполненияНачисления) = Неопределено Тогда
Возврат Ложь;
КонецЕсли;
Возврат Истина;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура ЗаполнитьНачисляетсяПриРасчетеПервойПоловиныМесяцаПоУмолчанию(Форма)
Если Форма.Объект.НачисляетсяВЦеломЗаМесяц Тогда
Форма.Объект.НачисляетсяПриРасчетеПервойПоловиныМесяца = Ложь;
КонецЕсли;
Форма.Объект.НачисляетсяТолькоПриРасчетеПервойПоловиныМесяца = Ложь;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьПериодОпределенияЗначенийПоказателейПоУмолчанию(Форма)
Форма.Объект.УчитыватьИзменениеЗначенийПоказателейВБазовомПериоде = Форма.ЕстьПоказательРасчетнаяБаза;
УстановитьПредставлениеПериодаОпределенияЗначенийПоказателей(Форма);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьПредставлениеПериодаОпределенияЗначенийПоказателей(Форма)
Форма.УчитыватьИзменениеЗначенийПоказателейВБазовомПериодеЧисло = ?(Форма.Объект.УчитыватьИзменениеЗначенийПоказателейВБазовомПериоде, 1, 0);
КонецПроцедуры
&НаСервере
Процедура УстановитьЗаголовокПериодаОпределенияЗначенийПоказателей()
Если Не ЕстьПоказательРасчетнаяБаза Тогда
Возврат;
КонецЕсли;
СписокПоказателей = ОбщегоНазначения.ВыгрузитьКолонку(Объект.Показатели, "Показатель");
СведенияОПоказателях = ЗарплатаКадрыРасширенный.СведенияОПоказателяхРасчетаЗарплаты(СписокПоказателей);
ИменаПоказателей = "";
КоличествоПоказателей = 0;
Для Каждого КлючИЗначение Из СведенияОПоказателях Цикл
ОписаниеПоказателя = КлючИЗначение.Значение;
Если Не ОписаниеПоказателя.ЗначениеРассчитываетсяАвтоматически
И ОписаниеПоказателя.СпособПримененияЗначений = Перечисления.СпособыПримененияЗначенийПоказателейРасчетаЗарплаты.Постоянное Тогда
ИменаПоказателей = ИменаПоказателей + ?(ИменаПоказателей = "", "", ", ") + ОписаниеПоказателя.Наименование;
КоличествоПоказателей = КоличествоПоказателей + 1;
КонецЕсли;
КонецЦикла;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ПериодРасчетаПоказателейСтраницы", "Видимость", КоличествоПоказателей <> 0);
Если КоличествоПоказателей = 0 Тогда
Возврат;
КонецЕсли;
ШаблонЗаголовка = ?(КоличествоПоказателей > 1, НСтр("ru = 'Значения показателей %1 определяются за'"), НСтр("ru = 'Значение показателя %1 определяется за'"));
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "УчитыватьИзменениеЗначенийПоказателейВБазовомПериодеЧисло",
"Заголовок", СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонЗаголовка, ИменаПоказателей));
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьАвтоотметкуНезаполненного(Форма)
ЗначениеОтметки = Форма.КатегорииКодДоходаСтраховыеВзносыНеЗаполняется.Найти(Форма.Объект.КатегорияНачисленияИлиНеоплаченногоВремени) = Неопределено;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Форма.Элементы, "КодДоходаСтраховыеВзносы", "АвтоОтметкаНезаполненного", ЗначениеОтметки);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Форма.Элементы, "КодДоходаСтраховыеВзносы", "ОтметкаНезаполненного", ЗначениеОтметки);
КонецПроцедуры
&НаСервере
Функция ИзменитьСвойстваНачисленияОплачиваемогоОтпускаЧАЭС(СвойстваПоКатегориям, КатегорияНачисления, ВидОтпуска)
Если НЕ ПолучитьФункциональнуюОпцию("ИспользоватьОтпускаДляПострадавшихВАварииЧАЭС")
ИЛИ НЕ ЗначениеЗаполнено(КатегорияНачисления)
ИЛИ НЕ ЗначениеЗаполнено(ВидОтпуска) Тогда
Возврат Ложь;
КонецЕсли;
ВидОтпускаОплачиваемыйЧАЭС = ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ВидыОтпусков.ОтпускПострадавшимВАварииЧАЭСОплачиваемый");
Если ВидОтпуска <> ВидОтпускаОплачиваемыйЧАЭС
И БылВидОтпуска <> ВидОтпускаОплачиваемыйЧАЭС Тогда
Возврат Ложь;
КонецЕсли;
СвойстваНачисления = СвойстваПоКатегориям.Получить(КатегорияНачисления);
Если ВидОтпуска = ВидОтпускаОплачиваемыйЧАЭС Тогда
ВидыДоходовНеОблагаетсяЦеликом = ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ВидыДоходовПоСтраховымВзносам.НеОблагаетсяЦеликом");
СвойстваНачисления.ВидНачисленияДляНУ = Неопределено;
СвойстваНачисления.КодДоходаНДФЛ = Неопределено;
СвойстваНачисления.КатегорияДохода = Неопределено;
СвойстваНачисления.КодДоходаСтраховыеВзносы = ВидыДоходовНеОблагаетсяЦеликом;
СвойстваНачисления.КодДоходаСтраховыеВзносы2017 = ВидыДоходовНеОблагаетсяЦеликом;
СвойстваНачисления.ОбозначениеВТабелеУчетаРабочегоВремени = ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ВидыИспользованияРабочегоВремени.ДополнительныйОтпуск");
СвойстваНачисления.НедоступныеСвойства.Добавить("КодДоходаНДФЛ");
СвойстваНачисления.НедоступныеСвойства.Добавить("ВидНачисленияДляНУ");
СвойстваНачисления.НедоступныеСвойства.Добавить("КодДоходаСтраховыеВзносы");
СвойстваНачисления.НедоступныеСвойства.Добавить("КодДоходаСтраховыеВзносы2017");
Иначе
СвойстваПоУмолчанию = ПланыВидовРасчета.Начисления.СвойстваНачисленийПоКатегориям().Получить(КатегорияНачисления);
ЗаполнитьЗначенияСвойств(СвойстваНачисления,СвойстваПоУмолчанию);
СвойстваНачисления.НедоступныеСвойства = СвойстваПоУмолчанию.НедоступныеСвойства;
КонецЕсли;
СвойстваНачисления.ВидОтпуска = ВидОтпуска;
Возврат Истина;
КонецФункции
&НаСервере
Процедура ОбработатьИзменениеВидаОтпускаНаСервере()
Если ИзменитьСвойстваНачисленияОплачиваемогоОтпускаЧАЭС(СвойстваПоКатегориям,Объект.КатегорияНачисленияИлиНеоплаченногоВремени,Объект.ВидОтпуска) Тогда
ЗаполнитьСведенияОКатегориях();
ОбработатьИзменениеКатегорииНачисленияНаСервере();
КонецЕсли;
БылВидОтпуска = Объект.ВидОтпуска;
КонецПроцедуры
&НаСервере
Процедура ОбработатьИзменениеКатегорииНачисленияНаСервере()
БылаФормула = Объект.ФормулаРасчета;
ЗаполнитьСвойстваПоКатегории(ЭтаФорма);
ЗаполнитьВидВремени();
УстановитьПризнакРассчитывается();
РассчитыватьРезультат = ?(Объект.Рассчитывается, 0, 1);
ОблагаетсяНДФЛ = Число(ЗначениеЗаполнено(Объект.КодДоходаНДФЛ));
ВключаетсяВРасходыПоСт255НКРФ = Число(ЗначениеЗаполнено(Объект.ВидНачисленияДляНУ));
УстановитьСвойстваКатегорииДоходаНДФЛ(ЭтаФорма);
УстановитьДоступностьКатегорииСтатистическогоНаблюдения57Т(ЭтотОбъект);
ИзменилсяСпособРасчета = Объект.СпособРасчета <> Перечисления.СпособыРасчетаНачислений.ПроизвольнаяФормула;
ИзмениласьФормулаРасчета = БылаФормула <> Объект.ФормулаРасчета;
Если ИзменилсяСпособРасчета Тогда
ЗаполнитьПоказателиПредопределенногоСпособаРасчета();
КонецЕсли;
Если ИзмениласьФормулаРасчета Тогда
Если РасчетЗарплатыРасширенныйКлиентСервер.СпособРасчетаИспользуетФормулу(Объект.СпособРасчета) Тогда
ПараметрыВыполненияФормулы = РасчетЗарплатыРасширенный.ПараметрыВыполненияФормулы(Объект.ФормулаРасчета, Ложь);
ПоказателиФормулы = Новый Массив;
Если ПараметрыВыполненияФормулы <> Неопределено Тогда
ПоказателиФормулы = ПараметрыВыполненияФормулы.ПоказателиФормулы;
КонецЕсли;
Иначе
ПоказателиФормулы = ОбщегоНазначения.ВыгрузитьКолонку(Объект.Показатели, "Показатель", Истина);
КонецЕсли;
СведенияОПоказателях = ЗарплатаКадрыРасширенный.СведенияОПоказателяхРасчетаЗарплаты(ПоказателиФормулы);
Если РасчетЗарплатыРасширенныйКлиентСервер.СпособРасчетаИспользуетФормулу(Объект.СпособРасчета) Тогда
ЗарплатаКадрыРасширенныйКлиентСервер.ОбновитьПоказателиПоФормуле(СведенияОПоказателях, Объект.Показатели);
КонецЕсли;
УстановитьДоступностьВариантаИспользованияОперативныхПоказателей(ЭтаФорма);
ЗапрашиваемыеПоказатели = ЗарплатаКадрыРасширенный.ЗапрашиваемыеПоказателиВидаРасчетаПоУмолчанию(Объект.Ссылка, ПоказателиФормулы);
ОбновитьФормуПоИзменениюФормулыРасчета(ЭтаФорма, СведенияОПоказателях, ЗапрашиваемыеПоказатели, СведенияОПоказателяхФормулы());
Если РасчетЗарплатыРасширенный.ФОТРассчитываетсяАвтоматически(Объект) = Неопределено Тогда
Объект.ФОТНеРедактируется = Ложь;
КонецЕсли;
УстановитьВидимостьПоляФОТНеРедактируется();
КонецЕсли;
ПерестроитьФормуПоКатегории(ЭтаФорма);
ЗаполнитьСвязиНачисления();
БылаКатегория = Объект.КатегорияНачисленияИлиНеоплаченногоВремени;
УстановитьВидимостьПредупрежденияОСуществующихНачислениях();
УстановитьДоступностьВключатьВФОТ(ЭтаФорма);
УстановитьВидимостьПолейЛьгот(ЭтотОбъект);
УстановитьВидимостьПолейДенежногоДовольствияСодержания(ЭтотОбъект);
УстановитьСписокВыбораПериодаРасчетаБазовыхНачислений(ЭтаФорма);
УстановитьЗначениеПериодДействияБазовый();
УстановитьВидимостьПризнакаПоддерживаетНесколькоПлановыхНачислений();
УстановитьДоступностьКоличестваМесяцевБазовогоПериодаПремии(ЭтаФорма);
УстановитьДоступностьВыбораПериодаПремииДляСреднегоЗаработка(ЭтаФорма);
УстановитьДоступностьПериодаОпределенияЗначенийПоказателей(ЭтаФорма);
УстановитьВидимостьСтратегияОтраженияВСреднемЗаработке(ЭтаФорма);
УстановитьЗапрашиваемыеПоказателиЛьгот(ЭтаФорма);
УстановитьВидимостьПериодичностиНачисления();
ОтражениеЗарплатыВБухучетеКлиентСерверРасширенный.УстановитьСтраницуНастройкиБухучетаНачислений(ЭтаФорма);
ПриИзмененииОбозначениеВТабелеУчетаРабочегоВремени(ЭтаФорма);
УстановитьВидимостьСпособаРасчетовСФизическимиЛицами();
УстановитьДоступностьПоляВыполнятьВДокументахРазовыхНачислений(ЭтотОбъект);
УстановитьЗначениеВыполнятьВДокументахРазовыхНачислений(ЭтотОбъект);
ЗаполнитьПризнакНачисляетсяВОтпускеПоУходу(ЭтотОбъект);
УстановитьВидимостьНеУчитыватьПриОплатеБольничногоЗаСчетРаботодателя();
УстановитьВидимостьОсновногоВидаРасчета();
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьПризнакаПоддерживаетНесколькоПлановыхНачислений()
ЭтоПовременнаяОплатаТруда = Объект.КатегорияНачисленияИлиНеоплаченногоВремени = Перечисления.КатегорииНачисленийИНеоплаченногоВремени.ПовременнаяОплатаТруда;
РазрешенВводНесколькихПлановыхНачислений = РасчетЗарплатыРасширенный.РазрешенВводНесколькихПлановыхНачислений(
Объект.КатегорияНачисленияИлиНеоплаченногоВремени, Объект.СпособВыполненияНачисления);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ГруппаНесколькоПлановыхНачислений", "Видимость", РазрешенВводНесколькихПлановыхНачислений);
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьПериодичностиНачисления()
КонтролируемыеВидыДокументов = Новый Массив();
КонтролируемыеВидыДокументов.Добавить(Перечисления.ВидыДокументовНачисления.МатериальнаяПомощь);
КонтролируемыеВидыДокументов.Добавить(Перечисления.ВидыДокументовНачисления.Отпуск);
КонтролируемыеВидыДокументов.Добавить(Перечисления.ВидыДокументовНачисления.Премия);
КонтролируемыеВидыДокументов.Добавить(Перечисления.ВидыДокументовНачисления.РазовоеНачисление);
НачислениеКонтролируемогоДокумента = (КонтролируемыеВидыДокументов.Найти(Объект.ВидДокументаНачисления) <> Неопределено);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ПериодичностьНачисления", "Видимость", НачислениеКонтролируемогоДокумента);
КонецПроцедуры
&НаСервере
Процедура УдалитьВидРасчетаИзТабличнойЧасти(ВидРасчетаОбъект, УдаляемыйВидРасчета, ИмяТабличнойЧасти)
НайденныеСтроки = ВидРасчетаОбъект[ИмяТабличнойЧасти].НайтиСтроки(Новый Структура("ВидРасчета", УдаляемыйВидРасчета));
Для Каждого НайденнаяСтрока Из НайденныеСтроки Цикл
ВидРасчетаОбъект[ИмяТабличнойЧасти].Удалить(НайденнаяСтрока);
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ПеренестиВидыРасчетаИзТаблицыВТабличнуюЧасть(ТаблицаИсточник, ТаблицаПриемник)
УникальныеЗначения = Новый Соответствие;
Для Каждого СтрокаТаблицы Из ТаблицаПриемник Цикл
УникальныеЗначения.Вставить(СтрокаТаблицы.ВидРасчета, Истина);
КонецЦикла;
Для Каждого СтрокаТаблицы Из ТаблицаИсточник Цикл
Если УникальныеЗначения[СтрокаТаблицы.ВидРасчета] <> Неопределено Тогда
Продолжить;
КонецЕсли;
ТаблицаПриемник.Добавить().ВидРасчета = СтрокаТаблицы.ВидРасчета;
УникальныеЗначения.Вставить(СтрокаТаблицы.ВидРасчета, Истина);
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСвязиНачисления(ОбновлятьЗависимостиПоБазе = Истина) Экспорт
Если ПланыВидовРасчета.Начисления.КатегорииНачисленийОплатыДолейРКиСН().Найти(Объект.КатегорияНачисленияИлиНеоплаченногоВремени) <> Неопределено Тогда
Возврат;
КонецЕсли;
Объект.ВытесняющиеВидыРасчета.Очистить();
Объект.ВедущиеВидыРасчета.Очистить();
СписокПриоритетНиже.Очистить();
СписокРассчитываемыхПосле.Очистить();
Если ОбновлятьЗависимостиПоБазе Тогда
Объект.БазовыеВидыРасчета.Очистить();
СписокЗависимыеНачисления.Очистить();
КонецЕсли;
ВидРасчетаОбъект = ПланыВидовРасчета.Начисления.СоздатьВидРасчета();
ЗаполнитьЗначенияСвойств(ВидРасчетаОбъект, Объект);
КоллекторНачислений = Новый Соответствие;
СсылкаНаОбъект = ПланыВидовРасчета.Начисления.ПолучитьСсылку();
ВидРасчетаОбъект.УстановитьСсылкуНового(СсылкаНаОбъект);
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба.РасчетДенежногоДовольствия") Тогда
Модуль = ОбщегоНазначения.ОбщийМодуль("РасчетДенежногоДовольствия");
Модуль.УстановитьДополнительныеСвойстваНачисления(ВидРасчетаОбъект, ЭтаФорма);
КонецЕсли;
КоллекторНачислений.Вставить(СсылкаНаОбъект, ВидРасчетаОбъект);
ПланыВидовРасчета.Начисления.НастроитьСвязиНачислений(КоллекторНачислений, СвойстваПоКатегориям, ОбновлятьЗависимостиПоБазе);
ПеренестиСвязанныеНачисления(КоллекторНачислений, СсылкаНаОбъект, ВидРасчетаОбъект);
КоллекторДозаполнения = Новый Соответствие;
КоллекторДозаполнения.Вставить(СсылкаНаОбъект, ВидРасчетаОбъект);
РасчетЗарплатыРасширенный.ДозаполнитьВидыРасчета(КоллекторДозаполнения);
ПеренестиСвязанныеНачисления(КоллекторДозаполнения, СсылкаНаОбъект, ВидРасчетаОбъект);
Если ОбновлятьЗависимостиПоБазе Тогда
СвойстваУдержаний = ПланыВидовРасчета.Удержания.СвойстваУдержанийПоКатегориям();
СписокЗависимыеУдержания.Очистить();
Для Каждого КлючИЗначение Из СвойстваУдержаний Цикл
КатегорияУдержания = КлючИЗначение.Ключ;
СвойстваУдержания = КлючИЗначение.Значение;
Если Не ЗначениеЗаполнено(КатегорияУдержания) Тогда
Продолжить;
КонецЕсли;
Если СвойстваУдержания.ОтборБазовых <> Неопределено Тогда
ОтборБазовых = ОбщегоНазначения.СкопироватьРекурсивно(СвойстваУдержания.ОтборБазовых);
Категория = ОтборБазовых.КатегорияНачисления;
ОтборБазовых.Удалить("КатегорияНачисления");
Если ПланыВидовРасчета.Начисления.ВидРасчетаСоответствуетОтбору(ВидРасчетаОбъект, Категория, ОтборБазовых) Тогда
ЗависимыеУдержания = РасчетЗарплаты.УдержанияПоКатегории(КатегорияУдержания, Новый Структура("ТребуетсяРасчетБазы", Истина));
Для Каждого ЗависимоеУдержание Из ЗависимыеУдержания Цикл
Если СписокЗависимыеУдержания.НайтиСтроки(Новый Структура("ВидРасчета", ЗависимоеУдержание)).Количество() = 0 Тогда
СписокЗависимыеУдержания.Добавить().ВидРасчета = ЗависимоеУдержание;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСвязиПоОсновномуВидуРасчета()
Объект.ВытесняющиеВидыРасчета.Очистить();
Объект.ВедущиеВидыРасчета.Очистить();
СписокПриоритетНиже.Очистить();
СписокРассчитываемыхПосле.Очистить();
Объект.БазовыеВидыРасчета.Очистить();
СписокЗависимыеНачисления.Очистить();
РасчетЗарплатыРасширенный.ЗаполнитьСписокЗависимыхВидовРасчета(Объект.ОсновнойВидРасчета, СписокЗависимыеНачисления, "БазовыеВидыРасчета");
РасчетЗарплатыРасширенный.ЗаполнитьСписокЗависимыхВидовРасчета(Объект.ОсновнойВидРасчета, СписокЗависимыеУдержания, "БазовыеВидыРасчета", Истина);
ЗаполнитьВытесняющиеВидыРасчетаПоОсновномуВидуРасчета();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьВытесняющиеВидыРасчетаПоОсновномуВидуРасчета()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НачисленияВытесняющиеВидыРасчета.ВидРасчета КАК ВидРасчета
|ИЗ
| ПланВидовРасчета.Начисления.ВытесняющиеВидыРасчета КАК НачисленияВытесняющиеВидыРасчета
|ГДЕ
| НачисленияВытесняющиеВидыРасчета.Ссылка = &ОсновнойВидРасчета";
Запрос.УстановитьПараметр("ОсновнойВидРасчета", Объект.ОсновнойВидРасчета);
РезультатЗапроса = Запрос.Выполнить();
Объект.ВытесняющиеВидыРасчета.Загрузить(РезультатЗапроса.Выгрузить());
КонецПроцедуры
&НаСервере
Процедура ПеренестиСвязанныеНачисления(КоллекторНачислений, ВидРасчетаСсылка, ВидРасчетаОбъект)
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
Если КоллекторНачислений.Получить(Объект.Ссылка) <> Неопределено Тогда
КоллекторНачислений.Удалить(Объект.Ссылка);
КонецЕсли;
УдалитьВидРасчетаИзТабличнойЧасти(ВидРасчетаОбъект, Объект.Ссылка, "ВытесняющиеВидыРасчета");
УдалитьВидРасчетаИзТабличнойЧасти(ВидРасчетаОбъект, Объект.Ссылка, "БазовыеВидыРасчета");
УдалитьВидРасчетаИзТабличнойЧасти(ВидРасчетаОбъект, Объект.Ссылка, "ВедущиеВидыРасчета");
КонецЕсли;
ПеренестиВидыРасчетаИзТаблицыВТабличнуюЧасть(ВидРасчетаОбъект.ВытесняющиеВидыРасчета, Объект.ВытесняющиеВидыРасчета);
ПеренестиВидыРасчетаИзТаблицыВТабличнуюЧасть(ВидРасчетаОбъект.БазовыеВидыРасчета, Объект.БазовыеВидыРасчета);
ПеренестиВидыРасчетаИзТаблицыВТабличнуюЧасть(ВидРасчетаОбъект.ВедущиеВидыРасчета, Объект.ВедущиеВидыРасчета);
Для Каждого КлючИЗначение Из КоллекторНачислений Цикл
Если КлючИЗначение.Ключ = ВидРасчетаСсылка Тогда
Продолжить;
КонецЕсли;
Начисление = КлючИЗначение.Значение;
Если Начисление.ВытесняющиеВидыРасчета.Найти(ВидРасчетаСсылка, "ВидРасчета") <> Неопределено Тогда
Если СписокПриоритетНиже.НайтиСтроки(Новый Структура("ВидРасчета", Начисление.Ссылка)).Количество() = 0 Тогда
СписокПриоритетНиже.Добавить().ВидРасчета = Начисление.Ссылка;
КонецЕсли;
КонецЕсли;
Если Начисление.БазовыеВидыРасчета.Найти(ВидРасчетаСсылка, "ВидРасчета") <> Неопределено Тогда
Если СписокЗависимыеНачисления.НайтиСтроки(Новый Структура("ВидРасчета", Начисление.Ссылка)).Количество() = 0 Тогда
НоваяСтрока = СписокЗависимыеНачисления.Добавить();
НоваяСтрока.ВидРасчета = Начисление.Ссылка;
Если Начисление.КатегорияНачисленияИлиНеоплаченногоВремени = Перечисления.КатегорииНачисленийИНеоплаченногоВремени.ДоплатаДоСреднегоЗаработка Тогда
НоваяСтрока.ДоплатаДоСреднего = Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если Начисление.ВедущиеВидыРасчета.Найти(ВидРасчетаСсылка, "ВидРасчета") <> Неопределено Тогда
Если СписокРассчитываемыхПосле.НайтиСтроки(Новый Структура("ВидРасчета", Начисление.Ссылка)).Количество() = 0 Тогда
СписокРассчитываемыхПосле.Добавить().ВидРасчета = Начисление.Ссылка;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура СкопироватьСпискиЗависимыхВидовРасчетаПриКопировании(ЗначениеКопирования)
РасчетЗарплатыРасширенный.ЗаполнитьСписокЗависимыхВидовРасчета(ЗначениеКопирования, СписокРассчитываемыхПосле, "ВедущиеВидыРасчета");
РасчетЗарплатыРасширенный.ЗаполнитьСписокЗависимыхВидовРасчета(ЗначениеКопирования, СписокПриоритетНиже, "ВытесняющиеВидыРасчета");
РасчетЗарплатыРасширенный.ЗаполнитьСписокЗависимыхВидовРасчета(ЗначениеКопирования, СписокЗависимыеНачисления, "БазовыеВидыРасчета");
РасчетЗарплатыРасширенный.ЗаполнитьСписокЗависимыхВидовРасчета(ЗначениеКопирования, СписокЗависимыеУдержания, "БазовыеВидыРасчета", Истина);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПоказателиПредопределенногоСпособаРасчета()
Объект.Показатели.Очистить();
ЗарплатаКадрыРасширенный.ЗаполнитьПоказателиПредопределенногоСпособаРасчета(Объект.СпособРасчета, Объект.Показатели);
ЕстьПоказателиУчетаВремени = РасчетЗарплатыРасширенный.ЕстьПоказателиВКоллекции(Объект.Показатели, Справочники.ПоказателиРасчетаЗарплаты.ПоказателиУчетаВремени());
ЕстьПоказательРасчетнаяБаза = РасчетЗарплатыРасширенный.ЕстьПоказательВКоллекции(Объект.Показатели, "РасчетнаяБаза");
ЕстьОперативныеПоказатели = РасчетЗарплатыРасширенный.ЕстьПоказателиВКоллекции(Объект.Показатели, Справочники.ПоказателиРасчетаЗарплаты.ОперативныеПоказатели());
УстановитьДоступностьВариантаИспользованияОперативныхПоказателей(ЭтаФорма);
УстановитьЗначенияПоУмолчаниюБазовогоПериодаПремии(ЭтаФорма);
УстановитьДоступностьНачисленияВПервуюПоловинуМесяца(ЭтаФорма);
УстановитьДоступностьРасчетаБазы(ЭтаФорма);
УстановитьСвойстваПериодаРасчетаСреднегоЗаработка(ЭтаФорма);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьИнформациюПоСпособуНачисления(Форма)
Объект = Форма.Объект;
Элементы = Форма.Элементы;
Если Объект.СпособВыполненияНачисления = ПредопределенноеЗначение("Перечисление.СпособыВыполненияНачислений.ЕжемесячноПриОкончательномРасчете") Тогда
Элементы.ГруппаСпособВыполненияНачисления.ТекущаяСтраница = Элементы.ГруппаЕжемесячно;
Элементы.ПостоянноСтраницы.ТекущаяСтраница = Элементы.ЕжемесячноСтраница;
ИначеЕсли Объект.СпособВыполненияНачисления = ПредопределенноеЗначение("Перечисление.СпособыВыполненияНачислений.ВЗаданныхМесяцахПриОкончательномРасчете") Тогда
Элементы.ГруппаСпособВыполненияНачисления.ТекущаяСтраница = Элементы.ГруппаЕжемесячно;
Элементы.ПостоянноСтраницы.ТекущаяСтраница = Элементы.ВЗаданныеМесяцыСтраница;
ИначеЕсли Объект.СпособВыполненияНачисления = ПредопределенноеЗначение("Перечисление.СпособыВыполненияНачислений.ПоОтдельномуДокументуДоОкончательногоРасчета") Тогда
Элементы.ГруппаСпособВыполненияНачисления.ТекущаяСтраница = Элементы.ГруппаПоПриказу;
ИначеЕсли Объект.СпособВыполненияНачисления = ПредопределенноеЗначение("Перечисление.СпособыВыполненияНачислений.ПоЗначениюПоказателяПриОкончательномРасчете") Тогда
Элементы.ГруппаСпособВыполненияНачисления.ТекущаяСтраница = Элементы.ГруппаПоПоказателям;
ИначеЕсли Объект.СпособВыполненияНачисления = ПредопределенноеЗначение("Перечисление.СпособыВыполненияНачислений.ПоЗначениюВидаВремениПриОкончательномРасчете") Тогда
Элементы.ГруппаСпособВыполненияНачисления.ТекущаяСтраница = Элементы.ГруппаПоВидамУчетаВремени;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбработкаПодбораНачисленийНаСервере(ВыбранноеЗначение, ПутьКДанным)
УдалениеВыбранныхВидовРасчета(ВыбранноеЗначение.УдаленныеВидыРасчета, ПутьКДанным);
Для Каждого ВидРасчета Из ВыбранноеЗначение.ДобавленныеВидыРасчета Цикл
ОбработкаВыбранногоНачисления(ВидРасчета, ПутьКДанным);
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ОбработкаВыбранногоНачисления(ВидРасчета, ПутьКДанным)
ТаблицаВидовРасчета = ОбщегоНазначенияКлиентСервер.ПолучитьРеквизитФормыПоПути(ЭтотОбъект, ПутьКДанным);
МассивИмен = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ПутьКДанным, ".");
ИмяТаблицы = МассивИмен[МассивИмен.Количество() - 1];
Если ТаблицаВидовРасчета.НайтиСтроки(Новый Структура("ВидРасчета", ВидРасчета)).Количество() = 0 Тогда
ТаблицаВидовРасчета.Добавить().ВидРасчета = ВидРасчета;
Если ТипЗнч(ВидРасчета) <> Тип("ПланВидовРасчетаСсылка.Удержания") Тогда
ДозаполнитьВидРасчета(ВидРасчета, ИмяТаблицы, Ложь);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УдалениеВыбранныхВидовРасчета(УдаленныеВидыРасчета, ПутьКДанным)
ТаблицаВидовРасчета = ОбщегоНазначенияКлиентСервер.ПолучитьРеквизитФормыПоПути(ЭтотОбъект, ПутьКДанным);
Для Каждого Значение Из УдаленныеВидыРасчета Цикл
СтрокиДляУдаления = ТаблицаВидовРасчета.НайтиСтроки(Новый Структура("ВидРасчета", Значение));
Для Каждого ТекСтрока Из СтрокиДляУдаления Цикл
ТаблицаВидовРасчета.Удалить(ТекСтрока);
КонецЦикла;
КонецЦикла;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ЗаполнитьПризнакНачисляетсяВЦеломЗаМесяц(Форма)
Форма.Объект.ИспользоватьОперативныеПоказателиВЦеломЗаМесяц = Форма.ИспользоватьОперативныеПоказателиВЦеломЗаМесяцЧисло;
Форма.Объект.НачисляетсяВЦеломЗаМесяц = РасчетЗарплатыРасширенныйКлиентСервер.НачислениеВыполняетсяВЦеломЗаМесяц(
Форма.Объект, Форма.ЕстьПоказателиУчетаВремени, Форма.ЕстьПоказательРасчетнаяБаза, Форма.ЕстьОперативныеПоказатели, Форма.ЕстьПоказательОтработаноСмен);
УстановитьДоступностьНачисленияВПервуюПоловинуМесяца(Форма);
ЗаполнитьНачисляетсяПриРасчетеПервойПоловиныМесяцаПоУмолчанию(Форма);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ЗаполнитьПризнакНачисляетсяВОтпускеПоУходу(Форма)
Форма.Объект.НачисляетсяВОтпускеПоУходу = Ложь;
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииВидаВремени()
УстановитьДоступностьВидаСтажаСЗВ(ЭтаФорма);
Если Объект.ВидВремени = Перечисления.ВидыРабочегоВремениСотрудников.ОтработанноеВПределахНормы Тогда
Объект.ВидСтажаСЗВ = Перечисления.ВидыСтажаСЗВ.ВключаетсяВСтажДляДосрочногоНазначенияПенсии;
КонецЕсли;
УстановитьДоступностьСпискаПриоритетНиже(ЭтаФорма);
ВидыВремениВлияющиеНаНастройкуСвязей = Новый Массив;
ВидыВремениВлияющиеНаНастройкуСвязей.Добавить(Перечисления.ВидыРабочегоВремениСотрудников.ЧасовоеНеотработанное);
ВидыВремениВлияющиеНаНастройкуСвязей.Добавить(Перечисления.ВидыРабочегоВремениСотрудников.ОтработанноеСверхНормы);
Если БылВидВремени <> Объект.ВидВремени
И (ВидыВремениВлияющиеНаНастройкуСвязей.Найти(БылВидВремени) <> Неопределено
Или ВидыВремениВлияющиеНаНастройкуСвязей.Найти(Объект.ВидВремени) <> Неопределено) Тогда
ЗаполнитьСвязиНачисления(Ложь);
КонецЕсли;
БылВидВремени = Объект.ВидВремени;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступностьВидаСтажаСЗВ(Форма)
ДоступенВыборВидаСтажаСЗВ = Форма.Объект.ВидВремени = ПредопределенноеЗначение("Перечисление.ВидыРабочегоВремениСотрудников.ЦелодневноеНеотработанное");
Если Форма.Элементы.ВидСтажаСЗВ.Доступность = ДоступенВыборВидаСтажаСЗВ Тогда
Возврат;
КонецЕсли;
Форма.Элементы.ВидСтажаСЗВ.Доступность = ДоступенВыборВидаСтажаСЗВ;
Если Не ДоступенВыборВидаСтажаСЗВ Тогда
Форма.Объект.ВидСтажаСЗВ = Неопределено;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступностьМесяцевНачисления(Форма)
Для НомерМесяца = 1 По 12 Цикл
ДоступностьМесяца = Истина;
Если Форма.Объект.ПериодРасчетаБазовыхНачислений = ПредопределенноеЗначение("Перечисление.ПериодыРасчетаБазовыхНачислений.ТекущийГод") Тогда
ДоступностьМесяца = (НомерМесяца = 12);
ИначеЕсли Форма.Объект.ПериодРасчетаБазовыхНачислений = ПредопределенноеЗначение("Перечисление.ПериодыРасчетаБазовыхНачислений.ТекущийКвартал") Тогда
ДоступностьМесяца = (НомерМесяца % 3 = 0);
КонецЕсли;
ИмяПоляФлажка = "МесяцНачисления" + Формат(НомерМесяца, "ЧЦ=2; ЧВН=");
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Форма.Элементы, ИмяПоляФлажка, "Доступность", ДоступностьМесяца);
КонецЦикла;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступностьСпискаПриоритетНиже(Форма)
ЗачетНормыВремени = ЗарплатаКадрыРасширенныйКлиентСервер.ЗачетНормыВремениНачисления(Форма.Объект);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Форма.Элементы, "СписокПриоритетНиже", "ТолькоПросмотр", Не ЗачетНормыВремени);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Форма.Элементы, "СписокПриоритетНижеПодборПриоритетНиже", "Доступность", ЗачетНормыВремени);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьСписокВыбораПериодаРасчетаБазовыхНачислений(Форма, УстанавливатьЗначениеПоУмолчанию = Истина)
Элементы = Форма.Элементы;
Объект = Форма.Объект;
Если Не ДоступенВыборТекущегоПериода(Форма) Тогда
Элементы.ПериодРасчетаБазыСтраницы.ТекущаяСтраница = Элементы.ТекущийПериодНедоступенСтраница;
Если УстанавливатьЗначениеПоУмолчанию Тогда
Объект.ПериодРасчетаБазовыхНачислений = ПредопределенноеЗначение("Перечисление.ПериодыРасчетаБазовыхНачислений.ПредыдущийМесяц");
КонецЕсли;
СписокВыбора = Элементы.ПериодРасчетаБазовыхНачисленийТекущийПериодНедоступен.СписокВыбора;
Иначе
Элементы.ПериодРасчетаБазыСтраницы.ТекущаяСтраница = Элементы.ТекущийПериодДоступенСтраница;
СписокВыбора = Элементы.ПериодРасчетаБазовыхНачисленийТекущийПериодДоступен.СписокВыбора;
КонецЕсли;
ЗаполнитьСписокВыбораПериодаБазовыхНачислений(Форма, СписокВыбора);
УстановитьДоступностьКоличестваМесяцевБазовогоПериода(Форма);
УстановитьДоступностьКоличестваМесяцевПериодаПремии(Форма);
УстановитьДоступностьПериодаОпределенияЗначенийПоказателей(Форма);
КонецПроцедуры
&НаСервере
Процедура УстановитьЗначениеПериодДействияБазовый()
ПериодДействияБазовый = Ложь;
Если ЕстьПоказательРасчетнаяБаза И Объект.ПериодРасчетаБазовыхНачислений = Перечисления.ПериодыРасчетаБазовыхНачислений.ТекущийМесяц Тогда
ПериодДействияБазовый = Истина;
Если ПланыВидовРасчета.Начисления.КатегорииНадбавокПоБазе().Найти(Объект.КатегорияНачисленияИлиНеоплаченногоВремени) <> Неопределено Тогда
ПериодДействияБазовый = Ложь;
КонецЕсли;
КонецЕсли;
Объект.ПериодДействияБазовый = ПериодДействияБазовый;
УстановитьТекстПодсказкиБазовогоПериода(ЭтотОбъект);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ДоступенВыборТекущегоПериода(Форма)
Объект = Форма.Объект;
Если Объект.СпособРасчета = ПредопределенноеЗначение("Перечисление.СпособыРасчетаНачислений.ДоплатаДоСреднегоЗаработка")
Или Объект.СпособРасчета = ПредопределенноеЗначение("Перечисление.СпособыРасчетаНачислений.ДоплатаДоСреднегоЗаработкаФСС")
Или Объект.СпособРасчета = ПредопределенноеЗначение("Перечисление.СпособыРасчетаНачислений.ДоплатаДоСохраняемогоДенежногоСодержанияЗаДниБолезни") Тогда
Возврат Истина;
КонецЕсли;
Если Не Форма.ЕстьПоказательРасчетнаяБаза
И (Объект.КатегорияНачисленияИлиНеоплаченногоВремени = ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.Премия")
Или Объект.КатегорияНачисленияИлиНеоплаченногоВремени = ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.КвартальнаяПремия")) Тогда
Возврат Истина;
КонецЕсли;
Если Объект.СпособВыполненияНачисления = ПредопределенноеЗначение("Перечисление.СпособыВыполненияНачислений.ПоОтдельномуДокументуДоОкончательногоРасчета") Тогда
Возврат Ложь;
КонецЕсли;
Возврат Истина;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура ЗаполнитьСписокВыбораПериодаБазовыхНачислений(Форма, СписокВыбора)
Объект = Форма.Объект;
ДоступностьТекущегоМесяца = ДоступенВыборТекущегоПериода(Форма);
ДоступностьТекущегоГода = ДоступенВыборТекущегоПериода(Форма);
ДоступностьТекущегоКвартала = ДоступенВыборТекущегоПериода(Форма);
Если Объект.СпособВыполненияНачисления = ПредопределенноеЗначение("Перечисление.СпособыВыполненияНачислений.ВЗаданныхМесяцахПриОкончательномРасчете") Тогда
Для НомерМесяца = 1 По 12 Цикл
НачисляетсяВМесяце = Форма["НачисляетсяВМесяце" + Формат(НомерМесяца, "ЧЦ=2; ЧВН=")];
Если НачисляетсяВМесяце И НомерМесяца <> 12 Тогда
ДоступностьТекущегоГода = Ложь;
КонецЕсли;
Если НачисляетсяВМесяце И (НомерМесяца % 3 <> 0) Тогда
ДоступностьТекущегоКвартала = Ложь;
КонецЕсли;
КонецЦикла;
КонецЕсли;
СписокВыбора.Очистить();
Если ДоступностьТекущегоМесяца Тогда
СписокВыбора.Добавить(ПредопределенноеЗначение("Перечисление.ПериодыРасчетаБазовыхНачислений.ТекущийМесяц"), НСтр("ru = 'Текущий месяц'"));
КонецЕсли;
СписокВыбора.Добавить(ПредопределенноеЗначение("Перечисление.ПериодыРасчетаБазовыхНачислений.ПредыдущийМесяц"), НСтр("ru = 'Предыдущий месяц'"));
Если ДоступностьТекущегоКвартала Тогда
СписокВыбора.Добавить(ПредопределенноеЗначение("Перечисление.ПериодыРасчетаБазовыхНачислений.ТекущийКвартал"), НСтр("ru = 'Текущий квартал'"));
КонецЕсли;
СписокВыбора.Добавить(ПредопределенноеЗначение("Перечисление.ПериодыРасчетаБазовыхНачислений.ПредыдущийКвартал"), НСтр("ru = 'Предыдущий квартал'"));
Если ДоступностьТекущегоГода Тогда
СписокВыбора.Добавить(ПредопределенноеЗначение("Перечисление.ПериодыРасчетаБазовыхНачислений.ТекущийГод"), НСтр("ru = 'Текущий год'"));
КонецЕсли;
СписокВыбора.Добавить(ПредопределенноеЗначение("Перечисление.ПериодыРасчетаБазовыхНачислений.ПредыдущийГод"), НСтр("ru = 'Предыдущий год'"));
СписокВыбора.Добавить(ПредопределенноеЗначение("Перечисление.ПериодыРасчетаБазовыхНачислений.НесколькоПредыдущихМесяцев"), НСтр("ru = 'Несколько предыдущих месяцев'"));
Если СписокВыбора.НайтиПоЗначению(Объект.ПериодРасчетаБазовыхНачислений) = Неопределено Тогда
Объект.ПериодРасчетаБазовыхНачислений = СписокВыбора.Получить(0).Значение;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступностьВыбораПериодаПремииДляСреднегоЗаработка(Форма)
Элементы = Форма.Элементы;
Если Элементы.НастройкиПремииСтраницы.ТекущаяСтраница = Элементы.НастройкиПремииВидимостьЛожь Тогда
Возврат;
КонецЕсли;
ДоступенТекущийПериод = Истина;
Если Форма.ЕстьПоказательРасчетнаяБаза
И Форма.Объект.СпособВыполненияНачисления = ПредопределенноеЗначение("Перечисление.СпособыВыполненияНачислений.ПоОтдельномуДокументуДоОкончательногоРасчета") Тогда
ДоступенТекущийПериод = Ложь;
КонецЕсли;
Если Элементы.ПериодРасчетаПремииСтраницы.ТекущаяСтраница = Элементы.ПериодРасчетаПремииГодоваяСтраница Тогда
СписокВыбора = Элементы.ПериодРасчетаПремииГодовая.СписокВыбора;
Элементы.ПериодРасчетаПремииГодовая.Доступность = ДоступенТекущийПериод;
Если Не ДоступенТекущийПериод Тогда
Форма.Объект.ПериодРасчетаБазовыхНачислений = ПредопределенноеЗначение("Перечисление.ПериодыРасчетаБазовыхНачислений.ПредыдущийГод");
КонецЕсли;
Иначе
СписокВыбора = Элементы.ПериодРасчетаПремииНеГодовая.СписокВыбора;
ЗаполнитьСписокВыбораПериодаБазовыхНачислений(Форма, СписокВыбора);
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьВидимостьСтратегияОтраженияВСреднемЗаработке(Форма)
Категории = Новый Массив;
Категории.Добавить(ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.РайонныйКоэффициент"));
Категории.Добавить(ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.СевернаяНадбавка"));
Форма.Элементы.СтратегияОтраженияВСреднемЗаработке.Видимость = Категории.Найти(Форма.Объект.КатегорияНачисленияИлиНеоплаченногоВремени) <> Неопределено;
Если Не Форма.Элементы.СтратегияОтраженияВСреднемЗаработке.Видимость Тогда
Форма.Объект.СтратегияОтраженияВСреднемЗаработке = ПредопределенноеЗначение("Перечисление.СтратегииОтраженияВУчетеНачисленийУдержаний.КакЗаданоВидуРасчета");
УстановитьВидимостьНастроекСреднегоЗаработка(Форма);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьНеУчитыватьПриОплатеБольничногоЗаСчетРаботодателя()
ИспользоватьРасчетДенежногоСодержанияСудей = Ложь;
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба") Тогда
Модуль = ОбщегоНазначения.ОбщийМодуль("ГосударственнаяСлужба");
ИспользоватьРасчетДенежногоСодержанияСудей = Модуль.ИспользуетсяРасчетДенежногоСодержанияСудей();
КонецЕсли;
Элементы.НеУчитыватьПриОплатеБольничногоЗаСчетРаботодателя.Видимость =
СреднийЗаработокФССИспользовать И ИспользоватьРасчетДенежногоСодержанияСудей;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьВидимостьНастроекСреднегоЗаработка(Форма)
Форма.Элементы.СреднийЗаработокОбщийНастройкаГруппа.Видимость = Форма.Объект.СтратегияОтраженияВСреднемЗаработке <> ПредопределенноеЗначение("Перечисление.СтратегииОтраженияВУчетеНачисленийУдержаний.ПоБазовымРасчетам");
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступностьВариантаИспользованияОперативныхПоказателей(Форма)
Элементы = Форма.Элементы;
Элементы.ИспользованиеОперативныхПоказателейГруппа.Видимость = Форма.ЕстьОперативныеПоказатели;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступностьВключатьВФОТ(Форма)
ДоступностьЭлемента = Форма.Объект.СпособВыполненияНачисления = ПредопределенноеЗначение("Перечисление.СпособыВыполненияНачислений.ЕжемесячноПриОкончательномРасчете")
ИЛИ Форма.Объект.СпособВыполненияНачисления = ПредопределенноеЗначение("Перечисление.СпособыВыполненияНачислений.ВЗаданныхМесяцахПриОкончательномРасчете");
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Форма.Элементы,
"ВключатьВФОТ",
"Доступность",
ДоступностьЭлемента);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьВключатьВФОТ(Форма)
Если ТипЗнч(Форма.КатегорииСоставФОТ) <> Тип("ФиксированныйМассив") Тогда
Форма.Объект.ВключатьВФОТ = Ложь;
Возврат;
КонецЕсли;
Если (Форма.Объект.СпособВыполненияНачисления = ПредопределенноеЗначение("Перечисление.СпособыВыполненияНачислений.ЕжемесячноПриОкончательномРасчете")
Или Форма.Объект.СпособВыполненияНачисления = ПредопределенноеЗначение("Перечисление.СпособыВыполненияНачислений.ВЗаданныхМесяцахПриОкончательномРасчете"))
И Не Форма.Объект.КатегорияНачисленияИлиНеоплаченногоВремени = ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ОплатаПоСреднемуЗаработку") Тогда
Форма.Объект.ВключатьВФОТ = Истина;
Иначе
Форма.Объект.ВключатьВФОТ = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьВидДокументаНачисления(Форма)
Если Форма.Объект.СпособВыполненияНачисления <> ПредопределенноеЗначение("Перечисление.СпособыВыполненияНачислений.ПоОтдельномуДокументуДоОкончательногоРасчета") Тогда
Форма.Объект.ВидДокументаНачисления = ПредопределенноеЗначение("Перечисление.ВидыДокументовНачисления.ПустаяСсылка");
Возврат;
КонецЕсли;
Если Форма.Объект.КатегорияНачисленияИлиНеоплаченногоВремени = ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ПовременнаяОплатаТруда") Тогда
Форма.Объект.ВидДокументаНачисления = ПредопределенноеЗначение("Перечисление.ВидыДокументовНачисления.РазовоеНачисление");
Иначе
Форма.Объект.ВидДокументаНачисления = Форма.СвойстваПоКатегориям[Форма.Объект.КатегорияНачисленияИлиНеоплаченногоВремени].ВидДокументаНачисления;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьМесяцыНачисления()
Для НомерМесяца = 1 По 12 Цикл
ДоступностьМесяца = Истина;
Если Объект.ПериодРасчетаБазовыхНачислений = ПредопределенноеЗначение("Перечисление.ПериодыРасчетаБазовыхНачислений.ТекущийГод") Тогда
ДоступностьМесяца = (НомерМесяца = 12);
ИначеЕсли Объект.ПериодРасчетаБазовыхНачислений = ПредопределенноеЗначение("Перечисление.ПериодыРасчетаБазовыхНачислений.ТекущийКвартал") Тогда
ДоступностьМесяца = (НомерМесяца % 3 = 0);
КонецЕсли;
Если Не ДоступностьМесяца Тогда
ЭтаФорма["НачисляетсяВМесяце" + Формат(НомерМесяца, "ЧЦ=2; ЧВН=")] = ДоступностьМесяца;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ПерестроитьФормуПоКатегории(Форма)
Элементы = Форма.Элементы;
Объект = Форма.Объект;
СвойстваНачисления = Форма.СвойстваПоКатегориям.Получить(Объект.КатегорияНачисленияИлиНеоплаченногоВремени);
СпособыВыполненияПриОкончательномРасчете = Новый Массив;
СпособыВыполненияПриОкончательномРасчете.Добавить(ПредопределенноеЗначение("Перечисление.СпособыВыполненияНачислений.ЕжемесячноПриОкончательномРасчете"));
СпособыВыполненияПриОкончательномРасчете.Добавить(ПредопределенноеЗначение("Перечисление.СпособыВыполненияНачислений.ВЗаданныхМесяцахПриОкончательномРасчете"));
ТекстНазначения = "";
Если Объект.КатегорияНачисленияИлиНеоплаченногоВремени = ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.Льгота")
Или Объект.КатегорияНачисленияИлиНеоплаченногоВремени = ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ВыбираемаяСотрудникомЛьгота") Тогда
Элементы.НазначениеСтраницы.ТекущаяСтраница = Элементы.Льгота;
Элементы.ВключатьВФОТСтраницы.ТекущаяСтраница = Элементы.ВключатьВФОТНеОтображать;
ИначеЕсли Объект.КатегорияНачисленияИлиНеоплаченногоВремени = ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ОплатаПредыдущимиДокументами") Тогда
Элементы.НазначениеСтраницы.ТекущаяСтраница = Элементы.НазначениеПустаяСтраница;
Элементы.ВключатьВФОТСтраницы.ТекущаяСтраница = Элементы.ВключатьВФОТНеОтображать;
ИначеЕсли СпособыВыполненияПриОкончательномРасчете.Найти(Форма.Объект.СпособВыполненияНачисления) <> Неопределено
Или СвойстваНачисления.НедоступныеСвойства.Найти("СпособВыполненияНачисления") = Неопределено Тогда
Элементы.НазначениеСтраницы.ТекущаяСтраница = Элементы.СпособВыполнения;
Элементы.ВключатьВФОТСтраницы.ТекущаяСтраница = Элементы.ВключатьВФОТОтображать;
ИначеЕсли СвойстваНачисления.НедоступныеСвойства.Найти("ВидОтпуска") = Неопределено Тогда
Элементы.НазначениеСтраницы.ТекущаяСтраница = Элементы.Отпуск;
Элементы.ВключатьВФОТСтраницы.ТекущаяСтраница = Элементы.ВключатьВФОТНеОтображать;
ИначеЕсли Объект.КатегорияНачисленияИлиНеоплаченногоВремени = ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ОплатаДолиРайонногоКоэффициентаВСреднемЗаработке")
Или Объект.КатегорияНачисленияИлиНеоплаченногоВремени = ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ОплатаДолиСевернойНадбавкиВСреднемЗаработке") Тогда
Элементы.НазначениеСтраницы.ТекущаяСтраница = Элементы.НазначениеПустаяСтраница;
Элементы.ВключатьВФОТСтраницы.ТекущаяСтраница = Элементы.ВключатьВФОТНеОтображать;
Иначе
Если Форма.КатегорииНеоплачиваемоеВремя.Найти(Объект.КатегорияНачисленияИлиНеоплаченногоВремени) <> Неопределено Тогда
ТекстНазначения = НСтр("ru = 'Это — время без оплаты. Для него будет выполняться только подсчет неоплаченных дней и часов.'");
КонецЕсли;
Если ЗначениеЗаполнено(Объект.ВидДокументаНачисления) Тогда
ТекстНазначения = ТекстНазначения + ?(ЗначениеЗаполнено(ТекстНазначения), " ", "")
+ СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Начисление выполняется документом «%1» до окончательного расчета.'"),
Объект.ВидДокументаНачисления);
КонецЕсли;
Элементы.ВключатьВФОТСтраницы.ТекущаяСтраница = Элементы.ВключатьВФОТНеОтображать;
КонецЕсли;
Если ЗначениеЗаполнено(Форма.КатегорияОсновногоВидаРасчета) Тогда
Описание = ОписаниеСпособаРасчета(Форма.КатегорияОсновногоВидаРасчета);
ОписаниеСпособаРасчета = ?(Описание = "", Описание, "Расчет выполняется по алгоритмам основного начисления оплаты по среднему заработку");
Иначе
ОписаниеСпособаРасчета = ОписаниеСпособаРасчета(Объект.КатегорияНачисленияИлиНеоплаченногоВремени);
КонецЕсли;
Элементы.ДекорацияОписаниеСпособаРасчета.Заголовок = ОписаниеСпособаРасчета;
Если Объект.СпособРасчета = ПредопределенноеЗначение("Перечисление.СпособыРасчетаНачислений.ПроизвольнаяФормула")
И Не ЗначениеЗаполнено(ОписаниеСпособаРасчета) Тогда
ТекстНазначения = ТекстНазначения
+ ?(ЗначениеЗаполнено(ТекстНазначения), " ", "")
+ ?(Объект.Рассчитывается,
НСтр("ru = 'Вычисление результата расчета выполняется по формуле, которую можно задать в поле «Формула».'"),
НСтр("ru = 'Результат вводится фиксированной суммой'"));
Элементы.НастройкиРасчета.ТекущаяСтраница = Элементы.СтраницаФормулаРасчета;
Элементы.СтраницыРасчетНачисления.ТекущаяСтраница = ?(Объект.Рассчитывается,
Элементы.СтраницаРезультатРассчитывается, Элементы.СтраницаРезультатВводитсяВручную);
Иначе
ТекстНазначения = ТекстНазначения
+ ?(ЗначениеЗаполнено(ТекстНазначения), Символы.ПС, "")
+ НСтр("ru = 'Вычисление результата расчета выполняется первичным документом и не может быть задано формулой.'");
Элементы.НастройкиРасчета.ТекущаяСтраница = Элементы.СтраницаОписаниеСпособаРасчета;
КонецЕсли;
ЭлементКатегория = Форма.Элементы.КатегорияНачисленияИлиНеоплаченногоВремени;
ЭлементКатегория.РасширеннаяПодсказка.Заголовок = Новый ФорматированнаяСтрока(ТекстНазначения);
ЭлементКатегория.ОтображениеПодсказки = ОтображениеПодсказки.ОтображатьСнизу;
Если РасчетЗарплатыРасширенныйКлиентСервер.СпособРасчетаИспользуетФормулу(Объект.СпособРасчета) И Объект.Рассчитывается Тогда
Элементы.ПостоянныеПоказателиСтраницы.ТекущаяСтраница = Элементы.ПостоянныеПоказателиСтраница;
Иначе
Элементы.ПостоянныеПоказателиСтраницы.ТекущаяСтраница = Элементы.ПоказателиНеОтображаютсяСтраница;
КонецЕсли;
УстановитьДоступностьЭлементовПоКатегории(Форма);
УстановитьДоступностьВидаСтажаСЗВ(Форма);
УстановитьДоступностьСпискаПриоритетНиже(Форма);
ОтражениеЗарплатыВБухучетеКлиентСерверРасширенный.ОбновитьПредставлениеВидаНачисленияПоНКРФ(Форма);
УстановитьАвтоотметкуНезаполненного(Форма);
УстановитьТекстНадписиОЗаполненностиФормулы(Форма);
УстановитьИнформациюПоСпособуНачисления(Форма);
УстановитьОтображениеВидыВремени(Форма);
УстановитьОтображениеНачисляетсяВОтпускеПоУходу(Форма);
УстановитьОтображениеНачисляетсяВПервуюПоловинуМесяца(Форма);
УстановитьДоступностьКодаДоходаНДФЛ(Форма);
ВключаетсяВРасходыПоСт255НКРФ = Число(ЗначениеЗаполнено(Объект.ВидНачисленияДляНУ));
УстановитьДоступностьВидаНачисленияДляНУ(Форма);
УстановитьДоступностьДополнительныхВидовВремени(Форма);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ОписаниеСпособаРасчета(КатегорияНачисления)
Если КатегорияНачисления = ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ОтпускБезОплаты")
Или КатегорияНачисления = ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.Отгул")
Или КатегорияНачисления = ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.БолезньБезОплаты")
Или КатегорияНачисления = ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ОтпускПоБеременностиИРодамБезОплаты")
Или КатегорияНачисления = ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.НеявкаПоНевыясненнымПричинам")
Или КатегорияНачисления = ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.НеявкаПоБолезни")
Или КатегорияНачисления = ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.Прогул")
Или КатегорияНачисления = ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ПростойПоВинеРаботника")
Или КатегорияНачисления = ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ОплатаПредыдущимиДокументами") Тогда
Возврат НСтр("ru = 'Не оплачивается.'");
ИначеЕсли КатегорияНачисления = ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ОплатаПростояПоНезависящимОтРаботодателяПричинам") Тогда
Возврат НСтр("ru = 'На время простоя по независящим от работника и работодателя причинам сохраняется 2/3 оплаты по тарифу.'");
ИначеЕсли КатегорияНачисления = ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ДоплатаДоСреднегоЗаработка") Тогда
Возврат НСтр("ru = 'Результатом начисления является разница между средним заработком сотрудника и заработком сотрудника в отдельном периоде, в случае, если заработок сотрудника окажется ниже величины среднего заработка.'");
ИначеЕсли КатегорияНачисления = ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ОтпускПоБеременностиИРодам")
Или КатегорияНачисления = ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ОтпускПоБеременностиИРодамВоеннослужащего") Тогда
Возврат НСтр("ru = 'Отпуск по беременности и родам оплачивается исходя из среднего заработка в порядке, установленном законодательством о социальном страховании.'");
ИначеЕсли КатегорияНачисления = ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ОплатаБольничногоЛиста")
Или КатегорияНачисления = ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ОплатаБольничногоЛистаЗаСчетРаботодателя")
Или КатегорияНачисления = ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ОплатаБольничногоНесчастныйСлучайНаПроизводстве")
Или КатегорияНачисления = ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ОплатаБольничногоПрофзаболевание") Тогда
Возврат НСтр("ru = 'Больничный лист оплачивается исходя из среднего заработка в порядке, установленном законодательством о социальном страховании.'");
ИначеЕсли КатегорияНачисления = ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ДоплатаДоСреднегоЗаработкаЗаДниБолезни") Тогда
Возврат НСтр("ru = 'Доплата до среднего заработка рассчитывается для больничных листов с неполной оплатой.'");
ИначеЕсли КатегорияНачисления = ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ПособиеПоУходуЗаРебенкомДоПолутораЛет") Тогда
Возврат НСтр("ru = 'Пособие по уходу за ребенком до полутора лет выплачивается исходя из среднего заработка в порядке, установленном законодательством о социальном страховании.'");
ИначеЕсли КатегорияНачисления = ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ПособиеПоУходуЗаРебенкомДоПолутораЛетВоеннослужащим") Тогда
Возврат НСтр("ru = 'Пособие по уходу за ребенком до полутора лет выплачивается исходя из среднего заработка в порядке, установленном законодательством.'");
ИначеЕсли КатегорияНачисления = ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ВыходноеПособие") Тогда
Возврат НСтр("ru = 'Выходное пособие выплачивается исходя из среднего заработка в порядке, установленном Трудовым кодексом.'");
ИначеЕсли КатегорияНачисления = ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ДоплатаДоДенежногоСодержанияЗаДниБолезни") Тогда
Возврат НСтр("ru = 'Доплата до сохраняемого денежного содержания рассчитывается как разница между денежным содержанием за рабочие дни, приходящиеся на период нетрудоспособности, и исчисленным пособием по социальному страхованию за период нетрудоспособности.'");
ИначеЕсли КатегорияНачисления = ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ДоначислениеДоУправленческогоУчета") Тогда
Возврат НСтр("ru = 'Результат рассчитывается как разница между начисленным в регламентированном и управленческом учетах.'");
ИначеЕсли КатегорияНачисления = ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ОплатаДнейУходаЗаДетьмиИнвалидами") Тогда
Возврат УчетПособийСоциальногоСтрахованияРасширенныйКлиентСервер.ОписаниеСпособаРасчетаКатегорииОплатаДнейУходаЗаДетьмиИнвалидами();
Иначе
Возврат "";
КонецЕсли;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступностьЭлементовПоКатегории(Форма)
Объект = Форма.Объект;
СвойстваНачисления = Форма.СвойстваПоКатегориям.Получить(Объект.КатегорияНачисленияИлиНеоплаченногоВремени);
Если СвойстваНачисления = Неопределено Тогда
Возврат;
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.КатегорияНачисленияИлиНеоплаченногоВремени) Тогда
Возврат;
КонецЕсли;
Инструкции = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(СвойстваНачисления.ИменаИнструкций);
НедоступныеСвойства = ОбщегоНазначенияКлиентСервер.СкопироватьМассив(СвойстваНачисления.НедоступныеСвойства);
Если Объект.КатегорияНачисленияИлиНеоплаченногоВремени = ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ПовременнаяОплатаТруда") Тогда
Если Объект.СпособВыполненияНачисления <> ПредопределенноеЗначение("Перечисление.СпособыВыполненияНачислений.ПоОтдельномуДокументуДоОкончательногоРасчета") Тогда
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(НедоступныеСвойства, "ВидВремени");
КонецЕсли;
КонецЕсли;
Для Каждого КлючИЗначение Из СвойстваНачисления Цикл
ИмяСвойства = КлючИЗначение.Ключ;
Если Инструкции.Найти(ИмяСвойства) <> Неопределено Тогда
Продолжить;
КонецЕсли;
ДоступностьСвойства = НедоступныеСвойства.Найти(ИмяСвойства) = Неопределено;
Если ИмяСвойства = "СреднийЗаработокОбщий" Тогда
Форма.СреднийЗаработокОбщийДоступностьПоКатегории = ДоступностьСвойства;
УстановитьСвойстваЭлементовОбщегоСреднегоЗаработка(Форма);
ИначеЕсли ИмяСвойства = "ИндексируетсяСреднийЗаработокОбщий" Тогда
Форма.СреднийЗаработокОбщийИндексируетсяДоступностьПоКатегории = ДоступностьСвойства;
УстановитьСвойстваЭлементовОбщегоСреднегоЗаработка(Форма);
ИначеЕсли ИмяСвойства = "ВключатьВСреднийЗаработокОбщий" Тогда
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Форма.Элементы, "СреднийЗаработокОбщийИспользовать", "Доступность", ДоступностьСвойства);
УстановитьСвойстваЭлементовОбщегоСреднегоЗаработка(Форма);
ИначеЕсли ИмяСвойства = "ВключатьВСреднийЗаработокФСС" Тогда
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Форма.Элементы, "СреднийЗаработокФССПометка", "Доступность", ДоступностьСвойства);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Форма.Элементы, "СреднийЗаработокФССИспользовать", "Доступность", ДоступностьСвойства);
УстановитьСвойстваЭлементовСреднегоЗаработкаФСС(Форма);
ИначеЕсли ИмяСвойства = "ФормулаРасчета" Тогда
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Форма.Элементы, "ИзменитьФормулу", "Доступность", ДоступностьСвойства);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Форма.Элементы, "РассчитыватьРезультат", "Доступность", ДоступностьСвойства И РазрешеноРедактированиеПризнакаРассчитывается(Форма));
ИначеЕсли ИмяСвойства = "ВидВремени" Тогда
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Форма.Элементы, "ВидВремениОтработанного", "Доступность", ДоступностьСвойства);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Форма.Элементы, "ВидВремениНеотработанного", "Доступность", ДоступностьСвойства);
ИначеЕсли ИмяСвойства = "КодДоходаНДФЛ" Тогда
Форма.КодДоходаНДФЛДоступностьПоКатегории = ДоступностьСвойства;
УстановитьДоступностьКодаДоходаНДФЛ(Форма);
ИначеЕсли ИмяСвойства = "КатегорияДохода" Тогда
УстановитьДоступностьКатегорииДоходаНДФЛ(Форма);
ИначеЕсли ИмяСвойства = "ВидНачисленияДляНУ" Тогда
Форма.ВидНачисленияДляНУДоступностьПоКатегории = ДоступностьСвойства;
УстановитьДоступностьВидаНачисленияДляНУ(Форма);
ИначеЕсли ИмяСвойства = "КатегорияСтатистическогоНаблюдения" Тогда
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Форма.Элементы, "ГруппаКатегорияСтатистическогоНаблюдения", "Доступность", ДоступностьСвойства);
Иначе
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Форма.Элементы, ИмяСвойства, "Доступность", ДоступностьСвойства);
КонецЕсли;
КонецЦикла;
Если СвойстваНачисления.ПараметрыВыбора <> Неопределено Тогда
Для Каждого КлючИЗначение Из СвойстваНачисления.ПараметрыВыбора Цикл
ИмяЭлемента = КлючИЗначение.Ключ;
МассивПараметровВыбора = Новый Массив;
Если КлючИЗначение.Значение <> Неопределено Тогда
Для Каждого ОписаниеПараметра Из КлючИЗначение.Значение Цикл
Если ТипЗнч(ОписаниеПараметра.Значение) = Тип("Массив") Тогда
ЗначениеПараметра = Новый ФиксированныйМассив(ОписаниеПараметра.Значение);
Иначе
ЗначениеПараметра = ОписаниеПараметра.Значение;
КонецЕсли;
МассивПараметровВыбора.Добавить(Новый ПараметрВыбора(СтрЗаменить(ОписаниеПараметра.Ключ, "_", "."), ЗначениеПараметра));
КонецЦикла;
КонецЕсли;
Если ИмяЭлемента = "СреднийЗаработокОбщий" Тогда
Форма.Элементы["СреднийЗаработокОбщийЗначениеЕдинственный"].ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметровВыбора);
Иначе
Форма.Элементы[ИмяЭлемента].ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметровВыбора);
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьСписокВыбораНеотработанногоВидаВремени(КатегорияНачисленияИлиНеоплаченногоВремени, Элементы)
СписокВыбора = Элементы.ВидВремениНеотработанного.СписокВыбора;
СписокВыбора.Очистить();
СписокВыбора.Добавить(ПредопределенноеЗначение("Перечисление.ВидыРабочегоВремениСотрудников.ЦелодневноеНеотработанное"));
СписокВыбора.Добавить(ПредопределенноеЗначение("Перечисление.ВидыРабочегоВремениСотрудников.ЧасовоеНеотработанное"));
Если КатегорияНачисленияИлиНеоплаченногоВремени = ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.Отгул") Тогда
Элементы.ВидВремениНеотработанного.СписокВыбора.Добавить(ПредопределенноеЗначение("Перечисление.ВидыРабочегоВремениСотрудников.ДополнительноОплачиваемоеВПределахНормы"));
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ЗаполнитьСвойстваПоКатегории(Форма)
Объект = Форма.Объект;
СвойстваНачисления = Форма.СвойстваПоКатегориям.Получить(Объект.КатегорияНачисленияИлиНеоплаченногоВремени);
Если Форма.Параметры.Ключ.Пустая() Тогда
Если Объект.КатегорияНачисленияИлиНеоплаченногоВремени = ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.КвартальнаяПремия") Тогда
СвойстваНачисления.СпособВыполненияНачисления = ПредопределенноеЗначение("Перечисление.СпособыВыполненияНачислений.ВЗаданныхМесяцахПриОкончательномРасчете");
СвойстваНачисления.ПериодРасчетаБазовыхНачислений = ПредопределенноеЗначение("Перечисление.ПериодыРасчетаБазовыхНачислений.ТекущийКвартал");
Форма.НачисляетсяВМесяце01 = Ложь;
Форма.НачисляетсяВМесяце02 = Ложь;
Форма.НачисляетсяВМесяце03 = Истина;
Форма.НачисляетсяВМесяце04 = Ложь;
Форма.НачисляетсяВМесяце05 = Ложь;
Форма.НачисляетсяВМесяце06 = Истина;
Форма.НачисляетсяВМесяце07 = Ложь;
Форма.НачисляетсяВМесяце08 = Ложь;
Форма.НачисляетсяВМесяце09 = Истина;
Форма.НачисляетсяВМесяце10 = Ложь;
Форма.НачисляетсяВМесяце11 = Ложь;
Форма.НачисляетсяВМесяце12 = Истина;
КонецЕсли;
Если Форма.Параметры.Свойство("ЗначенияЗаполнения") Тогда
Форма.Параметры.ЗначенияЗаполнения.Свойство("ОбозначениеВТабелеУчетаРабочегоВремени", СвойстваНачисления.ОбозначениеВТабелеУчетаРабочегоВремени);
КонецЕсли;
КонецЕсли;
Если СвойстваНачисления = Неопределено Тогда
СвойстваНачисления = Форма.СвойстваПоКатегориям.Получить(
ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ПустаяСсылка"));
ЗаполнитьЗначенияСвойств(Объект, СвойстваНачисления, , "СреднийЗаработокОбщий");
Возврат;
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.КатегорияНачисленияИлиНеоплаченногоВремени) Тогда
Возврат;
КонецЕсли;
Инструкции = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(СвойстваНачисления.ИменаИнструкций);
НедоступныеСвойства = СвойстваНачисления.НедоступныеСвойства;
Для Каждого КлючИЗначение Из СвойстваНачисления Цикл
ИмяСвойства = КлючИЗначение.Ключ;
Если Инструкции.Найти(ИмяСвойства) <> Неопределено Тогда
Продолжить;
КонецЕсли;
Если ИмяСвойства = "СреднийЗаработокОбщий" Тогда
ЗаполнитьСреднийЗаработокОбщий(Форма, КлючИЗначение.Значение);
ИначеЕсли ИмяСвойства = "ВключатьВСреднийЗаработокОбщий" Тогда
Форма.СреднийЗаработокОбщийИспользовать = КлючИЗначение.Значение;
КонтролируемыеРеквизитыРасчетаСреднегоЗаработкаСоответствие = Новый Соответствие(Форма.КонтролируемыеРеквизитыРасчетаСреднегоЗаработка);
КонтролируемыеРеквизитыРасчетаСреднегоЗаработкаСоответствие["СреднийЗаработокОбщийИспользовать"] = Форма.СреднийЗаработокОбщийИспользовать;
Форма.КонтролируемыеРеквизитыРасчетаСреднегоЗаработка = Новый ФиксированноеСоответствие(КонтролируемыеРеквизитыРасчетаСреднегоЗаработкаСоответствие);
ИначеЕсли ИмяСвойства = "ИндексируетсяСреднийЗаработокОбщий" Тогда
Продолжить;
ИначеЕсли ИмяСвойства = "ВключатьВСреднийЗаработокФСС" Тогда
Продолжить;
ИначеЕсли ИмяСвойства = "ВключатьВСреднийЗаработокФСС2010" Тогда
ВключатьВСреднийЗаработокФСС = КлючИЗначение.Значение;
Если ВключатьВСреднийЗаработокФСС = Неопределено Тогда
СвойстваНачисления.Свойство("ВключатьВСреднийЗаработокФСС", ВключатьВСреднийЗаработокФСС);
КонецЕсли;
ЗаполнитьСреднийЗаработокФСС(Форма, ВключатьВСреднийЗаработокФСС);
ИначеЕсли ИмяСвойства = "ПериодРасчетаБазовыхНачислений" Тогда
Объект[ИмяСвойства] = КлючИЗначение.Значение;
Если Не ЗначениеЗаполнено(Объект[ИмяСвойства]) Тогда
Объект[ИмяСвойства] = ПредопределенноеЗначение("Перечисление.ПериодыРасчетаБазовыхНачислений.ТекущийМесяц");
КонецЕсли;
ИначеЕсли ИмяСвойства = "ФормулаРасчета" Тогда
Если ЗначениеЗаполнено(КлючИЗначение.Значение)
Или СвойстваНачисления.СпособРасчета <> ПредопределенноеЗначение("Перечисление.СпособыРасчетаНачислений.ПроизвольнаяФормула") Тогда
Объект[ИмяСвойства] = КлючИЗначение.Значение;
КонецЕсли;
Иначе
Объект[ИмяСвойства] = КлючИЗначение.Значение;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ЗаполнитьСреднийЗаработокФСС(Форма, ВключатьВСреднийЗаработокФСС)
Если Форма.СреднийЗаработокФССМножественныйВвод Тогда
Форма.СреднийЗаработокФСС.ЗаполнитьПометки(ВключатьВСреднийЗаработокФСС);
Иначе
Форма.СреднийЗаработокФССИспользовать = ВключатьВСреднийЗаработокФСС;
КонтролируемыеРеквизитыРасчетаСреднегоЗаработкаСоответствие = Новый Соответствие(Форма.КонтролируемыеРеквизитыРасчетаСреднегоЗаработка);
КонтролируемыеРеквизитыРасчетаСреднегоЗаработкаСоответствие["СреднийЗаработокФССИспользовать"] = Форма.СреднийЗаработокФССИспользовать;
Форма.КонтролируемыеРеквизитыРасчетаСреднегоЗаработка = Новый ФиксированноеСоответствие(КонтролируемыеРеквизитыРасчетаСреднегоЗаработкаСоответствие);
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ЗаполнитьСреднийЗаработокОбщий(Форма, ЗначениеУчетаСреднего)
Форма.Объект.СреднийЗаработокОбщий.Очистить();
Форма.СреднийЗаработокОбщийЗначение = Неопределено;
Форма.СреднийЗаработокОбщийИндексируется = Ложь;
Если ЗначениеУчетаСреднего <> Неопределено Тогда
НоваяСтрока = Форма.Объект.СреднийЗаработокОбщий.Добавить();
НоваяСтрока.ПорядокРасчета = ПредопределенноеЗначение("Перечисление.ПорядокРасчетаСреднегоЗаработкаОбщий.Постановление2010");
НоваяСтрока.Значение = ЗначениеУчетаСреднего;
Форма.СреднийЗаработокОбщийЗначение = ЗначениеУчетаСреднего;
Форма.СреднийЗаработокОбщийИндексируется = Истина;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура РассчитыватьРезультатПриИзмененииНаСервере()
Если Не Объект.Рассчитывается И Объект.ФормулаРасчета <> "" Тогда
Объект.Показатели.Очистить();
Объект.ФормулаРасчета = "";
ПоказателиФормулы = Новый Массив;
СведенияОПоказателях = ЗарплатаКадрыРасширенный.СведенияОПоказателяхРасчетаЗарплаты(ПоказателиФормулы);
УстановитьДоступностьВариантаИспользованияОперативныхПоказателей(ЭтаФорма);
ЗапрашиваемыеПоказатели = ЗарплатаКадрыРасширенный.ЗапрашиваемыеПоказателиВидаРасчетаПоУмолчанию(Объект.Ссылка, ПоказателиФормулы);
ОбновитьФормуПоИзменениюФормулыРасчета(ЭтаФорма, СведенияОПоказателях, ЗапрашиваемыеПоказатели, СведенияОПоказателяхФормулы());
УстановитьДоступностьВыбораПериодаПремииДляСреднегоЗаработка(ЭтаФорма);
УстановитьСписокВыбораПериодаРасчетаБазовыхНачислений(ЭтаФорма);
УстановитьЗначениеПериодДействияБазовый();
УстановитьВидимостьПоляФОТНеРедактируется();
Если РасчетЗарплатыРасширенный.ФОТРассчитываетсяАвтоматически(Объект) = Неопределено Тогда
Объект.ФОТНеРедактируется = Ложь;
КонецЕсли;
КонецЕсли;
ПерестроитьФормуПоКатегории(ЭтаФорма);
ОтражениеЗарплатыВБухучетеКлиентСерверРасширенный.УстановитьСтраницуНастройкиБухучетаНачислений(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура УстановитьПризнакРассчитывается()
РедактироватьПризнакРассчитывается = РазрешеноРедактированиеПризнакаРассчитывается(ЭтотОбъект);
Если Не РедактироватьПризнакРассчитывается Тогда
Объект.Рассчитывается = Истина;
РассчитыватьРезультат = 0;
КонецЕсли;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "РассчитыватьРезультат", "Доступность", РедактироватьПризнакРассчитывается);
Элементы.СтраницыРасчетНачисления.ТекущаяСтраница = ?(Объект.Рассчитывается,
Элементы.СтраницаРезультатРассчитывается, Элементы.СтраницаРезультатВводитсяВручную);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция РазрешеноРедактированиеПризнакаРассчитывается(Форма)
СпособВыполненияНачисления = Форма.Объект.СпособВыполненияНачисления;
РедактированиеРазрешено = (СпособВыполненияНачисления = ПредопределенноеЗначение("Перечисление.СпособыВыполненияНачислений.ПоОтдельномуДокументуДоОкончательногоРасчета")
Или СпособВыполненияНачисления = ПредопределенноеЗначение("Перечисление.СпособыВыполненияНачислений.ВЗаданныхМесяцахПриОкончательномРасчете")
Или СпособВыполненияНачисления = ПредопределенноеЗначение("Перечисление.СпособыВыполненияНачислений.ЕжемесячноПриОкончательномРасчете"));
Возврат РедактированиеРазрешено;
КонецФункции
&НаСервере
Процедура ЗаполнитьПризнакОпределяющихПоказателей(ТекущийОбъект)
Для Каждого СтрокаПоказателей Из ТекущийОбъект.Показатели Цикл
СтрокаПоказателей.ОпределяющийПоказатель = Ложь;
ЭлементСписка = СписокОпределяющихПоказателей.НайтиПоЗначению(СтрокаПоказателей.Показатель);
Если ЭлементСписка <> НеОпределено Тогда
Если ЭлементСписка.Пометка Тогда
СтрокаПоказателей.ОпределяющийПоказатель = Истина;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьВидимостьПолейЛьгот(Форма)
Объект = Форма.Объект;
Элементы = Форма.Элементы;
ЭтоЛьгота = Объект.КатегорияНачисленияИлиНеоплаченногоВремени = ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.Льгота");
ЭтоИндивидуальнаяЛьгота = Объект.КатегорияНачисленияИлиНеоплаченногоВремени = ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ВыбираемаяСотрудникомЛьгота");
ДоступныНастройкиРасчета = Объект.ЛьготаУчитываетсяПриРасчетеЗарплаты Или (Не ЭтоЛьгота И Не ЭтоИндивидуальнаяЛьгота);
Если ЭтоЛьгота Тогда
НастройкиЛьготыСтраница = Элементы.НастройкиЛьготыСтраница;
ИначеЕсли ЭтоИндивидуальнаяЛьгота Тогда
НастройкиЛьготыСтраница = Элементы.НастройкиИндивидуальнойЛьготыСтраница;
Иначе
НастройкиЛьготыСтраница = Элементы.НастройкиЛьготыПустаяСтраница;
КонецЕсли;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "НастройкиЛьготыСтраницы", "ТекущаяСтраница", НастройкиЛьготыСтраница);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ГруппаРасчетИПоказатели", "Доступность", ДоступныНастройкиРасчета);
УстановитьТекстНадписиОЗаполненностиФормулы(Форма);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьВидимостьПолейДенежногоДовольствияСодержания(Форма)
Объект = Форма.Объект;
Элементы = Форма.Элементы;
МассивКатегорий = Новый Массив();
МассивКатегорий.Добавить(ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.РайонныйКоэффициент"));
МассивКатегорий.Добавить(ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.СевернаяНадбавка"));
МассивКатегорий.Добавить(ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.СохраняемоеДенежноеСодержание"));
МассивКатегорий.Добавить(ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ДенежноеСодержаниеНаПериодОтпуска"));
МассивКатегорий.Добавить(ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ВыходноеПособиеМесячноеДенежноеСодержание"));
МассивКатегорий.Добавить(ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ДоплатаДоДенежногоСодержанияЗаДниБолезни"));
МассивКатегорий.Добавить(ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ДенежноеСодержаниеНаПериодКомандировки"));
МассивКатегорий.Добавить(ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ДенежноеСодержаниеДоплатаКомандировки"));
МассивКатегорий.Добавить(ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ДенежноеСодержаниеКомпенсацияОтпуска"));
МассивКатегорий.Добавить(ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ОплатаКомандировки"));
МассивКатегорий.Добавить(ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ОплатаПоСреднемуЗаработку"));
МассивКатегорий.Добавить(ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ОплатаДолиРайонногоКоэффициентаВСДС"));
МассивКатегорий.Добавить(ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ОплатаДолиСевернойНадбавкиВСДС"));
МассивКатегорий.Добавить(ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ОплатаДолиРайонногоКоэффициентаВСДД"));
МассивКатегорий.Добавить(ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ОплатаДолиСевернойНадбавкиВСДД"));
Видимость = (МассивКатегорий.Найти(Объект.КатегорияНачисленияИлиНеоплаченногоВремени) = Неопределено);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ДенежноеСодержание", "Видимость",Видимость);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДополнительныеВидыВремени()
ДополнительныеВидыВремени.Очистить();
Для Каждого Строка Из Объект.ВидыВремени Цикл
Если Строка.ВидВремени = Объект.ОбозначениеВТабелеУчетаРабочегоВремени Тогда
Продолжить;
КонецЕсли;
ДополнительныеВидыВремени.Добавить().ВидВремени = Строка.ВидВремени;
КонецЦикла;
ОбновитьНадписьДополнительныхВидовВремени(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ЗаписатьВидыВремени(ТекущийОбъект)
ТекущийОбъект.ВидыВремени.Очистить();
Для Каждого Строка Из ДополнительныеВидыВремени Цикл
ТекущийОбъект.ВидыВремени.Добавить().ВидВремени = Строка.ВидВремени;
КонецЦикла;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция КонтролируемыеРеквизитыРасчетаСреднегоЗаработкаСоответствие()
КонтролируемыеРеквизитыРасчетаСреднегоЗаработкаСоответствие = Новый Соответствие;
КонтролируемыеРеквизитыРасчетаСреднегоЗаработкаСоответствие.Вставить("Объект.КоличествоМесяцевБазовогоПериода");
КонтролируемыеРеквизитыРасчетаСреднегоЗаработкаСоответствие.Вставить("Объект.ПериодРасчетаБазовыхНачислений");
КонтролируемыеРеквизитыРасчетаСреднегоЗаработкаСоответствие.Вставить("Объект.СдвигБазовогоПериода");
КонтролируемыеРеквизитыРасчетаСреднегоЗаработкаСоответствие.Вставить("СреднийЗаработокОбщийЗначение");
КонтролируемыеРеквизитыРасчетаСреднегоЗаработкаСоответствие.Вставить("СреднийЗаработокОбщийИндексируется");
КонтролируемыеРеквизитыРасчетаСреднегоЗаработкаСоответствие.Вставить("СреднийЗаработокОбщийИспользовать");
КонтролируемыеРеквизитыРасчетаСреднегоЗаработкаСоответствие.Вставить("СреднийЗаработокФССИспользовать");
КонтролируемыеРеквизитыРасчетаСреднегоЗаработкаСоответствие.Вставить("Объект.СтратегияОтраженияВСреднемЗаработке");
КонтролируемыеРеквизитыРасчетаСреднегоЗаработкаСоответствие.Вставить("Объект.УчитыватьВесьЗаработок");
Возврат КонтролируемыеРеквизитыРасчетаСреднегоЗаработкаСоответствие;
КонецФункции
&НаСервере
Процедура ЗаполнитьКатегорииДоходовНДФЛ()
КодыИКатегорииНДФЛ = УчетФактическиПолученныхДоходов.СопоставлениеКодовИКатегорийДоходовНДФЛ();
СоответствиеКодовИКатегорий = Новый Соответствие;
Для Каждого Строка Из КодыИКатегорииНДФЛ Цикл
Ключ = Строка.КодДохода;
СписокКатегорийНачислений = СоответствиеКодовИКатегорий.Получить(Ключ);
Если СписокКатегорийНачислений = Неопределено Тогда
СписокКатегорийНачислений = Новый Соответствие;
КонецЕсли;
КлючКатегорииНачисления = 0;
Если ЗначениеЗаполнено(Строка.КатегорияНачисления) Тогда
КлючКатегорииНачисления = Строка.КатегорияНачисления;
КонецЕсли;
МассивПоКатегорииНачисления = СписокКатегорийНачислений.Получить(КлючКатегорииНачисления);
Если МассивПоКатегорииНачисления = Неопределено Тогда
МассивПоКатегорииНачисления = Новый Массив;
КонецЕсли;
МассивПоКатегорииНачисления.Добавить(Строка.КатегорияДохода);
СписокКатегорийНачислений.Вставить(КлючКатегорииНачисления, МассивПоКатегорииНачисления);
СоответствиеКодовИКатегорий.Вставить(Ключ, СписокКатегорийНачислений);
КонецЦикла;
Для Каждого КодПоКатегорииНачисления Из СоответствиеКодовИКатегорий Цикл
СоответствиеКодовИКатегорий.Вставить(КодПоКатегорииНачисления.Ключ, Новый ФиксированноеСоответствие(СоответствиеКодовИКатегорий[КодПоКатегорииНачисления.Ключ]));
КонецЦикла;
КатегорииДоходовНДФЛ = Новый ФиксированноеСоответствие(СоответствиеКодовИКатегорий);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьСвойстваКатегорииДоходаНДФЛ(Форма)
Форма.Элементы.КатегорияДохода.РежимВыбораИзСписка = Истина;
Форма.Элементы.КатегорияДохода.СписокВыбора.Очистить();
Если Форма.ОблагаетсяНДФЛ = 0
Или Не ЗначениеЗаполнено(Форма.Объект.КодДоходаНДФЛ) Тогда
Форма.Объект.КатегорияДохода = Неопределено;
Форма.Элементы.КатегорияДохода.АвтоОтметкаНезаполненного = Ложь;
Форма.Элементы.КатегорияДохода.ОтметкаНезаполненного = Ложь;
Форма.Элементы.КатегорияДохода.Доступность = Ложь;
УстановитьВидимостьСпособаОпределенияМесяцаДоходаВНалоговомУчете(Форма);
Возврат;
КонецЕсли;
ДоступныеКатегорииНачислений = Форма.КатегорииДоходовНДФЛ.Получить(Форма.Объект.КодДоходаНДФЛ);
ДоступныеКатегорииДохода = ДоступныеКатегорииНачислений.Получить(Форма.Объект.КатегорияНачисленияИлиНеоплаченногоВремени);
Если ДоступныеКатегорииДохода = Неопределено Тогда
ДоступныеКатегорииДохода = ДоступныеКатегорииНачислений.Получить(0);
КонецЕсли;
КатегорияДоступна = Истина;
Если ДоступныеКатегорииДохода = Неопределено
Или ДоступныеКатегорииДохода.Количество() = 0 Тогда
Форма.Элементы.КатегорияДохода.РежимВыбораИзСписка = Ложь;
ИначеЕсли ДоступныеКатегорииДохода.Количество() = 1 Тогда
Форма.Элементы.КатегорияДохода.СписокВыбора.Добавить(ДоступныеКатегорииДохода[0]);
Форма.Объект.КатегорияДохода = ДоступныеКатегорииДохода[0];
КатегорияДоступна = Ложь;
Иначе
Для Каждого ДоступнаяКатегория Из ДоступныеКатегорииДохода Цикл
Форма.Элементы.КатегорияДохода.СписокВыбора.Добавить(ДоступнаяКатегория);
КонецЦикла;
Если ЗначениеЗаполнено(Форма.Объект.КатегорияДохода) Тогда
Если ДоступныеКатегорииДохода.Найти(Форма.Объект.КатегорияДохода) = Неопределено Тогда
Форма.Объект.КатегорияДохода = Неопределено;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КатегорияНеЗаполнена = Не ЗначениеЗаполнено(Форма.Объект.КатегорияДохода);
Форма.Элементы.КатегорияДохода.АвтоОтметкаНезаполненного = Истина;
Форма.Элементы.КатегорияДохода.ОтметкаНезаполненного = КатегорияНеЗаполнена;
Форма.Элементы.КатегорияДохода.Доступность = КатегорияДоступна;
УстановитьВидимостьСпособаОпределенияМесяцаДоходаВНалоговомУчете(Форма);
КонецПроцедуры
#Область НастройкаСреднегоЗаработка
&НаСервере
Процедура НастроитьЭлементыВводаСреднегоЗаработка()
НастроитьЭлементыВводаСреднегоЗаработкаОбщий();
НастроитьЭлементыВводаСреднегоЗаработкаФСС();
КонецПроцедуры
&НаСервере
Процедура ПрочитатьНастройкиСреднегоЗаработка(ТекущийОбъект = Неопределено)
ЭтоНовый = ТекущийОбъект = Неопределено;
Если ЭтоНовый Тогда
ТекущийОбъект = Объект;
КонецЕсли;
Копирование = Параметры.Свойство("ЗначениеКопирования") И ЗначениеЗаполнено(Параметры.ЗначениеКопирования);
НастроитьЭлементыВводаСреднегоЗаработка();
ПрочитатьНастройкиСреднегоЗаработкаОбщий(ЭтаФорма, ТекущийОбъект, ЭтоНовый, Копирование);
ПрочитатьНастройкиСреднегоЗаработкаФСС(ЭтаФорма, ТекущийОбъект, ЭтоНовый, Копирование);
КонецПроцедуры
&НаСервере
Процедура ЗаписатьНастройкиСреднегоЗаработка(ТекущийОбъект)
ЗаписатьНастройкиСреднегоЗаработкаОбщий(ТекущийОбъект);
ЗаписатьНастройкиСреднегоЗаработкаФСС(ТекущийОбъект);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ПрочитатьНастройкиСреднегоЗаработкаОбщий(Форма, ТекущийОбъект, ЭтоНовый = Ложь, Копирование = Ложь)
Если Форма.СреднийЗаработокОбщийМножественныйВвод Тогда
Для Каждого СтрокаДанныхФормы Из Форма.СреднийЗаработокОбщий Цикл
НайденныеСтроки = ТекущийОбъект.СреднийЗаработокОбщий.НайтиСтроки(Новый Структура("ПорядокРасчета", СтрокаДанныхФормы.ПорядокРасчета));
Если НайденныеСтроки.Количество() > 0 Тогда
ЗаполнитьЗначенияСвойств(СтрокаДанныхФормы, НайденныеСтроки[0]);
Иначе
Если ЭтоНовый И Не Копирование Тогда
СтрокаДанныхФормы.Значение = ПредопределенноеЗначение("Перечисление.УчетНачисленийВСреднемЗаработкеОбщий.ОбщийЗаработок");
СтрокаДанныхФормы.Индексируется = Истина;
Иначе
СтрокаДанныхФормы.Значение = ПредопределенноеЗначение("Перечисление.УчетНачисленийВСреднемЗаработкеОбщий.НеВключать");
КонецЕсли;
КонецЕсли;
КонецЦикла;
Иначе
Если ТекущийОбъект.СреднийЗаработокОбщий.Количество() > 0 Тогда
Форма.СреднийЗаработокОбщийИспользовать = Истина;
Форма.СреднийЗаработокОбщийЗначение = ТекущийОбъект.СреднийЗаработокОбщий[0].Значение;
Форма.СреднийЗаработокОбщийИндексируется = ТекущийОбъект.СреднийЗаработокОбщий[0].Индексируется;
Иначе
Форма.СреднийЗаработокОбщийИспользовать = ЭтоНовый И Не Копирование;
Если Не ЗначениеЗаполнено(Форма.СреднийЗаработокОбщийЗначение) Тогда
Форма.СреднийЗаработокОбщийЗначение = ПредопределенноеЗначение("Перечисление.УчетНачисленийВСреднемЗаработкеОбщий.ОбщийЗаработок");
КонецЕсли;
Форма.СреднийЗаработокОбщийИндексируется = ЭтоНовый И Не Копирование;
КонецЕсли;
КонтролируемыеРеквизитыРасчетаСреднегоЗаработкаСоответствие = Новый Соответствие(Форма.КонтролируемыеРеквизитыРасчетаСреднегоЗаработка);
КонтролируемыеРеквизитыРасчетаСреднегоЗаработкаСоответствие["СреднийЗаработокОбщийИспользовать"] = Форма.СреднийЗаработокОбщийИспользовать;
КонтролируемыеРеквизитыРасчетаСреднегоЗаработкаСоответствие["СреднийЗаработокОбщийЗначение"] = Форма.СреднийЗаработокОбщийЗначение;
КонтролируемыеРеквизитыРасчетаСреднегоЗаработкаСоответствие["СреднийЗаработокОбщийИндексируется"] = Форма.СреднийЗаработокОбщийИндексируется;
Форма.КонтролируемыеРеквизитыРасчетаСреднегоЗаработка = Новый ФиксированноеСоответствие(КонтролируемыеРеквизитыРасчетаСреднегоЗаработкаСоответствие);
УстановитьСвойстваЭлементовОбщегоСреднегоЗаработка(Форма);
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ПрочитатьНастройкиСреднегоЗаработкаФСС(Форма, ТекущийОбъект, ЭтоНовый = Ложь, Копирование = Ложь)
Если Форма.СреднийЗаработокФССМножественныйВвод Тогда
Для Каждого СтрокаНастройки Из ТекущийОбъект.СреднийЗаработокФСС Цикл
Если СтрокаНастройки.ПорядокРасчета = ПредопределенноеЗначение("Перечисление.ПорядокРасчетаСреднегоЗаработкаФСС.Постановление2011") Тогда
Продолжить;
КонецЕсли;
Форма.СреднийЗаработокФСС.НайтиПоЗначению(СтрокаНастройки.ПорядокРасчета).Пометка =
СтрокаНастройки.Значение = ПредопределенноеЗначение("Перечисление.УчетНачисленийВСреднемЗаработкеФСС.Включать");
КонецЦикла;
Если ЭтоНовый Тогда
Форма.СреднийЗаработокФСС.ЗаполнитьПометки(Истина);
КонецЕсли;
Иначе
Отбор = Новый Структура("ПорядокРасчета", ПредопределенноеЗначение("Перечисление.ПорядокРасчетаСреднегоЗаработкаФСС.Постановление2010"));
Если ТекущийОбъект.СреднийЗаработокФСС.НайтиСтроки(Отбор).Количество() > 0 Тогда
Форма.СреднийЗаработокФССИспользовать = Истина;
Форма.НеУчитыватьПриОплатеБольничногоЗаСчетРаботодателя = ТекущийОбъект.СреднийЗаработокФСС[0].Значение = ПредопределенноеЗначение("Перечисление.УчетНачисленийВСреднемЗаработкеФСС.НеУчитыватьПриОплатеБольничногоЗаСчетРаботодателя");
Иначе
Форма.СреднийЗаработокФССИспользовать = ЭтоНовый И Не Копирование;
Форма.НеУчитыватьПриОплатеБольничногоЗаСчетРаботодателя = Ложь;
КонецЕсли;
КонтролируемыеРеквизитыРасчетаСреднегоЗаработкаСоответствие = Новый Соответствие(Форма.КонтролируемыеРеквизитыРасчетаСреднегоЗаработка);
КонтролируемыеРеквизитыРасчетаСреднегоЗаработкаСоответствие["СреднийЗаработокФССИспользовать"] = Форма.СреднийЗаработокФССИспользовать;
Форма.КонтролируемыеРеквизитыРасчетаСреднегоЗаработка = Новый ФиксированноеСоответствие(КонтролируемыеРеквизитыРасчетаСреднегоЗаработкаСоответствие);
УстановитьСвойстваЭлементовСреднегоЗаработкаФСС(Форма);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаписатьНастройкиСреднегоЗаработкаОбщий(ТекущийОбъект)
Если СреднийЗаработокОбщийМножественныйВвод Тогда
ТекущийОбъект.СреднийЗаработокОбщий.Очистить();
Для Каждого СтрокаДанныхФормы Из СреднийЗаработокОбщий Цикл
Если СтрокаДанныхФормы.Значение <> Перечисления.УчетНачисленийВСреднемЗаработкеОбщий.НеВключать Тогда
ЗаполнитьЗначенияСвойств(ТекущийОбъект.СреднийЗаработокОбщий.Добавить(), СтрокаДанныхФормы);
КонецЕсли;
КонецЦикла;
Иначе
ТекущийОбъект.СреднийЗаработокОбщий.Очистить();
Если СреднийЗаработокОбщийИспользовать Тогда
СтрокаНастройки = ТекущийОбъект.СреднийЗаработокОбщий.Добавить();
СтрокаНастройки.ПорядокРасчета = Перечисления.ПорядокРасчетаСреднегоЗаработкаОбщий[Метаданные.Перечисления.ПорядокРасчетаСреднегоЗаработкаОбщий.ЗначенияПеречисления[0].Имя];
СтрокаНастройки.Значение = СреднийЗаработокОбщийЗначение;
СтрокаНастройки.Индексируется = СреднийЗаработокОбщийИндексируется;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаписатьНастройкиСреднегоЗаработкаФСС(ТекущийОбъект)
Если СреднийЗаработокФССМножественныйВвод Тогда
ТекущийОбъект.СреднийЗаработокФСС.Очистить();
Для Каждого ЭлементСписка Из СреднийЗаработокФСС Цикл
Если ЭлементСписка.Пометка Тогда
СтрокаНастройки = ТекущийОбъект.СреднийЗаработокФСС.Добавить();
СтрокаНастройки.ПорядокРасчета = ЭлементСписка.Значение;
СтрокаНастройки.Значение = Перечисления.УчетНачисленийВСреднемЗаработкеФСС.Включать;
КонецЕсли;
КонецЦикла;
Иначе
ТекущийОбъект.СреднийЗаработокФСС.Очистить();
Если СреднийЗаработокФССИспользовать Тогда
СтрокаНастройки = ТекущийОбъект.СреднийЗаработокФСС.Добавить();
СтрокаНастройки.ПорядокРасчета = Перечисления.ПорядокРасчетаСреднегоЗаработкаФСС.Постановление2010;
СтрокаНастройки.Значение = Перечисления.УчетНачисленийВСреднемЗаработкеФСС.Включать;
Если НеУчитыватьПриОплатеБольничногоЗаСчетРаботодателя Тогда
СтрокаНастройки.Значение = Перечисления.УчетНачисленийВСреднемЗаработкеФСС.НеУчитыватьПриОплатеБольничногоЗаСчетРаботодателя;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьСвойстваЭлементовОбщегоСреднегоЗаработка(Форма)
ДоступностьИзмененияСреднегоЗаработка = Форма.СреднийЗаработокОбщийИспользовать И Форма.СреднийЗаработокОбщийДоступностьПоКатегории;
ДоступностьИзмененияИндексируемости = ДоступностьИзмененияСреднегоЗаработка;
Если Форма.СреднийЗаработокОбщийИндексируетсяДоступностьПоКатегории = Истина Тогда
ДоступностьИзмененияИндексируемости = Истина;
КонецЕсли;
Форма.Элементы.СреднийЗаработокОбщийЗначениеЕдинственный.Доступность = ДоступностьИзмененияСреднегоЗаработка;
Форма.Элементы.СреднийЗаработокОбщийИндексируетсяЕдинственный.Доступность = ДоступностьИзмененияИндексируемости;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Форма.Элементы,
"УчитыватьВесьЗаработок",
"Видимость",
Форма.СреднийЗаработокОбщийИспользовать
И Не Форма.ПолучитьФункциональнуюОпциюФормы("УчитыватьОплачиваемоеНерабочееВремяИСуммыВСреднемЗаработке"));
КонецПроцедуры
&НаКлиенте
Процедура УстановитьСреднийЗаработокОбщийЗначениеЕдинственный()
Если Объект.ПериодРасчетаБазовыхНачислений = ПредопределенноеЗначение("Перечисление.ПериодыРасчетаБазовыхНачислений.ПредыдущийГод")
Или Объект.ПериодРасчетаБазовыхНачислений = ПредопределенноеЗначение("Перечисление.ПериодыРасчетаБазовыхНачислений.ТекущийГод") Тогда
Если СреднийЗаработокОбщийЗначение <> ПредопределенноеЗначение("Перечисление.УчетНачисленийВСреднемЗаработкеОбщий.ПремияГодоваяПроцентом")
И СреднийЗаработокОбщийЗначение <> ПредопределенноеЗначение("Перечисление.УчетНачисленийВСреднемЗаработкеОбщий.ПремияГодоваяФиксированнойСуммой") Тогда
СреднийЗаработокОбщийЗначение = ПредопределенноеЗначение("Перечисление.УчетНачисленийВСреднемЗаработкеОбщий.ПремияГодоваяПроцентом");
КонецЕсли;
Иначе
Если СреднийЗаработокОбщийЗначение = ПредопределенноеЗначение("Перечисление.УчетНачисленийВСреднемЗаработкеОбщий.ПремияГодоваяПроцентом")
Или СреднийЗаработокОбщийЗначение = ПредопределенноеЗначение("Перечисление.УчетНачисленийВСреднемЗаработкеОбщий.ПремияГодоваяФиксированнойСуммой") Тогда
СреднийЗаработокОбщийЗначение = ПредопределенноеЗначение("Перечисление.УчетНачисленийВСреднемЗаработкеОбщий.ПремияПроцентом");
КонецЕсли;
КонецЕсли;
КонтролируемыеРеквизитыРасчетаСреднегоЗаработкаСоответствие = Новый Соответствие(КонтролируемыеРеквизитыРасчетаСреднегоЗаработка);
КонтролируемыеРеквизитыРасчетаСреднегоЗаработкаСоответствие["СреднийЗаработокОбщийЗначение"] = СреднийЗаработокОбщийЗначение;
КонтролируемыеРеквизитыРасчетаСреднегоЗаработка = Новый ФиксированноеСоответствие(КонтролируемыеРеквизитыРасчетаСреднегоЗаработкаСоответствие);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьСвойстваЭлементовСреднегоЗаработкаФСС(Форма)
КодДоходаСтраховыеВзносы = Форма.Объект.КодДоходаСтраховыеВзносы;
Если ЗначениеЗаполнено(КодДоходаСтраховыеВзносы) И КодДоходаСтраховыеВзносыВходитВБазуФСС(КодДоходаСтраховыеВзносы) Тогда
Форма.Элементы.СреднийЗаработокФССИспользовать.Подсказка =
НСтр("ru = 'Учитывается при расчете среднего заработка для целей оплаты больничных и других пособий за счет ФСС по правилам для событий, произошедших после 1 января 2011 года'");
Иначе
Форма.Элементы.СреднийЗаработокФССИспользовать.Подсказка =
НСтр("ru = 'Не учитывается при расчете среднего заработка для целей оплаты больничных и других пособий за счет ФСС по правилам для событий, произошедших после 1 января 2011 года'");
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция КодДоходаСтраховыеВзносыВходитВБазуФСС(КодДоходаСтраховыеВзносы)
Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(КодДоходаСтраховыеВзносы, "ВходитВБазуФСС");
КонецФункции
&НаСервере
Процедура НастроитьЭлементыВводаСреднегоЗаработкаОбщий()
СреднийЗаработокОбщийМножественныйВвод = Метаданные.Перечисления.ПорядокРасчетаСреднегоЗаработкаОбщий.ЗначенияПеречисления.Количество() > 1;
Элементы.СтраницыСреднийЗаработокОбщий.ТекущаяСтраница = ?(СреднийЗаработокОбщийМножественныйВвод,
Элементы.СреднийЗаработокОбщийПорядокРасчетаМножественный,
Элементы.СреднийЗаработокОбщийПорядокРасчетаЕдинственный);
Если СреднийЗаработокОбщийМножественныйВвод Тогда
СреднийЗаработокОбщий.Очистить();
Для Каждого МетаданныеЗначения Из Метаданные.Перечисления.ПорядокРасчетаСреднегоЗаработкаОбщий.ЗначенияПеречисления Цикл
СреднийЗаработокОбщий.Добавить().ПорядокРасчета = Перечисления.ПорядокРасчетаСреднегоЗаработкаОбщий[МетаданныеЗначения.Имя];
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура НастроитьЭлементыВводаСреднегоЗаработкаФСС()
СреднийЗаработокФССМножественныйВвод = Ложь;
Элементы.СтраницыСреднийЗаработокФСС.ТекущаяСтраница = ?(СреднийЗаработокФССМножественныйВвод,
Элементы.СреднийЗаработокФССПорядокРасчетаМножественный,
Элементы.СреднийЗаработокФССПорядокРасчетаЕдинственный);
Если СреднийЗаработокФССМножественныйВвод Тогда
СреднийЗаработокФСС.Очистить();
Для Каждого МетаданныеЗначения Из Метаданные.Перечисления.ПорядокРасчетаСреднегоЗаработкаФСС.ЗначенияПеречисления Цикл
Если Перечисления.ПорядокРасчетаСреднегоЗаработкаФСС[МетаданныеЗначения.Имя] = Перечисления.ПорядокРасчетаСреднегоЗаработкаФСС.Постановление2011 Тогда
Продолжить;
КонецЕсли;
СреднийЗаработокФСС.Добавить(Перечисления.ПорядокРасчетаСреднегоЗаработкаФСС[МетаданныеЗначения.Имя], МетаданныеЗначения.Синоним);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьСвойстваПериодаРасчетаСреднегоЗаработка(Форма)
ЕстьПоказателиСреднегоЗаработка = УчетСреднегоЗаработкаКлиентСервер.ЕстьПоказателиОбщегоСреднегоЗаработка(Форма.Объект.Показатели);
Если ЕстьПоказателиСреднегоЗаработка Тогда
Форма.Элементы.НастройкаПериодаСреднегоЗаработкаСтраницы.ТекущаяСтраница = Форма.Элементы.ПериодНастраиваетсяСтраница;
Иначе
Форма.Элементы.НастройкаПериодаСреднегоЗаработкаСтраницы.ТекущаяСтраница = Форма.Элементы.ПериодНеНастраиваетсяСтраница;
КонецЕсли;
Если Не ЕстьПоказателиСреднегоЗаработка Тогда
Возврат;
КонецЕсли;
Если Не ЗначениеЗаполнено(Форма.Объект.ПорядокОпределенияРасчетногоПериодаСреднегоЗаработка) Тогда
Форма.Объект.ПорядокОпределенияРасчетногоПериодаСреднегоЗаработка =
ПредопределенноеЗначение("Перечисление.ПорядокОпределенияРасчетногоПериодаСреднегоЗаработка.ПоТрудовомуЗаконодательству");
КонецЕсли;
ДоступностьВвода = Форма.Объект.ПорядокОпределенияРасчетногоПериодаСреднегоЗаработка =
ПредопределенноеЗначение("Перечисление.ПорядокОпределенияРасчетногоПериодаСреднегоЗаработка.ПоКолдоговору");
Форма.Элементы.КоличествоМесяцевРасчетаСреднегоЗаработка.Доступность = ДоступностьВвода;
Форма.Элементы.КоличествоМесяцевРасчетаСреднегоЗаработка.АвтоОтметкаНезаполненного = ДоступностьВвода;
Форма.Элементы.КоличествоМесяцевРасчетаСреднегоЗаработка.ОтметкаНезаполненного = Не ЗначениеЗаполнено(Форма.Объект.КоличествоМесяцевРасчетаСреднегоЗаработка);
Если Не Форма.Элементы.КоличествоМесяцевРасчетаСреднегоЗаработка.Доступность Тогда
Форма.Объект.КоличествоМесяцевРасчетаСреднегоЗаработка = 12;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ДозаполнитьВидРасчета(ДобавленныйВидРасчета, ИмяТаблицы, ВыводитьСообщения = Истина)
ДополнительныеВидыРасчета = Новый Массив;
Если ИмяТаблицы = "СписокРассчитываемыхПосле" Или ИмяТаблицы = "СписокПриоритетНиже" Или ИмяТаблицы = "СписокЗависимыеНачисления" Тогда
Если Объект.Ссылка.Пустая() Тогда
СсылкаНаОбъект = ПланыВидовРасчета.Начисления.ПолучитьСсылку();
Иначе
СсылкаНаОбъект = Объект.Ссылка;
КонецЕсли;
ВидРасчетаОбъект = ДобавленныйВидРасчета.ПолучитьОбъект();
Если ИмяТаблицы = "СписокРассчитываемыхПосле" Тогда
ВидРасчетаОбъект.ВедущиеВидыРасчета.Добавить().ВидРасчета = СсылкаНаОбъект;
ИначеЕсли ИмяТаблицы = "СписокПриоритетНиже" Тогда
ВидРасчетаОбъект.ВытесняющиеВидыРасчета.Добавить().ВидРасчета = СсылкаНаОбъект;
Иначе
ВидРасчетаОбъект.БазовыеВидыРасчета.Добавить().ВидРасчета = СсылкаНаОбъект;
КонецЕсли;
ПакетВидовРасчета = Новый Соответствие;
ПакетВидовРасчета.Вставить(ДобавленныйВидРасчета, ВидРасчетаОбъект);
РасчетЗарплатыРасширенный.ДозаполнитьВидыРасчета(ПакетВидовРасчета);
Для Каждого ЭлементКоллекции Из ПакетВидовРасчета Цикл
Если ЭлементКоллекции.Значение.ВедущиеВидыРасчета.Найти(СсылкаНаОбъект, "ВидРасчета") <> Неопределено Тогда
Если ЭтаФорма["СписокРассчитываемыхПосле"].НайтиСтроки(Новый Структура("ВидРасчета", ЭлементКоллекции.Ключ)).Количество() = 0 Тогда
ЭтаФорма["СписокРассчитываемыхПосле"].Добавить().ВидРасчета = ЭлементКоллекции.Ключ;
ДополнительныеВидыРасчета.Добавить(ЭлементКоллекции.Ключ);
КонецЕсли;
КонецЕсли;
Если ЭлементКоллекции.Значение.ВытесняющиеВидыРасчета.Найти(СсылкаНаОбъект, "ВидРасчета") <> Неопределено Тогда
Если ЭтаФорма["СписокПриоритетНиже"].НайтиСтроки(Новый Структура("ВидРасчета", ЭлементКоллекции.Ключ)).Количество() = 0 Тогда
ЭтаФорма["СписокПриоритетНиже"].Добавить().ВидРасчета = ЭлементКоллекции.Ключ;
ДополнительныеВидыРасчета.Добавить(ЭлементКоллекции.Ключ);
КонецЕсли;
КонецЕсли;
Если ЭлементКоллекции.Значение.БазовыеВидыРасчета.Найти(СсылкаНаОбъект, "ВидРасчета") <> Неопределено Тогда
Если ЭтаФорма["СписокЗависимыеНачисления"].НайтиСтроки(Новый Структура("ВидРасчета", ЭлементКоллекции.Ключ)).Количество() = 0 Тогда
ЭтаФорма["СписокЗависимыеНачисления"].Добавить().ВидРасчета = ЭлементКоллекции.Ключ;
ДополнительныеВидыРасчета.Добавить(ЭлементКоллекции.Ключ);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Иначе
ВидРасчетаОбъект = РеквизитФормыВЗначение("Объект");
ПакетВидовРасчета = Новый Соответствие;
Если ВидРасчетаОбъект.Ссылка.Пустая() Тогда
СсылкаНаОбъект = ПланыВидовРасчета.Начисления.ПолучитьСсылку();
ВидРасчетаОбъект.УстановитьСсылкуНового(СсылкаНаОбъект);
ПакетВидовРасчета.Вставить(СсылкаНаОбъект, ВидРасчетаОбъект);
Иначе
ПакетВидовРасчета.Вставить(ВидРасчетаОбъект.Ссылка, ВидРасчетаОбъект);
КонецЕсли;
РасчетЗарплатыРасширенный.ДозаполнитьВидыРасчета(ПакетВидовРасчета);
НовыеВидыРасчета = ВидРасчетаОбъект[ИмяТаблицы].ВыгрузитьКолонку("ВидРасчета");
Для Каждого ВидРасчета Из НовыеВидыРасчета Цикл
Если Объект[ИмяТаблицы].НайтиСтроки(Новый Структура("ВидРасчета", ВидРасчета)).Количество() = 0 Тогда
Объект[ИмяТаблицы].Добавить().ВидРасчета = ВидРасчета;
ДополнительныеВидыРасчета.Добавить(ВидРасчета);
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если ВыводитьСообщения Тогда
ТекстСообщения = ТекстСообщенияОДобавленииДополнительныхВидовРасчета(ДобавленныйВидРасчета, ДополнительныеВидыРасчета);
Если ТекстСообщения <> "" Тогда
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ТекстСообщенияОДобавленииДополнительныхВидовРасчета(ДобавленныйВидРасчета, ДополнительныеВидыРасчета)
ТекстСообщения = "";
КоличествоЭлементов = ДополнительныеВидыРасчета.Количество();
Если КоличествоЭлементов = 0 Тогда
Возврат ТекстСообщения;
КонецЕсли;
ВидыРасчетовСтрока = "";
Для Сч = 1 По КоличествоЭлементов Цикл
ВидыРасчетовСтрока = ВидыРасчетовСтрока + ДополнительныеВидыРасчета[Сч-1] + ?(Сч = КоличествоЭлементов, "", ", ");
КонецЦикла;
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='Кроме начисления %1 в список включены следующие начисления: %2'"),
ДобавленныйВидРасчета, ВидыРасчетовСтрока);
Возврат ТекстСообщения;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьТекстНадписиОЗаполненностиФормулы(Форма)
Форма.Элементы.ПредупреждениеФормулаНеЗаполнена.Видимость =
Не ЗначениеЗаполнено(Форма.Объект.ФормулаРасчета) И Форма.Элементы.ГруппаРасчетИПоказатели.Доступность;
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьПредупрежденияОСуществующихНачислениях()
Если Не Объект.Ссылка.Пустая() Тогда
Возврат;
КонецЕсли;
НепроверяемыеКатегории = Новый Массив;
НепроверяемыеКатегории.Добавить(Перечисления.КатегорииНачисленийИНеоплаченногоВремени.ПовременнаяОплатаТруда);
НепроверяемыеКатегории.Добавить(Перечисления.КатегорииНачисленийИНеоплаченногоВремени.Льгота);
НепроверяемыеКатегории.Добавить(Перечисления.КатегорииНачисленийИНеоплаченногоВремени.ВыбираемаяСотрудникомЛьгота);
Если НепроверяемыеКатегории.Найти(Объект.КатегорияНачисленияИлиНеоплаченногоВремени) <> Неопределено Тогда
Возврат;
КонецЕсли;
НачисленияКатегории = ПланыВидовРасчета.Начисления.НачисленияПоКатегории(Объект.КатегорияНачисленияИлиНеоплаченногоВремени);
Если НачисленияКатегории.Количество() > 0 Тогда
Текст = НСтр("ru = 'Начисления с таким назначением уже существуют в программе (см. подсказку). Возможно, создание еще одного такого начисления будет избыточным.'");
НазначениеНачисленияИнфо = Новый ФорматированнаяСтрока(Текст,,ЦветаСтиля.ПоясняющийОшибкуТекст);
ЧастиПодсказки = Новый Массив;
ЧастиПодсказки.Добавить(НСтр("ru = 'Похожие начисления:'"));
Для Каждого Начисление Из НачисленияКатегории Цикл
ЧастиПодсказки.Добавить(Символы.ПС);
ЧастиПодсказки.Добавить(Новый ФорматированнаяСтрока(Строка(Начисление),,,,ПолучитьНавигационнуюСсылку(Начисление)));
КонецЦикла;
Элементы.НазначениеНачисленияИнфо.РасширеннаяПодсказка.Заголовок = Новый ФорматированнаяСтрока(ЧастиПодсказки);
Элементы.НазначениеНачисленияИнфо.ОтображениеПодсказки = ОтображениеПодсказки.Кнопка;
Иначе
НазначениеНачисленияИнфо = "";
Элементы.НазначениеНачисленияИнфо.РасширеннаяПодсказка.Заголовок = "";
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СпособВыполненияНачисленияПриИзмененииНаСервере()
УстановитьПризнакРассчитывается();
УстановитьВидДокументаНачисления(ЭтаФорма);
УстановитьИнформациюПоСпособуНачисления(ЭтаФорма);
ЗаполнитьПризнакНачисляетсяВЦеломЗаМесяц(ЭтаФорма);
УстановитьЗначенияПоУмолчаниюБазовогоПериодаПремии(ЭтаФорма);
УстановитьДоступностьЭлементовПоКатегории(ЭтаФорма);
УстановитьСписокВыбораПериодаРасчетаБазовыхНачислений(ЭтаФорма);
УстановитьЗначениеПериодДействияБазовый();
УстановитьДоступностьСпискаПриоритетНиже(ЭтаФорма);
УстановитьОтображениеВидыВремени(ЭтаФорма);
УстановитьОтображениеНачисляетсяВОтпускеПоУходу(ЭтаФорма);
УстановитьОтображениеНачисляетсяВПервуюПоловинуМесяца(ЭтаФорма);
УстановитьВидимостьПредупрежденияОСуществующихПоВидуВремениНачислениях();
УстановитьДоступностьДополнительныхВидовВремени(ЭтаФорма);
ПриИзмененииОбозначениеВТабелеУчетаРабочегоВремени(ЭтаФорма);
УстановитьДоступностьВыбораПериодаПремииДляСреднегоЗаработка(ЭтаФорма);
УстановитьВидимостьПризнакаПоддерживаетНесколькоПлановыхНачислений();
УстановитьВключатьВФОТ(ЭтаФорма);
УстановитьДоступностьВключатьВФОТ(ЭтаФорма);
УстановитьВидимостьПериодичностиНачисления();
ЗаполнитьВидВремени();
ПриИзмененииВидаВремени();
УстановитьВидимостьСпособаРасчетовСФизическимиЛицами();
УстановитьДоступностьПоляВыполнятьВДокументахРазовыхНачислений(ЭтотОбъект);
УстановитьЗначениеВыполнятьВДокументахРазовыхНачислений(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ВидДокументаНачисленияПриИзмененииНаСервере()
УстановитьВидимостьПериодичностиНачисления();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьВидВремени()
СпособыВыполненияПриОкончательномРасчете = Новый Массив;
СпособыВыполненияПриОкончательномРасчете.Добавить(ПредопределенноеЗначение("Перечисление.СпособыВыполненияНачислений.ЕжемесячноПриОкончательномРасчете"));
СпособыВыполненияПриОкончательномРасчете.Добавить(ПредопределенноеЗначение("Перечисление.СпособыВыполненияНачислений.ВЗаданныхМесяцахПриОкончательномРасчете"));
Если Объект.КатегорияНачисленияИлиНеоплаченногоВремени = Перечисления.КатегорииНачисленийИНеоплаченногоВремени.ПовременнаяОплатаТруда
И Объект.СпособВыполненияНачисления = Перечисления.СпособыВыполненияНачислений.ПоОтдельномуДокументуДоОкончательногоРасчета Тогда
Объект.ВидВремени = Перечисления.ВидыРабочегоВремениСотрудников.ДополнительноОплачиваемоеВПределахНормы;
КонецЕсли;
Если Объект.КатегорияНачисленияИлиНеоплаченногоВремени = Перечисления.КатегорииНачисленийИНеоплаченногоВремени.ОплатаПоСреднемуЗаработку Тогда
Объект.ВидВремени =
?(СпособыВыполненияПриОкончательномРасчете.Найти(Объект.СпособВыполненияНачисления) = Неопределено,
Перечисления.ВидыРабочегоВремениСотрудников.ЦелодневноеНеотработанное,
Перечисления.ВидыРабочегоВремениСотрудников.ОтработанноеВПределахНормы);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьПредупрежденияОСуществующихПоВидуВремениНачислениях()
Если Объект.СпособВыполненияНачисления <> Перечисления.СпособыВыполненияНачислений.ПоЗначениюВидаВремениПриОкончательномРасчете Тогда
Элементы.ПредупреждениеНачислениеПоВидуВремениУжеСуществует.Видимость = Ложь;
Возврат;
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.ОбозначениеВТабелеУчетаРабочегоВремени) Тогда
Элементы.ПредупреждениеНачислениеПоВидуВремениУжеСуществует.Видимость = Ложь;
Возврат;
КонецЕсли;
ОтборНачислений = Новый Структура;
ОтборНачислений.Вставить("СпособВыполненияНачисления", Перечисления.СпособыВыполненияНачислений.ПоЗначениюВидаВремениПриОкончательномРасчете);
ОтборНачислений.Вставить("ОбозначениеВТабелеУчетаРабочегоВремени", Объект.ОбозначениеВТабелеУчетаРабочегоВремени);
ОтобранныеНачисления = ПланыВидовРасчета.Начисления.НачисленияПоОтбору(ОтборНачислений, "РеквизитДопУпорядочивания");
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(ОтобранныеНачисления, Объект.Ссылка);
Элементы.ПредупреждениеНачислениеПоВидуВремениУжеСуществует.Видимость = ОтобранныеНачисления.Количество() > 0;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСведенияОКатегориях()
КатегорииПоСвойствам = ПланыВидовРасчета.Начисления.КатегорииПоСвойствамНачислений(СвойстваПоКатегориям);
КатегорииОтработанноеВремя = Новый ФиксированныйМассив(КатегорииПоСвойствам.ОтработанноеВремя);
КатегорииНеоплачиваемоеВремя = Новый ФиксированныйМассив(КатегорииПоСвойствам.НеоплачиваемоеВремя);
КатегорииКодДоходаНДФЛНеЗаполняется = Новый ФиксированныйМассив(КатегорииПоСвойствам.КодДоходаНДФЛНеЗаполняется);
КатегорииКодДоходаСтраховыеВзносыНеЗаполняется = Новый ФиксированныйМассив(КатегорииПоСвойствам.КодДоходаСтраховыеВзносыНеЗаполняется);
КатегорииВидНачисленияДляНУНеЗаполняется = Новый ФиксированныйМассив(КатегорииПоСвойствам.ВидНачисленияДляНУНеЗаполняется);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ЯвляетсяДенежнымСодержаниемПриИзменении(Элемент)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба") Тогда
Модуль = ОбщегоНазначенияКлиент.ОбщийМодуль("ГосударственнаяСлужбаКлиентСервер");
Модуль.НачислениеФормаЯвляетсяДенежнымСодержаниемПриИзменении(Элемент, ЭтаФорма);
КонецЕсли;
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.РеестрГосслужащих") Тогда
Модуль = ОбщегоНазначенияКлиент.ОбщийМодуль("РеестрГосслужащихКлиентСервер");
Модуль.УстановитьСвойстваЭлементовХарактеристикиНачисленийПоРееструГосслужащих(ЭтаФорма);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ЯвляетсяДенежнымДовольствиемПриИзменении(Элемент)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба") Тогда
Модуль = ОбщегоНазначенияКлиент.ОбщийМодуль("ГосударственнаяСлужбаКлиентСервер");
Модуль.НачислениеФормаЯвляетсяДенежнымДовольствиемПриИзменении(Элемент, ЭтаФорма);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СвойстваНачисленийГосударственныхСлужащихПриИзменении(Элемент)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба") Тогда
Модуль = ОбщегоНазначенияКлиент.ОбщийМодуль("ГосударственнаяСлужбаКлиентСервер");
Модуль.НачислениеФормаСвойствоНачисленияПриИзменении(Элемент, ЭтаФорма);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СвойстваНачисленийОтношениеКДенежномуДовольствиюПриИзменении(Элемент)
Подключаемый_СвойстваНачисленийОтношениеКДенежномуДовольствиюПриИзмененииНаСервере();
КонецПроцедуры
&НаСервере
Процедура Подключаемый_СвойстваНачисленийОтношениеКДенежномуДовольствиюПриИзмененииНаСервере()
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба.РасчетДенежногоДовольствия") Тогда
Модуль = ОбщегоНазначения.ОбщийМодуль("РасчетДенежногоДовольствия");
Модуль.СвойстваНачисленийОтношениеКДенежномуДовольствиюПриИзменении(ЭтаФорма);
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступностьКодаДоходаНДФЛ(Форма)
ОбязательноЗаполнять = Форма.КатегорииКодДоходаНДФЛНеЗаполняется.Найти(Форма.Объект.КатегорияНачисленияИлиНеоплаченногоВремени) = Неопределено;
Форма.Элементы.ОблагаетсяНДФЛЧисло0.Доступность = Форма.КодДоходаНДФЛДоступностьПоКатегории И Не ОбязательноЗаполнять;
Форма.Элементы.ОблагаетсяНДФЛЧисло1.Доступность = Форма.КодДоходаНДФЛДоступностьПоКатегории;
Если ОбязательноЗаполнять Тогда
Форма.ОблагаетсяНДФЛ = 1;
КонецЕсли;
ДоступностьКодаНДФЛ = Форма.ОблагаетсяНДФЛ = 1 И Форма.КодДоходаНДФЛДоступностьПоКатегории;
Форма.Элементы.КодДоходаНДФЛ.Доступность = ДоступностьКодаНДФЛ;
Форма.Элементы.КодДоходаНДФЛ.АвтоОтметкаНезаполненного = ДоступностьКодаНДФЛ;
Форма.Элементы.КодДоходаНДФЛ.ОтметкаНезаполненного = Не ЗначениеЗаполнено(Форма.Объект.КодДоходаНДФЛ);
Если Форма.ОблагаетсяНДФЛ = 0 Тогда
Форма.Объект.КодДоходаНДФЛ = Неопределено;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступностьКатегорииДоходаНДФЛ(Форма)
Форма.Элементы.КодДоходаНДФЛ.Доступность = Ложь;
Форма.Элементы.КодДоходаНДФЛ.АвтоОтметкаНезаполненного = Ложь;
Форма.Элементы.КодДоходаНДФЛ.ОтметкаНезаполненного = Ложь;
Если Форма.Элементы.КатегорияДохода.СписокВыбора.Количество() > 2 Тогда
Форма.Элементы.КодДоходаНДФЛ.Доступность = Истина;
Форма.Элементы.КодДоходаНДФЛ.АвтоОтметкаНезаполненного = Истина;
Форма.Элементы.КодДоходаНДФЛ.ОтметкаНезаполненного = ЗначениеЗаполнено(Форма.Объект.КатегорияДохода);
ИначеЕсли Форма.Элементы.КатегорияДохода.СписокВыбора.Количество() = 1
И Форма.Элементы.КатегорияДохода.СписокВыбора[0] <> Форма.Объект.КатегорияДохода Тогда
Форма.Элементы.КодДоходаНДФЛ.Доступность = Истина;
Форма.Элементы.КодДоходаНДФЛ.АвтоОтметкаНезаполненного = Истина;
Форма.Элементы.КодДоходаНДФЛ.ОтметкаНезаполненного = ЗначениеЗаполнено(Форма.Объект.КатегорияДохода);
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступностьВидаНачисленияДляНУ(Форма)
ОбязательноЗаполнять = Форма.КатегорииВидНачисленияДляНУНеЗаполняется.Найти(Форма.Объект.КатегорияНачисленияИлиНеоплаченногоВремени) = Неопределено;
Форма.Элементы.ВключаетсяВРасходыПоСт255НКРФЧисло0.Доступность = Форма.ВидНачисленияДляНУДоступностьПоКатегории И Не ОбязательноЗаполнять;
Форма.Элементы.ВключаетсяВРасходыПоСт255НКРФЧисло1.Доступность = Форма.ВидНачисленияДляНУДоступностьПоКатегории;
Если ОбязательноЗаполнять Тогда
Форма.ВключаетсяВРасходыПоСт255НКРФ = 1;
КонецЕсли;
ДоступностьВидаНачисленияДляНУ = Форма.ВключаетсяВРасходыПоСт255НКРФ = 1 И Форма.ВидНачисленияДляНУДоступностьПоКатегории;
Форма.Элементы.ВидНачисленияДляНУ.Доступность = ДоступностьВидаНачисленияДляНУ;
Форма.Элементы.ВидНачисленияДляНУ.АвтоОтметкаНезаполненного = ДоступностьВидаНачисленияДляНУ;
Форма.Элементы.ВидНачисленияДляНУ.ОтметкаНезаполненного = Не ЗначениеЗаполнено(Форма.Объект.ВидНачисленияДляНУ);
Если Форма.ВключаетсяВРасходыПоСт255НКРФ = 0 Тогда
Форма.Объект.ВидНачисленияДляНУ = Неопределено;
ОтражениеЗарплатыВБухучетеКлиентСерверРасширенный.ОбновитьПредставлениеВидаНачисленияПоНКРФ(Форма);
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьВидимостьСпособаОпределенияМесяцаДоходаВНалоговомУчете(Форма)
Видимость = Истина;
Если Форма.Объект.КатегорияДохода <> ПредопределенноеЗначение("Перечисление.КатегорииДоходовНДФЛ.ОплатаТруда") Тогда
Видимость = Ложь;
КонецЕсли;
Если Не Видимость Тогда
Форма.Объект.ПорядокОпределенияМесяцаДоходаВВидеОплатыТруда = ПредопределенноеЗначение("Перечисление.ПорядокОпределенияМесяцаДоходаВВидеОплатыТруда.ПоПериодуНачисления");
КонецЕсли;
Если Форма.ЕстьПоказательРасчетнаяБаза
Или Форма.Объект.СпособВыполненияНачисления <> ПредопределенноеЗначение("Перечисление.СпособыВыполненияНачислений.ЕжемесячноПриОкончательномРасчете") Тогда
Форма.Элементы.СтраницыПорядкаОпределенияМесяцаДоходаВВидеОплатыТруда.ТекущаяСтраница = Форма.Элементы.СтраницаПорядкаОпределенияМесяцаДоходаВВидеОплатыТрудаИспользуетсяРасчетнаяБаза;
Иначе
Форма.Элементы.СтраницыПорядкаОпределенияМесяцаДоходаВВидеОплатыТруда.ТекущаяСтраница = Форма.Элементы.СтраницаПорядокОпределенияМесяцаДоходаВВидеОплатыТрудаНеИспользуетсяРасчетнаяБаза;
КонецЕсли;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Форма.Элементы,
"СтраницыПорядкаОпределенияМесяцаДоходаВВидеОплатыТруда",
"Видимость",
Видимость);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступностьКатегорииСтатистическогоНаблюдения57Т(Форма)
Объект = Форма.Объект;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Форма.Элементы,
"КатегорияСтатистическогоНаблюдения57Т",
"Доступность",
Объект.КатегорияСтатистическогоНаблюдения = ПредопределенноеЗначение("Перечисление.КатегорииСтатистическогоНаблюдения.ЗаработнаяПлатаРаботников"));
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьКатегориюСтатистическогоНаблюдения57Т(Форма)
Объект = Форма.Объект;
Если Объект.КатегорияСтатистическогоНаблюдения <> ПредопределенноеЗначение("Перечисление.КатегорииСтатистическогоНаблюдения.ЗаработнаяПлатаРаботников") Тогда
Объект.КатегорияСтатистическогоНаблюдения57Т = Неопределено;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьИЗакрытьНаКлиенте(Результат, ДополнительныеПараметры) Экспорт
ЗаписатьНаКлиенте(Истина);
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьНаКлиенте(ЗакрытьПослеЗаписи)
ОценкаПроизводительностиКлиент.ЗамерВремени("ЗаписьЭлементаПланаВидовРасчетаНачисления");
Если ДобавляемыеНачисленияПриоритетВыше.Количество() > 0 Или ДобавляемыеНачисленияПриоритетНиже.Количество() > 0 Тогда
ОткрытьФормуИсправленияСвязейНачислений(ЗакрытьПослеЗаписи);
Возврат;
КонецЕсли;
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
Для Каждого КонтролируемыйРеквизит Из КонтролируемыеРеквизитыРасчетаСреднегоЗаработка Цикл
Если КонтролируемыйРеквизит.Значение <> ОбщегоНазначенияКлиентСервер.ПолучитьРеквизитФормыПоПути(ЭтотОбъект, КонтролируемыйРеквизит.Ключ) Тогда
ОткрытьФормуПредупрежденияОПерепроведенииДокументов(ЗакрытьПослеЗаписи);
Возврат;
КонецЕсли;
КонецЦикла;
КонецЕсли;
ПараметрыЗаписи = Новый Структура("ПроверкаПередЗаписьюВыполнена", Истина);
Если Записать(ПараметрыЗаписи) И ЗакрытьПослеЗаписи Тогда
Закрыть();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьНастройкуПриоритета(ПутьКДанным)
ПроверитьНастройкуПриоритетаНаСервере(ПутьКДанным);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФормуИсправленияСвязейНачислений(ЗакрытьПослеИсправления = Истина, ЗаписатьДанные = Истина)
ПараметрыФормы = РасчетЗарплатыРасширенныйКлиентСервер.ПараметрыОткрытияФормыИсправленияСвязейНачислений();
Если ДобавляемыеНачисленияПриоритетВыше.Количество() > 0 Тогда
ПараметрыФормы.ДобавляемыеНачисленияПриоритетВыше = Новый Массив(ДобавляемыеНачисленияПриоритетВыше);
ПараметрыФормы.УдаляемыеНачисленияПриоритетВыше = Новый Массив(УдаляемыеНачисленияПриоритетВыше);
КонецЕсли;
Если ДобавляемыеНачисленияПриоритетНиже.Количество() > 0 Тогда
ПараметрыФормы.ДобавляемыеНачисленияПриоритетНиже = Новый Массив(ДобавляемыеНачисленияПриоритетНиже);
ПараметрыФормы.УдаляемыеНачисленияПриоритетНиже = Новый Массив(УдаляемыеНачисленияПриоритетНиже);
КонецЕсли;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ЗакрытьПослеИсправления", ЗакрытьПослеИсправления);
ДополнительныеПараметры.Вставить("ЗаписатьДанные", ЗаписатьДанные);
Оповещение = Новый ОписаниеОповещения("ОткрытьФормуИсправленияСвязейНачисленийЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ОткрытьФорму("ПланВидовРасчета.Начисления.Форма.ФормаИсправленияСвязейНачислений", ПараметрыФормы, ЭтаФорма, , , , Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФормуИсправленияСвязейНачисленийЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
ОбработатьИсправлениеСвязейНаСервере(Результат.ДействиеПриоритетВыше, Результат.ДействиеПриоритетНиже);
Если ДополнительныеПараметры.ЗаписатьДанные Тогда
ЗаписатьНаКлиенте(ДополнительныеПараметры.ЗакрытьПослеИсправления);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФормуПредупрежденияОПерепроведенииДокументов(ЗакрытьПослеИсправления = Истина, ЗаписатьДанные = Истина)
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ЗакрытьПослеИсправления", ЗакрытьПослеИсправления);
ДополнительныеПараметры.Вставить("ЗаписатьДанные", ЗаписатьДанные);
Оповещение = Новый ОписаниеОповещения("ОткрытьФормуПредупрежденияОПерепроведенииДокументовЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ТекстПредупреждения = НСтр("ru = 'Была изменена ключевая настройка учета среднего заработка. Необходимо перепровести документы по учету среднего заработка. Воспользуйтесь командой ""Зарплата - Сервис - Обновить данные для расчета среднего заработка""'");
ПоказатьПредупреждение(Оповещение, ТекстПредупреждения, , НСтр("ru = 'Внимание'"));
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФормуПредупрежденияОПерепроведенииДокументовЗавершение(ДополнительныеПараметры) Экспорт
КонтролируемыеРеквизитыРасчетаСреднегоЗаработкаСоответствие = Новый Соответствие(КонтролируемыеРеквизитыРасчетаСреднегоЗаработка);
Для Каждого КонтролируемыйРеквизит Из КонтролируемыеРеквизитыРасчетаСреднегоЗаработкаСоответствие Цикл
КонтролируемыеРеквизитыРасчетаСреднегоЗаработкаСоответствие[КонтролируемыйРеквизит.Ключ] = ОбщегоНазначенияКлиентСервер.ПолучитьРеквизитФормыПоПути(ЭтотОбъект, КонтролируемыйРеквизит.Ключ);
КонецЦикла;
КонтролируемыеРеквизитыРасчетаСреднегоЗаработка = Новый ФиксированноеСоответствие(КонтролируемыеРеквизитыРасчетаСреднегоЗаработкаСоответствие);
Если ДополнительныеПараметры.ЗаписатьДанные Тогда
ЗаписатьНаКлиенте(ДополнительныеПараметры.ЗакрытьПослеИсправления);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПроверитьНастройкуПриоритетаНаСервере(ПутьКДанным)
ТаблицаВидовРасчета = ОбщегоНазначенияКлиентСервер.ПолучитьРеквизитФормыПоПути(ЭтотОбъект, ПутьКДанным);
ВыбранныеВидыРасчета = ОбщегоНазначения.ВыгрузитьКолонку(ТаблицаВидовРасчета, "ВидРасчета");
МассивИмен = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ПутьКДанным, ".");
ИмяТаблицы = МассивИмен[МассивИмен.Количество() - 1];
РезультатПроверки = ПланыВидовРасчета.Начисления.РезультатПроверкиНастройкиПриоритетаНачислений(ВыбранныеВидыРасчета, ИмяТаблицы);
Если ИмяТаблицы = "ВытесняющиеВидыРасчета" Тогда
ДобавляемыеНачисленияПриоритетВыше = Новый ФиксированныйМассив(РезультатПроверки.ТребуетсяДобавить);
УдаляемыеНачисленияПриоритетВыше = Новый ФиксированныйМассив(РезультатПроверки.ТребуетсяУдалить);
Иначе
ДобавляемыеНачисленияПриоритетНиже = Новый ФиксированныйМассив(РезультатПроверки.ТребуетсяДобавить);
УдаляемыеНачисленияПриоритетНиже = Новый ФиксированныйМассив(РезультатПроверки.ТребуетсяУдалить);
КонецЕсли;
УстановитьОтображениеНадписиПроверкаСвязейНачислений();
КонецПроцедуры
&НаСервере
Процедура УстановитьОтображениеНадписиПроверкаСвязейНачислений()
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ПредупреждениеПроверкаСвязейНачислений",
"Видимость", ДобавляемыеНачисленияПриоритетВыше.Количество() > 0 Или ДобавляемыеНачисленияПриоритетНиже.Количество() > 0);
КонецПроцедуры
&НаСервере
Процедура ОбработатьИсправлениеСвязейНаСервере(ДействиеПриоритетВыше, ДействиеПриоритетНиже)
Если ДействиеПриоритетВыше <> Неопределено Тогда
ТаблицаВидовРасчета = Объект.ВытесняющиеВидыРасчета;
ИсправитьСвязиТаблицыВидовРасчета(ТаблицаВидовРасчета, ДействиеПриоритетВыше, ДобавляемыеНачисленияПриоритетВыше, УдаляемыеНачисленияПриоритетВыше);
ПроверитьНастройкуПриоритетаНаСервере("Объект.ВытесняющиеВидыРасчета")
КонецЕсли;
Если ДействиеПриоритетНиже <> Неопределено Тогда
ТаблицаВидовРасчета = СписокПриоритетНиже;
ИсправитьСвязиТаблицыВидовРасчета(ТаблицаВидовРасчета, ДействиеПриоритетНиже, ДобавляемыеНачисленияПриоритетНиже, УдаляемыеНачисленияПриоритетНиже);
ПроверитьНастройкуПриоритетаНаСервере("СписокПриоритетНиже")
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ИсправитьСвязиТаблицыВидовРасчета(ТаблицаВидовРасчета, Действие, ДобавляемыеНачисления, УдаляемыеНачисления)
Если Действие = "Добавить" Тогда
Для Каждого ВидРасчета Из ДобавляемыеНачисления Цикл
ТаблицаВидовРасчета.Добавить().ВидРасчета = ВидРасчета
КонецЦикла;
Иначе
СтрокиДляУдаления = Новый Массив;
Для Каждого СтрокаВидаРасчета Из ТаблицаВидовРасчета Цикл
Если УдаляемыеНачисления.Найти(СтрокаВидаРасчета.ВидРасчета) <> Неопределено Тогда
СтрокиДляУдаления.Добавить(СтрокаВидаРасчета);
КонецЕсли;
КонецЦикла;
Для Каждого СтрокаДляУдаления Из СтрокиДляУдаления Цикл
ТаблицаВидовРасчета.Удалить(СтрокаДляУдаления);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ВидимостьВидДоходаСтраховыеВзносыИнфо(Форма)
Видимость = Форма.Объект.КодДоходаСтраховыеВзносы <> Форма.Объект.КодДоходаСтраховыеВзносы2017;
Форма.Элементы.ВидДоходаСтраховыеВзносыИнфо.Видимость = Видимость;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьТекстНадписиБазовогоПериода(Форма, ТекущаяДата)
Объект = Форма.Объект;
Элементы = Форма.Элементы;
ПроизвольныйПериод = Объект.ПериодРасчетаБазовыхНачислений = ПредопределенноеЗначение("Перечисление.ПериодыРасчетаБазовыхНачислений.НесколькоПредыдущихМесяцев");
СпособОтображенияПодсказки = ?(ПроизвольныйПериод, ОтображениеПодсказки.ОтображатьСнизу, ОтображениеПодсказки.Нет);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
"СдвигБазовогоПериодаГруппа", "ОтображениеПодсказки", СпособОтображенияПодсказки);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
"СдвигБазовогоПериодаПремииГруппа", "ОтображениеПодсказки", СпособОтображенияПодсказки);
Если Не ПроизвольныйПериод Тогда
Возврат;
КонецЕсли;
Если Объект.КоличествоМесяцевБазовогоПериода = 0 Тогда
ТекстНадписи = НСтр("ru = 'Не указана длительность базового периода'");
ЗарплатаКадрыКлиентСервер.УстановитьРасширеннуюПодсказкуЭлементуФормы(Форма, "СдвигБазовогоПериодаГруппа", ТекстНадписи);
ЗарплатаКадрыКлиентСервер.УстановитьРасширеннуюПодсказкуЭлементуФормы(Форма, "СдвигБазовогоПериодаПремииГруппа", ТекстНадписи);
Возврат;
КонецЕсли;
Если Объект.СдвигБазовогоПериода = 0 Тогда
ТекстНадписи = НСтр("ru = 'Не указан сдвиг базового периода'");
ЗарплатаКадрыКлиентСервер.УстановитьРасширеннуюПодсказкуЭлементуФормы(Форма, "СдвигБазовогоПериодаГруппа", ТекстНадписи);
ЗарплатаКадрыКлиентСервер.УстановитьРасширеннуюПодсказкуЭлементуФормы(Форма, "СдвигБазовогоПериодаПремииГруппа", ТекстНадписи);
Возврат;
КонецЕсли;
МесяцНачисления = НачалоМесяца(ТекущаяДата);
МесяцНачисленияСтрокой = Формат(МесяцНачисления, "ДФ=""ММММ гггг""");
БазовыйПериод = РасчетЗарплатыРасширенныйКлиентСервер.БазовыйПериодНачисления(МесяцНачисления,
Объект.ПериодРасчетаБазовыхНачислений, Объект.КоличествоМесяцевБазовогоПериода, Объект.СдвигБазовогоПериода);
Если БазовыйПериод.ДатаНачала = НачалоМесяца(БазовыйПериод.ДатаОкончания) Тогда
ПредставлениеПериода = Формат(БазовыйПериод.ДатаНачала, "ДФ=""ММММ гггг""");
Иначе
ПредставлениеПериода = Формат(БазовыйПериод.ДатаНачала, "ДФ=""ММММ гггг""") + " - " + Формат(БазовыйПериод.ДатаОкончания, "ДФ=""ММММ гггг""");
КонецЕсли;
ТекстНадписи = НСтр("ru = 'При начислении за %1 будет использовано значение расчетной базы за период %2'");
ТекстНадписи = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстНадписи, МесяцНачисленияСтрокой, ПредставлениеПериода);
ЗарплатаКадрыКлиентСервер.УстановитьРасширеннуюПодсказкуЭлементуФормы(Форма, "СдвигБазовогоПериодаГруппа", ТекстНадписи);
ЗарплатаКадрыКлиентСервер.УстановитьРасширеннуюПодсказкуЭлементуФормы(Форма, "СдвигБазовогоПериодаПремииГруппа", ТекстНадписи);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьТекстПодсказкиБазовогоПериода(Форма)
Объект = Форма.Объект;
Если Объект.ПериодДействияБазовый Тогда
ТекстНадписи = НСтр("ru = 'Расчетная база будет определяться с учетом настроек приоритета начислений.
|Начисления, перечисленные справа в списке базовых начислений, не будут учитываться при определении расчетной базы
|за периоды, за которые рассчитаны более приоритетные начисления (см. вкладку ""Приоритет"").'");
Иначе
ТекстНадписи = НСтр("ru = 'Расчетная база будет определяться без учета настроек приоритета начислений.
|Начисления, перечисленные справа в списке базовых начислений, будут учитываться при определении расчетной базы
|в т.ч. и за периоды, за которые рассчитаны более приоритетные начисления (см. вкладку ""Приоритет"").'");
КонецЕсли;
ТекстНадписи = СтрЗаменить(ТекстНадписи, Символы.ПС, "");
ЗарплатаКадрыКлиентСервер.УстановитьРасширеннуюПодсказкуЭлементуФормы(Форма, "ПериодДействияБазовый", ТекстНадписи);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ОчиститьСписокВытесняющихНачислений(Форма)
Если Не Форма.ЕстьПоказательРасчетнаяБаза И Не ЭтоПремия(Форма) Тогда
Возврат;
КонецЕсли;
Объект = Форма.Объект;
Если Объект.ПериодРасчетаБазовыхНачислений = ПредопределенноеЗначение("Перечисление.ПериодыРасчетаБазовыхНачислений.ТекущийМесяц") Тогда
Возврат;
КонецЕсли;
Объект.ВытесняющиеВидыРасчета.Очистить();
КонецПроцедуры
&НаСервере
Процедура ЛьготаУчитываетсяПриРасчетеЗарплатыПриИзмененииНаСервере()
Если Не Объект.ЛьготаУчитываетсяПриРасчетеЗарплаты И Объект.ФормулаРасчета <> "" Тогда
Объект.Показатели.Очистить();
Объект.ФормулаРасчета = "";
ПоказателиФормулы = Новый Массив;
СведенияОПоказателях = ЗарплатаКадрыРасширенный.СведенияОПоказателяхРасчетаЗарплаты(ПоказателиФормулы);
УстановитьДоступностьВариантаИспользованияОперативныхПоказателей(ЭтаФорма);
ЗапрашиваемыеПоказатели = ЗарплатаКадрыРасширенный.ЗапрашиваемыеПоказателиВидаРасчетаПоУмолчанию(Объект.Ссылка, ПоказателиФормулы);
ОбновитьФормуПоИзменениюФормулыРасчета(ЭтаФорма, СведенияОПоказателях, ЗапрашиваемыеПоказатели, СведенияОПоказателяхФормулы());
Если РасчетЗарплатыРасширенный.ФОТРассчитываетсяАвтоматически(Объект) = Неопределено Тогда
Объект.ФОТНеРедактируется = Ложь;
КонецЕсли;
УстановитьВидимостьПоляФОТНеРедактируется();
КонецЕсли;
УстановитьВидимостьПолейЛьгот(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Функция СведенияОПоказателяхФормулы()
Результат = Новый Структура("ЕстьПоказателиУчетаВремени,ЕстьПоказательРасчетнаяБаза,ЕстьПоказательОтработаноСмен,ЕстьОперативныеПоказатели,ЕстьПоказательСдельныйЗаработок,ЕстьПоказательСтоимостьДняЧасаСУчетомРазовыхНачислений");
Результат.ЕстьПоказателиУчетаВремени = РасчетЗарплатыРасширенный.ЕстьПоказателиВКоллекции(Объект.Показатели, Справочники.ПоказателиРасчетаЗарплаты.ПоказателиУчетаВремени());
Результат.ЕстьПоказательРасчетнаяБаза = РасчетЗарплатыРасширенный.ЕстьПоказательВКоллекции(Объект.Показатели, "РасчетнаяБаза");
Результат.ЕстьПоказательОтработаноСмен = РасчетЗарплатыРасширенный.ЕстьПоказательВКоллекции(Объект.Показатели, "ОтработаноСмен");
Результат.ЕстьОперативныеПоказатели = РасчетЗарплатыРасширенный.ЕстьПоказателиВКоллекции(Объект.Показатели, Справочники.ПоказателиРасчетаЗарплаты.ОперативныеПоказатели());
Результат.ЕстьПоказательСдельныйЗаработок = РасчетЗарплатыРасширенный.ЕстьПоказательВКоллекции(Объект.Показатели, "СдельныйЗаработок");
Результат.ЕстьПоказательСтоимостьДняЧасаСУчетомРазовыхНачислений = РасчетЗарплатыРасширенный.ЕстьПоказательВКоллекции(Объект.Показатели, "СтоимостьДняЧасаСУчетомРазовыхНачислений");
Возврат Результат;
КонецФункции
&НаСервере
Процедура УстановитьВидимостьКатегорииСтатистическогоНаблюденияЗПОбразование()
Настройки = СтатистикаПерсоналаРасширенный.НастройкиСтатистикиПерсонала();
Видимость = Настройки.ИспользоватьОтчетностьМониторингаРаботниковСоциальнойСферы
И Настройки.ФормаЗПОбразование;
Элементы.ГруппаКатегорияСтатистическогоНаблюденияЗП.Видимость = Видимость;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьЗапрашиваемыеПоказателиЛьгот(Форма)
Объект = Форма.Объект;
Если Объект.КатегорияНачисленияИлиНеоплаченногоВремени <> ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ВыбираемаяСотрудникомЛьгота") Тогда
Возврат;
КонецЕсли;
Для Каждого ДанныеПоказателя Из Объект.Показатели Цикл
ДанныеПоказателя.ЗапрашиватьПриВводе = Ложь;
ДанныеПоказателя.МожетЗапрашиватьсяПриВводе = Ложь;
КонецЦикла;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ЗаполнитьПодсказкуВариантаИспользованияОперативныхПоказателей(Форма)
Если Форма.ИспользоватьОперативныеПоказателиВЦеломЗаМесяцЧисло Тогда
ТекстПодсказки = НСтр("ru = 'Начисление выполняется в целом за месяц, изменения постоянных показателей в течение месяца не учитываются'");
Иначе
ТекстПодсказки = НСтр("ru = 'Значения показателей подбираются исходя из фактического периода действия начислений'");
КонецЕсли;
Форма.Элементы.ИспользоватьОперативныеПоказателиВЦеломЗаМесяцЧисло.Подсказка = ТекстПодсказки;
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьВидДоходаСтраховыхВзносов(Команда)
ПараметрыФормы = Новый Структура("КодДоходаСтраховыеВзносы2017, КодДоходаСтраховыеВзносы, ПараметрыВыбора");
ПараметрыФормы.КодДоходаСтраховыеВзносы2017 = Объект.КодДоходаСтраховыеВзносы2017;
ПараметрыФормы.КодДоходаСтраховыеВзносы = Объект.КодДоходаСтраховыеВзносы;
ПараметрыФормы.ПараметрыВыбора = ЭтотОбъект.Элементы.КодДоходаСтраховыеВзносы.ПараметрыВыбора;
ОткрытьФорму("ПланВидовРасчета.Начисления.Форма.ВидДоходаСтраховыхВзносов", ПараметрыФормы, ЭтаФорма,,,,, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьПоляФОТНеРедактируется()
Если РасчетЗарплатыРасширенный.ФОТРассчитываетсяАвтоматически(Объект) = Неопределено Тогда
Элементы.ФОТНеРедактируется.Видимость = Истина И Объект.ВключатьВФОТ;
Иначе
Элементы.ФОТНеРедактируется.Видимость = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВключатьВФОТПриИзменении(Элемент)
УстановитьВидимостьПоляФОТНеРедактируется();
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступностьПоляВыполнятьВДокументахРазовыхНачислений(Форма)
Если ВыполнениеНачисленияВДокументахРазовыхНачисленийВозможно(Форма) Тогда
Форма.Элементы.ВыполнятьВДокументахРазовыхНачислений.Доступность = Истина;
Иначе
Форма.Элементы.ВыполнятьВДокументахРазовыхНачислений.Доступность = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьЗначениеВыполнятьВДокументахРазовыхНачислений(Форма)
Если Не ВыполнениеНачисленияВДокументахРазовыхНачисленийВозможно(Форма) Тогда
Форма.Объект.ВыполнятьВДокументахРазовыхНачислений = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ВыполнениеНачисленияВДокументахРазовыхНачисленийВозможно(Форма) Экспорт
Если Форма.ЕстьПоказательРасчетнаяБаза
И Форма.Объект.ПериодРасчетаБазовыхНачислений = ПредопределенноеЗначение("Перечисление.ПериодыРасчетаБазовыхНачислений.ТекущийМесяц")
И Форма.Объект.СпособВыполненияНачисления = ПредопределенноеЗначение("Перечисление.СпособыВыполненияНачислений.ЕжемесячноПриОкончательномРасчете") Тогда
Возврат Истина;
Иначе
Возврат Ложь;
КонецЕсли;
КонецФункции
&НаКлиенте
Процедура Подключаемый_СвойстваНачисленийВходитВРасчетПособияПоУходуЗаРебенкомВоеннослужащимПриИзменении(Элемент)
Подключаемый_СвойстваНачисленийВходитВРасчетПособияПоУходуЗаРебенкомВоеннослужащимПриИзмененииНаСервере();
КонецПроцедуры
&НаСервере
Процедура Подключаемый_СвойстваНачисленийВходитВРасчетПособияПоУходуЗаРебенкомВоеннослужащимПриИзмененииНаСервере()
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба.РасчетДенежногоДовольствия") Тогда
Модуль = ОбщегоНазначения.ОбщийМодуль("РасчетДенежногоДовольствия");
Модуль.СвойстваНачисленийВходитВРасчетПособияПоУходуЗаРебенкомВоеннослужащимПриИзменении(ЭтаФорма);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СвойстваНачисленийКатегорияНадбавкиФормы3ОБПриИзменении(Элемент)
Подключаемый_СвойстваНачисленийКатегорияНадбавкиФормы3ОБПриИзмененииНаСервере();
КонецПроцедуры
&НаСервере
Процедура Подключаемый_СвойстваНачисленийКатегорияНадбавкиФормы3ОБПриИзмененииНаСервере()
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба.РасчетДенежногоДовольствия") Тогда
Модуль = ОбщегоНазначения.ОбщийМодуль("РасчетДенежногоДовольствия");
Модуль.СвойстваНачисленийКатегорияНадбавкиФормы3ОБПриИзменении(ЭтаФорма);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
&НаСервере
Процедура УстановитьВидимостьСпособаРасчетовСФизическимиЛицами()
ПоказыватьСпособРасчетов = Не РаботаВБюджетномУчреждении И (Объект.КатегорияНачисленияИлиНеоплаченногоВремени = Перечисления.КатегорииНачисленийИНеоплаченногоВремени.КомпенсационныеВыплаты
Или Объект.КатегорияНачисленияИлиНеоплаченногоВремени = Перечисления.КатегорииНачисленийИНеоплаченногоВремени.Прочее
Или Объект.КатегорияНачисленияИлиНеоплаченногоВремени = Перечисления.КатегорииНачисленийИНеоплаченногоВремени.КомпенсацияМоральногоВреда
Или Объект.КатегорияНачисленияИлиНеоплаченногоВремени = Перечисления.КатегорииНачисленийИНеоплаченногоВремени.МатериальнаяПомощь);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"СпособРасчетовСФизическимиЛицами",
"Видимость",
ПоказыватьСпособРасчетов);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СвойстваНачисленийКодВыплатыЕФС1НачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба") Тогда
СтандартнаяОбработка = Ложь;
Модуль = ОбщегоНазначенияКлиент.ОбщийМодуль("ГосударственнаяСлужбаКлиент");
Модуль.СвойстваНачисленийКодВыплатыЕФС1НачалоВыбора(ЭтаФорма, Элемент, ДанныеВыбора);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СвойстваНачисленийКодВыплатыЕФС1НачалоВыбораЗавершение(ВыбранноеЗначение, ДополнительныеПараметры) Экспорт
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба") Тогда
Модуль = ОбщегоНазначенияКлиент.ОбщийМодуль("ГосударственнаяСлужбаКлиент");
Модуль.ЗавершениеНачалоВыбораИзКлассификатораЕФС1(ВыбранноеЗначение, ДополнительныеПараметры);
Модуль = ОбщегоНазначенияКлиент.ОбщийМодуль("ГосударственнаяСлужбаКлиентСервер");
Модуль.НачислениеФормаСвойствоНачисленияПриИзменении(ДополнительныеПараметры.Элемент, ЭтаФорма);
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ОтображатьНачисляетсяТолькоВПервуюПоловинуМесяца(Объект)
КатегорииНачислений = Новый Массив;
КатегорииНачислений.Добавить(ПредопределенноеЗначение("Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ПовременнаяОплатаТруда"));
СпособыНачисления = Новый Массив;
СпособыНачисления.Добавить(ПредопределенноеЗначение("Перечисление.СпособыВыполненияНачислений.ЕжемесячноПриОкончательномРасчете"));
Если Объект.Рассчитывается Тогда
Возврат Ложь;
КонецЕсли;
Если КатегорииНачислений.Найти(Объект.КатегорияНачисленияИлиНеоплаченногоВремени) = Неопределено Тогда
Возврат Ложь;
КонецЕсли;
Если СпособыНачисления.Найти(Объект.СпособВыполненияНачисления) = Неопределено Тогда
Возврат Ложь;
КонецЕсли;
Возврат Истина;
КонецФункции
&НаСервере
Процедура УстановитьВидимостьОсновногоВидаРасчета()
ПоказыватьОсновнойВидРасчета = ПланыВидовРасчета.Начисления.КатегорииНачисленийОплатыДолейРКиСН().Найти(Объект.КатегорияНачисленияИлиНеоплаченногоВремени) <> Неопределено;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ОсновнойВидРасчета",
"Видимость",
ПоказыватьОсновнойВидРасчета);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФормуВыбораОсновногоНачисленияЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено Тогда
Объект.ОсновнойВидРасчета = Результат;
ОбработчикИзмененияОсновногоВидаРасчета();
Модифицированность = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработчикИзмененияОсновногоВидаРасчета()
ИзменитьКатегориюОсновногоВидаРасчета();
ОбработатьИзменениеОсновногоВидаРасчета();
КонецПроцедуры
&НаСервере
Процедура ОбработатьИзменениеОсновногоВидаРасчета()
ИзменитьСвойстваПоКатегорииОсновногоВидаРасчета(СвойстваПоКатегориям, Объект.КатегорияНачисленияИлиНеоплаченногоВремени);
ЗаполнитьНаследуемыеСвойстваОсновногоВидаРасчета(СвойстваПоКатегориям, Объект.КатегорияНачисленияИлиНеоплаченногоВремени, Объект.ОсновнойВидРасчета);
ОбработатьИзменениеКатегорииНачисленияНаСервере();
ЗаполнитьСвязиПоОсновномуВидуРасчета();
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьКатегориюОсновногоВидаРасчета()
КатегорияОсновногоВидаРасчета = КатегорияНачисленияОсновногоВидаРасчета(Объект.ОсновнойВидРасчета);
КонецПроцедуры
&НаСервереБезКонтекста
Функция КатегорияНачисленияОсновногоВидаРасчета(ОсновнойВидРасчета)
КатегорияНачисления = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ОсновнойВидРасчета, "КатегорияНачисленияИлиНеоплаченногоВремени");
Возврат КатегорияНачисления;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьВидимостьРасчетТарифнойСтавки(Форма)
Форма.Элементы.РасчетТарифнойСтавки.Видимость = Форма.ЕстьПоказательСтоимостьДняЧасаСУчетомРазовыхНачислений;
КонецПроцедуры
&НаСервере
Процедура ИзменитьСвойстваПоКатегорииОсновногоВидаРасчета(СвойстваПоКатегориям, КатегорияНачисления)
КатегорииОплатыДолейРКСН = ПланыВидовРасчета.Начисления.КатегорииНачисленийОплатыДолейРКиСН();
Если КатегорииОплатыДолейРКСН.Найти(КатегорияНачисления) = Неопределено Тогда
Возврат;
КонецЕсли;
СвойстваНачисления = СвойстваПоКатегориям.Получить(КатегорияНачисления);
СвойстваПоУмолчанию = ПланыВидовРасчета.Начисления.СвойстваНачисленийПоКатегориям().Получить(КатегорияНачисления);
ЗаполнитьЗначенияСвойств(СвойстваНачисления,СвойстваПоУмолчанию);
Если КатегорияОсновногоВидаРасчета = Перечисления.КатегорииНачисленийИНеоплаченногоВремени.ОплатаОтпуска Тогда
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(СвойстваНачисления.НедоступныеСвойства, "ВидСтажаСЗВ");
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(СвойстваНачисления.НедоступныеСвойства, "ВидСтажаПФР2014");
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(СвойстваНачисления.НедоступныеСвойства, "ВидОтпуска");
ДоступныеОбозначенияВТабелеУчетаРабочегоВремени = Новый Массив;
ДоступныеОбозначенияВТабелеУчетаРабочегоВремени.Добавить(ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ВидыИспользованияРабочегоВремени.ОсновнойОтпуск"));
ДоступныеОбозначенияВТабелеУчетаРабочегоВремени.Добавить(ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ВидыИспользованияРабочегоВремени.ДополнительныйОтпуск"));
ДоступныеОбозначенияВТабелеУчетаРабочегоВремени.Добавить(ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ВидыИспользованияРабочегоВремени.ОтпускНаОбучение"));
СвойстваНачисления.ПараметрыВыбора.ОбозначениеВТабелеУчетаРабочегоВремени = Новый Структура("Отбор_Ссылка", ДоступныеОбозначенияВТабелеУчетаРабочегоВремени);
ИначеЕсли КатегорияОсновногоВидаРасчета = Перечисления.КатегорииНачисленийИНеоплаченногоВремени.ОплатаКомандировки Тогда
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(СвойстваНачисления.НедоступныеСвойства, "ВидСтажаСЗВ");
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(СвойстваНачисления.НедоступныеСвойства, "ВидСтажаПФР2014");
СвойстваНачисления.НедоступныеСвойства.Добавить("ПоддерживаетНесколькоПлановыхНачислений");
ИначеЕсли КатегорияОсновногоВидаРасчета = Перечисления.КатегорииНачисленийИНеоплаченногоВремени.ОплатаБольничногоЛиста Тогда
СвойстваНачисления.НедоступныеСвойства.Добавить("ВидВремени");
ПланыВидовРасчета.Начисления.ДополнитьНедоступныеСвойстваПолямиОтраженияВБухУчете(СвойстваНачисления.НедоступныеСвойства);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьНаследуемыеСвойстваОсновногоВидаРасчета(СвойстваПоКатегориям, КатегорияНачисления, ОсновнойВидРасчета)
КатегорииОплатыДолейРКСН = ПланыВидовРасчета.Начисления.КатегорииНачисленийОплатыДолейРКиСН();
Если КатегорииОплатыДолейРКСН.Найти(КатегорияНачисления) = Неопределено Тогда
Возврат;
КонецЕсли;
СвойстваНачисления = СвойстваПоКатегориям.Получить(КатегорияНачисления);
СвойстваОсновногоНачисления = СвойстваПоКатегориям.Получить(КатегорияОсновногоВидаРасчета);
ДополнительныеФормулыНередактируемыхНачислений = ПланыВидовРасчета.Начисления.ДополнительныеФормулыНередактируемыхНачислений();
СписокНаследуемыхСвойств = "СпособВыполненияНачисления, СпособРасчета, ВидДокументаНачисления, ФормулаРасчета,
|НачисляетсяВЦеломЗаМесяц, НачисляетсяПриРасчетеПервойПоловиныМесяца, ОбозначениеВТабелеУчетаРабочегоВремени,
|ВидНачисленияДляНУ, КодДоходаСтраховыеВзносы, ВидПособияСоциальногоСтрахования, ПорядокОпределенияРасчетногоПериодаСреднегоЗаработка, КоличествоМесяцевРасчетаСреднегоЗаработка,
|ВидОтпуска, ВидСтажаСЗВ, ВидСтажаПФР2014, ОчередностьРасчета, ВидОперацииПоЗарплате,
|ВходитВУчетСреднегоЗаработкаФСС, КатегорияСтатистическогоНаблюдения2019, ПоддерживаетНесколькоПлановыхНачислений,
|ВключатьВФОТ, КодДоходаСтраховыеВзносы2017, ПорядокОпределенияМесяцаДоходаВВидеОплатыТруда, КатегорияСтатистическогоНаблюдения,
|ВидДоходаИсполнительногоПроизводства, НачисляетсяВОтпускеПоУходу, СтрокаРаздела2Расчета6НДФЛ, ВидДоходаИсполнительногоПроизводства2022,
|НачисляетсяТолькоПриРасчетеПервойПоловиныМесяца, КатегорияСтатистическогоНаблюденияЗаКлассноеРуководство";
Если ЗначениеЗаполнено(ОсновнойВидРасчета) Тогда
НаследуемыеСвойства = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ОсновнойВидРасчета, СписокНаследуемыхСвойств);
ЗаполнитьЗначенияСвойств(СвойстваНачисления, НаследуемыеСвойства);
ДополнительныеФормулыНередактируемогоНачисления = ДополнительныеФормулыНередактируемыхНачислений[НаследуемыеСвойства.ФормулаРасчета];
Если ПланыВидовРасчета.Начисления.КатегорииНачисленийОплатыДолиРК().Найти(КатегорияНачисления) <> Неопределено Тогда
СвойстваНачисления.ФормулаРасчета = СвойстваОсновногоНачисления.ДополнительныеФормулыРасчета.ФормулаРасчетаДолиРК;
Если (НЕ ЗначениеЗаполнено(СвойстваНачисления.ФормулаРасчета))
И ДополнительныеФормулыНередактируемогоНачисления <> Неопределено Тогда
СвойстваНачисления.ФормулаРасчета = ДополнительныеФормулыНередактируемогоНачисления.ФормулаРасчетаДолиРК;
КонецЕсли;
ИначеЕсли ПланыВидовРасчета.Начисления.КатегорииНачисленийОплатыДолиСН().Найти(КатегорияНачисления) <> Неопределено Тогда
СвойстваНачисления.ФормулаРасчета = СвойстваОсновногоНачисления.ДополнительныеФормулыРасчета.ФормулаРасчетаДолиСН;
Если (НЕ ЗначениеЗаполнено(СвойстваНачисления.ФормулаРасчета))
И ДополнительныеФормулыНередактируемогоНачисления <> Неопределено Тогда
СвойстваНачисления.ФормулаРасчета = ДополнительныеФормулыНередактируемогоНачисления.ФормулаРасчетаДолиСН;
КонецЕсли;
КонецЕсли;
Иначе
СвойстваПоУмолчанию = ПланыВидовРасчета.Начисления.СвойстваНачисленийПоКатегориям().Получить(КатегорияНачисления);
ЗаполнитьЗначенияСвойств(СвойстваНачисления,СвойстваПоУмолчанию);
КонецЕсли;
СвойстваНачисления.ОсновнойВидРасчета = ОсновнойВидРасчета;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыВидыРасчетаТарифнойСтавки
&НаКлиенте
Процедура ВидыРасчетаТарифнойСтавкиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ОбработкаПодбораНачисленийНаСервере(ВыбранноеЗначение, "Объект.ВидыРасчетаТарифнойСтавки");
КонецПроцедуры
#КонецОбласти