Библиотека стандартных подсистем на практике: внедрение, доработка и обновление без потерь
Содержание
БСП (Библиотека стандартных подсистем) в 1С используют так: встраивают в конфигурацию только нужные подсистемы через помощник внедрения и режим «Сравнить, объединить с конфигурацией из файла», а свою логику пишут в переопределяемых модулях и модулях менеджеров. Код самой библиотеки не правят. Тогда следующее обновление БСП ставится за час, а не за неделю.
Библиотека даёт готовые механизмы, которые нужны почти любой учётной системе: пользователей и права, печать, файлы, дополнительные реквизиты, внешние обработки, рассылку отчётов, обновление базы. На ней построены БП 3.0, ЗУП 3.1, УТ 11 и ERP. Для бизнеса это значит меньше своего кода и быструю автоматизацию типовых задач.
Что даёт БСП и когда она нужна
БСП — это конфигурация-библиотека от фирмы 1С. Она не работает сама по себе как учётная программа: её подсистемы встраивают в прикладное решение. В комплект поставки входят сама библиотека, демонстрационная конфигурация с примерами и документация для разработчика.
Когда библиотека нужна:
- 🧩 вы пишете собственную конфигурацию с нуля и не хотите заново изобретать права, печать и обновление;
- 🔄 у вас старая самописная база, которую нужно перевести на управляемые формы и современные механизмы;
- 🏢 нужна совместимость с типовыми решениями: внешние обработки и печатные формы, написанные под БСП, подключаются одинаково везде.
Когда внедрять ничего не нужно: в типовых конфигурациях (БП, ЗУП, УТ, УНФ, ERP) библиотека уже встроена. Там её механизмами пользуются напрямую, а доработки делают расширениями.
Демонстрационная конфигурация БСП — лучший справочник. Разверните её в отдельной базе: почти для каждой подсистемы там есть пример подключения к документу или справочнику.
Версии библиотеки: 2.4, 3.0 и 3.1
Версии БСП нумеруются как 3.1.x.y: первые цифры — поколение, дальше — номер редакции и сборки. Каждая сборка требует платформу с номером не ниже указанного в описании выпуска.
| Поколение | Для чего | Что учитывать |
|---|---|---|
| 2.x (последняя ветка 2.4) | старые конфигурации на ранних релизах 8.3 | не развивается, новые подсистемы и исправления не выходят |
| 3.0 | промежуточное поколение | заметная переработка программного интерфейса, часть методов 2.x объявлена устаревшей |
| 3.1 | текущая ветка | на ней работают актуальные типовые конфигурации, обновления выходят регулярно |
Для нового проекта берите актуальную сборку 3.1. Переход с 2.x на 3.1 — это отдельный проект: придётся сравнить и объединить конфигурацию, а потом заменить вызовы устаревших методов.
Как узнать, какая версия стоит в вашей конфигурации: в Конфигураторе откройте общий модуль ОбновлениеИнформационнойБазыБСП, процедуру ПриДобавленииПодсистемы. Номер записан в строке Описание.Версия.
Устаревшие методы библиотека не удаляет сразу. Они собраны в области УстаревшиеПроцедурыИФункции модулей. Если ваш код вызывает что-то оттуда, это первый кандидат на правку перед переходом на новую версию.
Как подключить БСП к своей конфигурации 1С
Подключение делают в Конфигураторе на копии базы. Процедура одна и та же для новой и для существующей конфигурации.
Шаг 1. Выберите подсистемы в помощнике внедрения
В поставку БСП входит обработка «Первое внедрение БСП». Откройте её в режиме «1С:Предприятие» в демонстрационной базе или в базе с конфигурацией библиотеки.
- Отметьте нужные подсистемы, например «Печать», «Пользователи», «Дополнительные отчёты и обработки».
- Помощник сам добавит обязательные зависимости. «Базовая функциональность» нужна всегда.
- Сохраните файл настроек сравнения и объединения.
Шаг 2. Объедините конфигурации
- В Конфигураторе выберите
Конфигурация → Сравнить, объединить с конфигурацией из файлаи укажите.cfбиблиотеки. - В окне сравнения загрузите файл настроек из помощника. Галочки встанут только на нужных объектах.
- Для объектов с одинаковыми именами в вашей конфигурации выберите режим объединения вручную. Чаще всего это общие модули, роли и свойства корня конфигурации.
- Выполните объединение и обновите конфигурацию базы данных.
Не снимайте галочки с объектов, которые помощник отметил как зависимые: конфигурация не соберётся или упадёт при первом запуске.
Шаг 3. Доделайте первичную настройку
- 📝 Создайте свой модуль обновления, например
ОбновлениеИнформационнойБазыМояКонфигурация, по образцу из демобазы, и укажите в нём имя и версию вашей конфигурации. - 📌 Зарегистрируйте его в общем модуле
ПодсистемыКонфигурацииПереопределяемый, процедураПриДобавленииПодсистем. - 🔐 Назначьте пользователю-администратору роль полных прав из состава БСП.
- ✅ Запустите базу в режиме «1С:Предприятие». Библиотека выполнит первичное заполнение данных.
Дальше подключение идёт по подсистемам. Каждая требует своих шагов: включить объект в определяемый тип, добавить вызов в форму, заполнить переопределяемый модуль. Порядок для каждой подсистемы описан в документации к сборке.
Основные подсистемы БСП для бизнес-задач
Подсистем в библиотеке несколько десятков. Ниже те, что чаще всего дают быстрый результат.
| Подсистема | Какую задачу решает |
|---|---|
| Пользователи | список пользователей, вход, связь с учётными записями Windows |
| Управление доступом | профили групп доступа, ограничение на уровне записей (по организациям, складам) |
| Печать | команды печати в формах, табличные документы, макеты Word и OpenOffice |
| Дополнительные отчёты и обработки | подключение внешних .epf и .erf без изменения конфигурации |
| Свойства | дополнительные реквизиты и сведения, которые пользователь добавляет сам |
| Работа с файлами | прикреплённые файлы, сканы, версии файлов |
| Варианты отчётов и рассылка | сохранённые настройки отчётов, рассылка по почте по расписанию |
| Бизнес-процессы и задачи | согласования, поручения, контроль исполнения |
| Даты запрета изменения | закрытие периода, чтобы никто не правил прошлые месяцы |
| Обновление версии ИБ | обработчики обновления данных при переходе на новую версию |
| Поиск и удаление дублей, удаление помеченных | чистка справочников и базы |
Минимальный набор для небольшой самописной базы обычно такой: базовая функциональность, пользователи, управление доступом, печать, дополнительные отчёты и обработки, обновление версии ИБ.
Доработки под бизнес: три рабочих примера
Главное правило доработки — писать код в программном интерфейсе вашей конфигурации, а не в модулях БСП. Библиотека для этого даёт переопределяемые модули с суффиксом Переопределяемый и процедуры в модулях менеджеров объектов.
Пример 1. Своя печатная форма документа
- Добавьте документ в список объектов с командами печати: процедура
ПриОпределенииОбъектовСКомандамиПечатиобщего модуляУправлениеПечатьюПереопределяемый. - В модуле менеджера документа опишите команду в процедуре
ДобавитьКомандыПечати(КомандыПечати). - Сформируйте табличный документ в процедуре
Печатьтого же модуля.
Кнопка «Печать» в форме документа и списка появится сама. Пользователи смогут менять макет в режиме предприятия, без программиста.
Пример 2. Внешняя обработка для отдела продаж
Обработку для разовой задачи (загрузка прайса, массовая простановка цен) удобно держать внешней. Чтобы подсистема «Дополнительные отчёты и обработки» её приняла, в модуле объекта нужна функция регистрации:
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
ПараметрыРегистрации.Версия = "1.0";
Команда = ПараметрыРегистрации.Команды.Добавить();
Команда.Представление = "Обновить цены из прайса";
Команда.Идентификатор = "ОбновитьЦены";
Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
Возврат ПараметрыРегистрации;
КонецФункции
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды) Экспорт
Если ИдентификаторКоманды = "ОбновитьЦены" Тогда
// здесь логика обработки
КонецЕсли;
КонецПроцедуры
После этого администратор добавляет файл в справочник дополнительных обработок, настраивает размещение в разделах и круг пользователей.
Пример 3. Новые поля без программиста
Подсистема «Свойства» позволяет добавить реквизит «Канал привлечения» в карточку контрагента прямо в режиме предприятия. Поле можно выводить в списках, отборах и отчётах. Программист нужен один раз: подключить объект к подсистеме по документации.
Пример 4. Код, который не ломается без подсистемы
Если ваша доработка должна работать и в базах, где подсистема не внедрена, не вызывайте её модуль напрямую. Проверьте наличие подсистемы и получите модуль по имени:
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда
МодульУправлениеПечатью = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатью");
// вызовы методов модуля
КонецЕсли;
Так пишут код сами разработчики библиотеки. Конфигурация собирается и без подсистемы «Печать», а при её наличии доработка работает полностью.
В типовых конфигурациях те же доработки делайте расширением конфигурации. Тогда снимать типовую с поддержки не придётся, а обновления будут ставиться в обычном режиме.
Как не потерять скорость работы базы
БСП сама по себе базу не тормозит. Медленно работает неправильное использование её механизмов.
- 🐢 Обращение «через точку» к реквизитам ссылки в цикле читает объект целиком. Используйте
ОбщегоНазначения.ЗначениеРеквизитаОбъектаилиОбщегоНазначения.ЗначенияРеквизитовОбъекта: они читают только нужные поля одним запросом. - ⏳ Долгие операции в основном потоке вешают интерфейс. Формирование тяжёлых отчётов и обработок запускайте через общий модуль
ДлительныеОперации, в фоновом задании. - 🔒 Ограничение доступа на уровне записей включайте только там, где оно нужно бизнесу. Каждый вид доступа добавляет условия ко всем запросам по объекту.
- 📚 Версионирование объектов хранит копию документа при каждой записи. Включайте его выборочно, иначе таблица версий растёт быстрее самой базы.
- ⏰ Регламентные задания библиотеки (полнотекстовый поиск, обновление агрегатов, рассылки) разнесите по времени и отключите неиспользуемые.
Проверку делайте замером производительности в Конфигураторе на реальных данных. Он сразу покажет, какая строка кода съедает время.
Типичные ошибки при работе с БСП
| Ошибка | Чем кончится | Как правильно |
|---|---|---|
| правка кода в модулях библиотеки | при обновлении БСП изменения придётся переносить вручную | писать в переопределяемых модулях и модулях менеджеров |
| вызов служебных методов | после обновления метод пропадёт или изменит параметры | вызывать только методы из области ПрограммныйИнтерфейс |
| объединение без файла настроек | в конфигурацию попадает вся библиотека с лишними объектами | всегда сохранять настройки из помощника внедрения |
| пропуск обработчиков обновления | данные новой версии не заполняются, появляются ошибки при открытии форм | после обновления конфигурации запускать базу в режиме предприятия под администратором |
| жёсткая зависимость от подсистемы | ошибка, если подсистему не внедрили | проверять наличие подсистемы перед вызовом её модуля, как в примере 4 |
| вторая копия БСП в типовой | конфликты объектов, база не обновляется | в типовых работать с уже встроенной библиотекой через расширения |
Модули БСП делятся на области ПрограммныйИнтерфейс, СлужебныйПрограммныйИнтерфейс и СлужебныеПроцедурыИФункции. Гарантии совместимости между версиями даются только для первой. Это простое правило снимает большую часть проблем при обновлении.
Обновление библиотеки в своей конфигурации
Новая сборка БСП ставится так же, как первое внедрение, но проще: файл настроек уже есть, а ваш код лежит отдельно.
- Сохраните конфигурацию и выгрузите базу в
.dt. - Прочитайте описание изменений сборки: там перечислены изменённые методы и новые требования к платформе.
- Выполните
Сравнить, объединить с конфигурацией из файлас новой.cfи загрузите прежний файл настроек. - Перенесите изменения в переопределяемые модули по описанию выпуска.
- Увеличьте номер версии в своём модуле обновления и запустите базу под администратором.
Перепрыгивать через несколько редакций можно, но изменения из описаний всех пропущенных выпусков придётся учесть разом. Если отставание больше года, выделите на обновление отдельное время и тестовую базу.
Частые вопросы
Нужна ли отдельная лицензия на БСП?
Можно ли внедрить только печать без остальных подсистем?
Работают ли внешние обработки от типовых конфигураций в моей базе с БСП?
СведенияОВнешнейОбработке и не обращается к объектам, которых нет в вашей конфигурации, например к справочникам БП.