Библиотека стандартных подсистем (Механизм БСП)

Опубликовал Василий Ставинский (V.Stavinsky) в раздел Программирование - Практика программирования

Конфигурации в 1С пишутся для пользователей и по их «правилам» (клиент всегда прав), поэтому в основном все конфигурации разные, но достаточно часто в них используются одни и те же объекты, которые незначительно отличаются друг от друга. Действительно, сложно представить конфигурацию, где не фигурировали бы такие сущности как номенклатура, контрагенты, пользователи, валюта. И некоторые задачи являются типичными: возможность базового разграничения прав, работа с электронной почтой, задачи пользователям и т.д. Но...!

Есть конфигурация, которая облегчает работу разработчика, избавляя его от таких «тривиальных» работ  – это «Библиотека стандартных подсистем» (БСП), которая включает в себя набор универсальных функциональных подсистем и фрагменты раздела «Администрирование», предназначенных для использования в прикладных решениях на платформе «1С:Предприятие». Библиотека не является законченным (с предметной точки зрения) прикладным решением, но при этом подсистемы библиотеки могут использоваться в конфигурации-потребителе как все вместе, так и по отдельности. И для этого в БСП входит специальный помощник внедрения, использование которого помогает существенно сэкономить время при разработке новой конфигурации.

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

Запустим БСП (у нас редакция 2.3, версия 2.3.3.63), перейдем в раздел «Инструменты разработчика» U94; «Первое внедрение БСП»:

Здесь нам откроется «Помощник внедрения БСП». Сам помощник выглядит как пошаговый помощник, где на первом этапе мы выбираем подсистемы, которые будут нам нужны в  разрабатываемой конфигурации. После этого нужно указать файл (в формате xml), в котором сохраним эти настройки.
После чего переходим ко второму этапу: указываем дополнительные параметры для каждой из выбранных подсистем.

После выбора всех параметров система проверит, все ли было корректно выбрано и предложит разные варианты  отслеживания ошибок (Таблица внедрения подсистем или Отчет по внедрению БСП).

В статье кратко описана работа с «Помощником внедрения БСП», потому что этот инструмент не очень популярен. Чаще на практике разработчики действуют по такой схеме: на пустую конфигурацию устанавливают необходимые подсистемы БСП (здесь еще может помочь «Помощник внедрения БСП»), но обычно с БСП на новую пустую конфигурацию переносят все подсистемы.

Далее рассмотрим на примере, когда с БСП в «1С:Бухгалтерия предприятия» (БП)  нужно перенести некую подсистему. 

У нас есть две конфигурации: первая (основная) - со всеми подсистемами БСП, вторая (файла) - БП.

Далее порядок действий следующий:

1. Включить возможность редактирования основной конфигурации.

2. Вызвать меню Конфигурация - Сравнить, объединить с конфигурацией из файла.

3. Выбрать файл с расширением cf конфигурации БП.

4. На предложение постановки на поддержку ответить Да.

5. Далее в окне сравнения - снять все флажки (снять флажок с корневого элемента).

6. Выполнить Действия - Отметить по подсистемам.

7. Отметить подсистемы, которые отсутствуют в нашей основной конфигурации – взять из файла, но подсистемы, которых нет в конфигурации из файла, нужно оставить в основной конфигурации (по умолчания так и будет), далее нажать Установить.

8. Отметить к объединению свойства корневого элемента: Основные роли, Модуль управляемого приложения, Модуль сеанса, Модуль внешнего соединения, Модуль обычного приложения, Режим использования модальности, Режим использования синхронных вызовов расширений платформы и внешних компонент, Режим совместимости интерфейса, Режим совместимости. Нажать Выполнить.

9. В окне Настройка правил поддержки -  Ок.

10. Обновить конфигурацию базы данных (F7).

11. Далее, скорее всего, появится следующая ошибка:

И подобные служебные сообщения:

«… (объект входит в состав одноименного общего реквизита)» или «… : Использование определяемых типов в режиме совместимости Х.Х.Х. (к примеру, автор) и ниже недопустимо» ; «ОбщаяКартинка: Имя не уникально!»

12. Для объекта, который входит в состав одноименного общего реквизита – снять с поддержки, удалить объект и ссылки на него. Выполнить поиск ссылок на удаляемые объекты – удалить ссылки.

13. Поменяйте режим совместимости выше Х.Х.Х.

14. Обновить конфигурацию базы данных (F7). Далее, если возвращаетесь на пункт 11, выполнить пункти 12 и 13, потом 14.

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

