Откуда берутся значения при установке стандартных настроек в СКД?

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

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

1. Традиционный механизм: Настройки в Конфигураторе

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

Однако, как справедливо заметил автор темы, часто в конфигураторе эти поля пусты. В этом случае вступает в силу программная логика или механизмы БСП.

2. Подсистема «Варианты отчетов» (БСП)

Если ваша конфигурация построена на базе Библиотеки стандартных подсистем (БСП), то логика «стандартных настроек» значительно расширяется. В типовых решениях (ERP, УТ 11, БП 3.0) отчеты чаще всего открываются в общих формах. Разберем, что происходит в этот момент:

  1. Справочник «Варианты отчетов»: Для каждого отчета в системе может быть создан предопределенный вариант. Настройки этого варианта хранятся не в самой схеме СКД, а в базе данных.
  2. Приоритет настроек: Когда пользователь нажимает «Установить стандартные настройки», БСП может обращаться к этому справочнику и подтягивать актуальный XML с настройками, который был сохранен разработчиками или администраторами как «эталонный».

Чтобы проверить эту версию, стоит зайти в раздел «Администрирование» — «Печатные формы, отчеты и обработки» — «Варианты отчетов» и посмотреть, какие настройки заданы для проблемного отчета там.

3. Автоматическое заполнение из персональных настроек

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

Если в СКД есть параметр с именем Организация, система автоматически пытается подставить туда значение из «Персональных настроек пользователя» (хранилище общих настроек). Проанализируем ситуацию: в одном отчете поле «Магазин» заполняется, а в другом — нет. Скорее всего, это связано с тем, что в одном отчете имя параметра совпадает с ожидаемым программным кодом БСП, а в другом — используется другое имя (например, ТорговаяТочка).

4. Программные обработчики в модулях

Если в форме отчета нет явного кода, это не значит, что его не существует. Рассмотрим основные точки расширения, где разработчики обычно переопределяют стандартное поведение:

Модуль объекта отчета: Процедура ПриКомпоновкеРезультата. Здесь код может программно модифицировать КомпоновщикНастроек непосредственно перед выводом данных. Хотя кнопка «Стандартные настройки» обычно работает до этого момента, иногда логика инициализации выносится в отдельные процедуры модуля.

Модуль формы отчета: Обратите внимание на событие ПередЗагрузкойНастроекВКомпоновщик или ПриЗагрузкеВариантаНаСервере. Посмотрим на пример программной установки настроек:


&НаСервере
Процедура ПередЗагрузкойНастроекВКомпоновщик(Контекст, НовыеНастройки)
    // Здесь разработчик может программно подставить значения
    // в объект НовыеНастройки до того, как они попадут в компоновщик
    Для Каждого ЭлементОтбора Из НовыеНастройки.Отбор.Элементы Цикл
        Если ТипЗнч(ЭлементОтбора) = Тип("ЭлементОтбораКомпоновкиДанных") 
             И ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Магазин") Тогда
             ЭлементОтбора.ПравоеЗначение = ПолучитьДефолтныйМагазин();
             ЭлементОтбора.Использование = Истина;
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры

5. Использование общих форм (ОбщаяФормаОтчета)

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

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

Именно в этих общих модулях скрыта магия заполнения «Магазинов» и «Организаций». Система «склеивает» настройки из XML схемы, предопределенные настройки из расширений и текущие значения пользователя.

6. Настройки внутри параметров схемы

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

7. Как найти «виновника»?

Чтобы окончательно выяснить, откуда берутся данные, выполним следующие шаги:

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

Таким образом, механизм «Стандартных настроек» в 1С — это многослойная структура. Если данных нет в визуальном конструкторе, они либо подтягиваются программно из профиля пользователя средствами БСП, либо заданы на уровне параметров самой схемы, либо жестко прописаны в общих формах типовой конфигурации.

← На главную