Куда исчезла функция НайтиСсылки общего модуля ВариантыОтчетов и чем её заменить в БСП 3.1

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

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

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

1. Замена функции НайтиСсылки на НайтиВариантыОтчетов

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

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


// Возвращает список вариантов отчетов согласно заданным параметрам.
// При поиске по подстроке СтрокаПоиска также подсвечивает найденные места в названиях и описаниях отчетов.
Функция НайтиВариантыОтчетов(Знач ПараметрыПоиска, Знач ПолучатьИтоговуюТаблицу = Ложь, Знач ПолучатьПодсветку = Ложь) Экспорт

Рассмотрим подробнее ключевые параметры этой функции:

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

2. Куда пропала процедура ВывестиЭлементыНастройки?

Второй частый вопрос касается исчезновения процедуры ВывестиЭлементыНастройки из общего модуля настроек отчетов. Она отвечала за программное размещение элементов управления (быстрых настроек) на форме отчета.

В БСП 3.1 концепция вывода пользовательских настроек компоновки данных была кардинально переработана. На смену старой процедуре пришла новая — ВывестиСтилизованныеЭлементыФормыНастроек:


// Вывод стилизованных элементов формы настроек.
Процедура ВывестиСтилизованныеЭлементыФормыНастроек(Форма, ЭлементыНастроек, ОписаниеНастроек, ИменаРеквизитов, ВидыЭлементов)

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

  1. Автоматизация и инкапсуляция: В новой версии БСП механизмы компоновки данных стали полностью автоматизированными. Система самостоятельно определяет, как отобразить элементы настроек (например, преобразует простые булевы флаги в удобные переключатели, формирует интеллектуальные селекторы периодов и списков). Ручной вызов этих процедур из внешнего кода больше не требуется.
  2. Безопасность обновлений: Сокрытие ключевого слова Экспорт у служебных процедур интерфейса защищает конфигурацию от "сломанных" связей при последующих обновлениях. Разработчики БСП могут свободно менять внутреннюю логику вывода элементов UI, будучи уверенными, что это не нарушит работоспособность сторонних доработок, которые могли бы завязаться на экспортный метод.

3. Рефакторинг «Универсального отчета» и удаление функций БыстрыеНастройки...

Ранее «Универсальный отчет» содержал большое количество собственного, локального кода для работы с быстрыми настройками (процедуры БыстрыеНастройкиДозаполнитьПараметры, БыстрыеНастройкиЗагрузитьНастройкиВКомпоновщик, БыстрыеНастройкиУдалитьСтарыеЭлементыИКоманды и др.).

В БСП 3.1 разработчики полностью устранили это дублирование. «Универсальный отчет» был окончательно интегрирован в общую экосистему подсистемы «Варианты отчетов». Весь уникальный код генерации настроек был удален за ненадобностью, поскольку теперь отчет использует унифицированные механизмы платформы.

Давайте посмотрим на практический пример изменений в коде формы «Универсального отчета». Проанализируем, как изменилась обработка выбора настроек пользователем:

Было в релизе 3.0.70:


// Вызов устаревшей локальной процедуры заполнения на клиенте
БыстрыеНастройкиЗаполнитьКлиент(Результат);

Стало в релизе 3.0.71:


// Использование стандартизированного общего механизма БСП
ОбновитьЭлементыФормыНастроек(Результат);

Процедура ОбновитьЭлементыФормыНастроек обращается к общему серверному механизму, который централизованно перестраивает форму отчета, обновляет значения параметров СКД и перерисовывает элементы управления в соответствии с текущей схемой компоновки.

Резюме и рекомендации по миграции

Если вы занимаетесь адаптацией нетиповых отчетов или переносите доработки из старых релизов конфигураций на новые версии БСП, придерживайтесь следующего алгоритма:

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