Для начала проверяйте общие модули, включены ли подсистемы в командный интерфейс и прочее моменты. Когда все «как бы готово», приступайте к отладке.

Находите внедренную подсистему, и далее работаете так: если все хорошо, то Вас можно поздравить, если же нет – возвращаетесь в конфигуратор и удаляете код неиспользуемых подсистем либо добавляйте то, что нужно.

И так выполняете отладку до тех пор, пока не убедитесь в отсутствии ошибок. 

См. также

Комментарии
1. Александр (МимохожийОднако) 116 08.03.17 08:06 Сейчас в теме
Я понял так, что это шпаргалка-дополнение к
http://its.1c.ru/db/bspdoc#content:409:hdoc
2. Артем Артеменко (dock) 18 08.03.17 08:28 Сейчас в теме
но обычно с БСП на новую пустую конфигурацию переносят все подсистемы.


Для этого нужно выполнить всего-лишь следующие действия (кстати, при любом подходе описанные общий модуль и общий макет добавлять НУЖНО):

1) загружаем cf,
2) снимаем с замка корень, заполняем основные сведения (имя, синоним, поставщик, версия, настройки совместимости)
3) добавляем общий модуль "Префикс_ОбновлениеИнформационнойБазы", содержимое модуля (наиболее важная процедура - остальные не обязательны и можно посмотреть в одноименном модуле БСП):
// См. описание в общем модуле ОбновлениеИнформационнойБазыБСП.
Процедура ПриДобавленииПодсистемы(Описание) Экспорт
	
	Описание.Имя = "ИмяКонфигурации";
	Описание.Версия = "1.2.3.45";
	
	// Требуется библиотека стандартных подсистем.
	//Описание.ТребуемыеПодсистемы.Добавить("СтандартныеПодсистемы");
	
КонецПроцедуры
...Показать Скрыть

4) снимаем с замка общий модуль "ПодсистемыКонфигурацииПереопределяемый":

Процедура ПриДобавленииПодсистем(МодулиПодсистем) Экспорт
	
	МодулиПодсистем.Добавить("Префикс__ОбновлениеИнформационнойБазы");    
	   	 	
КонецПроцедуры
...Показать Скрыть


5) добавляем общий макет "ОписаниеИзмененийСистемы" с определенной структурой.

запускаем - наслаждаемся.

никаких поисков перекрестных ссылок, используемого/неиспользуемого кода, редактирования форм (а если вы не все подсистемы перенесете, то "Администрирование" придется практически заново переписать...)

минусы:у вас вся библиотека БСП в конфигурации, независимо от того, используете вы что либо или нет.
плюсы:
- очень быстрый "старт";
- всё, что относится к БСП - на поддержке. Если где-то нужно внести изменения, то сняли с поддержки - хоть как-то можно определить в какой модуль влез.
- на порядок проще обновить библиотеку. (если вы действуете как описано в статье - при каждом обновлении вам потребуется повторить анализ всех изменений.)
ret-Phoenix; _also; kolya_tlt; NikusXXZ; RaketaSoft; WellMaster; Gizmo_esu; _Ramzes; so-quest; +9 Ответить 1
3. Максим Кузнецов (Makushimo) 149 09.03.17 05:45 Сейчас в теме
4. WellMaster (WellMaster) 97 10.03.17 09:17 Сейчас в теме
Никогда не мог быстро перенести часть подсистем.
В конечном счете беру весь cf за основу, просто пользуюсь не всем что там есть.
5. Анатолий Лукьянов (KazanKokos) 1 10.03.17 09:33 Сейчас в теме
(2) хороший коммент. )
nightowl; +1 Ответить
6. Сергей Ожерельев (Поручик) 3497 10.03.17 15:38 Сейчас в теме
Самое лучшее при разработке новой конфы на БСП - это сделать конфу на основе полного cf из комплекта БСП и не иметь мозг.
Проще выкинуть лишнее, например демо-объекты. Сама конфигурация БСП весит всего 40 Мб, то есть размер вообще ни о чём.
V.Stavinsky; config; +2 Ответить
7. Сергей Долинин (ImHunter) 6 10.03.17 15:46 Сейчас в теме
Кроме демо-объектов, есть ведь и объекты для обслуживания ненужных подсистем. Их, по-хорошему, тоже надо убрать. И убрать правильно.
Не пробовал такой подход. Только собирал из нужных станд подсистем.
V.Stavinsky; +1 Ответить