Как добавить стандартные реквизиты регистра бухгалтерии в расширение конфигурации 1С и сделать их видимыми в запросах?

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

Разработка отчетов и доработка существующих механизмов в расширениях конфигурации 1С — это удобный и безопасный способ кастомизации систем, находящихся на поддержке. Однако разработчики часто сталкиваются с неприятным ограничением: при попытке отредактировать запрос в схеме компоновки данных (СКД) или в обычном коде внутри расширения, визуальный Конструктор запросов «не видит» стандартные реквизиты регистра бухгалтерии, такие как Субконто1, Субконто2, Регистратор, или выдает ошибку совместимости типов при попытке установить отбор по регистратору.

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

В этой статье мы подробно разберем четыре практических метода решения этой проблемы: от быстрого обходного пути до полноценной настройки связей метаданных в расширении.

Метод 1. Быстрый обходной путь: Написание запроса вне расширения

Если вам необходимо быстро написать или отредактировать сложный запрос к регистру бухгалтерии, и вы не хотите тратить время на заимствование множества связанных объектов (справочников, документов, планов видов характеристик) ради того, чтобы их «увидел» визуальный конструктор расширения, воспользуйтесь стандартным приемом опытных разработчиков:

  1. Откройте основную конфигурацию базы данных (или создайте временную внешнюю обработку в режиме конфигуратора основной базы).
  2. Откройте Конструктор запросов и соберите нужный текст запроса. Здесь вам будут доступны все виртуальные таблицы, стандартные реквизиты вроде Субконто1, проверка типов по регистраторам через ключевое слово ССЫЛКА и т. д.
  3. Скопируйте полученный готовый текст запроса.
  4. Перейдите в ваше расширение, откройте схему компоновки данных (СКД) или модуль, где пишется код, и просто вставьте скопированный текст вручную в поле запроса.

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


ВЫБРАТЬ
    ХозрасчетныйОбороты.Счет КАК Счет,
    ХозрасчетныйОбороты.Субконто1 КАК Контрагент,
    ХозрасчетныйОбороты.Субконто2 КАК ДоговорКонтрагента,
    ХозрасчетныйОбороты.СуммаОборотДт КАК СуммаОборотДт,
    ХозрасчетныйОбороты.Регистратор КАК Регистратор
ИЗ
    РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, Авто, , , , , ) КАК ХозрасчетныйОбороты
ГДЕ
    ХозрасчетныйОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг

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

Метод 2. Как сделать поля «Субконто» видимыми в Конструкторе запросов расширения

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

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

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

Метод 3. Решение проблемы с отбором «Регистратор ССЫЛКА...» (Несовместимые типы)

Часто при написании запроса к виртуальным таблицам регистра бухгалтерии в расширении разработчики сталкиваются с ошибкой: «Несовместимые типы ССЫЛКА» при написании условия вида ГДЕ Регистр.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг. Платформа в расширении просто «не знает», что данный документ может выступать регистратором для этого регистра.

Проанализируем, как решить эту проблему в версиях платформы 8.3.13–8.3.15 и новее:

  1. Заимствуйте в ваше расширение документы, по которым планируется делать проверку на тип ссылки (например, документы РеализацияТоваровУслуг, ПоступлениеТоваровУслуг и т. д.).
  2. В дереве объектов расширения откройте свойства заимствованного документа.
  3. Перейдите на вкладку «Движения».
  4. В списке доступных регистров найдите заимствованный регистр бухгалтерии Хозрасчетный и отметьте его галочкой (установите активность движений для этого документа в расширении).

Указав в расширении связь «Документ является регистратором для Регистра бухгалтерии», вы снимете ограничение Конструктора запросов, и проверка типов по полю Регистратор начнет отрабатывать корректно без каких-либо ошибок несовместимости.

Метод 4. Использование контролируемых свойств объектов

Если из Конструктора запросов в расширении пропадают другие важные стандартные реквизиты (например, ЭтоГруппа, Родитель у справочников или Владелец), это свидетельствует о том, что расширение не подтянуло иерархическую структуру или связи владельцев из основной конфигурации.

Для исправления этой ситуации выполните следующие действия:

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

Важное примечание: Чтобы избежать непредвиденных ошибок при работе со сложными механизмами заимствования, рекомендуется следить за тем, чтобы режим совместимости вашего расширения полностью соответствовал режиму совместимости основной конфигурации (или был установлен в значение «Не использовать», если это позволяет версия платформы и архитектура решения).

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

← На главную