Разработка и Конфигурация · 9 мин
1С библиотека: как работать с библиотеками стандартных подсистем
Как работать с библиотеками в 1С: подключение БСП, использование общих модулей, обновление библиотеки стандартных подсистем, типичные ошибки и проверка результата.
Под «библиотекой» в контексте 1С чаще всего понимают Библиотеку стандартных подсистем (БСП) — набор готовых общих модулей, ролей, подсистем и объектов, которые фирма «1С» поставляет разработчикам для типовых задач: работа с файлами, обмен данными, печать, версионирование, напоминания, контактная информация. Реже термин означает внешние компоненты и файлы поставки конфигураций. В обоих случаях принцип один: библиотека — это переиспользуемый код, который не нужно писать с нуля, но нужно правильно подключить и сопровождать.
Работа с библиотекой строится вокруг трёх задач: внедрить её в конфигурацию, вызывать её функции из своего кода и безопасно обновлять до новых версий. Ошибки на любом из этих этапов приводят к конфликтам при обновлении конфигурации, битым ссылкам в подсистемах и доработкам, которые сложно сопровождать.
Материал ориентирован на разработчиков и внедренцев, работающих с конфигурациями на управляемых формах (Управление торговлей, ERP, Бухгалтерия, ЗУП), а также на тех, кто разрабатывает собственные решения и хочет использовать БСП как каркас.
Что такое библиотека в 1С и какие виды бывают
Термин «библиотека» в экосистеме 1С неформальный и покрывает несколько разных сущностей. Прежде чем что-то подключать, определите, о чём именно идёт речь в вашей задаче.
Основные варианты: Библиотека стандартных подсистем (БСП) — официальный каркас от фирмы «1С»; библиотека подключаемого оборудования (БПО) — драйверы и API для касс, сканеров, весов; внешние компоненты (Native API, COM) — бинарные модули для специфических задач; наконец, просто наборы общих модулей, которые команда оформляет как внутреннюю библиотеку проекта.
| Вид библиотеки | Что даёт | Как подключается |
|---|---|---|
| БСП | Подсистемы: пользователи, файлы, печать, обмен | Объединение конфигураций из .cf |
| БПО | API торгового оборудования | Объединение + установка драйверов |
| Внешние компоненты | Низкоуровневые функции (шрифты, криптография) | ПодключитьВнешнююКомпоненту |
| Собственные общие модули | Переиспользуемый код проекта | Создание общих модулей в конфигураторе |
Как подключить БСП к своей конфигурации
Подключение БСП выполняется через механизм сравнения и объединения конфигураций. Потребуется файл поставки библиотеки нужной версии — его загружают с портала 1С по подписке ИТС. Версия БСП должна быть совместима с версией платформы: эта информация указана в документации к поставке.
Перед объединением обязательно сделайте выгрузку информационной базы (.dt) или хотя бы конфигурации (.cf). Объединение затрагивает сотни объектов, и откатить его без копии невозможно.
- 1Сделайте резервную копию: выгрузите базу в .dt через конфигуратор
- 2Откройте Конфигурация → Сравнить, объединить с конфигурацией из файла и выберите .cf библиотеки
- 3Отметьте нужные подсистемы и объекты; обязательно включите базовые подсистемы, от которых зависят остальные
- 4Выполните объединение, затем обновите конфигурацию базы данных (F7)
- 5Назначьте права: добавьте роли библиотеки нужным профилям пользователей
- 6Запустите базу в режиме предприятия и проверьте первоначальное заполнение подсистем
После объединения часть подсистем требует начальной настройки в режиме предприятия: например, подсистема пользователей создаёт первого администратора, а подсистема файлов требует указать тома хранения, если файлы не хранятся в базе.
Как вызывать функции библиотеки из своего кода
Основная точка входа в БСП — общие модули с постфиксами, обозначающими контекст: без постфикса (сервер), «Клиент», «ВызовСервера», «КлиентСервер», «Переопределяемый». Например, ОбщегоНазначения — серверные функции, ОбщегоНазначенияКлиент — клиентские, а ОбщегоНазначенияПереопределяемый — место, где библиотека ожидает вашу настройку.
Типовой вызов выглядит так:
// Получить значение реквизита без чтения всего объекта
Артикул = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(НоменклатураСсылка, "Артикул");
// Сообщить пользователю с привязкой к полю формы
ОбщегоНазначения.СообщитьПользователю("Не заполнен склад", , "Склад", "Объект");
Модули с постфиксом «Переопределяемый» специально предназначены для изменения: библиотека вызывает их процедуры в ключевых точках (при заполнении, перед записью, при определении настроек). Именно туда нужно вносить свою логику — тогда обновление БСП не затрёт ваши доработки.
Как обновлять библиотеку без потери доработок
Обновление БСП делается тем же механизмом сравнения и объединения, но с новой версией файла поставки. Главное правило: чем меньше вы меняли код библиотеки напрямую, тем проще обновление. Доработки в переопределяемых модулях и собственных объектах при объединении не конфликтуют, потому что новая версия БСП их не содержит.
Порядок безопасного обновления: зафиксируйте текущую версию БСП (она указана в константе или в описании конфигурации), получите файл новой версии, выполните объединение на копии базы, разберите конфликты вручную, обновите конфигурацию БД и прогоните обработчики обновления данных — БСП выполняет их автоматически при первом запуске, и в журнале регистрации видно, завершились ли они успешно.
Как проверить результат обновления
Совпадает с версией поставки
Старая версия — обновление не применилось
Обработчики обновления завершены без ошибок
Есть записи об ошибках обновления данных
Формы открываются, подсистемы доступны
Ошибки компиляции, пустые разделы
Переопределяемые модули содержат ваш код
Доработки затёрты — значит, они были не в переопределяемых модулях
Типичные ошибки при работе с библиотекой
Большинство проблем с БСП возникают не из-за самой библиотеки, а из-за нарушения правил её сопровождения. Ниже — ошибки, которые встречаются чаще всего.
Отдельная ошибка — копирование кода из БСП в свои модули «чтобы не зависеть от библиотеки». Такой код быстро устаревает, не получает исправлений и дублирует функциональность. Если зависимость от БСП нежелательна, лучше написать собственную реализацию, чем копировать чужую.
Когда БСП не нужна и что использовать вместо
БСП весит заметно: сотни объектов метаданных, обязательные подсистемы, требования к платформе. Для небольшой самописной конфигурации с парой справочников и документов полное подключение библиотеки избыточно — вы получите сложность сопровождения без реальной выгоды.
Как выбрать действие
Если вы работаете в типовой конфигурации, библиотека уже там — изучите состав её общих модулей через конфигуратор, прежде чем писать свои функции. Велика вероятность, что нужная процедура уже существует: работа со строками, датами, файлами, сериализация, проверка реквизитов.
Что важно запомнить
БСП подключается и обновляется через сравнение-объединение конфигураций, всегда на копии базы. Свою логику размещайте в переопределяемых и собственных модулях, код библиотеки не правьте. После обновления проверяйте версию, журнал регистрации и работу подсистем.
Частые вопросы
Где взять файл поставки БСП?
Дистрибутив библиотеки публикуется на портале 1С в разделе обновлений программ и доступен по действующей подписке ИТС. Внутри поставки — файл конфигурации .cf и документация по внедрению.
Можно ли подключить только одну подсистему БСП, например «Работа с файлами»?
Да, но вместе с ней придётся включить базовые подсистемы, от которых она зависит: стандартные роли, общие модули ядра, подсистему пользователей. Документация к БСП содержит карту зависимостей для каждой подсистемы.
Что делать, если после обновления БСП перестали открываться формы?
Сначала проверьте журнал регистрации: чаще всего не завершились обработчики обновления данных из-за ошибки. Запустите базу под пользователем с полными правами, дождитесь окончания обновления. Если ошибка в коде — проверьте, не вызываете ли вы переименованные или удалённые процедуры библиотеки.
Как узнать версию БСП в своей базе?
В типовых конфигурациях версия отображается в разделе «Администрирование» — «Обслуживание» или в информации о программе. Программно её можно получить через функцию обновления информационной базы, возвращающую версию подсистемы.
Поддерживает ли БСП расширения конфигурации?
Да, и это рекомендуемый способ доработки: собственные модули и переопределение обработчиков выносите в расширение. Тогда обновление как библиотеки, так и типовой конфигурации проходит без разбора конфликтов с вашим кодом.