При разработке внешних отчетов и обработок в 1С часто возникает ситуация, когда конструктор запроса или конструктор схемы компоновки данных (СКД) не видит таблицы, созданные в расширении. Конфигуратор подчеркивает имя таблицы, например РегистрСведений.МойРегистр, и выдает ошибку «Таблица не найдена», хотя в режиме «1С:Предприятие» отчет прекрасно работает. Разберемся, почему так происходит и какие есть способы решения этой проблемы.
Корень проблемы кроется в контексте, в котором работает конфигуратор. Когда вы открываете для редактирования внешний файл (отчет .erf или обработку .epf), конфигуратор не имеет информации о том, к какой информационной базе этот файл будет подключен. Соответственно, он "знает" только о метаданных основной конфигурации и ничего не знает об установленных в базе расширениях.
В то же время, когда вы запускаете этот же отчет в режиме «1С:Предприятие», система уже работает в полном контексте. Она объединяет метаданные основной конфигурации и всех активных расширений в единую картину. Именно поэтому запрос, который конфигуратор считал ошибочным, корректно выполняется в пользовательском режиме.
Это известное и долгое время существовавшее ограничение платформы. Рассмотрим, как с ним можно работать.
Поскольку проблема носит системный характер, для ее решения разработчики выработали несколько практических подходов. Проанализируем самые популярные из них.
Это самый распространенный и надежный способ. Его суть в том, чтобы создавать запрос не в конфигураторе, а в режиме «Предприятие», где видны все объекты, а затем переносить готовый текст в отчет.
Рассмотрим по шагам:
РегистрСведений.МойРегистр и другие объекты из расширений.Важный момент: после вставки текста конфигуратор, скорее всего, продолжит ругаться на «ненайденную» таблицу. Эту ошибку можно и нужно игнорировать. Как мы уже выяснили, она возникает только на этапе разработки в конфигураторе, но никак не влияет на работоспособность отчета в боевом режиме.
Этот способ немного хитрее, но тоже очень эффективен. Он позволяет использовать конструктор запроса в конфигураторе, но в правильном контексте.
Порядок действий:
Этот метод не избавляет от ошибки в итоговом внешнем отчете, но позволяет удобно и визуально составить запрос, не выходя из конфигуратора.
Все описанные выше методы являются, по сути, обходными путями для старых версий платформы. Фирма «1С» знала об этой проблеме и исправила ее.
Начиная с версии платформы 1С:Предприятие 8.3.28, это ограничение было снято. В новых версиях платформы конфигуратор при работе с внешними отчетами и обработками научился получать информацию об установленных в информационной базе расширениях.
Таким образом, если вы используете платформу 8.3.28 или новее, конструктор запроса, конструктор СКД и работа с динамическими списками будут напрямую видеть объекты из расширений без каких-либо дополнительных действий. Это самое правильное и долгосрочное решение проблемы.
Напоследок стоит упомянуть важный нюанс. Чтобы объекты, добавленные в расширении, были доступны из основной конфигурации, для самого расширения рекомендуется выбирать назначение «Адаптация» или «Исправление». Объекты из расширений с назначением «Дополнение» могут быть недоступны для прямого использования в запросах извне.
Подводя итог: если вы столкнулись с ошибкой «Таблица не найдена» для объекта из расширения, не пугайтесь. Используйте консоль запросов в режиме «Предприятие» для составления запроса или обновите платформу до актуальной версии, чтобы навсегда забыть об этой проблеме.