Как исправить ошибку «Поле не найдено» в СКД после изменения запроса в ЗУП 3.1

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

При работе с типовыми конфигурациями, такими как Зарплата и управление персоналом 3.1, программисты часто сталкиваются с ситуацией, когда после обновления системы внешние отчеты перестают работать. Типичный сценарий: поле в регистре сведений было удалено или переименовано (например, ВидЗанятости стал УдалитьВидЗанятости), вы добросовестно правите запрос в схеме компоновки данных (СКД), но система упрямо выдает ошибку, ссылаясь на старое имя поля. Разберем детально, почему это происходит и как полностью очистить «фантомные» связи в отчете.

Анализируем причину возникновения ошибки

Когда мы получаем сообщение об ошибке вида Ошибка получения информации набора данных: Поле не найдено "КадроваяИсторияСотрудников.ВидЗанятости", хотя в тексте запроса это поле уже заменено, проблема кроется в многослойности настроек СКД. Платформа 1С хранит ссылки на поля не только в тексте SQL-подобного запроса, но и в метаданных самой схемы, а также в кэшированных настройках вариантов отчетов в базе данных.

Проанализируем ситуацию: если отчет подключен как внешний через механизм Библиотеки стандартных подсистем (БСП), он перестает быть просто файлом .erf. Его настройки «прорастают» в систему, фиксируясь в справочниках и хранилищах настроек.

Шаг 1. Глубокая проверка схемы в Конфигураторе

Первым делом нам необходимо убедиться, что поле не осталось в «скрытых» разделах СКД. Рассмотрим основные места, где оно может прятаться:

  1. Вкладка «Компоновка данных» в Конструкторе запроса: Многие забывают, что на последней закладке конструктора запроса есть собственные поля, условия и отборы компоновки. Если там вручную были добавлены поля или установлены флаги доступности, СКД будет пытаться найти их в источнике данных. Проверим эту вкладку и удалим все упоминания старого поля ВидЗанятости.
  2. Вкладка «Наборы данных» (Поля): Проанализируем список полей набора данных. Даже если в запросе поля нет, оно могло остаться в списке полей компоновки, если оно было добавлено туда вручную или не обновилось автоматически.
  3. Вычисляемые поля и Ресурсы: Перейдем на соответствующие вкладки и поищем старое имя поля в формулах. Часто ошибка возникает именно там, так как формулы вычисляемых полей анализируются платформой после сборки запроса.
  4. Параметры: Если поле использовалось в выражениях параметров, это также приведет к ошибке.

Для быстрой проверки воспользуемся поиском (Ctrl+F) по всему тексту схемы (если выгрузить её в XML) или просто внимательно просмотрим все вкладки настроек варианта в нижней части конструктора СКД.

Шаг 2. Очистка временных таблиц в запросе

Разберем важный технический нюанс. В ЗУП 3.1 сложные запросы часто строятся на временных таблицах. Рассмотрим ситуацию, когда поле ВидЗанятости выбиралось в одной из первых временных таблиц, но не использовалось в финальной выборке. Ошибка все равно возникнет, так как СКД проверяет валидность всей структуры запроса.

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

Шаг 3. Влияние справочника «Варианты отчетов»

Это самая коварная причина. Когда мы загружаем внешний отчет в справочник Дополнительные отчеты и обработки, БСП автоматически создает записи в справочнике Варианты отчетов. В этих записях сохраняются настройки (отборы, группировки, выбранные поля), актуальные на момент первой загрузки.

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

  1. Перейдем в режим 1С:Предприятие.
  2. Откроем список дополнительных отчетов и удалим наш отчет полностью.
  3. Зайдем в справочник Варианты отчетов (через «Все функции» или «Функции для технического специалиста»).
  4. Найдем все записи, связанные с нашим отчетом, и удалим их. Это критически важно, так как именно здесь часто «зависает» ссылка на старое поле КадроваяИсторияСотрудников.ВидЗанятости в настройках отбора по умолчанию.
  5. Загрузим измененный файл отчета заново.

Шаг 4. Сброс пользовательских настроек

Если проблема сохраняется у конкретных пользователей, значит, старое поле «застряло» в их персональных настройках. Платформа 1С сохраняет состояние формы отчета для каждого пользователя индивидуально.

Проанализируем алгоритм очистки:

Шаг 5. Работа с «Представлениями» в ЗУП 3.1

Современные версии ЗУП используют механизм виртуальных таблиц-представлений для получения кадровых данных. Вместо прямого обращения к РегистрСведений.КадроваяИсторияСотрудников, рекомендуется использовать временную таблицу ВТКадровыеДанныеСотрудников, которая заполняется программно через вызов процедур общего модуля.

Если вы пишете отчет «с нуля» или проводите глубокую модернизацию старого, рассмотрим пример того, как правильно объявить поля в СКД для работы с программным заполнением:


// В тексте запроса СКД создаем пустую временную таблицу
ВЫБРАТЬ
    ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка) КАК Сотрудник,
    ДАТАВРЕМЯ(1, 1, 1) КАК Период,
    "" КАК ВидЗанятости
ПОМЕСТИТЬ Представления_КадровыеДанныеСотрудников
ГДЕ
    Ложь
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Т.Сотрудник,
    Т.ВидЗанятости
ИЗ
    Представления_КадровыеДанныеСотрудников КАК Т

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

Резюме действий для исправления ошибки

Подводя итог, если вы столкнулись с «невидимым» полем ВидЗанятости, выполните следующие действия:

  1. В Конфигураторе через Ctrl+H замените все вхождения ВидЗанятости на корректный путь к новому регистру во всей схеме.
  2. Убедитесь, что в Настройках варианта (вкладка «Отбор» и «Выбранные поля») не осталось помеченных красным крестиком элементов.
  3. В режиме Предприятия переподключите отчет, обязательно удалив старые записи из справочника «Варианты отчетов».
  4. Выполните команду «Установить стандартные настройки» в форме отчета.

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

← На главную