К статье
Практический материал

Разработка и Конфигурация · 11 мин

1С: как использовать БСП на практике

Как использовать БСП в 1С: подключение библиотеки стандартных подсистем, обновление конфигурации, работа с типовыми подсистемами и типичные ошибки внедрения.

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

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

Ниже разобрано, что входит в состав БСП, как подключить библиотеку к конфигурации, как пользоваться её подсистемами в коде и как обновлять библиотеку без потери доработок.

Что входит в состав БСП и зачем она нужна

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

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

Как получить и подключить библиотеку к конфигурации

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

Подключение выполняется через механизм «Сравнить и объединить с конфигурацией из файла» в конфигураторе. Загружать библиотеку целиком обычно не требуется: выбирают только нужные подсистемы вместе с обязательными базовыми объектами. Минимальный набор включает подсистему «Базовая функциональность» — без неё остальные подсистемы работать не будут.

Порядок подключения подсистемы
  1. 1
    Сделайте резервную копию информационной базы и выгрузку конфигурации в файл
  2. 2
    Откройте конфигуратор, меню «Конфигурация» → «Сравнить, объединить с конфигурацией из файла», укажите файл поставки БСП
  3. 3
    Снимите все галочки, затем отметьте «Базовую функциональность» и нужные подсистемы — конфигуратор сам подтянет зависимые объекты
  4. 4
    Выполните объединение, разрешите поставку на поддержке и обновите конфигурацию базы данных
  5. 5
    Запустите базу в режиме предприятия — отработают обработчики обновления БСП, заполнятся служебные данные

Как пользоваться подсистемами в коде

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

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

bsl
// Пример: получение текущего пользователя через API БСП
ТекущийПользователь = Пользователи.ТекущийПользователь();

// Пример: проверка наличия подсистемы перед вызовом
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда
	МодульРаботаСФайлами = ОбщегоНазначения.ОбщийМодуль("РаботаСФайлами");
	// дальнейшие вызовы
КонецЕсли;

Типовые сценарии использования

Внедрение печатных форм через подсистему «Печать»

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

Администрирование пользователей и прав

Подсистема «Пользователи» вместе с «Управлением доступом» даёт готовый справочник пользователей, группы доступа и профили. Разработчику нужно лишь создать роли для своих объектов и включить их в профили групп доступа — интерфейс настройки прав уже реализован библиотекой. Это избавляет от самостоятельной разработки разграничения доступа на уровне записей.

Обновление версии собственной конфигурации

Подсистема «Обновление версии программы» позволяет выполнять обработчики при переходе между версиями: заполнять новые реквизиты, переносить данные, включать функциональные опции. Обработчики описываются в модуле ОбновлениеИнформационнойБазыПереопределяемый с указанием версии, на которую они рассчитаны.

Как обновлять БСП без потери доработок

Обновление библиотеки выполняется тем же сравнением и объединением, что и первоначальное внедрение: новая версия поставки накладывается на текущую конфигурацию. Основная сложность — объекты, которые разработчик изменил напрямую. Именно поэтому все доработки следует держать в переопределяемых модулях и собственных объектах, а типовые модули БСП оставлять нетронутыми.

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

Типичные ошибки при работе с БСП

Самая частая проблема — неполный перенос подсистемы. Разработчик отмечает при объединении только видимые объекты, забывая роли, подписки на события и определяемые типы, и получает ошибки при запуске. Правильный подход — доверить конфигуратору автоматический подбор зависимостей и свериться с инструкцией по внедрению конкретной подсистемы из документации БСП.

Вторая группа ошибок связана с обходом программного интерфейса: прямые запросы к служебным справочникам, изменение типовых модулей, копирование кода библиотеки в свои объекты. Всё это создаёт проблемы при обновлении. Третья типичная ошибка — игнорирование версии платформы: БСП активно использует новые возможности платформы, и на старой версии часть подсистем просто не заработает.

Типичные ошибки
01
Перенос подсистемы без базовой функциональности и зависимых объектов — ошибки компиляции модулей при запуске
02
Правка типовых модулей БСП вместо использования переопределяемых — доработки теряются при обновлении
03
Обновление БСП без тестовой базы — риск остановить работу пользователей из-за конфликтов объединения
04
Вызов служебных модулей напрямую — код ломается после очередного обновления библиотеки

Как проверить, что внедрение прошло успешно

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

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

Контрольные точки

Как проверить результат

Запуск базы после объединения
Норма

Обработчики обновления завершились, статус обновления — успешный

Тревожный признак

Ошибки в обработчиках, сообщения о невозможности обновления

Наличие подсистемы в интерфейсе
Норма

Раздел или команды видны пользователю с нужными ролями

Тревожный признак

Подсистема есть в конфигураторе, но недоступна в режиме предприятия

Журнал регистрации
Норма

Нет ошибок обращения к объектам БСП

Тревожный признак

Ошибки «Объект не найден», исключения в общих модулях библиотеки

Часто задаваемые вопросы

Можно ли использовать БСП в конфигурации, написанной с нуля?

Да, это один из основных сценариев. Библиотека встраивается в любую конфигурацию через сравнение и объединение. Начинать нужно с подсистемы «Базовая функциональность», затем подключать остальные по мере необходимости. Учтите, что БСП ориентирована на управляемое приложение.

Обязательно ли внедрять все подсистемы БСП?

Нет. Внедряют только те подсистемы, функциональность которых реально нужна. Лишние подсистемы увеличивают объём конфигурации, время обновления и количество служебных объектов в базе. Однако зависимости между подсистемами учитывать нужно — конфигуратор при объединении показывает их автоматически.

Что делать, если нужной функции в БСП нет?

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

Как понять, какая версия БСП внедрена в конфигурацию?

Версия библиотеки хранится в константах служебных данных и отображается в типовых конфигурациях в разделе «Администрирование» → «Обслуживание» либо в информации о программе. Также версию можно посмотреть в параметрах общего модуля ОбновлениеИнформационнойБазы.

Можно ли изменять объекты БСП под свои нужды?

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

Подходит ли БСП для небольших простых конфигураций?

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

Итог

Что важно запомнить

БСП внедряют через сравнение и объединение, начиная с базовой функциональности; в коде используют только программные интерфейсы и переопределяемые модули; обновляют библиотеку после тестирования на копии базы. При таком подходе типовые механизмы работают стабильно, а обновления проходят без потери доработок.