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