Как добавить свойства контрагентов и других объектов в ОСВ для 1С:УПП 1.3?

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

При работе в конфигурации «Управление производственным предприятием, редакция 1.3» (УПП) пользователи часто сталкиваются с нехваткой стандартных аналитических разрезов в бухгалтерских отчетах. Оборотно-сальдовая ведомость (ОСВ) по умолчанию оперирует только субконто, которые жестко заданы в плане счетов. Однако в УПП существует мощный механизм свойств и категорий, который позволяет добавлять произвольные аналитические данные к контрагентам, номенклатуре или договорам без изменения структуры справочников. Разберем подробно, как интегрировать эти свойства в ОСВ.

Архитектура хранения свойств в УПП 1.3

Прежде чем приступать к доработке или настройке, проанализируем, как система хранит эти данные. В отличие от современных конфигураций на базе БСП, где используются дополнительные реквизиты, в УПП 1.3 реализована классическая схема:

  1. План видов характеристик «Свойства объектов» — здесь хранятся сами названия свойств (например, «Регион контрагента», «Важность клиента»).
  2. Регистр сведений «Значения свойств объектов» — именно в нем хранятся конкретные значения, привязанные к объекту (ссылке на справочник).

Для реализации задачи в ОСВ нам необходимо соединить данные регистра бухгалтерии с данными этого регистра сведений.

Способ 1: Использование механизма характеристик в СКД

Если вы разрабатываете собственный отчет на базе Системы компоновки данных (СКД) или дорабатываете типовой, это самый правильный и «чистый» метод. Мы настроим СКД так, чтобы она сама «видела» свойства объектов как дополнительные поля.

Рассмотрим по шагам настройку в конструкторе схемы компоновки данных:

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

Преимущество этого метода в том, что нам не нужно вручную прописывать ЛЕВОЕ СОЕДИНЕНИЕ в запросе. Система компоновки данных сформирует запрос динамически, выбирая только те свойства, которые пользователь добавил в настройки отчета.

Способ 2: Ручная модификация запроса (через ЛЕВОЕ СОЕДИНЕНИЕ)

Если отчет ОСВ строится на фиксированном запросе (что часто бывает в старых редакциях УПП), нам придется вмешаться в текст запроса. Рассмотрим пример, как вытащить конкретное свойство контрагента в общий список.

Проанализируем пример кода запроса, который можно внедрить в модуль объекта отчета:


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

Важные моменты при написании такого запроса:

Способ 3: Использование «Универсального отчета»

В УПП 1.3 встроен мощный инструмент — «Универсальный отчет» (на базе построителя или СКД, в зависимости от версии обновления). Если вам нужно быстро получить данные по остаткам и оборотам в разрезе свойств, попробуйте следующий алгоритм:

  1. Перейдем в меню «Отчеты» — «Универсальный отчет».
  2. В типе данных выберем «Регистр бухгалтерии».
  3. Выберем регистр «Хозрасчетный» и таблицу «Остатки и обороты».
  4. Нажмем кнопку «Настройка». В списке доступных полей вы увидите, что свойства объектов уже доступны для выбора в группировках и колонках. Это связано с тем, что разработчики 1С уже заложили механизм характеристик в метаданные универсального отчета.

Этот способ является самым быстрым и не требует написания ни одной строки кода.

Оптимизация производительности

Разберем ситуацию, когда база данных имеет большой объем. Регистр ЗначенияСвойствОбъектов не является индексированным по значению, а соединение с ним в больших отчетах типа ОСВ может замедлить формирование данных. Чтобы избежать «тормозов», придерживайтесь следующих правил:

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

Таким образом, мы выяснили, что наиболее эффективным программным способом является использование механизма характеристик СКД, а для быстрого анализа без программирования лучше всего подходит штатный «Универсальный отчет». При внедрении этих решений в типовую ОСВ учитывайте структуру построителя отчета, который используется в вашей версии УПП 1.3.

← На главную