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