Мой вариант решения.
Считаю что регистр "ДанныеТабельногоУчетаРабочегоВремениСотрудников" использовать в этой задаче нельзя, иначе типовой Табель уже не ввести.
Тем более нельзя использовать регистр "ДанныеИндивидуальныхГрафиковСотрудников", так как регистрируем фактическое время, а не плановое.
Документ "Данные пропускной системы" должен делать движения по типовым регистрам
- ДанныеОперативногоУчетаРабочегоВремениСотрудников
- ДниЧасыОтгулов
Ну и собственный регистр добавил "ВремяДляРасчетаОтгулов", в котором храню время работы в кислотном цеху до накопления целых 4-х часов, после чего делаю движения в "ДниЧасыОтгулов", а из "ВремяДляРасчетаОтгулов" списываю.
Движения по первому регистру
РегистрируемыеДанныеОВремени = ДанныеОВремени(ТаблицаПосещений);
УчетРабочегоВремени.ПроверитьРегистрируемыеДанныхОВремени(Ссылка, РегистрируемыеДанныеОВремени, Отказ, Истина, ПериодРегистрации);
УчетРабочегоВремени.ЗарегистрироватьРабочееВремяСотрудников(Движения, РегистрируемыеДанныеОВремени, ПериодРегистрации);
Код подсмотрен в документе РаботаСверхурочно.
.
Для каждого сотрудника + дня делаем два движения, первое по новому виду времени - Справочники.ВидыИспользованияРабочегоВремени.РаботаВКислотномЦеху, добавить заполнение этого элемента в процедуру Справочники.ВидыИспользованияРабочегоВремени.СоздатьВидыИспользованияРабочегоВремениПоНастройкам(), заполнение делать по аналогии с элементом "Вахта", и вызвать эту процедуру из внешней обработки.
Второе движение по виду времени Явка, количество часов = 12 - количество часов РаботаВКислотномЦеху.
По второму регистру - УчетРабочегоВремени.ЗарегистрироватьДниЧасыОтгуловСотрудников.
Примеры использования в типовых документах.
При таком походе - в документе Табель красота.
Документ "ОтгулЗаРаботуВКислотномЦехе" делает движения по регистру "ДанныеСостоянийСотрудников".
Предварительно нужно добавить элемент Перечисление.СостоянияСотрудника.ОтгулЗаРаботуВКислотномЦехе, а также элемент Справочники.ВидыИспользованияРабочегоВремени.ОтгулЗаРаботуВКислотномЦехе, с заполнением в модуле менеджера (по аналогии с предыдущим добавленным элементом, заполнение делать по аналогии с элементом "Дополнительные выходные дни (оплачиваемые)").
Затем добавленный вид времени привязать к добавленному состоянию сотрудника в процедуре УчетРабочегоВремени.ЗапросВТСоответствиеСостоянийВидамУчетаВремени. Нужно в запрос добавить
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.ОтгулЗаРаботуВКислотномЦехе),
| &ОтгулЗаРаботуВКислотномЦехе
Ну и еще расход по регистру "ДниЧасыОтгулов" процедурой УчетРабочегоВремени.ЗарегистрироватьИПроверитьОстаткиДниЧасыОтгуловСотрудников.
В режиме Предприятия создать начисление "Доплата за работу в кислотном цеху"
Начисление выполняется Только если введен вид учета времени "Работа в кислотном цеху"
Формула "ВремяВЧасах * ТарифнаяСтавкаЧасовая * 50/100"
Начисление выполняется "Дополнительная оплата за уже оплаченное время".
Создать начисление "Оплата отгула за работу в кислотном цеху"
Начисление выполняется Только если введен вид учета времени "Отгул за работу в кислотном цехе"
Формула "ВремяВДнях * ТарифнаяСтавкаЧасовая * 12"
Начисление выполняется "За работу полную смену в пределах нормы времени".
Также, не забудьте добавить созданные документы в составной тип реквизита ДокументОснование у регистров сведений ПараметрыЗарегистрированныхДанныхУчетаВремениСотрудников и ДанныеСостоянийСотрудников.
Отчет прикреплен. Сделан на основании отчета УнифицированнаяФормаТ13 (получение времени отработанного в кислотном цеху).
Можно было по простому использовать данные регистра ДанныеОперативногоУчетаРабочегоВремениСотрудников, но в таком случае, корректировки времени, внесенные вручную в табель, не попадут в отчет. Поэтому использовал Представления_ДанныеУчетаВремениИСостоянийСотрудников (что потребовало использования ПриКомпоновкеРезультата, код взял из отчета УнифицированнаяФормаТ13 + мелкая доработка). Так же нужно обязательно задавать период в отчете, иначе не будет данных по отработанному времени (нюанс типового отчета УнифицированнаяФормаТ13).
Update: Грянина сказала господину alres писать движения данных пропускной системы в ДанныеТабельногоУчетаРабочегоВремениСотрудников (похоже её документ Табель не интересует). Несмотря на это, считаю что писать в ДанныеОперативногоУчета намного корректнее. Решайте сами.