Как сделать доступными поля ХозрасчетныйОбороты.КорСубконто3 в расширении 1С?

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

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

Шаг 1: Проверка настроек регистра в расширении

Первым делом необходимо убедиться, что настройки самого объекта в расширении соответствуют требованиям платформы. Если у вас не видны поля субконто в запросе, выполните следующие действия:

  1. Откройте РегистрБухгалтерии в расширении.
  2. Проверьте свойство Корреспонденция. Если оно выключено, платформа может ограничивать доступ к полям КорСубконто. Установите флаг Корреспонденция в значение Истина.
  3. Убедитесь, что для регистра корректно указан ПланСчетов. Если он не задан или выбран неверно, поля виртуальной таблицы не будут содержать данных о субконто.
  4. Проверьте ПланВидовХарактеристик, который используется для субконто. В него должны быть добавлены все необходимые типы данных (документы, справочники), чтобы платформа могла корректно типизировать поля субконто в виртуальной таблице.

Шаг 2: Работа с конструктором запросов и СКД

Даже после правильной настройки метаданных, конструктор запросов или СистемаКомпоновкиДанных в составе внешнего отчета может выдавать ошибки. Это происходит потому, что конструкторы проверяют наличие объектов только в основной конфигурации, игнорируя расширения. Рассмотрим способы обхода этого ограничения:

Решение через консоль запросов

Если вам нужно написать сложный запрос, не пытайтесь заставить конструктор увидеть объекты расширения. Вместо этого:

  1. Напишите текст запроса вручную в Консоли запросов. В режиме предприятия платформа видит все объекты, включая те, что были добавлены в расширениях.
  2. Проверьте работоспособность запроса в консоли.
  3. Скопируйте полученный текст запроса и вставьте его непосредственно в код модуля или в текст запроса в СхемеКомпоновкиДанных.

Решение для СКД

Работа с СКД в расширениях имеет свои особенности. Если вы создаете отчет во внешней обработке, которая должна обращаться к объектам расширения:

  1. Создайте схему компоновки в консоли СКД в режиме «Предприятия».
  2. Сохраните настройку схемы в файл XML.
  3. Загрузите этот файл во внешний отчет.
  4. Будьте готовы к тому, что при открытии схемы в конфигураторе будут возникать ошибки валидации из-за того, что объекты «не найдены». Как показывает практика, эти ошибки не блокируют выполнение отчета. В режиме «1С:Предприятие» движок запросов успешно скомпилирует запрос, так как расширения будут подключены к сеансу.

Почему не стоит переносить все объекты в расширение

Важно помнить, что создание копий объектов основной конфигурации в расширении — это антипаттерн. Рассмотрим, почему это плохо:

Вместо этого мы рекомендуем использовать программное создание запросов или написание текста запроса в виде строки. Это позволит сохранить чистоту кода и избежать лишних зависимостей. Если вы работаете с ДинамическимиСписками в расширениях, рассмотрите использование объекта СхемаЗапроса — он позволяет программно манипулировать структурой запроса без необходимости физического наличия всех объектов в дереве метаданных конфигуратора.

Итог

Для корректной работы ХозрасчетныйОбороты.КорСубконто3 убедитесь, что в расширении включена Корреспонденция. Если конструктор выдает ошибку — игнорируйте её, если запрос проверен в консоли и успешно выполняется. Используйте программный подход для сложных отчетов, чтобы не раздувать структуру расширения объектами основной конфигурации.

← На главную