Почему отчет Т-13 в 1С УПП некорректно отображает отпуска и больничные при формировании по подразделению?

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

Мы сталкиваемся с достаточно распространенной проблемой в системе 1С Управление Производственным Предприятием (УПП), в частности, с подсистемой расчета заработной платы (ЗУП). Суть вопроса заключается в некорректном отображении данных в отчете Т-13 (Табель учета рабочего времени) для отпусков и больничных листов. Ситуация проявляется следующим образом: если формировать отчет по одному сотруднику, данные отображаются верно. Однако, при формировании того же отчета по целому подразделению, у того же сотрудника информация об отпусках (и больничных) может отображаться в два раза меньше или быть совершенно неверной. Что самое интересное, после повторного проведения соответствующих документов (например, Отпуск организаций, Начисление отпуска), данные в отчете магическим образом встают на свои места, становятся корректными как для отдельного сотрудника, так и для всего подразделения. Но почему это происходит, и где нам нужно искать первопричину такого "волшебства"?

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

Понимание природы проблемы: Отчет Т-13 и его особенности

Отчет Т-13, или Табель учета рабочего времени, является ключевым инструментом для контроля и учета фактически отработанного времени, а также отклонений от него (отпусков, больничных, командировок и прочего). Он формируется на основе данных, введенных в систему различными документами, такими как Документ Табель (если используется метод сплошной регистрации), Отпуск организаций, Больничный лист, Командировка организаций и другими.

Важным аспектом является то, что отчет Т-13 может формироваться в различных разрезах: по конкретному сотруднику, по подразделению, по организации в целом. В зависимости от выбранного разреза, система может использовать разные механизмы сбора и агрегации данных. Именно здесь часто кроются корни подобных "плавающих" ошибок. Когда мы формируем отчет по одному сотруднику, система может напрямую обращаться к регистрам, связанным с этим сотрудником, получая точные данные. Однако, при формировании по подразделению, включающем нескольких сотрудников, логика формирования отчета усложняется: система должна собрать данные по всем сотрудникам подразделения, корректно их сгруппировать и агрегировать. Если в этой логике агрегации есть недочеты, то и возникают расхождения.

Феномен, когда перепроведение документов временно "лечит" проблему, часто указывает на то, что данные в регистрах, на которых базируется отчет, были либо некорректно записаны изначально (возможно, из-за ошибки в момент первого проведения или конфликта с другими документами), либо их целостность была нарушена. Перепроведение фактически заставляет систему заново пересчитать и перезаписать движения в регистрах, тем самым "исправляя" временные несоответствия. Наша задача — понять, что именно вызывает эти несоответствия изначально.

Возможные причины некорректного отображения данных

  1. Ошибки в агрегации данных при формировании по подразделению

    Мы часто видим, что данные по одному сотруднику корректны, а при группировке по подразделению возникают расхождения. Это одна из ключевых подсказок. Она может указывать на то, что запросы, используемые для формирования отчета Т-13, по-разному обрабатывают данные в зависимости от выбранного разреза. Например, при формировании по подразделению могут использоваться более сложные группировки или объединения, где может быть допущена логическая ошибка.

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

  2. Влияние приоритета документов учета рабочего времени

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

    Представим ситуацию: мы ввели Документ Отпуск организаций, провели его. Затем сформировали и провели Документ Табель за этот же период, который учел данные отпуска. Позже, по каким-либо причинам, мы внесли изменения в Документ Отпуск организаций (например, изменили даты отпуска) и перепровели его. Однако, если Документ Табель не был после этого перепроведен или скорректирован, он может продолжать хранить устаревшие данные, что приведет к расхождениям в отчете Т-13. Особенно это актуально для старых релизов УПП, где механизмы взаимодействия документов могли быть менее гибкими.

  3. Проблемы с расчетом среднего заработка для отпускных и больничных

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

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

  4. Пересечение периодов отпуска и больничного листа

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

    Если Документ Больничный лист был введен во время действия Документа Отпуск организаций, система должна правильно отреагировать. Например, отпуск может быть сторнирован за дни больничного и перенесен на другой период, или продлен. Если настройка этих механизмов некорректна, или в логике программы есть ошибка при обработке таких сценариев, это может привести к тому, что в отчете Т-13 отобразится неверное количество дней отпуска или больничного. Проблема усугубляется, если сторнирование отпуска происходит не полностью или с ошибками в движениях по регистрам. Перепроведение документов в таких случаях может временно решить проблему, но не устранит корневую причину некорректной первичной записи.

  5. Влияние устаревшего релиза конфигурации (УПП 147)

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

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

  6. Некорректные настройки классификаторов использования рабочего времени

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

    Если для определенного вида отсутствия (например, для какого-то специфического вида отпуска за свой счет, или если были доработки, создающие новые виды отсутствий) неправильно указаны коды или флаги, это может привести к некорректному подсчету дней или часов в отчете Т-13. Например, система может неверно интерпретировать дни отпуска как рабочие или наоборот, что исказит итоговый результат в табеле.

  7. Проблемы с целостностью данных в регистрах

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

    В процессе работы базы данных, особенно при сбоях, некорректных завершениях, или просто из-за ошибок в логике записи движений при определенных условиях, в этих регистрах могут возникать "зависшие" или неконсистентные данные. Например, документ мог записать движения в один регистр, но не полностью или неверно в другой. Перепроведение документа заставляет его заново сформировать все свои движения и записать их в регистры, тем самым "вычищая" или перезаписывая ошибочные записи. Это похоже на лечение симптома, а не причины. Наша задача — выявить, почему эти данные становятся некорректными изначально.

