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