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