БСП в своей конфигурации: внедрение, общие модули, расширения и обновление
Содержание
Работа с библиотекой 1С строится на одном правиле: модули Библиотеки стандартных подсистем (БСП) не правят, а настраивают. Свой код пишут в общих модулях с суффиксом Переопределяемый, в собственных модулях конфигурации или в расширении. Функции библиотеки вызывают через её программный интерфейс, например ОбщегоНазначения.ЗначениеРеквизитаОбъекта(). Тогда обновление БСП сводится к объединению без ручного разбора сотен конфликтов.
БСП — это не готовая программа, а набор подсистем: пользователи и права, печать, файлы, контактная информация, обновление версии базы, дополнительные обработки. На ней построены все типовые решения фирмы 1С: Бухгалтерия, ЗУП, УТ, ERP. Разработчик берёт нужные куски, встраивает в свою конфигурацию и получает те же стандартные справочники и механизмы, что в типовых.
Из чего состоит библиотека и как она устроена
Библиотека поставляется отдельным комплектом. В нём есть файл конфигурации библиотеки, демонстрационная конфигурация с примерами и документация по каждой подсистеме. Демо-база полезна больше всего: в ней видно, как подсистема подключена «в живую».
Внутри БСП объекты сгруппированы по подсистемам. Ветка СтандартныеПодсистемы в дереве конфигурации содержит десятки разделов. Самые востребованные:
- 👤 Пользователи и Управление доступом — справочники
Пользователи,ГруппыПользователей,ПрофилиГруппДоступа,ГруппыДоступа, ограничение доступа на уровне записей. - 🖨️ Печать — общий механизм печатных форм, макеты, комплекты документов.
- 📎 Присоединённые файлы и Работа с файлами — хранение файлов в базе или в томах на диске.
- ☎️ Контактная информация — адреса, телефоны, e-mail с проверкой формата.
- 🔄 Обновление версии ИБ — обработчики обновления данных при смене релиза.
- 🧩 Дополнительные отчёты и обработки — подключение внешних файлов без изменения конфигурации.
- 💱 Валюты, Банки, Календарные графики — общая нормативно-справочная информация.
Подсистема Базовая функциональность обязательна всегда. Остальные зависят друг от друга: например, «Управление доступом» требует «Пользователей». Зависимости описаны в документации библиотеки, и помощник внедрения учитывает их сам.
Как называются общие модули
Имя общего модуля БСП подсказывает, где он работает. Это соглашение стоит перенять и для своего кода.
| Суффикс модуля | Где выполняется | Пример |
|---|---|---|
без суффикса или Сервер | на сервере | ОбщегоНазначения, СтандартныеПодсистемыСервер |
Клиент | на клиенте | ОбщегоНазначенияКлиент |
КлиентСервер | и там, и там | ОбщегоНазначенияКлиентСервер |
ВызовСервера | серверный, вызывается с клиента | ПользователиСлужебныйВызовСервера |
ПовтИсп | с повторным использованием значений | кэш на время вызова или сеанса |
Переопределяемый | место для кода вашей конфигурации | ОбщегоНазначенияПереопределяемый |
Служебный | внутренняя кухня подсистемы | вызывать из своего кода не стоит |
Программный интерфейс подсистемы — это процедуры в области ПрограммныйИнтерфейс модуля. Всё из областей СлужебныйПрограммныйИнтерфейс и СлужебныеПроцедурыИФункции может поменяться в следующей версии без предупреждения.
Внедрение БСП в новую конфигурацию
Порядок первого внедрения отличается от обновления. Подсистемы нужно отобрать, перенести и инициализировать.
Что подготовить заранее
- 📦 Комплект поставки нужной версии БСП.
- 🖥️ Платформу с номером не ниже того, что указан в требованиях этой версии библиотеки.
- 💾 Свежую выгрузку
.dtи копию.cfсвоей конфигурации. - 🧪 Отдельную тестовую базу: в рабочей экспериментировать нельзя.
Перед объединением конфигураций сделайте резервную копию базы . Отменить объединение после сохранения нельзя, только откатиться на копию.
Пошаговое внедрение
- Откройте демонстрационную конфигурацию из комплекта и запустите помощник внедрения из поставки. Отметьте нужные подсистемы, он добавит обязательные зависимости и сохранит файл настроек объединения.
- В своей конфигурации включите возможность изменения:
Конфигурация → Поддержка → Настройка поддержки, если она стоит на поддержке. - Выполните
Конфигурация → Сравнить, объединить с конфигурацией из файлаи выберите.cfбиблиотеки. - В окне сравнения загрузите файл настроек из шага 1. Флажки встанут только на объекты выбранных подсистем.
- Проверьте объекты, которые есть и у вас, и в библиотеке, например общие картинки или роли с совпадающими именами. Решите, что оставить.
- Нажмите «Выполнить», затем обновите конфигурацию базы данных (
F7). - Пройдите обязательные доработки по документации: заполните модуль
ОбновлениеИнформационнойБазы<ИмяКонфигурации>, добавьте свой модуль в процедуруПодсистемыКонфигурацииПереопределяемый.ПриДобавленииПодсистем(), встройте команды и формы в свои объекты. - Запустите базу в режиме 1С:Предприятие. При первом старте выполнится начальное заполнение данных.
Минимальный модуль описания конфигурации выглядит так:
Процедура ПриДобавленииПодсистемы(Описание) Экспорт
Описание.Имя = "МояКонфигурация";
Описание.Версия = "1.0.0.1";
Описание.ТребуемыеПодсистемы.Добавить("СтандартныеПодсистемы");
Описание.РежимВыполненияОтложенныхОбработчиков = "Последовательно";
КонецПроцедуры
Поле Описание.Версия должно совпадать со свойством «Версия» в свойствах конфигурации. Иначе при каждом запуске программа будет думать, что пора обновлять данные.
Объединение и обновление конфигурации базы данных требует монопольного доступа. Предупредите пользователей: их сеансы придётся завершить. Делайте это вне рабочего времени.
Внешние обработки и расширения поверх библиотеки
БСП даёт два легальных способа доработать типовую конфигурацию , не снимая её с поддержки. Это внешние обработки и расширения.
Дополнительные отчёты и обработки
Подсистема регистрирует внешний файл в справочнике ДополнительныеОтчетыИОбработки. В Бухгалтерии 3.0 включается в Администрирование → Печатные формы, отчеты и обработки, флажок «Дополнительные отчеты и обработки».
Чтобы файл приняли, в модуле объекта обработки нужна экспортная функция СведенияОВнешнейОбработке(). Она сообщает вид обработки, версию и список команд:
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
ПараметрыРегистрации.Версия = "1.0";
ПараметрыРегистрации.Наименование = "Заполнение реквизитов";
Команда = ПараметрыРегистрации.Команды.Добавить();
Команда.Представление = "Заполнить";
Команда.Идентификатор = "Заполнить";
Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
Возврат ПараметрыРегистрации;
КонецФункции
Строка в параметре СведенияОВнешнейОбработке() — минимальная версия БСП, с которой обработка совместима. Указывайте ту, на которой проверяли.
Кроме обычных обработок, библиотека поддерживает виды «Печатная форма», «Заполнение объекта», «Отчёт», «Создание связанных объектов». Для печатных форм и заполнения в регистрации перечисляют объекты, к которым команда привязана.
Расширения конфигурации
Расширение — второй путь, и для серьёзных доработок он удобнее. В нём можно заимствовать модуль ...Переопределяемый и дописать туда свой код через аннотации:
&После("ИмяПроцедуры")— ваш код выполнится после типового;&Перед("ИмяПроцедуры")— до типового;&Вместо("ИмяПроцедуры")— заменит его, с осторожностью;&ИзменениеИКонтроль("ИмяПроцедуры")— правка внутри процедуры с контролем изменений типового текста.
После обновления типовой конфигурации расширение с &ИзменениеИКонтроль сообщит, если исходный фрагмент изменился. Это честнее, чем молча сломаться.
Вызов функций общих модулей: рабочие приёмы
Программный интерфейс БСП закрывает большую часть рутины. Вместо самописных запросов и проверок берите готовое.
Чтение реквизитов без открытия объекта
// одно значение
ИНН = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Контрагент, "ИНН");
// несколько значений сразу, одним запросом
Реквизиты = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Контрагент, "ИНН, КПП, Наименование");
Сообщить(Реквизиты.КПП);
Функция читает только нужные поля запросом. Получение через Контрагент.ИНН в серверном коде тянет из базы весь объект, это медленнее.
Текущий пользователь и права
Пользователь = Пользователи.ТекущийПользователь();
Если Пользователи.ЭтоПолноправныйПользователь() Тогда
// действия администратора
КонецЕсли;
Работа с подсистемами, которых может не быть
Если ваш код должен работать и без какой-то подсистемы, не обращайтесь к её модулю напрямую. Сначала проверьте наличие, потом получите модуль по имени:
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда
МодульУправлениеПечатью = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатью");
// вызовы через МодульУправлениеПечатью
КонецЕсли;
Так пишут сами модули БСП. Конфигурация соберётся даже без подсистемы «Печать», а прямое обращение дало бы ошибку при проверке модулей.
Сообщения пользователю
Для вывода сообщений с привязкой к полю формы есть ОбщегоНазначения.СообщитьПользователю() на сервере и аналог в модуле ОбщегоНазначенияКлиент. Сообщение подсветит конкретный реквизит, а не просто появится внизу окна.
Если не помните точное имя функции, откройте модуль в Конфигураторе и найдите область ПрограммныйИнтерфейс. У каждой экспортной процедуры есть комментарий с описанием параметров.
Обновление БСП до новой версии
Обновлять библиотеку в своей конфигурации нужно последовательно и только на копии. Перескакивать через несколько версий можно, но конфликтов тогда больше.
Порядок обновления
- Прочитайте в документации новой версии раздел об изменениях: какие процедуры стали устаревшими, какие подсистемы переименованы.
- Проверьте требования к платформе и режиму совместимости.
- Сделайте копию базы и выгрузите текущую конфигурацию в
.cf. Конфигурация → Сравнить, объединить с конфигурацией из файла, выберите.cfновой БСП и тот же файл настроек подсистем, что при внедрении.- Отберите объекты «изменены в обеих конфигурациях» и разберите каждый вручную.
- Объедините, обновите конфигурацию базы данных и запустите 1С:Предприятие: выполнятся обработчики обновления библиотеки.
- Выполните полную проверку конфигурации (
Конфигурация → Проверка конфигурации) и прогоните основные сценарии.
Текущие версии подсистем база хранит в регистре сведений ВерсииПодсистем. Если обработчики обновления не запускаются или запускаются при каждом входе, смотрите туда в первую очередь.
Свои обработчики обновления данных
Когда меняется структура ваших данных, добавьте обработчик в модуль описания конфигурации:
Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт
Обработчик = Обработчики.Добавить();
Обработчик.Версия = "1.0.0.2";
Обработчик.Процедура = "Справочники.Номенклатура.ЗаполнитьВидНоменклатуры";
Обработчик.РежимВыполнения = "Монопольно";
КонецПроцедуры
Затем увеличьте версию конфигурации до 1.0.0.2. Обработчик выполнится один раз при первом запуске после обновления.
| Режим | Когда выполняется | Риски |
|---|---|---|
| Монопольно | до входа пользователей | долгий простой на больших базах |
| Оперативно | при старте, без блокировки всех | годится только для быстрых операций |
| Отложенно | в фоне после входа | данные недоступны до окончания обработки |
Диагностика ошибок при работе с библиотекой
Большая часть ошибок появляется после объединения или при неправильном вызове модулей.
Журнал регистрации открывается в режиме 1С:Предприятие через раздел администрирования или из Конфигуратора: Администрирование → Журнал регистрации. Ставьте отбор по уровню «Ошибка» и интервалу запуска обновления.
Если обработчик обновления упал на рабочей базе, не пытайтесь исправить данные «по живому» обработкой без копии. Сначала резервная копия, потом исправление и согласование с ответственным за базу по вашему регламенту.
Частые вопросы
Можно ли использовать БСП бесплатно в своей конфигурации?
Обязательно ли брать всю библиотеку целиком?
Как узнать, какая версия БСП в типовой конфигурации?
ОбновлениеИнформационнойБазыБСП и найдите процедуру ПриДобавленииПодсистемы: версия указана в Описание.Версия. В режиме предприятия текущие версии видны в регистре ВерсииПодсистем.