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