#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
#Область ДляВызоваИзДругихПодсистем
Процедура ЗаполнитьНаборыЗначенийДоступа(Таблица) Экспорт
ЗарплатаКадры.ЗаполнитьНаборыПоОрганизацииИСотрудникам(ЭтотОбъект, Таблица, "Организация", "ДанныеОВремени.Сотрудник");
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область ОбработчикиСобытий
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
ПроведениеСервер.ПодготовитьНаборыЗаписейКРегистрацииДвижений(ЭтотОбъект);
ДанныеДляПроведения = ТаблицаДанныхОВремени();
РеквизитыДляПроведения = Новый Структура();
РеквизитыДляПроведения.Вставить("ПериодРегистрации", ПериодРегистрации);
РеквизитыДляПроведения.Вставить("СотрудникиДокумента", СотрудникиДокумента());
РеквизитыДляПроведения.Вставить("ИсправленныйДокумент", ИсправленныйДокумент);
ИсправлениеДокументовЗарплатаКадры.ПриПроведенииИсправления(Ссылка, Движения, РежимПроведения, Отказ, РеквизитыДляПроведения,, ЭтотОбъект);
УчетРабочегоВремениРасширенный.ЗарегистрироватьДанныеИндивидуальногоГрафика(Движения, ДанныеДляПроведения, ПериодРегистрации);
КонецПроцедуры
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура") И ДанныеЗаполнения.Свойство("Ссылка") Тогда
ЗаполнитьДокументИсправление(ДанныеЗаполнения);
КонецЕсли;
КонецПроцедуры
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Если ПериодВводаДанныхОВремени = Перечисления.ПериодыВводаДанныхОВремени.ПрошлыйПериод Тогда
ЗарплатаКадры.ПроверитьКорректностьДаты(Ссылка, ДатаНачалаПериода, "Объект.ДатаНачалаПериода", Отказ, НСтр("ru='Дата начала'"), , , Ложь);
КонецЕсли;
МенеджерВТ = Новый МенеджерВременныхТаблиц;
ОписанияОшибокВводаВремени = Новый Массив;
ТаблицаДанныхОВремени = ТаблицаДанныхОВремени();
УчетРабочегоВремениРасширенный.СоздатьВТДанныеОВремени(МенеджерВТ, ТаблицаДанныхОВремени);
УчетРабочегоВремениРасширенный.ПроверитьРегистрациюЦелосменногоВремени(МенеджерВТ, ОписанияОшибокВводаВремени, Отказ);
УчетРабочегоВремениРасширенный.ПроверитьЗаполненияЧасов(МенеджерВТ, ОписанияОшибокВводаВремени, Отказ);
СтрокиПоСотрудникам = СтрокиПоСотрудникам();
Ошибки = Новый Соответствие;
МассивСотрудников = Новый Массив;
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(МассивСотрудников, ТаблицаДанныхОВремени.ВыгрузитьКолонку("Сотрудник"), Истина);
ПараметрыПолученияСотрудниковОрганизаций = КадровыйУчет.ПараметрыПолученияРабочихМестВОрганизацийПоВременнойТаблице();
ПараметрыПолученияСотрудниковОрганизаций.Организация = Организация;
ПараметрыПолученияСотрудниковОрганизаций.НачалоПериода = ДатаНачалаПериода;
ПараметрыПолученияСотрудниковОрганизаций.ОкончаниеПериода = ДатаОкончанияПериода;
ПараметрыПолученияСотрудниковОрганизаций.РаботникиПоДоговорамГПХ = Неопределено;
КадровыйУчет.ПроверитьРаботающихСотрудников(
МассивСотрудников,
ПараметрыПолученияСотрудниковОрганизаций,
Отказ,
Новый Структура("ИмяПоляСотрудник, ИмяОбъекта", "Сотрудник", "Объект.ДанныеОВремени")
);
Для Каждого ОписаниеОшибки Из ОписанияОшибокВводаВремени Цикл
СтрокиСотрудника = СтрокиПоСотрудникам.Получить(ОписаниеОшибки.Сотрудник);
Если ЗначениеЗаполнено(ОписаниеОшибки.ВидВремени) Тогда
НомерСтроки = 0;
Для Каждого СтрокаДанныхОВремени Из СтрокиСотрудника Цикл
Если СтрокаДанныхОВремени["ВидВремени" + День(ОписаниеОшибки.Дата)] = ОписаниеОшибки.ВидВремени Тогда
НомерСтроки = СтрокаДанныхОВремени.НомерСтроки;
КонецЕсли;
КонецЦикла;
Если НомерСтроки = 0 Тогда
Поле = "";
Иначе
Поле = "Объект.ДанныеОВремени[" + Формат(НомерСтроки - 1, "ЧГ=") + "].Время" + День(ОписаниеОшибки.Дата) + "Представление";
КонецЕсли;
УчетРабочегоВремениРасширенный.ДобавитьОшибкуПоСотруднику(Ошибки, ОписаниеОшибки.Сотрудник, ОписаниеОшибки.ТекстОшибки, Поле, ОписаниеОшибки.Документ);
КонецЕсли;
КонецЦикла;
ОписанияОшибокВводаВремени = Новый Массив;
УчетРабочегоВремениРасширенный.ПроверитьСоответствиеРегистрируемыхЧасовДлинеСуток(МенеджерВТ, ОписанияОшибокВводаВремени, Отказ);
Для Каждого ОписаниеОшибки Из ОписанияОшибокВводаВремени Цикл
СтрокиСотрудника = СтрокиПоСотрудникам.Получить(ОписаниеОшибки.Сотрудник);
НомерСтроки = СтрокиСотрудника[0].НомерСтроки;
Поле = "Объект.ДанныеОВремени[" + Формат(НомерСтроки - 1, "ЧГ=") + "].Время" + День(ОписаниеОшибки.Дата) + "Представление";
УчетРабочегоВремениРасширенный.ДобавитьОшибкуПоСотруднику(Ошибки, ОписаниеОшибки.Сотрудник, ОписаниеОшибки.ТекстОшибки, Поле, ОписаниеОшибки.Документ);
КонецЦикла;
ОписанияОшибокВводаВремени = Новый Массив;
СоздатьВТСотрудникиПериоды(МенеджерВТ);
ИсключаемыеРегистраторы = Новый Массив;
ИсключаемыеРегистраторы.Добавить(Ссылка);
ИсключаемыеРегистраторы.Добавить(ИсправленныйДокумент);
УчетРабочегоВремениРасширенный.СоздатьВТПериодыЗарегистрированныхДанныхУчетаВремени(МенеджерВТ, "ВТСотрудникиПериоды", ПериодРегистрации, Перечисления.ВидыДанныхУчетаВремениСотрудников.ДанныеИндивидуальныхГрафиков, ИсключаемыеРегистраторы);
УчетРабочегоВремениРасширенный.ТабельПроверитьЦелостностьЗаполненияПериода(МенеджерВТ, Организация, Подразделение, ДатаНачалаПериода, ДатаОкончанияПериода, "ВТПериодыЗарегистрированныхДанныхУчетаВремени", ОписанияОшибокВводаВремени, Отказ);
Для Каждого ОписаниеОшибки Из ОписанияОшибокВводаВремени Цикл
СтрокиСотрудника = СтрокиПоСотрудникам.Получить(ОписаниеОшибки.Сотрудник);
НомерСтроки = СтрокиСотрудника[0].НомерСтроки;
Поле = "Объект.ДанныеОВремени[" + Формат(НомерСтроки - 1, "ЧГ=") + "].Время" + День(ОписаниеОшибки.Дата) + "Представление";
УчетРабочегоВремениРасширенный.ДобавитьОшибкуПоСотруднику(Ошибки, ОписаниеОшибки.Сотрудник, ОписаниеОшибки.ТекстОшибки, Поле, ОписаниеОшибки.Документ);
КонецЦикла;
ОписанияОшибокВводаВремени = Новый Массив;
УчетРабочегоВремениРасширенный.ПроверитьУникальностьВводаИтоговыхДанных(МенеджерВТ, Ссылка, ПериодРегистрации, ОписанияОшибокВводаВремени, Истина);
Для Каждого ОписаниеОшибки Из ОписанияОшибокВводаВремени Цикл
УчетРабочегоВремениРасширенный.ДобавитьОшибкуПоСотруднику(Ошибки, ОписаниеОшибки.Сотрудник, ОписаниеОшибки.ТекстОшибки, , ОписаниеОшибки.Документ);
КонецЦикла;
УчетРабочегоВремениРасширенный.ВывестиОшибкиПоСотрудникам(Ошибки, Отказ);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция ТаблицаДанныхОВремени()
ТаблицаДанныхОВремени = Новый ТаблицаЗначений;
ТаблицаДанныхОВремени.Колонки.Добавить("Дата", Новый ОписаниеТипов("Дата"));
ТаблицаДанныхОВремени.Колонки.Добавить("Сотрудник", Новый ОписаниеТипов("СправочникСсылка.Сотрудники"));
ТаблицаДанныхОВремени.Колонки.Добавить("Организация", Новый ОписаниеТипов("СправочникСсылка.Организации"));
ТаблицаДанныхОВремени.Колонки.Добавить("ВидВремени", Новый ОписаниеТипов("СправочникСсылка.ВидыИспользованияРабочегоВремени"));
ТаблицаДанныхОВремени.Колонки.Добавить("Дней", Новый ОписаниеТипов("Число"));
ТаблицаДанныхОВремени.Колонки.Добавить("Часов", Новый ОписаниеТипов("Число"));
ТаблицаДанныхОВремени.Колонки.Добавить("ВЦеломЗаПериод", Новый ОписаниеТипов("Булево"));
ТаблицаДанныхОВремени.Колонки.Добавить("Смена", Новый ОписаниеТипов("СправочникСсылка.СменыРаботыСотрудников"));
ТаблицаДанныхОВремени.Колонки.Добавить("ПереходящаяЧастьСмены", Новый ОписаниеТипов("Булево"));
ТаблицаДанныхОВремени.Колонки.Добавить("ОтражатьЧасыВДеньНачалаСмены", Новый ОписаниеТипов("Булево"));
СтрокиТаблицыСменПоСотрудникам = СтрокиТаблицыСменПоСотрудникам();
НомерДняНачалаПериода = День(ДатаНачалаПериода);
НомерДняОкончанияПериода = День(ДатаОкончанияПериода);
Для Каждого СтрокаДанныхОВремени Из ДанныеОВремени Цикл
СтрокаТаблицыСмен = СтрокиТаблицыСменПоСотрудникам[СтрокаДанныхОВремени.Сотрудник];
ОбрабатываемаяДата = ДатаНачалаПериода;
Для НомерДня = НомерДняНачалаПериода По НомерДняОкончанияПериода Цикл
Если ЗначениеЗаполнено(СтрокаДанныхОВремени["ВидВремени" + НомерДня]) Тогда
ДанныеПоВидуВремениНаДату = ТаблицаДанныхОВремени.Добавить();
ДанныеПоВидуВремениНаДату.Дата = ОбрабатываемаяДата;
ДанныеПоВидуВремениНаДату.Сотрудник = СтрокаДанныхОВремени.Сотрудник;
ДанныеПоВидуВремениНаДату.Организация = Организация;
ДанныеПоВидуВремениНаДату.ВидВремени = СтрокаДанныхОВремени["ВидВремени" + НомерДня];
ДанныеПоВидуВремениНаДату.Дней = 1;
ДанныеПоВидуВремениНаДату.Часов = СтрокаДанныхОВремени["Часов" + НомерДня];
ДанныеПоВидуВремениНаДату.ВЦеломЗаПериод = Ложь;
ДанныеПоВидуВремениНаДату.ПереходящаяЧастьСмены = СтрокаДанныхОВремени["ПереходящаяЧастьСмены" + НомерДня];
Если СтрокаТаблицыСмен <> Неопределено Тогда
ДанныеПоВидуВремениНаДату.Смена = СтрокаТаблицыСмен["Смена" + НомерДня];
ДанныеПоВидуВремениНаДату.ОтражатьЧасыВДеньНачалаСмены = ДанныеПоВидуВремениНаДату.ПереходящаяЧастьСмены И СтрокаТаблицыСмен["ОтражатьЧасыВДеньНачалаСмены" + НомерДня];
КонецЕсли;
КонецЕсли;
ОбрабатываемаяДата = ОбрабатываемаяДата + 86400;
КонецЦикла;
КонецЦикла;
Возврат ТаблицаДанныхОВремени;
КонецФункции
Процедура ЗаполнитьДокументИсправление(ДанныеЗаполнения)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", ДанныеЗаполнения.Ссылка);
Запрос.Текст =
"ВЫБРАТЬ
| ИндивидуальныйГрафик.Организация КАК Организация,
| ИндивидуальныйГрафик.Подразделение КАК Подразделение,
| ИндивидуальныйГрафик.ДатаНачалаПериода КАК ДатаНачалаПериода,
| ИндивидуальныйГрафик.ДатаОкончанияПериода КАК ДатаОкончанияПериода,
| ИндивидуальныйГрафик.ГрафикСменности КАК ГрафикСменности
|ИЗ
| Документ.ИндивидуальныйГрафик КАК ИндивидуальныйГрафик
|ГДЕ
| ИндивидуальныйГрафик.Ссылка = &Ссылка
|;
|
|
|ВЫБРАТЬ
| ИндивидуальныйГрафикДанныеОВремени.Сотрудник КАК Сотрудник,
| ИндивидуальныйГрафикДанныеОВремени.Часов1 КАК Часов1,
| ИндивидуальныйГрафикДанныеОВремени.Часов2 КАК Часов2,
| ИндивидуальныйГрафикДанныеОВремени.Часов3 КАК Часов3,
| ИндивидуальныйГрафикДанныеОВремени.Часов4 КАК Часов4,
| ИндивидуальныйГрафикДанныеОВремени.Часов5 КАК Часов5,
| ИндивидуальныйГрафикДанныеОВремени.Часов6 КАК Часов6,
| ИндивидуальныйГрафикДанныеОВремени.Часов7 КАК Часов7,
| ИндивидуальныйГрафикДанныеОВремени.Часов8 КАК Часов8,
| ИндивидуальныйГрафикДанныеОВремени.Часов9 КАК Часов9,
| ИндивидуальныйГрафикДанныеОВремени.Часов10 КАК Часов10,
| ИндивидуальныйГрафикДанныеОВремени.Часов11 КАК Часов11,
| ИндивидуальныйГрафикДанныеОВремени.Часов12 КАК Часов12,
| ИндивидуальныйГрафикДанныеОВремени.Часов13 КАК Часов13,
| ИндивидуальныйГрафикДанныеОВремени.Часов14 КАК Часов14,
| ИндивидуальныйГрафикДанныеОВремени.Часов15 КАК Часов15,
| ИндивидуальныйГрафикДанныеОВремени.Часов16 КАК Часов16,
| ИндивидуальныйГрафикДанныеОВремени.Часов17 КАК Часов17,
| ИндивидуальныйГрафикДанныеОВремени.Часов18 КАК Часов18,
| ИндивидуальныйГрафикДанныеОВремени.Часов19 КАК Часов19,
| ИндивидуальныйГрафикДанныеОВремени.Часов20 КАК Часов20,
| ИндивидуальныйГрафикДанныеОВремени.Часов21 КАК Часов21,
| ИндивидуальныйГрафикДанныеОВремени.Часов22 КАК Часов22,
| ИндивидуальныйГрафикДанныеОВремени.Часов23 КАК Часов23,
| ИндивидуальныйГрафикДанныеОВремени.Часов24 КАК Часов24,
| ИндивидуальныйГрафикДанныеОВремени.Часов25 КАК Часов25,
| ИндивидуальныйГрафикДанныеОВремени.Часов26 КАК Часов26,
| ИндивидуальныйГрафикДанныеОВремени.Часов27 КАК Часов27,
| ИндивидуальныйГрафикДанныеОВремени.Часов28 КАК Часов28,
| ИндивидуальныйГрафикДанныеОВремени.Часов29 КАК Часов29,
| ИндивидуальныйГрафикДанныеОВремени.Часов30 КАК Часов30,
| ИндивидуальныйГрафикДанныеОВремени.Часов31 КАК Часов31,
| ИндивидуальныйГрафикДанныеОВремени.ВидВремени1 КАК ВидВремени1,
| ИндивидуальныйГрафикДанныеОВремени.ВидВремени2 КАК ВидВремени2,
| ИндивидуальныйГрафикДанныеОВремени.ВидВремени3 КАК ВидВремени3,
| ИндивидуальныйГрафикДанныеОВремени.ВидВремени4 КАК ВидВремени4,
| ИндивидуальныйГрафикДанныеОВремени.ВидВремени5 КАК ВидВремени5,
| ИндивидуальныйГрафикДанныеОВремени.ВидВремени6 КАК ВидВремени6,
| ИндивидуальныйГрафикДанныеОВремени.ВидВремени7 КАК ВидВремени7,
| ИндивидуальныйГрафикДанныеОВремени.ВидВремени8 КАК ВидВремени8,
| ИндивидуальныйГрафикДанныеОВремени.ВидВремени9 КАК ВидВремени9,
| ИндивидуальныйГрафикДанныеОВремени.ВидВремени10 КАК ВидВремени10,
| ИндивидуальныйГрафикДанныеОВремени.ВидВремени11 КАК ВидВремени11,
| ИндивидуальныйГрафикДанныеОВремени.ВидВремени12 КАК ВидВремени12,
| ИндивидуальныйГрафикДанныеОВремени.ВидВремени13 КАК ВидВремени13,
| ИндивидуальныйГрафикДанныеОВремени.ВидВремени14 КАК ВидВремени14,
| ИндивидуальныйГрафикДанныеОВремени.ВидВремени15 КАК ВидВремени15,
| ИндивидуальныйГрафикДанныеОВремени.ВидВремени16 КАК ВидВремени16,
| ИндивидуальныйГрафикДанныеОВремени.ВидВремени17 КАК ВидВремени17,
| ИндивидуальныйГрафикДанныеОВремени.ВидВремени18 КАК ВидВремени18,
| ИндивидуальныйГрафикДанныеОВремени.ВидВремени19 КАК ВидВремени19,
| ИндивидуальныйГрафикДанныеОВремени.ВидВремени20 КАК ВидВремени20,
| ИндивидуальныйГрафикДанныеОВремени.ВидВремени21 КАК ВидВремени21,
| ИндивидуальныйГрафикДанныеОВремени.ВидВремени22 КАК ВидВремени22,
| ИндивидуальныйГрафикДанныеОВремени.ВидВремени23 КАК ВидВремени23,
| ИндивидуальныйГрафикДанныеОВремени.ВидВремени24 КАК ВидВремени24,
| ИндивидуальныйГрафикДанныеОВремени.ВидВремени25 КАК ВидВремени25,
| ИндивидуальныйГрафикДанныеОВремени.ВидВремени26 КАК ВидВремени26,
| ИндивидуальныйГрафикДанныеОВремени.ВидВремени27 КАК ВидВремени27,
| ИндивидуальныйГрафикДанныеОВремени.ВидВремени28 КАК ВидВремени28,
| ИндивидуальныйГрафикДанныеОВремени.ВидВремени29 КАК ВидВремени29,
| ИндивидуальныйГрафикДанныеОВремени.ВидВремени30 КАК ВидВремени30,
| ИндивидуальныйГрафикДанныеОВремени.ВидВремени31 КАК ВидВремени31,
| ИндивидуальныйГрафикДанныеОВремени.ПереходящаяЧастьСмены1 КАК ПереходящаяЧастьСмены1,
| ИндивидуальныйГрафикДанныеОВремени.ПереходящаяЧастьСмены2 КАК ПереходящаяЧастьСмены2,
| ИндивидуальныйГрафикДанныеОВремени.ПереходящаяЧастьСмены3 КАК ПереходящаяЧастьСмены3,
| ИндивидуальныйГрафикДанныеОВремени.ПереходящаяЧастьСмены4 КАК ПереходящаяЧастьСмены4,
| ИндивидуальныйГрафикДанныеОВремени.ПереходящаяЧастьСмены5 КАК ПереходящаяЧастьСмены5,
| ИндивидуальныйГрафикДанныеОВремени.ПереходящаяЧастьСмены6 КАК ПереходящаяЧастьСмены6,
| ИндивидуальныйГрафикДанныеОВремени.ПереходящаяЧастьСмены7 КАК ПереходящаяЧастьСмены7,
| ИндивидуальныйГрафикДанныеОВремени.ПереходящаяЧастьСмены8 КАК ПереходящаяЧастьСмены8,
| ИндивидуальныйГрафикДанныеОВремени.ПереходящаяЧастьСмены9 КАК ПереходящаяЧастьСмены9,
| ИндивидуальныйГрафикДанныеОВремени.ПереходящаяЧастьСмены10 КАК ПереходящаяЧастьСмены10,
| ИндивидуальныйГрафикДанныеОВремени.ПереходящаяЧастьСмены11 КАК ПереходящаяЧастьСмены11,
| ИндивидуальныйГрафикДанныеОВремени.ПереходящаяЧастьСмены12 КАК ПереходящаяЧастьСмены12,
| ИндивидуальныйГрафикДанныеОВремени.ПереходящаяЧастьСмены13 КАК ПереходящаяЧастьСмены13,
| ИндивидуальныйГрафикДанныеОВремени.ПереходящаяЧастьСмены14 КАК ПереходящаяЧастьСмены14,
| ИндивидуальныйГрафикДанныеОВремени.ПереходящаяЧастьСмены15 КАК ПереходящаяЧастьСмены15,
| ИндивидуальныйГрафикДанныеОВремени.ПереходящаяЧастьСмены16 КАК ПереходящаяЧастьСмены16,
| ИндивидуальныйГрафикДанныеОВремени.ПереходящаяЧастьСмены17 КАК ПереходящаяЧастьСмены17,
| ИндивидуальныйГрафикДанныеОВремени.ПереходящаяЧастьСмены18 КАК ПереходящаяЧастьСмены18,
| ИндивидуальныйГрафикДанныеОВремени.ПереходящаяЧастьСмены19 КАК ПереходящаяЧастьСмены19,
| ИндивидуальныйГрафикДанныеОВремени.ПереходящаяЧастьСмены20 КАК ПереходящаяЧастьСмены20,
| ИндивидуальныйГрафикДанныеОВремени.ПереходящаяЧастьСмены21 КАК ПереходящаяЧастьСмены21,
| ИндивидуальныйГрафикДанныеОВремени.ПереходящаяЧастьСмены22 КАК ПереходящаяЧастьСмены22,
| ИндивидуальныйГрафикДанныеОВремени.ПереходящаяЧастьСмены23 КАК ПереходящаяЧастьСмены23,
| ИндивидуальныйГрафикДанныеОВремени.ПереходящаяЧастьСмены24 КАК ПереходящаяЧастьСмены24,
| ИндивидуальныйГрафикДанныеОВремени.ПереходящаяЧастьСмены25 КАК ПереходящаяЧастьСмены25,
| ИндивидуальныйГрафикДанныеОВремени.ПереходящаяЧастьСмены26 КАК ПереходящаяЧастьСмены26,
| ИндивидуальныйГрафикДанныеОВремени.ПереходящаяЧастьСмены27 КАК ПереходящаяЧастьСмены27,
| ИндивидуальныйГрафикДанныеОВремени.ПереходящаяЧастьСмены28 КАК ПереходящаяЧастьСмены28,
| ИндивидуальныйГрафикДанныеОВремени.ПереходящаяЧастьСмены29 КАК ПереходящаяЧастьСмены29,
| ИндивидуальныйГрафикДанныеОВремени.ПереходящаяЧастьСмены30 КАК ПереходящаяЧастьСмены30,
| ИндивидуальныйГрафикДанныеОВремени.ПереходящаяЧастьСмены31 КАК ПереходящаяЧастьСмены31
|ИЗ
| Документ.ИндивидуальныйГрафик.ДанныеОВремени КАК ИндивидуальныйГрафикДанныеОВремени
|ГДЕ
| ИндивидуальныйГрафикДанныеОВремени.Ссылка = &Ссылка
| И &Условие";
ЗаполнятьПоСпискуСотрудников = Ложь;
Если ДанныеЗаполнения.Свойство("Сотрудники") Тогда
ТекстУсловия = "ИндивидуальныйГрафикДанныеОВремени.Сотрудник В (&Сотрудники)";
Запрос.УстановитьПараметр("Сотрудники", ДанныеЗаполнения.Сотрудники);
ЗаполнятьПоСпискуСотрудников = Истина;
Иначе
ТекстУсловия = "ИСТИНА";
КонецЕсли;
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&Условие", ТекстУсловия);
Результаты = Запрос.ВыполнитьПакет();
ДанныеШапки = Результаты[0].Выбрать();
Если ДанныеШапки.Следующий() Тогда
ЗаполнитьЗначенияСвойств(ЭтотОбъект, ДанныеШапки);
Дата = ТекущаяДатаСеанса();
ПериодРегистрации = Макс(НачалоМесяца(ТекущаяДатаСеанса()), КонецМесяца(ДанныеШапки.ДатаНачалаПериода) + 1);
ИсправленныйДокумент = ДанныеЗаполнения.Ссылка;
ПериодВводаДанныхОВремени = Перечисления.ПериодыВводаДанныхОВремени.ПрошлыйПериод;
ДанныеОВремени.Загрузить(Результаты[1].Выгрузить());
КонецЕсли;
КонецПроцедуры
Функция СтрокиПоСотрудникам()
СтрокиПоСотрудникам = Новый Соответствие;
Для Каждого СтрокаДанных Из ДанныеОВремени Цикл
МассивСтрок = СтрокиПоСотрудникам.Получить(СтрокаДанных.Сотрудник);
Если МассивСтрок = Неопределено Тогда
МассивСтрок = Новый Массив;
СтрокиПоСотрудникам.Вставить(СтрокаДанных.Сотрудник, МассивСтрок);
КонецЕсли;
МассивСтрок.Добавить(СтрокаДанных);
КонецЦикла;
Возврат СтрокиПоСотрудникам;
КонецФункции
Функция СотрудникиДокумента()
Сотрудники = Новый Массив;
Для Каждого СтрокаДанныхОВремени Из ДанныеОВремени Цикл
Если Сотрудники.Найти(СтрокаДанныхОВремени.Сотрудник) = Неопределено Тогда
Сотрудники.Добавить(СтрокаДанныхОВремени.Сотрудник);
КонецЕсли;
КонецЦикла;
Возврат Сотрудники;
КонецФункции
Процедура СоздатьВТСотрудникиПериоды(МенеджерВременныхТаблиц)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("ДанныеОВремени", ДанныеОВремени);
Запрос.УстановитьПараметр("Месяц", НачалоМесяца(ДатаНачалаПериода));
Запрос.УстановитьПараметр("ДатаНачала", ДатаНачалаПериода);
Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончанияПериода);
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаДокумента.Сотрудник КАК Сотрудник,
| &Месяц КАК Месяц,
| &ДатаНачала КАК ДатаНачала,
| &ДатаОкончания КАК ДатаОкончания
|ПОМЕСТИТЬ ВТСотрудникиПериоды
|ИЗ
| &ДанныеОВремени КАК ТаблицаДокумента";
Запрос.Выполнить();
КонецПроцедуры
Функция СтрокиТаблицыСменПоСотрудникам()
СтрокиТаблицыСменПоСотрудникам = Новый Соответствие;
Для Каждого СтрокаТаблицы Из Смены Цикл
СтрокиТаблицыСменПоСотрудникам.Вставить(СтрокаТаблицы.Сотрудник, СтрокаТаблицы);
КонецЦикла;
Возврат СтрокиТаблицыСменПоСотрудникам;
КонецФункции
#КонецОбласти
#Иначе
ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'");
#КонецЕсли