Часто разработчики сталкиваются с ситуацией, когда запрос к виртуальной таблице ОстаткиИОбороты регистра накопления в Консоли запросов возвращает корректный результат, включая поле Регистратор, но при переносе этого же запроса в Систему компоновки данных (СКД) поле пропадает или вызывает ошибку «Поле не найдено». Давайте разберем, почему это происходит и как устранить данную проблему.
Первое, на что стоит обратить внимание — это ограничения доступа. Даже если вы работаете под учетной записью с полными правами, система может накладывать ограничения на чтение данных конкретных документов. RLS (Row Level Security) может фильтровать записи таким образом, что поле Регистратор становится недоступным для чтения, из-за чего СКД отбрасывает его в процессе компоновки.
Также проверьте Функциональные опции. Если Регистратор является документом, работа которого зависит от отключенной функциональной опции, система может блокировать доступ к объекту. Убедитесь, что все необходимые опции включены в текущем сеансе разработки.
СКД обладает механизмом кэширования структуры набора данных. Если вы внесли изменения в запрос, но настройки СКД не обновились, система может «помнить» старую структуру полей. Для исправления ситуации выполните следующие шаги:
Наборы данных.Обновить в конструкторе запроса, чтобы система заново просканировала структуру полей.Поле Регистратор доступно в виртуальной таблице ОстаткиИОбороты только при использовании параметра Периодичность. Если вы используете значение Авто, СКД должна автоматически предоставлять доступ к регистратору. Однако, если в настройках СКД или в самом запросе возникли проблемы с типизацией, система может исключить поле при попытке оптимизации.
Попробуйте принудительно выразить тип поля в запросе. Это поможет СКД четче определить структуру данных:
ВЫБРАТЬ
ОстаткиИОбороты.Организация,
ОстаткиИОбороты.Номенклатура,
ВЫРАЗИТЬ(ОстаткиИОбороты.Регистратор КАК Документ.ВашДокумент) КАК Регистратор
ИЗ
РегистрНакопления.ВашРегистр.ОстаткиИОбороты(&ПериодНач, &ПериодКон, Авто, , ) КАК ОстаткиИОбороты
Чтобы локализовать причину, воспользуйтесь проверенным алгоритмом действий:
Регистратор — это составной тип, попробуйте вывести только его Представление. Если представление выводится, а ссылка — нет, проблема может быть связана с отсутствием прав на чтение конкретных типов документов, входящих в составной тип регистратора.Помните, что СКД — это мощный, но иногда «самостоятельный» механизм. Если вы столкнулись с подобной ошибкой, не стоит сразу подозревать платформу в неисправности. Чаще всего причина кроется в неверной трактовке прав доступа или в кэшировании метаданных внутри схемы компоновки. Следуя этим советам, вы сможете быстро выявить и устранить проблему с отображением регистратора в ваших отчетах.