Внедрение «1С:Библиотеки стандартных подсистем» (БСП) в новую или разрабатываемую с нуля конфигурацию — стандартная задача для разработчика 1С. Однако при выборочном объединении подсистем или некорректной последовательности действий часто возникают предупреждения о неразрешимых ссылках, постоянное появление окна «Переход с другой программы» и критические ошибки вида Поле объекта не обнаружено (ПоказатьОписаниеИзмененийСистемы) или Поле объекта не обнаружено (НастройкиНапоминаний).
Разберем по шагам, как правильно выполнить первичное внедрение БСП, корректно обработать предупреждения при сравнении и объединении и доработать модули конфигурации для стабильного запуска информационной базы.
Проанализируем первую проблему, с которой сталкивается разработчик: при переносе выбранных подсистем конфигуратор выводит предупреждение о наличии неразрешимых ссылок между объектами.
Причина этого кроется в архитектуре БСП: подсистемы тесно связаны между собой (через общие формы, функциональные опции, подписки на события и команды). При выборочном переносе часть объектов неизбежно ссылается на невыбранные элементы.
Рассмотрим правильный порядок действий при объединении:
После объединения и сохранения конфигурации в коде оставшихся общих модулей сохраняются вызовы функций отсутствующих подсистем. Для их автоматической очистки выполним следующие действия:
Выясним причину ошибок вида Поле объекта не обнаружено при старте приложения. В БСП при запуске клиента формируется специальная структура параметров (ПараметрыРаботыКлиентаПриЗапуске). Если процедура обновления или инициализации на сервере завершается сбоем, структура параметров возвращается не полностью, и клиентский код аварийно завершает работу.
Чтобы БСП корректно распознала новую конфигурацию и выполнила первичное заполнение служебных данных, разберем обязательные настройки:
МояКонфигурация), синоним и номер версии (например, 1.0.0.1).ОбновлениеИнформационнойБазы из БСП и переименовываем его с добавлением префикса или имени конфигурации, например: ОбновлениеИнформационнойБазыМояКонфигурация.
Процедура ПриДобавленииПодсистемы(Описание) Экспорт
Описание.Имя = "МояКонфигурация";
Описание.Версия = "1.0.0.1";
Описание.ТребуемыеПодсистемы.Добавить("СтандартныеПодсистемы");
КонецПроцедуры
ПодсистемыКонфигурацииПереопределяемый и в процедуре ПриДобавленииПодсистем регистрируем наш модуль обновления:
Процедура ПриДобавленииПодсистем(ОписанияПодсистем) Экспорт
ОписанияПодсистем.Добавить("ОбновлениеИнформационнойБазыМояКонфигурация");
КонецПроцедуры
Проверим стандартные точки входа, необходимые для работы инфраструктуры БСП.
В Модуле управляемого приложения вызываем стандартные клиентские методы библиотеки:
Процедура ПередНачаломРаботыСистемы(Отказ)
СтандартныеПодсистемыКлиент.ПередНачаломРаботыСистемы(Отказ);
КонецПроцедуры
Процедура ПриНачалеРаботыСистемы()
СтандартныеПодсистемыКлиент.ПриНачалеРаботыСистемы();
КонецПроцедуры
Процедура ПередЗавершениемРаботыСистемы(Отказ)
СтандартныеПодсистемыКлиент.ПередЗавершениемРаботыСистемы(Отказ);
КонецПроцедуры
В Модуле сеанса обязательно инициализируем параметры сеанса вызовом обработчика БСП:
Процедура УстановкаПараметровСеанса(ТребуемыеПараметры)
СтандартныеПодсистемыСервер.УстановкаПараметровСеанса(ТребуемыеПараметры);
КонецПроцедуры
Рассмотрим дополнительные нюансы, которые могут приводить к сбоям инициализации подсистем:
СтандартныеПодсистемы нельзя включать флаг Включать в командный интерфейс. В коде БСП заложена проверка структуры подсистем — включение этого флага нарушает логику автоматической инициализации модулей.ПолныеПрава (или административным профилем). Если у пользователя отсутствуют права на вспомогательные объекты подсистем, первоначальное заполнение регистров завершится ошибкой.ВерсииПодсистем могут остаться некорректные записи, из-за чего система будет непрерывно открывать форму «Переход с другой программы». В тестовой базе рекомендуется очистить данный регистр перед повторным запуском после исправления кода.