Как убрать дополнительные реквизиты номенклатуры из настроек отчетов для повышения производительности

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Торговля и дистрибуция
← На главную

При работе в современных конфигурациях, таких как 1С:Управление торговлей 11, ERP или Комплексная автоматизация, пользователи часто сталкиваются с проблемой: при попытке изменить структуру отчета или добавить новое поле, программа «зависает» на несколько минут. Это происходит в момент раскрытия свойств объекта Номенклатура. Причина кроется в огромном количестве дополнительных реквизитов, которые система автоматически пытается подтянуть в дерево доступных полей. Разберем подробно, почему так происходит и как это исправить.

Почему отчеты «тормозят» при наличии доп. реквизитов?

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

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

Способ 1. Отключение характеристик в Схеме компоновки данных

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

  1. Откроем отчет в Конфигураторе и перейдем в Схему компоновки данных.
  2. Перейдем на закладку «Настройки».
  3. В нижней части окна выберем вкладку «Дополнительные свойства» (или выделим корневой элемент настроек).
  4. Найдем параметр «Использовать характеристики». Установим его в значение «Ложь».

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

Способ 2. Ограничение доступных полей в СКД

Если нам нужно оставить возможность выбора стандартных реквизитов номенклатуры (например, Артикул, ВидНоменклатуры, Производитель), но скрыть «мусор» из дополнительных свойств, воспользуемся ограничением полей.

Разберем по шагам, как это сделать в СКД:

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

Способ 3. Программная модификация схемы

Иногда отчеты строятся динамически, и нам нужно вмешаться в процесс программно. Посмотрим на пример кода, который можно разместить в модуле объекта отчета в процедуре ПриКомпоновкеРезультата. Мы можем программно очистить расширение характеристик у источника данных.


Процедура ПриКомпоновкеРезультата(ДанныеРасшифровки, СтандартнаяОбработка)
    
    // Получаем схему компоновки
    Схема = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    
    // Проанализируем расширения характеристик
    Для Каждого Источник Из Схема.ИсточникиДанных Цикл
        // Здесь можно программно управлять настройками источника,
        // если платформа позволяет модификацию через расширения
    КонецЦикла;
    
КонецПроцедуры

Однако более надежным способом будет создание собственной формы настроек, где список доступных полей будет фильтроваться или ограничиваться заранее. Это исключит ситуацию, когда стандартная форма 1С пытается «прожевать» огромные метаданные.

Способ 4. Настройка метаданных (глобальный подход)

Если проблема носит массовый характер и дополнительные реквизиты мешают во всех отчетах, можно рассмотреть изменение настроек самого справочника Номенклатура в Конфигураторе. Внимание: это затронет все отчеты в системе!

Рассмотрим, где находятся эти настройки:

  1. Найдем справочник Номенклатура в дереве метаданных.
  2. Откроем его свойства и перейдем на закладку «Характеристики».
  3. Здесь указано, откуда система берет доп. реквизиты (обычно это ПВХ ДополнительныеРеквизитыИСведения).
  4. Если удалить эти настройки здесь, дополнительные свойства перестанут появляться в любых отчетах автоматически.

Важный момент: Пользователи в обсуждении отмечали, что это радикальный метод (сообщение 14, 17). Если реквизиты нужны в карточке товара, но не нужны в отчетах, лучше использовать способ №1 или №2 для конкретных «тяжелых» отчетов (например, Прайс-листа).

Рекомендации по оптимизации для пользователей

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

Также проанализируйте справочник «Наборы дополнительных реквизитов и сведений». Часто зависания связаны с тем, что реквизиты не распределены по видам номенклатуры, а свалены в одну кучу «Для всей номенклатуры». Разделение свойств по наборам значительно облегчает работу системы компоновки данных.

← На главную