Как правильно перенести справочники и функционал из демо-базы БСП в чистую конфигурацию?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При первом знакомстве с «Библиотекой стандартных подсистем» (БСП) многие разработчики сталкиваются с классической трудностью. Успешно внедрив базовый функционал БСП в чистую конфигурацию с помощью обработки ПервоеВнедрениеБСП.epf, они пытаются перенести демонстрационные справочники (например, контрагентов, номенклатуру, физических лиц с префиксом _Демо...) простым копированием или объединением через cf-файл. Однако этот процесс мгновенно оборачивается лавиной ошибок при сохранении базы данных: возникают десятки неразрешимых ссылок, ругается проверка метаданных, а конфигуратор отказывается обновлять базу.

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

Выясняем причину: почему простое копирование демо-объектов невозможно?

Для начала проанализируем ситуацию и поймем, какую роль играют демонстрационные справочники и документы в дистрибутиве БСП. Объекты с префиксом _Демо... (такие как _ДемоКонтрагенты, _ДемоНоменклатура, _ДемоФизическиеЛица) не являются частью рабочего ядра БСП. Сама библиотека — это не готовое прикладное решение, а лишь набор инфраструктурных «кирпичиков» (подсистем контактной информации, присоединенных файлов, версионирования, дополнительных реквизитов и т. д.). Демо-объекты созданы исключительно для демонстрации того, как эти «кирпичики» внедрять в реальные бизнес-справочники.

Попытка скопировать такой справочник «в лоб» обречена на неудачу по следующим причинам:

  1. Определяемые типы (ОпределяемыеТипы): Почти каждый демо-объект жестко зашит в определяемые типы БСП, которые поставляются вместе с демонстрационной базой. Например, ВладелецКонтактнойИнформации, ВладелецПрисоединенныхФайлов или ВерсионируемыеДанныеОбъект. В чистой конфигурации БСП эти определяемые типы либо пусты, либо содержат только базовые типы. При копировании демо-справочника связи рвутся.
  2. Специализированные общие модули: Демо-справочники обращаются к общим модулям демонстрационной конфигурации (например, к модулю _ДемоСтандартныеПодсистемы), которых просто нет в чистой конфигурации БСП.
  3. Подписки на события и роли: В демо-базе настроено множество подписок на события (например, при записи или заполнении объектов) и специфических ролей доступа, ориентированных исключительно на демонстрационные объекты.

Таким образом, простое копирование объектов тянет за собой огромный «хвост» зависимостей, которые блокируют компиляцию всей конфигурации.

Правильная методология интеграции функционала БСП

Вместо того чтобы пытаться очистить демо-объекты от связей, мы применим профессиональный подход «снизу вверх». Рассмотрим по шагам, как перенести нужные возможности (например, справочник контрагентов с хранением адресов, телефонов и возможностью прикрепления файлов) в свою чистую конфигурацию.

Шаг 1. Создание собственного прикладного справочника

В своей конфигурации создаем чистый справочник, например Контрагенты. Мы не используем префиксы демо-базы. Настраиваем его базовые реквизиты (Наименование, ИНН, КПП) стандартными средствами платформы 1С.

Шаг 2. Интеграция с определяемыми типами БСП

Допустим, мы хотим, чтобы для нашего справочника Контрагенты работал механизм присоединенных файлов БСП. Для этого выполним следующие действия:

  1. Находим в нашей конфигурации определяемый тип ВладелецПрисоединенныхФайлов.
  2. Добавляем в список его типов ссылку на наш новый справочник: СправочникСсылка.Контрагенты.
  3. Для хранения самих файлов создаем подчиненный справочник (например, КонтрагентыПрисоединенныеФайлы) по аналогии с тем, как это сделано в демо-базе, и связываем его с определяемыми типами ПрисоединенныйФайл и ПрисоединенныйФайлОбъект.

Шаг 3. Реализация программного интерфейса в модулях справочника

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

Открываем модуль формы справочника _ДемоКонтрагенты в демонстрационной базе, находим процедуру ПриСозданииНаСервере, анализируем её и переносим аналогичные вызовы в свой справочник Контрагенты.

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


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	// Инициализируем панель контактной информации на форме справочника
	ПараметрыПанелиКИ = УправлениеКонтактнойИнформацией.ПараметрыПанелиКонтактнойИнформации();
	УправлениеКонтактнойИнформацией.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыПанелиКИ, "ГруппаКонтактнаяИнформация");
	
КонецПроцедуры

Аналогично в модуле объекта нашего справочника настраиваем обработку событий перед записью или при записи для корректного сохранения связанных данных БСП:


Процедура ПередЗаписью(Отказ)
	
	Если ОбменДанными.Загрузка Тогда
		Возврат;
	КонецЕсли;
	
	// Интеграция с подсистемой контактной информации БСП
	УправлениеКонтактнойИнформацией.ПередЗаписьюОбъекта(ЭтотОбъект);
	
КонецПроцедуры

Использование инструментов автоматизации от разработчиков 1С

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

Альтернативный путь «сверху вниз» (Почему он не рекомендуется)

Иногда разработчики идут по обратному пути: накатывают демонстрационный файл конфигурации 1Cv8_demo.cf целиком на пустую базу данных, а затем начинают методично удалять все ненужные демо-объекты и подсистемы.

Проанализируем этот подход. На первый взгляд он кажется более простым, ведь «все уже работает». Однако на практике вы столкнетесь со следующими серьезными минусами:

Резюме и рекомендации

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

← На главную