Как реализовать сохранение параметров отчета для пользователя в 1С:Предприятие?

Программист Промышленность, строительство и АПК
← На главную

При разработке отчетов в 1С одной из важнейших задач повышения удобства работы пользователя (UX) является сохранение настроек. Пользователю крайне неудобно каждый раз при открытии отчета заново выбирать организацию, подразделение или период. В этой статье мы подробно разберем, как реализовать автоматическое сохранение параметров для каждого пользователя, рассмотрим особенности внешних отчетов и проанализируем различные подходы — от стандартных свойств формы до программного управления через хранилища настроек.

Способ 1: Использование стандартных свойств формы (Обычные формы)

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

  1. Откройте форму вашего отчета в конфигураторе.
  2. Перейдите в Свойства формы.
  3. Найдите флаг Сохранять значения и установите его.
  4. После установки флага станет доступна кнопка в поле Выбираемые настройки. Нажмите на нее.
  5. В открывшемся списке отметьте галочками те реквизиты формы, которые должны запоминаться (например, ДатаНачала, ДатаКонца, Организация).
  6. Также убедитесь, что установлен флаг Восстанавливать значения при открытии.

Важный нюанс: Этот механизм сохраняет данные в локальный файл настроек пользователя (кеш на компьютере). Если пользователь зайдет в систему с другого рабочего места, настройки могут не восстановиться. Для централизованного хранения в базе данных используются другие методы.

Способ 2: Использование Хранилища настроек (Управляемые формы)

В современных конфигурациях на управляемых формах (ERP, КА, БП 3.0) работа с настройками строится иначе. Платформа предоставляет объект ХранилищеОбщихНастроек. Рассмотрим ситуацию, когда нам нужно программно сохранить структуру параметров.

Для программного сохранения настроек при закрытии формы мы можем использовать следующий код:


Процедура ПриЗакрытии(ЗавершениеРаботы)
    СтруктураНастроек = Новый Структура;
    СтруктураНастроек.Вставить("Организация", Объект.Организация);
    СтруктураНастроек.Вставить("Период", Объект.Период);
    
    // Сохраняем настройки в системное хранилище
    ХранилищеОбщихНастроек.Сохранить("МойВнешнийОтчет", "НастройкиПользователя", СтруктураНастроек);
КонецПроцедуры

А в процедуре ПриСозданииНаСервере мы восстановим эти данные:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Настройки = ХранилищеОбщихНастроек.Загрузить("МойВнешнийОтчет", "НастройкиПользователя");
    Если Настройки <> Неопределено Тогда
        Объект.Организация = Настройки.Организация;
        Объект.Период = Настройки.Период;
    КонецЕсли;
КонецПроцедуры

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

Способ 3: Механизмы СКД (Система компоновки данных)

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

Разберем, как включить параметры в пользовательские настройки:

  1. В схеме компоновки данных перейдите на закладку Параметры.
  2. Для каждого параметра (например, Период) найдите колонку Пользовательские настройки (иконка с ключом).
  3. Установите флаг Включать в пользовательские настройки.
  4. Выберите режим редактирования (Обычный или Быстрый доступ).

Теперь при нажатии кнопки "Сохранить вариант" или при автоматическом сохранении (если настроено в свойствах формы отчета через ХранилищеВариантов), 1С сама позаботится о сохранении всех отмеченных параметров.

Особенности работы с внешними отчетами (.erf)

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

Платформа идентифицирует настройки по внутреннему имени объекта и пути к файлу. Если вы используете внешнюю обработку или отчет, рекомендуется:

Почему не работает самописный код сохранения?

В обсуждениях часто встречается ошибка, когда разработчики пытаются передать реквизиты в универсальную процедуру для восстановления, но значения не меняются. Рассмотрим пример неправильного подхода:


// ОШИБКА: Значение передается по значению, а не по ссылке
Процедура УстановитьЗначение(СохраненноеЗначение, Значение)
    Если СохраненноеЗначение <> Неопределено Тогда
        Значение = СохраненноеЗначение; // Это изменит только локальную переменную Значение
    КонецЕсли;
КонецПроцедуры

В 1С при передаче простых типов (Число, Дата, Строка) в процедуру, создается их копия. Чтобы изменить реквизит формы, необходимо обращаться к нему напрямую или использовать объектную технику (например, передавать структуру или сам ЭтотОбъект).

Работа с регистром сведений "Сохраненные настройки"

В типовых решениях на базе обычных форм (УПП, УСО, БП 2.0) существует специальный регистр сведений СохраненныеНастройки. Если вы хотите, чтобы ваш отчет вел себя "как типовой", вы можете интегрировать его в этот механизм. Для этого в модуле объекта отчета должны быть реализованы экспортные процедуры, которые вызывают типовые функции глобальных модулей, такие как РаботаСДиалогами.СохранитьНастройкиОтчета.

Однако для простых внешних отчетов использование свойства формы Сохранять значения остается самым быстрым и предпочтительным вариантом.

Подведем итог: Для быстрого результата используйте свойства формы. Для профессиональной разработки в современных конфигурациях — ХранилищеОбщихНастроек и возможности СКД. При работе с внешними отчетами всегда помните об уникальности ключей сохранения, чтобы настройки не перемешивались между разными версиями файла.

← На главную