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