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