При работе в программе «1С:Зарплата и управление персоналом 3.1» пользователи и администраторы могут столкнуться с критической ошибкой при попытке пересчета начислений сотрудников или проведении документов «Начисление зарплаты и взносов». Ошибка сопровождается системным сообщением, указывающим на отсутствие временной таблицы ПолученияПериодическихДанныхСотрудников в общем модуле ЗарплатаКадрыПериодическиеРегистры. Разберем подробно причины возникновения этой проблемы и эффективные методы ее решения.
Для начала проанализируем, почему возникает данная ошибка. В конфигурации ЗУП 3.1 расчет зарплаты опирается на сложные механизмы получения среза данных из периодических регистров сведений (например, плановые начисления, графики работы, данные о позициях штатного расписания). Для оптимизации производительности разработчики 1С используют механизм Менеджера временных таблиц (МВТ).
Таблица ПолученияПериодическихДанныхСотрудников не является реальным объектом метаданных в базе данных. Это временная таблица, которая создается «на лету» программным кодом перед выполнением основного запроса. Ошибка Таблица не найдена означает, что в цепочке вызовов процедур общего модуля ЗарплатаКадрыПериодическиеРегистры произошел разрыв: либо таблица не была создана из-за исключительной ситуации в коде, либо менеджер временных таблиц был очищен или переинициализирован до момента обращения к нему.
Выясним причину сбоя в контексте метода Запрос.Выполнить(). Когда основной запрос пытается обратиться к ИзмеренияДаты (псевдоним для искомой временной таблицы), платформа проверяет наличие этой таблицы в текущем МВТ. Если код формирования данных «проскочил» или завершился некорректно без генерации таблицы, выполнение прерывается с ошибкой конфигурации.
Проанализируем конкретную ситуацию, описанную пользователями. Проблема часто проявляется на релизе 3.1.10.135. В этом обновлении компания 1С внедрила изменения в алгоритмы перерасчетов, связанные с возвратами НДФЛ. Если в информационной базе есть сотрудники, у которых в периоде расчета присутствуют документы возврата налога или специфические корректировки налогового учета, старый алгоритм формирования временных таблиц может давать сбой.
Рассмотрим по шагам, как это происходит:
ВыполнитьЗапросПолученияДвиженийРегистра.ПолученияПериодическихДанныхСотрудников.Самым надежным способом решения проблемы является обновление программного продукта. Как показывает практика, ошибка была признана разработчиками и исправлена в последующих версиях. Рассмотрим последовательность действий:
Во-первых, проверьте текущую версию вашей конфигурации. Если вы используете релиз ниже 3.1.10.223 (или аналогичной ветки 3.1.14+), обновление необходимо. В новых версиях в общий модуль ЗарплатаКадрыПериодическиеРегистры были добавлены дополнительные проверки на существование менеджера временных таблиц и корректность инициализации структур перед выполнением запросов.
Во-вторых, проведите обновление сначала на копии базы данных. После обновления попробуйте повторить процедуру пересчета, которая вызывала ошибку. В большинстве случаев проблема исчезает после перехода на актуальный релиз.
Если обновление по каким-то причинам невозможно в данный момент, проанализируем состояние данных. Ошибка часто провоцируется логическими ошибками в регистрах сведений. Выполним следующие действия:
ДанныеСотрудников, КадроваяИсторияСотрудников). Наличие двух записей по одному сотруднику на одну и ту же дату (период) может привести к тому, что запрос на формирование временной таблицы вернет ошибку или пустой результат.<Объект не найден>, алгоритм не сможет корректно сформировать временную таблицу.Иногда ошибка может быть вызвана некорректной работой платформы 1С:Предприятие с временными таблицами. Рассмотрим, как исключить этот фактор:
Проанализируем версию платформы. Если вы используете старые версии (например, 8.3.12–8.3.15), в них наблюдались баги при работе с Менеджером Временных Таблиц в фоновых заданиях. Рекомендуется обновить платформу до актуальной стабильной версии (например, 8.3.21 или выше).
Обязательно выполните очистку кэша на локальном компьютере пользователя и на сервере (если база клиент-серверная). Старый кэш метаданных может содержать неверные описания типов временных таблиц, что приводит к ошибке Таблица не найдена даже на исправном коде.
Если у вас установлены расширения, они могут напрямую влиять на возникновение ошибки. Разберем, как проверить этот фактор:
Часто программисты в расширениях переопределяют методы расчета или добавляют свои условия в запросы. Если расширение модифицирует процедуры в модуле ЗарплатаКадрыПериодическиеРегистры, оно может «забывать» передавать менеджер временных таблиц в вызываемые функции. Попробуйте временно отключить все активные расширения и проверить работу документа. Если ошибка пропала — проблему нужно искать в коде расширения, обеспечив корректную передачу параметра МенеджерВременныхТаблиц.
Пример корректного использования менеджера в запросе (для понимания логики):
МенеджерВТ = Новый МенеджерВременныхТаблиц;
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
// Здесь должен быть код формирования таблицы "ПолученияПериодическихДанныхСотрудников"
// Если его нет или он не отработал, следующий запрос упадет:
Запрос.Текст = "ВЫБРАТЬ * ИЗ ПолученияПериодическихДанныхСотрудников КАК ИзмеренияДаты";
РезультатЗапроса = Запрос.Выполнить();
Если вы опытный разработчик и вам нужно устранить ошибку немедленно без полного обновления, проанализируйте текст запроса в функции ВыполнитьЗапросПолученияДвиженийРегистра. Можно добавить проверку перед выполнением:
ТаблицыМенеджера = МенеджерВТ.Таблицы;
Если ТаблицыМенеджера.Найти("ПолученияПериодическихДанныхСотрудников") = Неопределено Тогда
// Вызов процедуры инициализации таблицы или логирование ошибки для анализа данных
ВызватьИсключение "Ошибка инициализации данных сотрудников: таблица не сформирована.";
КонецЕсли;
Такой подход позволит не просто «вылетать» с системной ошибкой, а получить более детальную информацию о том, на каком сотруднике или на каких данных произошел сбой. Однако лучшим решением остается установка патчей от 1С или обновление до проверенного релиза.
Подведем итог: ошибка Таблица не найдена "ПолученияПериодическихДанныхСотрудников" — это следствие несовершенства алгоритмов в переходных релизах ЗУП 3.1. Основной путь исправления — обновление конфигурации, дополнительный — аудит кадровых данных и регистров НДФЛ на предмет логических несоответствий.