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