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