Почему не сохраняются настройки варианта отчета для других пользователей при использовании собственной формы?

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

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

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

Причина возникновения проблемы

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

Шаг 1. Настройка свойств объекта в Конфигураторе

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

  1. Откроем окно свойств внешнего отчета в конфигураторе.
  2. Найдем свойство Хранилище вариантов.
  3. Убедимся, что там выбрано значение ХранилищеВариантовОтчетов. Это стандартное хранилище БСП, которое позволяет управлять видимостью вариантов для разных пользователей. Если оставить поле пустым, будет использоваться стандартное платформенное хранилище, которое может конфликтовать с логикой прав доступа БСП.
  4. Проверим свойство Имя отчета. Оно должно быть уникальным. Если в базе уже есть отчет с таким же именем, настройки могут пересекаться.

Шаг 2. Настройка параметров в схеме компоновки данных (СКД)

Рассмотрим настройки самого параметра (в нашем случае — списка счетов). Чтобы параметр сохранялся в варианте и был доступен другим пользователям, он должен быть правильно оформлен в СКД:

  1. Перейдем на закладку Параметры в СКД.
  2. Убедимся, что у нужного параметра установлен флаг Включать в пользовательские настройки.
  3. Установим режим редактирования в значение Независимый. Это гарантирует, что при смене варианта настройки будут заменяться полностью.

Шаг 3. Программная интеграция формы с подсистемой БСП

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

В модуле формы отчета в процедуре ПриСозданииНаСервере обязательно нужно инициализировать работу с вариантами:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    // Инициализация механизмов БСП для работы с вариантами
    ПараметрыПодсистемы = ВариантыОтчетов.ПараметрыПанелиОтчетов();
    ВариантыОтчетов.ПриСозданииНаСервере(ЭтаФорма, Параметры);
    
КонецПроцедуры

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


&НаСервере
Процедура ПередЗагрузкойВариантаНаСервере(Настройки)
    
    // Передаем управление подсистеме вариантов отчетов для корректного применения настроек СКД
    ВариантыОтчетов.ПередЗагрузкойВариантаНаСервере(ЭтаФорма, Настройки);
    
КонецПроцедуры

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

Шаг 4. Регистрация внешнего отчета

Для корректной работы механизмов совместного использования вариантов крайне желательно, чтобы отчет не просто открывался через меню «Файл — Открыть», а был зарегистрирован в справочнике Дополнительные отчеты и обработки.

Посмотрим на причины этого требования:

Резюме

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

  1. Используйте ХранилищеВариантовОтчетов в свойствах метаданных.
  2. Обязательно вызывайте ВариантыОтчетов.ПриСозданииНаСервере в модуле формы.
  3. Подключайте стандартные обработчики ПередЗагрузкойВариантаНаСервере и ПриЗагрузкеВариантаНаСервере, делегируя выполнение процедурам модуля ВариантыОтчетов.
  4. Проверьте, что все нужные параметры отмечены как Пользовательские настройки в СКД.

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

← На главную