Как в 1С:ЗУП 3 получить отчет по отработанным часам и начисленным суммам с разбивкой по видам времени (дневные, ночные, сверхурочные)?

Программист 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом Управленческий учет
← На главную

При работе с 1С:ЗУП 3 часто возникает потребность в получении детализированной информации о том, сколько часов сотрудники отработали и сколько заработали за различные виды времени, такие как дневные, ночные и сверхурочные часы. Зачастую необходимо агрегировать эти данные в виде ведомости с итогами по подразделениям. Типовые отчеты 1С:ЗУП 3 не всегда предоставляют такую специфическую аналитику "из коробки", что побуждает нас искать более гибкие методы.

Анализ стандартных отчетов 1С:ЗУП 3 и их ограничения

Рассмотрим, какие типовые отчеты мы можем использовать и почему они не всегда полностью удовлетворяют наши требования:

  1. Расчетный листок и Расчетная ведомость:

    Эти отчеты содержат информацию как об отработанном времени, так и о начисленных суммах для каждого сотрудника. Однако, они предназначены для индивидуальной или общей сводки по всем начислениям без возможности детализации по видам времени. Они не предоставляют удобной сводной аналитики по видам времени для всей организации или подразделения.

  2. Анализ зарплаты по сотрудникам (в целом за период):

    Данный отчет способен вывести отработанные дни и часы, а также начисленные суммы. Но, как правило, в нем отсутствует прямая возможность группировки по таким специфическим "видам времени", как "Явка", "Ночные часы", "Сверхурочные", напрямую связанным с видами использования рабочего времени. Часто пользователи сталкиваются с тем, что в этом отчете нет возможности группировки по видам времени, что делает его недостаточным для нашей задачи.

  3. Табель учета рабочего времени (Т-13):

    Этот отчет является отличным инструментом для детального просмотра отработанного времени по видам использования рабочего времени (например, "Я" - явка, "Н" - ночные, "РВ" - работа в выходные и праздники). Он позволяет получить часы, но содержит только информацию о часах и днях, полностью исключая данные о начисленных суммах. Таким образом, для комплексного отчета с суммами он не подходит.

Мы видим, что каждый из стандартных отчетов покрывает лишь часть нашей задачи, и нам необходимо искать более гибкое решение, способное объединить информацию о времени и начислениях.

Решение проблемы: Настройка Универсального отчета с использованием Системы Компоновки Данных (СКД)

Наиболее эффективным и гибким способом получить требуемый отчет является использование Универсального отчета с собственной настройкой Системы Компоновки Данных (СКД). Этот подход позволяет нам объединять данные из различных источников конфигурации, что является ключевым для нашей задачи, поскольку часы и суммы по видам времени хранятся в разных регистрах.

Разберем по шагам, как мы можем это сделать.

Шаг 1: Доступ к настройкам СКД в Универсальном отчете

  1. Прежде всего, откроем Универсальный отчет. Обычно его можно найти в разделе "Отчеты" или через "Все функции" (доступно в режиме технического специалиста).

  2. В форме открытого отчета нам необходимо перейти в режим настройки СКД. Для этого мы нажимаем кнопку "Настройки" или "Еще", затем выбираем "Изменить вариант отчета" (для старых версий ЗУП) или "Варианты отчетов" -> "Редактировать схему" (для ЗУП 3.1.24 и выше). Это действие откроет окно конструктора Системы Компоновки Данных.

  3. В режиме настройки СКД нам станут доступны различные вкладки для работы с "Источниками данных", "Полями", "Настройками" (структура отчета, группировки, отборы) и т.д.

Важно помнить, что работа с СКД требует понимания структуры данных 1С:ЗУП и принципов построения запросов. Если вы не знакомы с СКД, рекомендуем предварительно ознакомиться с базовыми принципами ее работы.

Шаг 2: Выбор источников данных для СКД

