При работе с 1С:ЗУП 3 часто возникает потребность в получении детализированной информации о том, сколько часов сотрудники отработали и сколько заработали за различные виды времени, такие как дневные, ночные и сверхурочные часы. Зачастую необходимо агрегировать эти данные в виде ведомости с итогами по подразделениям. Типовые отчеты 1С:ЗУП 3 не всегда предоставляют такую специфическую аналитику "из коробки", что побуждает нас искать более гибкие методы.
Рассмотрим, какие типовые отчеты мы можем использовать и почему они не всегда полностью удовлетворяют наши требования:
Эти отчеты содержат информацию как об отработанном времени, так и о начисленных суммах для каждого сотрудника. Однако, они предназначены для индивидуальной или общей сводки по всем начислениям без возможности детализации по видам времени. Они не предоставляют удобной сводной аналитики по видам времени для всей организации или подразделения.
Данный отчет способен вывести отработанные дни и часы, а также начисленные суммы. Но, как правило, в нем отсутствует прямая возможность группировки по таким специфическим "видам времени", как "Явка", "Ночные часы", "Сверхурочные", напрямую связанным с видами использования рабочего времени. Часто пользователи сталкиваются с тем, что в этом отчете нет возможности группировки по видам времени, что делает его недостаточным для нашей задачи.
Этот отчет является отличным инструментом для детального просмотра отработанного времени по видам использования рабочего времени (например, "Я" - явка, "Н" - ночные, "РВ" - работа в выходные и праздники). Он позволяет получить часы, но содержит только информацию о часах и днях, полностью исключая данные о начисленных суммах. Таким образом, для комплексного отчета с суммами он не подходит.
Мы видим, что каждый из стандартных отчетов покрывает лишь часть нашей задачи, и нам необходимо искать более гибкое решение, способное объединить информацию о времени и начислениях.
Наиболее эффективным и гибким способом получить требуемый отчет является использование Универсального отчета с собственной настройкой Системы Компоновки Данных (СКД). Этот подход позволяет нам объединять данные из различных источников конфигурации, что является ключевым для нашей задачи, поскольку часы и суммы по видам времени хранятся в разных регистрах.
Разберем по шагам, как мы можем это сделать.
Прежде всего, откроем Универсальный отчет. Обычно его можно найти в разделе "Отчеты" или через "Все функции" (доступно в режиме технического специалиста).
В форме открытого отчета нам необходимо перейти в режим настройки СКД. Для этого мы нажимаем кнопку "Настройки" или "Еще", затем выбираем "Изменить вариант отчета" (для старых версий ЗУП) или "Варианты отчетов" -> "Редактировать схему" (для ЗУП 3.1.24 и выше). Это действие откроет окно конструктора Системы Компоновки Данных.
В режиме настройки СКД нам станут доступны различные вкладки для работы с "Источниками данных", "Полями", "Настройками" (структура отчета, группировки, отборы) и т.д.
Важно помнить, что работа с СКД требует понимания структуры данных 1С:ЗУП и принципов построения запросов. Если вы не знакомы с СКД, рекомендуем предварительно ознакомиться с базовыми принципами ее работы.
Для нашей задачи нам потребуется объединить данные из двух основных групп регистров, чтобы получить как информацию о начисленных суммах, так и об отработанном/оплаченном времени по конкретным видам времени:
Мы будем использовать регистры, содержащие информацию о начислениях сотрудников. Наиболее подходящим является регистр расчета НачисленияУдержанияСотрудников (или аналогичный, например, ДанныеНачисленийСотрудников, в зависимости от версии и специфики вашей базы). В этом регистре мы найдем такие поля, как Результат (сумма начисления), Сотрудник, Подразделение, ПериодРегистрации и ВидРасчета.
Здесь ситуация немного сложнее, так как "виды времени" не всегда напрямую связаны с суммами в одном регистре. Мы можем рассмотреть следующие регистры:
ОтработанноеВремяПоСотрудникам:
Этот регистр накопления содержит данные об отработанных и оплаченных часах/днях. Он полезен для получения информации о ОплаченоЧасов, ОтработаноЧасов, ОплаченоДней, ОтработаноДней. Однако он может не содержать прямого указания на специфический "вид времени" (Я, Н, РВ), который нас интересует, в разрезе начисления.
ГрафикиРаботПоВидамВремени:
Данный регистр сведений хранит часы по графикам и табелям, уже с разбивкой по видам использования рабочего времени (например, "Явка", "Ночные часы", "Сверхурочные"). Он может быть более подходящим для детализации именно по конкретным "видам времени". Важно учитывать, что данные в этом регистре формируются как на основании утвержденных графиков, так и на основании проведенных документов "Табель учета рабочего времени". В нем доступны поля Часы, Сотрудник, Подразделение, Период, ВидВремени.
Мы объединяем эти источники данных по общим полям, таким как "Сотрудник", "Период" и "Подразделение", чтобы связать часы с суммами. На вкладке "Наборы данных" в СКД мы создаем новый набор данных типа "Запрос" и пишем запрос к этим регистрам.
Посмотрим на пример, как может выглядеть структура запроса к источникам данных в СКД. Вам потребуется создать "Набор данных - Объединение/Запрос" и добавить в него несколько запросов к разным регистрам. Примерный запрос может выглядеть следующим образом:
ВЫБРАТЬ
НачисленияУдержанияСотрудников.Сотрудник,
НачисленияУдержанияСотрудников.Подразделение,
НачисленияУдержанияСотрудников.ПериодРегистрации КАК Период,
НачисленияУдержанияСотрудников.ВидРасчета,
НачисленияУдержанияСотрудников.Результат КАК СуммаНачисления,
0 КАК ЧасыОплаченные,
0 КАК ЧасыОтработанные,
NULL КАК ВидВремени
ИЗ
РегистрРасчета.НачисленияУдержанияСотрудников КАК НачисленияУдержанияСотрудников
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ОтработанноеВремяПоСотрудникам.Сотрудник,
ОтработанноеВремяПоСотрудникам.Подразделение,
ОтработанноеВремяПоСотрудникам.Период,
ОтработанноеВремяПоСотрудникам.ВидРасчета, // Если есть связь с видом расчета в этом регистре
0,
ОтработанноеВремяПоСотрудникам.ОплаченоЧасов,
ОтработанноеВремяПоСотрудникам.ОтработаноЧасов,
NULL
ИЗ
РегистрНакопления.ОтработанноеВремяПоСотрудникам КАК ОтработанноеВремяПоСотрудникам
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ГрафикиРаботПоВидамВремени.Сотрудник,
ГрафикиРаботПоВидамВремени.Подразделение,
ГрафикиРаботПоВидамВремени.Период,
NULL, // Вид расчета здесь может отсутствовать напрямую
0,
ГрафикиРаботПоВидамВремени.Часы КАК ЧасыОплаченные, // Или другая логика для оплаченных, если требуется
ГрафикиРаботПоВидамВремени.Часы КАК ЧасыОтработанные,
ГрафикиРаботПоВидамВремени.ВидВремени // Для группировки по видам времени
ИЗ
РегистрСведений.ГрафикиРаботПоВидамВремени КАК ГрафикиРаботПоВидамВремени
После объединения данных, мы должны будем на вкладке "Наборы данных" определить, какие поля мы будем использовать, как они будут связываться и какие поля будут являться ресурсными (например, СуммаНачисления, ЧасыОплаченные, ЧасыОтработанные).
Критически важно понимать, что в 1С:ЗУП 3 логическая связь между начисленными суммами и конкретными "видами времени" (дневные, ночные, сверхурочные) устанавливается через виды начислений. Это основополагающий принцип, который мы должны использовать для корректного формирования отчета.
Проанализируем этот момент подробнее:
Для каждого вида начисления, который мы используем (например, "Оплата по окладу", "Доплата за работу в ночные часы", "Оплата сверхурочных часов"), в его настройках мы указываем Вид учета рабочего времени (например, "За работу полную смену в пределах норм времени", "За работу сверх нормы времени"). Также каждому начислению может быть присвоен Вид времени из справочника "Виды использования рабочего времени" (например, "Явка", "Ночные часы", "Сверхурочные"). Эта настройка позволяет системе автоматически определять, какой тип времени связан с данным начислением.
Если в нашей организации "дневные", "ночные" и "сверхурочные" часы оплачиваются разными, четко определенными видами начислений, то задача значительно упрощается. Мы можем просто сгруппировать отчет по виду начисления и получить нужную детализацию по суммам и часам (если начисление учитывает часы). Например, начисление "Доплата за работу в ночное время" будет прямо соответствовать ночным часам.
ОбозначениеВТабелеУчетаРабочегоВремени:
Для некоторых видов расчета (начислений) есть свойство ОбозначениеВТабелеУчетаРабочегоВремени. Это обозначение можно использовать для группировки или отбора в отчете СКД, чтобы связать начисление с определенным типом времени, указанным в табеле. Таким образом, мы можем сопоставить начисления с соответствующими обозначениями табеля.
Таким образом, если мы хотим получить оплаченные часы по видам времени и связанные с ними суммы, мы должны ориентироваться на то, как настроены наши виды начислений и как они коррелируют с видами использования рабочего времени.
После того как источники данных определены, объединены и настроены связи, мы переходим к вкладке "Настройки" в конструкторе СКД. Здесь мы определяем внешний вид и содержание нашего отчета:
Нам потребуется выбрать поля для вывода в отчет. Это будут Сотрудник, Подразделение, ВидРасчета (если мы группируем по начислениям, соответствующим видам времени), или ВидВремени (если мы получаем его из регистра графиков). Также мы обязательно выбираем поля с количественными показателями: СуммаНачисления, ЧасыОплаченные, ЧасыОтработанные.
Для получения итогов по подразделениям и видам времени, мы устанавливаем необходимые группировки. Например, сначала по Подразделение, затем по ВидРасчета или по полю ВидВремени из регистра ГрафикиРаботПоВидамВремени. Это позволит нам получить сводные данные в требуемом разрезе.
Мы можем установить отборы по периоду (например, "за месяц", "за квартал"), по конкретной организации, по подразделению, по ВидуВремени или другим параметрам, чтобы сузить данные отчета до нужного нам объема.
При необходимости мы можем создать вычисляемые поля для получения дополнительной аналитики. Например, для расчета среднего заработка за час по конкретному виду времени (СуммаНачисления / ЧасыОплаченные) или для вывода других производных показателей.
Мы должны уделить особое внимание выбору и настройке поля, которое будет представлять "вид времени" (ВидВремени из регистра ГрафикиРаботПоВидамВремени или ВидРасчета, если он настроен таким образом, что каждый вид начисления соответствует уникальному виду времени).
Как было упомянуто в обсуждении, при формировании отчета очень важно различать оплаченное время и отработанное время, особенно когда речь идет о доплатах или специфических условиях труда.
Это фактически отработанные сотрудником часы или дни согласно табелю учета рабочего времени или установленному графику. Оно может быть получено из регистров ОтработанноеВремяПоСотрудникам или ГрафикиРаботПоВидамВремени. Это физическое присутствие сотрудника на рабочем месте или выполнение им своих обязанностей.
Это время, за которое производится начисление и выплачиваются денежные средства. В случае некоторых доплат (например, доплата за работу в ночные часы), поле ОтработанноеВремя в регистре начислений может быть пустым, а ОплаченноеВремя будет соответствовать, например, количеству ночных часов, за которые производится доплата. Важно, чтобы в настройках вида начисления было указано, что это начисление происходит "За работу сверх нормы времени" или "За работу полную смену в пределах норм времени" и привязано к соответствующему Виду времени.
При формировании запроса в СКД и настройке полей, мы должны явно указывать, какие поля мы используем для суммирования часов (например, ОплаченоЧасов из регистра ОтработанноеВремяПоСотрудникам или Часы из ГрафикиРаботПоВидамВремени), чтобы отчет корректно отражал оплачиваемое время.
Задача получения детализированного отчета по часам и суммам по видам времени в 1С:ЗУП 3, при всей кажущейся простоте, действительно требует глубокого понимания структуры данных и гибких инструментов, таких как Универсальный отчет и СКД. Стандартные отчеты часто не предоставляют необходимой детализации или требуют значительных доработок.
Путем объединения данных из регистров начислений (НачисленияУдержанияСотрудников) и регистров учета рабочего времени (ОтработанноеВремяПоСотрудникам, ГрафикиРаботПоВидамВремени), а также корректной настройки связи через виды начислений, мы можем добиться требуемого результата. Это позволит нам получить точные итоговые цифры в виде ведомости с разбивкой по подразделениям и видам времени, что является обычной практикой для аналитики и управленческого учета в организациях.
Помните, что каждый случай может иметь свои особенности, зависящие от специфики настройки вашей базы 1С:ЗУП, и всегда полезно сначала проанализировать существующие виды начислений и структуру хранения данных в вашей конкретной конфигурации.