БСП в своей конфигурации: внедрение, общие модули, расширения и обновление

· 9 мин

Содержание

Работа с библиотекой 1С строится на одном правиле: модули Библиотеки стандартных подсистем (БСП) не правят, а настраивают. Свой код пишут в общих модулях с суффиксом Переопределяемый, в собственных модулях конфигурации или в расширении. Функции библиотеки вызывают через её программный интерфейс, например ОбщегоНазначения.ЗначениеРеквизитаОбъекта(). Тогда обновление БСП сводится к объединению без ручного разбора сотен конфликтов.

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

Из чего состоит библиотека и как она устроена

Библиотека поставляется отдельным комплектом. В нём есть файл конфигурации библиотеки, демонстрационная конфигурация с примерами и документация по каждой подсистеме. Демо-база полезна больше всего: в ней видно, как подсистема подключена «в живую».

Внутри БСП объекты сгруппированы по подсистемам. Ветка СтандартныеПодсистемы в дереве конфигурации содержит десятки разделов. Самые востребованные:

  • 👤 Пользователи и Управление доступом — справочники Пользователи, ГруппыПользователей, ПрофилиГруппДоступа, ГруппыДоступа, ограничение доступа на уровне записей.
  • 🖨️ Печать — общий механизм печатных форм, макеты, комплекты документов.
  • 📎 Присоединённые файлы и Работа с файлами — хранение файлов в базе или в томах на диске.
  • ☎️ Контактная информация — адреса, телефоны, e-mail с проверкой формата.
  • 🔄 Обновление версии ИБ — обработчики обновления данных при смене релиза.
  • 🧩 Дополнительные отчёты и обработки — подключение внешних файлов без изменения конфигурации.
  • 💱 Валюты, Банки, Календарные графики — общая нормативно-справочная информация.

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

Как называются общие модули

Имя общего модуля БСП подсказывает, где он работает. Это соглашение стоит перенять и для своего кода.

Суффикс модуляГде выполняетсяПример
без суффикса или Серверна сервереОбщегоНазначения, СтандартныеПодсистемыСервер
Клиентна клиентеОбщегоНазначенияКлиент
КлиентСервери там, и тамОбщегоНазначенияКлиентСервер
ВызовСерверасерверный, вызывается с клиентаПользователиСлужебныйВызовСервера
ПовтИспс повторным использованием значенийкэш на время вызова или сеанса
Переопределяемыйместо для кода вашей конфигурацииОбщегоНазначенияПереопределяемый
Служебныйвнутренняя кухня подсистемывызывать из своего кода не стоит

Программный интерфейс подсистемы — это процедуры в области ПрограммныйИнтерфейс модуля. Всё из областей СлужебныйПрограммныйИнтерфейс и СлужебныеПроцедурыИФункции может поменяться в следующей версии без предупреждения.

Внедрение БСП в новую конфигурацию

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

Что подготовить заранее

  • 📦 Комплект поставки нужной версии БСП.
  • 🖥️ Платформу с номером не ниже того, что указан в требованиях этой версии библиотеки.
  • 💾 Свежую выгрузку .dt и копию .cf своей конфигурации.
  • 🧪 Отдельную тестовую базу: в рабочей экспериментировать нельзя.

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

Пошаговое внедрение

  1. Откройте демонстрационную конфигурацию из комплекта и запустите помощник внедрения из поставки. Отметьте нужные подсистемы, он добавит обязательные зависимости и сохранит файл настроек объединения.
  2. В своей конфигурации включите возможность изменения: Конфигурация → Поддержка → Настройка поддержки, если она стоит на поддержке.
  3. Выполните Конфигурация → Сравнить, объединить с конфигурацией из файла и выберите .cf библиотеки.
  4. В окне сравнения загрузите файл настроек из шага 1. Флажки встанут только на объекты выбранных подсистем.
  5. Проверьте объекты, которые есть и у вас, и в библиотеке, например общие картинки или роли с совпадающими именами. Решите, что оставить.
  6. Нажмите «Выполнить», затем обновите конфигурацию базы данных (F7).
  7. Пройдите обязательные доработки по документации: заполните модуль ОбновлениеИнформационнойБазы<ИмяКонфигурации>, добавьте свой модуль в процедуру ПодсистемыКонфигурацииПереопределяемый.ПриДобавленииПодсистем(), встройте команды и формы в свои объекты.
  8. Запустите базу в режиме 1С:Предприятие. При первом старте выполнится начальное заполнение данных.

Минимальный модуль описания конфигурации выглядит так:

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

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

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

Внешние обработки и расширения поверх библиотеки

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

Дополнительные отчёты и обработки

