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