Для нашей задачи нам потребуется объединить данные из двух основных групп регистров, чтобы получить как информацию о начисленных суммах, так и об отработанном/оплаченном времени по конкретным видам времени:

  1. Регистры для получения начисленных сумм:

    Мы будем использовать регистры, содержащие информацию о начислениях сотрудников. Наиболее подходящим является регистр расчета НачисленияУдержанияСотрудников (или аналогичный, например, ДанныеНачисленийСотрудников, в зависимости от версии и специфики вашей базы). В этом регистре мы найдем такие поля, как Результат (сумма начисления), Сотрудник, Подразделение, ПериодРегистрации и ВидРасчета.

  2. Регистры для получения отработанного/оплаченного времени по видам времени:

    Здесь ситуация немного сложнее, так как "виды времени" не всегда напрямую связаны с суммами в одном регистре. Мы можем рассмотреть следующие регистры:

    • ОтработанноеВремяПоСотрудникам:

      Этот регистр накопления содержит данные об отработанных и оплаченных часах/днях. Он полезен для получения информации о ОплаченоЧасов, ОтработаноЧасов, ОплаченоДней, ОтработаноДней. Однако он может не содержать прямого указания на специфический "вид времени" (Я, Н, РВ), который нас интересует, в разрезе начисления.

    • ГрафикиРаботПоВидамВремени:

      Данный регистр сведений хранит часы по графикам и табелям, уже с разбивкой по видам использования рабочего времени (например, "Явка", "Ночные часы", "Сверхурочные"). Он может быть более подходящим для детализации именно по конкретным "видам времени". Важно учитывать, что данные в этом регистре формируются как на основании утвержденных графиков, так и на основании проведенных документов "Табель учета рабочего времени". В нем доступны поля Часы, Сотрудник, Подразделение, Период, ВидВремени.

    Мы объединяем эти источники данных по общим полям, таким как "Сотрудник", "Период" и "Подразделение", чтобы связать часы с суммами. На вкладке "Наборы данных" в СКД мы создаем новый набор данных типа "Запрос" и пишем запрос к этим регистрам.

    Посмотрим на пример, как может выглядеть структура запроса к источникам данных в СКД. Вам потребуется создать "Набор данных - Объединение/Запрос" и добавить в него несколько запросов к разным регистрам. Примерный запрос может выглядеть следующим образом:

    
    ВЫБРАТЬ
        НачисленияУдержанияСотрудников.Сотрудник,
        НачисленияУдержанияСотрудников.Подразделение,
        НачисленияУдержанияСотрудников.ПериодРегистрации КАК Период,
        НачисленияУдержанияСотрудников.ВидРасчета,
        НачисленияУдержанияСотрудников.Результат КАК СуммаНачисления,
        0 КАК ЧасыОплаченные,
        0 КАК ЧасыОтработанные,
        NULL КАК ВидВремени
    ИЗ
        РегистрРасчета.НачисленияУдержанияСотрудников КАК НачисленияУдержанияСотрудников
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        ОтработанноеВремяПоСотрудникам.Сотрудник,
        ОтработанноеВремяПоСотрудникам.Подразделение,
        ОтработанноеВремяПоСотрудникам.Период,
        ОтработанноеВремяПоСотрудникам.ВидРасчета, // Если есть связь с видом расчета в этом регистре
        0,
        ОтработанноеВремяПоСотрудникам.ОплаченоЧасов,
        ОтработанноеВремяПоСотрудникам.ОтработаноЧасов,
        NULL
    ИЗ
        РегистрНакопления.ОтработанноеВремяПоСотрудникам КАК ОтработанноеВремяПоСотрудникам
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        ГрафикиРаботПоВидамВремени.Сотрудник,
        ГрафикиРаботПоВидамВремени.Подразделение,
        ГрафикиРаботПоВидамВремени.Период,
        NULL, // Вид расчета здесь может отсутствовать напрямую
        0,
        ГрафикиРаботПоВидамВремени.Часы КАК ЧасыОплаченные, // Или другая логика для оплаченных, если требуется
        ГрафикиРаботПоВидамВремени.Часы КАК ЧасыОтработанные,
        ГрафикиРаботПоВидамВремени.ВидВремени // Для группировки по видам времени
    ИЗ
        РегистрСведений.ГрафикиРаботПоВидамВремени КАК ГрафикиРаботПоВидамВремени
    

    После объединения данных, мы должны будем на вкладке "Наборы данных" определить, какие поля мы будем использовать, как они будут связываться и какие поля будут являться ресурсными (например, СуммаНачисления, ЧасыОплаченные, ЧасыОтработанные).

Шаг 3: Настройка связи между видами начислений и видами времени

Критически важно понимать, что в 1С:ЗУП 3 логическая связь между начисленными суммами и конкретными "видами времени" (дневные, ночные, сверхурочные) устанавливается через виды начислений. Это основополагающий принцип, который мы должны использовать для корректного формирования отчета.

Проанализируем этот момент подробнее:

  1. Настройка видов начислений:

    Для каждого вида начисления, который мы используем (например, "Оплата по окладу", "Доплата за работу в ночные часы", "Оплата сверхурочных часов"), в его настройках мы указываем Вид учета рабочего времени (например, "За работу полную смену в пределах норм времени", "За работу сверх нормы времени"). Также каждому начислению может быть присвоен Вид времени из справочника "Виды использования рабочего времени" (например, "Явка", "Ночные часы", "Сверхурочные"). Эта настройка позволяет системе автоматически определять, какой тип времени связан с данным начислением.

  2. Разделение начислений:

    Если в нашей организации "дневные", "ночные" и "сверхурочные" часы оплачиваются разными, четко определенными видами начислений, то задача значительно упрощается. Мы можем просто сгруппировать отчет по виду начисления и получить нужную детализацию по суммам и часам (если начисление учитывает часы). Например, начисление "Доплата за работу в ночное время" будет прямо соответствовать ночным часам.

  3. Использование ОбозначениеВТабелеУчетаРабочегоВремени:

    Для некоторых видов расчета (начислений) есть свойство ОбозначениеВТабелеУчетаРабочегоВремени. Это обозначение можно использовать для группировки или отбора в отчете СКД, чтобы связать начисление с определенным типом времени, указанным в табеле. Таким образом, мы можем сопоставить начисления с соответствующими обозначениями табеля.

