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