Подсистема регистрирует внешний файл в справочнике ДополнительныеОтчетыИОбработки. В Бухгалтерии 3.0 включается в Администрирование → Печатные формы, отчеты и обработки, флажок «Дополнительные отчеты и обработки».

Чтобы файл приняли, в модуле объекта обработки нужна экспортная функция СведенияОВнешнейОбработке(). Она сообщает вид обработки, версию и список команд:

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

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

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

Строка в параметре СведенияОВнешнейОбработке() — минимальная версия БСП, с которой обработка совместима. Указывайте ту, на которой проверяли.

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

Расширения конфигурации

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

  • &После("ИмяПроцедуры") — ваш код выполнится после типового;
  • &Перед("ИмяПроцедуры") — до типового;
  • &Вместо("ИмяПроцедуры") — заменит его, с осторожностью;
  • &ИзменениеИКонтроль("ИмяПроцедуры") — правка внутри процедуры с контролем изменений типового текста.

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

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

Вызов функций общих модулей: рабочие приёмы

Программный интерфейс БСП закрывает большую часть рутины. Вместо самописных запросов и проверок берите готовое.

Чтение реквизитов без открытия объекта

// одно значение
ИНН = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Контрагент, "ИНН");

// несколько значений сразу, одним запросом
Реквизиты = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Контрагент, "ИНН, КПП, Наименование");
Сообщить(Реквизиты.КПП);

Функция читает только нужные поля запросом. Получение через Контрагент.ИНН в серверном коде тянет из базы весь объект, это медленнее.

Текущий пользователь и права

Пользователь = Пользователи.ТекущийПользователь();
Если Пользователи.ЭтоПолноправныйПользователь() Тогда
	// действия администратора
КонецЕсли;

Работа с подсистемами, которых может не быть

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

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

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

Сообщения пользователю

Для вывода сообщений с привязкой к полю формы есть ОбщегоНазначения.СообщитьПользователю() на сервере и аналог в модуле ОбщегоНазначенияКлиент. Сообщение подсветит конкретный реквизит, а не просто появится внизу окна.

Если не помните точное имя функции, откройте модуль в Конфигураторе и найдите область ПрограммныйИнтерфейс. У каждой экспортной процедуры есть комментарий с описанием параметров.

Обновление БСП до новой версии

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

Порядок обновления

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

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

Свои обработчики обновления данных

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

Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт
	Обработчик = Обработчики.Добавить();
	Обработчик.Версия = "1.0.0.2";
	Обработчик.Процедура = "Справочники.Номенклатура.ЗаполнитьВидНоменклатуры";
	Обработчик.РежимВыполнения = "Монопольно";
КонецПроцедуры

Затем увеличьте версию конфигурации до 1.0.0.2. Обработчик выполнится один раз при первом запуске после обновления.

РежимКогда выполняетсяРиски
Монопольнодо входа пользователейдолгий простой на больших базах
Оперативнопри старте, без блокировки всехгодится только для быстрых операций
Отложеннов фоне после входаданные недоступны до окончания обработки

Диагностика ошибок при работе с библиотекой

Большая часть ошибок появляется после объединения или при неправильном вызове модулей.

Диагностика: выберите симптом

Журнал регистрации открывается в режиме 1С:Предприятие через раздел администрирования или из Конфигуратора: Администрирование → Журнал регистрации. Ставьте отбор по уровню «Ошибка» и интервалу запуска обновления.

Если обработчик обновления упал на рабочей базе, не пытайтесь исправить данные «по живому» обработкой без копии. Сначала резервная копия, потом исправление и согласование с ответственным за базу по вашему регламенту.

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

Можно ли использовать БСП бесплатно в своей конфигурации?
Условия использования, в том числе в тиражных решениях, описаны в лицензионном соглашении из комплекта поставки, читайте его до старта разработки.
Обязательно ли брать всю библиотеку целиком?
Нет. Обязательна только базовая функциональность, остальное подключают выборочно с учётом зависимостей. Небольшой учётной системе часто хватает пользователей, печати и обновления версии.
Как узнать, какая версия БСП в типовой конфигурации?
В Конфигураторе откройте модуль ОбновлениеИнформационнойБазыБСП и найдите процедуру ПриДобавленииПодсистемы: версия указана в Описание.Версия. В режиме предприятия текущие версии видны в регистре ВерсииПодсистем.
Почему нельзя просто поправить модуль ОбщегоНазначения?
При следующем обновлении БСП правка попадёт в конфликт объединения, и её придётся переносить вручную. Через переопределяемый модуль или расширение доработка переживает обновление без ручного разбора.
Работает ли БСП в файловой базе?
Да, библиотека работает и в файловом, и в клиент-серверном варианте. Отдельные функции, например часть регламентных заданий и полнотекстового поиска, ведут себя в файловом режиме иначе: задания выполняются только при открытом клиенте.