Таким образом, если мы хотим получить оплаченные часы по видам времени и связанные с ними суммы, мы должны ориентироваться на то, как настроены наши виды начислений и как они коррелируют с видами использования рабочего времени.

Шаг 4: Настройка структуры отчета в СКД

После того как источники данных определены, объединены и настроены связи, мы переходим к вкладке "Настройки" в конструкторе СКД. Здесь мы определяем внешний вид и содержание нашего отчета:

  1. Выбор полей:

    Нам потребуется выбрать поля для вывода в отчет. Это будут Сотрудник, Подразделение, ВидРасчета (если мы группируем по начислениям, соответствующим видам времени), или ВидВремени (если мы получаем его из регистра графиков). Также мы обязательно выбираем поля с количественными показателями: СуммаНачисления, ЧасыОплаченные, ЧасыОтработанные.

  2. Группировки:

    Для получения итогов по подразделениям и видам времени, мы устанавливаем необходимые группировки. Например, сначала по Подразделение, затем по ВидРасчета или по полю ВидВремени из регистра ГрафикиРаботПоВидамВремени. Это позволит нам получить сводные данные в требуемом разрезе.

  3. Отборы:

    Мы можем установить отборы по периоду (например, "за месяц", "за квартал"), по конкретной организации, по подразделению, по ВидуВремени или другим параметрам, чтобы сузить данные отчета до нужного нам объема.

  4. Вычисляемые поля:

    При необходимости мы можем создать вычисляемые поля для получения дополнительной аналитики. Например, для расчета среднего заработка за час по конкретному виду времени (СуммаНачисления / ЧасыОплаченные) или для вывода других производных показателей.

Мы должны уделить особое внимание выбору и настройке поля, которое будет представлять "вид времени" (ВидВремени из регистра ГрафикиРаботПоВидамВремени или ВидРасчета, если он настроен таким образом, что каждый вид начисления соответствует уникальному виду времени).

Шаг 5: Различие между оплаченным и отработанным временем

Как было упомянуто в обсуждении, при формировании отчета очень важно различать оплаченное время и отработанное время, особенно когда речь идет о доплатах или специфических условиях труда.

  1. Отработанное время:

    Это фактически отработанные сотрудником часы или дни согласно табелю учета рабочего времени или установленному графику. Оно может быть получено из регистров ОтработанноеВремяПоСотрудникам или ГрафикиРаботПоВидамВремени. Это физическое присутствие сотрудника на рабочем месте или выполнение им своих обязанностей.

  2. Оплаченное время:

    Это время, за которое производится начисление и выплачиваются денежные средства. В случае некоторых доплат (например, доплата за работу в ночные часы), поле ОтработанноеВремя в регистре начислений может быть пустым, а ОплаченноеВремя будет соответствовать, например, количеству ночных часов, за которые производится доплата. Важно, чтобы в настройках вида начисления было указано, что это начисление происходит "За работу сверх нормы времени" или "За работу полную смену в пределах норм времени" и привязано к соответствующему Виду времени.

При формировании запроса в СКД и настройке полей, мы должны явно указывать, какие поля мы используем для суммирования часов (например, ОплаченоЧасов из регистра ОтработанноеВремяПоСотрудникам или Часы из ГрафикиРаботПоВидамВремени), чтобы отчет корректно отражал оплачиваемое время.

Заключение

Задача получения детализированного отчета по часам и суммам по видам времени в 1С:ЗУП 3, при всей кажущейся простоте, действительно требует глубокого понимания структуры данных и гибких инструментов, таких как Универсальный отчет и СКД. Стандартные отчеты часто не предоставляют необходимой детализации или требуют значительных доработок.

Путем объединения данных из регистров начислений (НачисленияУдержанияСотрудников) и регистров учета рабочего времени (ОтработанноеВремяПоСотрудникам, ГрафикиРаботПоВидамВремени), а также корректной настройки связи через виды начислений, мы можем добиться требуемого результата. Это позволит нам получить точные итоговые цифры в виде ведомости с разбивкой по подразделениям и видам времени, что является обычной практикой для аналитики и управленческого учета в организациях.

Помните, что каждый случай может иметь свои особенности, зависящие от специфики настройки вашей базы 1С:ЗУП, и всегда полезно сначала проанализировать существующие виды начислений и структуру хранения данных в вашей конкретной конфигурации.

← На главную