При разработке расширений для 1С часто возникает ситуация, когда добавленные объекты метаданных, такие как РегистрБухгалтерии или ПланВидовХарактеристик, не отображаются в конструкторах запросов или схемах компоновки данных (СКД). Особенно остро эта проблема проявляется при попытке обратиться к виртуальным таблицам, например, ХозрасчетныйОбороты, где требуется получить доступ к полям Субконто или КорСубконто3.
Первым делом необходимо убедиться, что настройки самого объекта в расширении соответствуют требованиям платформы. Если у вас не видны поля субконто в запросе, выполните следующие действия:
РегистрБухгалтерии в расширении.КорСубконто. Установите флаг Корреспонденция в значение Истина.ПланСчетов. Если он не задан или выбран неверно, поля виртуальной таблицы не будут содержать данных о субконто.ПланВидовХарактеристик, который используется для субконто. В него должны быть добавлены все необходимые типы данных (документы, справочники), чтобы платформа могла корректно типизировать поля субконто в виртуальной таблице.Даже после правильной настройки метаданных, конструктор запросов или СистемаКомпоновкиДанных в составе внешнего отчета может выдавать ошибки. Это происходит потому, что конструкторы проверяют наличие объектов только в основной конфигурации, игнорируя расширения. Рассмотрим способы обхода этого ограничения:
Если вам нужно написать сложный запрос, не пытайтесь заставить конструктор увидеть объекты расширения. Вместо этого:
Консоли запросов. В режиме предприятия платформа видит все объекты, включая те, что были добавлены в расширениях.СхемеКомпоновкиДанных.Работа с СКД в расширениях имеет свои особенности. Если вы создаете отчет во внешней обработке, которая должна обращаться к объектам расширения:
XML.Важно помнить, что создание копий объектов основной конфигурации в расширении — это антипаттерн. Рассмотрим, почему это плохо:
Вместо этого мы рекомендуем использовать программное создание запросов или написание текста запроса в виде строки. Это позволит сохранить чистоту кода и избежать лишних зависимостей. Если вы работаете с ДинамическимиСписками в расширениях, рассмотрите использование объекта СхемаЗапроса — он позволяет программно манипулировать структурой запроса без необходимости физического наличия всех объектов в дереве метаданных конфигуратора.
Для корректной работы ХозрасчетныйОбороты.КорСубконто3 убедитесь, что в расширении включена Корреспонденция. Если конструктор выдает ошибку — игнорируйте её, если запрос проверен в консоли и успешно выполняется. Используйте программный подход для сложных отчетов, чтобы не раздувать структуру расширения объектами основной конфигурации.