Методы диагностики и пошаговое устранение проблемы

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

  1. Анализ движений документов "Отпуск организаций" и "Больничный лист"

    Начнем с самого очевидного: сравним движения документов, которые вы перепроводите. Мы должны внимательно изучить документы "Отпуск организаций", "Начисление отпуска" и "Больничный лист" для того сотрудника и подразделения, где проявляется ошибка.

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

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

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

  2. Сравнение логики формирования отчета для разных разрезов

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

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

    Часто бывает, что для индивидуального отчета используется один запрос, а для группового – другой, более сложный, с использованием временных таблиц, объединений и группировок. Именно в этих местах могут быть ошибки в условиях отбора по подразделению или в агрегирующих функциях (СУММА, КОЛИЧЕСТВО). Мы можем использовать Консоль запросов или Консоль отчетов, чтобы выполнить эти запросы отдельно и посмотреть на их результаты, сравнивая их с тем, что видим в отчете.

  3. Проверка приоритетов документов и последовательности их ввода

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

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

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

  4. Детальная проверка расчетов среднего заработка

    Хотя это не основная причина для некорректного количества дней, мы не можем игнорировать этот фактор. Откройте Документ Начисление отпуска или Документ Больничный лист и воспользуйтесь механизмом расшифровки расчета среднего заработка.

    Мы внимательно проверим:

    • Правильность определения расчетного периода.
    • Корректность включения всех видов начислений в базу для среднего заработка.
    • Учет районных коэффициентов и северных надбавок (если применимо).
    • Правильность определения количества отработанных дней (часов) в расчетном периоде.

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

  5. Анализ обработки пересекающихся периодов

    Если проблема возникает с больничными, которые пересекаются с отпусками, нам нужно уделить этому особое внимание.

    Рассмотрим сценарий: сотрудник заболел во время отпуска.

    1. Был введен Документ Отпуск организаций.
    2. Затем введен Документ Больничный лист, который частично или полностью перекрывает период отпуска.
    3. После этого, как правило, вводится Документ Корректировка отпуска или сам Документ Отпуск организаций сторнируется на период больничного, и оформляется новый отпуск на оставшиеся дни.

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

  6. Обновление конфигурации и тестирование

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

    Важно: Всегда проводите обновление на резервной копии базы данных. После обновления необходимо тщательно протестировать все критически важные процессы, включая формирование отчета Т-13, как для отдельных сотрудников, так и для подразделений. Если проблема исчезнет после обновления, значит, причина была в ошибке типового решения.

  7. Ревизия настроек классификатора использования рабочего времени

    Откроем справочник Виды использования рабочего времени (обычно находится в меню "Расчет зарплаты" -> "Настройки" -> "Классификаторы использования рабочего времени").

    Мы должны проверить, как настроены элементы для отпуска ("ОТ") и больничного ("Б"). Убедитесь, что:

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

    Некорректная настройка этих параметров может привести к тому, что система будет неверно интерпретировать дни отсутствия, что прямо повлияет на отчет Т-13.

  8. Отладка кода отчета Т-13

    Если все вышеперечисленные шаги не привели к однозначному решению, мы перейдем к более глубокому анализу – отладке кода самого отчета Т-13 в конфигураторе. Это потребует навыков программирования на 1С.

    Алгоритм действий:

    1. Откройте Конфигуратор.
    2. Найдите в дереве объектов отчет Т-13.
    3. Откройте его основной модуль или модуль объекта.
    4. Установите точку останова в начале процедуры формирования отчета или в том месте, где выполняется запрос к данным.
    5. Запустите 1С в режиме отладки и сформируйте отчет Т-13, сначала по одному сотруднику (где все корректно), затем по подразделению (где ошибка).
    6. Пошагово выполните код, отслеживая значения переменных, особенно тех, которые хранят промежуточные данные и результаты запросов. Внимательно проанализируйте текст запросов, выполняемых отчетом, и результаты их выполнения.

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

    
    // Пример фрагмента кода, который может встречаться в модуле отчета Т-13 при формировании запросов.
    // Мы должны искать подобные конструкции, которые формируют данные для вывода.
    Функция СформироватьТаблицуДанныхОтчета(НачалоПериода, КонецПериода, ОтборПоСотруднику, ОтборПоПодразделению)
    
        Запрос = Новый Запрос;
        Запрос.Текст =
            "ВЫБРАТЬ
            |    ДвиженияРегистра.Сотрудник КАК Сотрудник,
            |    ДвиженияРегистра.Подразделение КАК Подразделение,
            |    ДвиженияРегистра.ВидРасчета КАК ВидРасчета,
            |    СУММА(ДвиженияРегистра.Дней) КАК Дней,
            |    СУММА(ДвиженияРегистра.Часов) КАК Часов
            |ИЗ
            |    РегистрНакопления.УчетВремени КАК ДвиженияРегистра
            |ГДЕ
            |    ДвиженияРегистра.Период МЕЖДУ &НачалоПериода И &КонецПериода";
    
        Если ОтборПоСотруднику <> Неопределено Тогда
            Запрос.Текст = Запрос.Текст + "
            |И ДвиженияРегистра.Сотрудник = &Сотрудник";
            Запрос.УстановитьПараметр("Сотрудник", ОтборПоСотруднику);
        КонецЕсли;
    
        Если ОтборПоПодразделению <> Неопределено Тогда
            Запрос.Текст = Запрос.Текст + "
            |И ДвиженияРегистра.Подразделение = &Подразделение";
            Запрос.УстановитьПараметр("Подразделение", ОтборПоПодразделению);
        КонецЕсли;
    
        Запрос.Текст = Запрос.Текст + "
            |СГРУППИРОВАТЬ ПО
            |    ДвиженияРегистра.Сотрудник,
            |    ДвиженияРегистра.Подразделение,
            |    ДвиженияРегистра.ВидРасчета";
    
        Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);
        Запрос.УстановитьПараметр("КонецПериода", КонецПериода);
    
        Возврат Запрос.Выполнить().Выгрузить();
    
    КонецФункции
    

    В этом примере мы видим, как параметры ОтборПоСотруднику и ОтборПоПодразделению влияют на текст запроса. Важно убедиться, что эти параметры передаются корректно и что логика фильтрации и группировки в запросе соответствует нашим ожиданиям.

  9. Проверка целостности базы данных

    Если проблема носит хаотичный характер и временно устраняется перепроведением, это может указывать на скрытые проблемы с целостностью базы данных. Мы можем использовать встроенные средства 1С для проверки и исправления ошибок:

    Запустите 1С в режиме Конфигуратор. Затем перейдите в меню "Администрирование" -> "Тестирование и исправление". Выберите необходимые флажки (например, "Проверка логической целостности базы", "Пересчет итогов", "Реструктуризация таблиц информационной базы", "Проверка ссылочной целостности").

    Критически важно: Всегда создавайте полную резервную копию информационной базы перед выполнением тестирования и исправления! Некоторые операции могут привести к необратимым изменениям или потере данных.

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

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

← На главную