После обновления конфигурации 1С:Зарплата и управление персоналом (ЗУП) до актуальных версий, таких как 3.1.27.129 или 3.1.28.35, пользователи нередко сталкиваются с проблемой при попытке сформировать стандартный отчет "Штатное расписание (Т-3)". Отчет, который ранее работал без нареканий, вдруг перестает формироваться, выдавая критичную ошибку. Давайте подробно разберем эту ситуацию и найдем эффективные решения.
Пользователи сообщают, что после обновления системы 1С:ЗУП до версии 3.1.28.35 (и схожих релизов) при попытке построить отчет "Штатное расписание (Т-3)" на экране появляется следующее сообщение об ошибке:
"В настройку отчета Т-3 внесены критичные изменения. Отчет не будет сформирован. Преобразование значения к типу Число не может быть выполнено."
Эта проблема особенно актуальна в случаях, когда в настройках штатного расписания организации активна опция "ведется история штатного расписания", и/или когда в штатном расписании присутствуют закрытые позиции. Попытки восстановить стандартные настройки отчета или очистить кэш системы, как правило, не приносят результата, что указывает на более глубокую, системную причину.
Мы выяснили, что описанная проблема является зарегистрированной ошибкой в продуктах 1С под номером 60011328. Глубокий анализ ситуации, проведенный опытными пользователями и специалистами, показал, что корневая причина кроется в изменении логики запроса, используемого для формирования отчета "Штатное расписание (Т-3)" в новых релизах. Если ранее в запросе использовалось ВНУТРЕННЕЕ СОЕДИНЕНИЕ (INNER JOIN), то в проблемных версиях оно было заменено на ЛЕВОЕ СОЕДИНЕНИЕ (LEFT JOIN).
Что это означает на практике? ЛЕВОЕ СОЕДИНЕНИЕ позволяет включать в выборку строки из левой таблицы даже в том случае, если для них не найдено соответствующих записей в правой таблице. В контексте отчета о штатном расписании это приводит к тому, что в результат запроса могут попадать строки с пустыми (NULL) значениями для таких ключевых полей, как Организация или Количество ставок. Когда система пытается преобразовать это NULL-значение поля Количество ставок в числовой тип для выполнения расчетов или группировок, возникает ошибка "Преобразование значения к типу Число не может быть выполнено".
Таким образом, наличие закрытых позиций или активная история штатного расписания, по сути, увеличивают вероятность появления таких "пустых" строк в выборке при использовании ЛЕВОГО СОЕДИНЕНИЯ, что и провоцирует ошибку.
Наиболее корректным и рекомендованным способом устранения данной ошибки является установка официального исправления, выпущенного фирмой "1С". Для данной проблемы был разработан и опубликован патч с идентификатором EF_60011328.
Мы видим подтверждения от многих пользователей, что установка этого патча полностью решает проблему, и отчет "Штатное расписание (Т-3)" начинает формироваться корректно, даже при наличии истории штатного расписания и закрытых позиций.
Давайте пошагово разберем процесс установки патча в вашей конфигурации 1С:ЗУП:
После перезапуска программы повторите попытку формирования отчета "Штатное расписание (Т-3)". Мы ожидаем, что проблема будет устранена, и отчет сформируется без ошибок.
Важно отметить, что патчи обычно становятся доступны на портале технической поддержки 1С (users.v8.1c.ru). Если вы не можете найти патч через интерфейс программы, возможно, вам потребуется скачать его вручную с портала и установить по инструкции, но чаще всего процесс автоматизирован, как описано выше.
В случаях, когда установка официального патча по каким-либо причинам невозможна немедленно, или требуется оперативное решение без обновления основной конфигурации, для опытных программистов 1С существует возможность реализовать временное исправление с помощью расширения конфигурации. Этот метод требует глубоких знаний в разработке на платформе 1С:Предприятие и понимания структуры отчетов.
Как мы уже выяснили, корень проблемы заключается в изменении типа соединения в запросе отчета с ВНУТРЕННЕГО СОЕДИНЕНИЯ на ЛЕВОЕ СОЕДИНЕНИЕ, что приводит к появлению NULL-значений и ошибке преобразования типа. Соответственно, логика временного решения через расширение будет заключаться в следующем:
ВНУТРЕННЕЕ СОЕДИНЕНИЕ (INNER JOIN) вместо ЛЕВОГО СОЕДИНЕНИЯ (LEFT JOIN) для тех таблиц, где возникает проблема с NULL-значениями.NULL-значения для полей, которые участвуют в преобразовании к типу Число, и, при необходимости, присваивать им значение 0 (ноль) или другое подходящее значение по умолчанию, прежде чем они будут преобразованы. Это можно сделать с помощью функций типа ЕСТЬNULL() в языке запросов 1С.Важно понимать, что создание и поддержка такого расширения – это задача для квалифицированного специалиста. Расширение может потребовать адаптации при выходе новых версий конфигурации, если в них будут существенно меняться структуры отчетов. Это решение является временным и должно использоваться до момента установки официального патча или обновления до версии, где проблема уже исправлена. В качестве альтернативы можно использовать внешний отчет штатного расписания Т-3 для ЗУП 3.1.
Помимо основных решений, мы рассмотрим несколько дополнительных аспектов, которые могут быть полезны при работе с отчетом "Штатное расписание (Т-3)":
Мы настоятельно рекомендуем в первую очередь использовать официальный патч EF_60011328, так как это наиболее надежный и поддерживаемый способ решения проблемы. Временные обходные пути через расширения следует рассматривать как крайнюю меру.