При работе в современных конфигурациях, таких как 1С:Управление торговлей 11, ERP или Комплексная автоматизация, пользователи часто сталкиваются с проблемой: при попытке изменить структуру отчета или добавить новое поле, программа «зависает» на несколько минут. Это происходит в момент раскрытия свойств объекта Номенклатура. Причина кроется в огромном количестве дополнительных реквизитов, которые система автоматически пытается подтянуть в дерево доступных полей. Разберем подробно, почему так происходит и как это исправить.
Выясним причину такого поведения системы. В платформе 1С существует механизм характеристик, который прописан на уровне метаданных справочника. Для справочника Номенклатура в типовых решениях настроено получение дополнительных реквизитов из специального регистра сведений или табличных частей.
Когда вы открываете настройки отчета, Система компоновки данных (СКД) анализирует настройки характеристик объекта. Если для каждого вида номенклатуры созданы десятки уникальных свойств, то общее дерево доступных полей может раздуваться до тысяч элементов. Платформа тратит значительное время на формирование этого списка и передачу его с сервера на клиент, что и вызывает визуальное зависание интерфейса.
Рассмотрим самый эффективный метод для разработчика — отключение механизма характеристик в конкретном отчете. Если дополнительные свойства не нужны в данном отчете, мы можем явно запретить СКД их считывать.
Если этот параметр не помогает (в зависимости от версии платформы), проанализируем настройки набора данных. На закладке «Наборы данных» в СКД можно увидеть, как определены поля. Если вы используете автозаполнение, система подтягивает всё. Попробуем отключить «Автозаполнение» и выбрать только нужные реквизиты вручную.
Если нам нужно оставить возможность выбора стандартных реквизитов номенклатуры (например, Артикул, ВидНоменклатуры, Производитель), но скрыть «мусор» из дополнительных свойств, воспользуемся ограничением полей.
Разберем по шагам, как это сделать в СКД:
Номенклатура.Иногда отчеты строятся динамически, и нам нужно вмешаться в процесс программно. Посмотрим на пример кода, который можно разместить в модуле объекта отчета в процедуре ПриКомпоновкеРезультата. Мы можем программно очистить расширение характеристик у источника данных.
Процедура ПриКомпоновкеРезультата(ДанныеРасшифровки, СтандартнаяОбработка)
// Получаем схему компоновки
Схема = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
// Проанализируем расширения характеристик
Для Каждого Источник Из Схема.ИсточникиДанных Цикл
// Здесь можно программно управлять настройками источника,
// если платформа позволяет модификацию через расширения
КонецЦикла;
КонецПроцедуры
Однако более надежным способом будет создание собственной формы настроек, где список доступных полей будет фильтроваться или ограничиваться заранее. Это исключит ситуацию, когда стандартная форма 1С пытается «прожевать» огромные метаданные.
Если проблема носит массовый характер и дополнительные реквизиты мешают во всех отчетах, можно рассмотреть изменение настроек самого справочника Номенклатура в Конфигураторе. Внимание: это затронет все отчеты в системе!
Рассмотрим, где находятся эти настройки:
Номенклатура в дереве метаданных.ДополнительныеРеквизитыИСведения).Важный момент: Пользователи в обсуждении отмечали, что это радикальный метод (сообщение 14, 17). Если реквизиты нужны в карточке товара, но не нужны в отчетах, лучше использовать способ №1 или №2 для конкретных «тяжелых» отчетов (например, Прайс-листа).
Если вы не являетесь программистом, но вынуждены работать с такими отчетами, попробуйте следующий лайфхак. Вместо того чтобы нажимать на «плюсик» рядом с Номенклатурой и ждать зависания, используйте строку поиска в окне выбора полей. Начните вводить название нужного стандартного реквизита (например, «Производитель»). Система может отфильтровать список быстрее, чем отрисует полное дерево всех дополнительных свойств.
Также проанализируйте справочник «Наборы дополнительных реквизитов и сведений». Часто зависания связаны с тем, что реквизиты не распределены по видам номенклатуры, а свалены в одну кучу «Для всей номенклатуры». Разделение свойств по наборам значительно облегчает работу системы компоновки данных.