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