Библиотека стандартных подсистем на практике: внедрение, доработка и обновление без потерь

· 9 мин

Содержание

БСП (Библиотека стандартных подсистем) в 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С

Подключение делают в Конфигураторе на копии базы. Процедура одна и та же для новой и для существующей конфигурации.

Перед внедрением
Выполнено: 0 / 5

Шаг 1. Выберите подсистемы в помощнике внедрения

В поставку БСП входит обработка «Первое внедрение БСП». Откройте её в режиме «1С:Предприятие» в демонстрационной базе или в базе с конфигурацией библиотеки.

  1. Отметьте нужные подсистемы, например «Печать», «Пользователи», «Дополнительные отчёты и обработки».
  2. Помощник сам добавит обязательные зависимости. «Базовая функциональность» нужна всегда.
  3. Сохраните файл настроек сравнения и объединения.

Шаг 2. Объедините конфигурации

  1. В Конфигураторе выберите Конфигурация → Сравнить, объединить с конфигурацией из файла и укажите .cf библиотеки.
  2. В окне сравнения загрузите файл настроек из помощника. Галочки встанут только на нужных объектах.
  3. Для объектов с одинаковыми именами в вашей конфигурации выберите режим объединения вручную. Чаще всего это общие модули, роли и свойства корня конфигурации.
  4. Выполните объединение и обновите конфигурацию базы данных.

Не снимайте галочки с объектов, которые помощник отметил как зависимые: конфигурация не соберётся или упадёт при первом запуске.

Шаг 3. Доделайте первичную настройку

  • 📝 Создайте свой модуль обновления, например ОбновлениеИнформационнойБазыМояКонфигурация, по образцу из демобазы, и укажите в нём имя и версию вашей конфигурации.
  • 📌 Зарегистрируйте его в общем модуле ПодсистемыКонфигурацииПереопределяемый, процедура ПриДобавленииПодсистем.
  • 🔐 Назначьте пользователю-администратору роль полных прав из состава БСП.
  • ✅ Запустите базу в режиме «1С:Предприятие». Библиотека выполнит первичное заполнение данных.

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

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

Подсистем в библиотеке несколько десятков. Ниже те, что чаще всего дают быстрый результат.

ПодсистемаКакую задачу решает
Пользователисписок пользователей, вход, связь с учётными записями Windows
Управление доступомпрофили групп доступа, ограничение на уровне записей (по организациям, складам)
Печатькоманды печати в формах, табличные документы, макеты Word и OpenOffice
Дополнительные отчёты и обработкиподключение внешних .epf и .erf без изменения конфигурации
Свойствадополнительные реквизиты и сведения, которые пользователь добавляет сам
Работа с файламиприкреплённые файлы, сканы, версии файлов
Варианты отчётов и рассылкасохранённые настройки отчётов, рассылка по почте по расписанию
Бизнес-процессы и задачисогласования, поручения, контроль исполнения
Даты запрета изменениязакрытие периода, чтобы никто не правил прошлые месяцы
Обновление версии ИБобработчики обновления данных при переходе на новую версию
Поиск и удаление дублей, удаление помеченныхчистка справочников и базы

Минимальный набор для небольшой самописной базы обычно такой: базовая функциональность, пользователи, управление доступом, печать, дополнительные отчёты и обработки, обновление версии ИБ.

Доработки под бизнес: три рабочих примера

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

Пример 1. Своя печатная форма документа

  1. Добавьте документ в список объектов с командами печати: процедура ПриОпределенииОбъектовСКомандамиПечати общего модуля УправлениеПечатьюПереопределяемый.
  2. В модуле менеджера документа опишите команду в процедуре ДобавитьКомандыПечати(КомандыПечати).
  3. Сформируйте табличный документ в процедуре Печать того же модуля.

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

Пример 2. Внешняя обработка для отдела продаж

Обработку для разовой задачи (загрузка прайса, массовая простановка цен) удобно держать внешней. Чтобы подсистема «Дополнительные отчёты и обработки» её приняла, в модуле объекта нужна функция регистрации:

Функция СведенияОВнешнейОбработке() Экспорт
	ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
	ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
	ПараметрыРегистрации.Версия = "1.0";

	Команда = ПараметрыРегистрации.Команды.Добавить();
	Команда.Представление = "Обновить цены из прайса";
	Команда.Идентификатор = "ОбновитьЦены";
	Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();

	Возврат ПараметрыРегистрации;
КонецФункции

Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды) Экспорт
	Если ИдентификаторКоманды = "ОбновитьЦены" Тогда
		// здесь логика обработки
	КонецЕсли;
КонецПроцедуры

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

Пример 3. Новые поля без программиста

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

Пример 4. Код, который не ломается без подсистемы

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

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

Так пишут код сами разработчики библиотеки. Конфигурация собирается и без подсистемы «Печать», а при её наличии доработка работает полностью.

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

Как не потерять скорость работы базы

БСП сама по себе базу не тормозит. Медленно работает неправильное использование её механизмов.

  • 🐢 Обращение «через точку» к реквизитам ссылки в цикле читает объект целиком. Используйте ОбщегоНазначения.ЗначениеРеквизитаОбъекта или ОбщегоНазначения.ЗначенияРеквизитовОбъекта: они читают только нужные поля одним запросом.
  • ⏳ Долгие операции в основном потоке вешают интерфейс. Формирование тяжёлых отчётов и обработок запускайте через общий модуль ДлительныеОперации, в фоновом задании.
  • 🔒 Ограничение доступа на уровне записей включайте только там, где оно нужно бизнесу. Каждый вид доступа добавляет условия ко всем запросам по объекту.
  • 📚 Версионирование объектов хранит копию документа при каждой записи. Включайте его выборочно, иначе таблица версий растёт быстрее самой базы.
  • ⏰ Регламентные задания библиотеки (полнотекстовый поиск, обновление агрегатов, рассылки) разнесите по времени и отключите неиспользуемые.

Проверку делайте замером производительности в Конфигураторе на реальных данных. Он сразу покажет, какая строка кода съедает время.

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

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

Модули БСП делятся на области ПрограммныйИнтерфейс, СлужебныйПрограммныйИнтерфейс и СлужебныеПроцедурыИФункции. Гарантии совместимости между версиями даются только для первой. Это простое правило снимает большую часть проблем при обновлении.

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

Новая сборка БСП ставится так же, как первое внедрение, но проще: файл настроек уже есть, а ваш код лежит отдельно.

  1. Сохраните конфигурацию и выгрузите базу в .dt.
  2. Прочитайте описание изменений сборки: там перечислены изменённые методы и новые требования к платформе.
  3. Выполните Сравнить, объединить с конфигурацией из файла с новой .cf и загрузите прежний файл настроек.
  4. Перенесите изменения в переопределяемые модули по описанию выпуска.
  5. Увеличьте номер версии в своём модуле обновления и запустите базу под администратором.

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

Частые вопросы

Нужна ли отдельная лицензия на БСП?
Нет, библиотека распространяется бесплатно для разработки своих решений. Лицензии нужны на платформу 1С:Предприятие, на которой работает готовая конфигурация.
Можно ли внедрить только печать без остальных подсистем?
Нет, только печать отдельно не получится: помощник обязательно добавит «Базовую функциональность» и связанные подсистемы. Но итоговый набор всё равно будет намного меньше полной библиотеки.
Работают ли внешние обработки от типовых конфигураций в моей базе с БСП?
Как правило, да, если обработка зарегистрирована через функцию СведенияОВнешнейОбработке и не обращается к объектам, которых нет в вашей конфигурации, например к справочникам БП.
Подходит ли БСП для обычных форм?
Актуальные поколения 3.x рассчитаны на управляемые формы и интерфейс «Такси». Для конфигураций на обычных формах внедрение начинают с перевода на управляемое приложение.
Где учиться работе с библиотекой?
Начните с демонстрационной конфигурации и документации из поставки: там описано подключение каждой подсистемы. Затем разберите, как те же механизмы применены в БП 3.0.