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

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

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

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

Шаг 1. Сравнение, объединение и обработка окна «Неразрешимые ссылки»

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

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

Рассмотрим правильный порядок действий при объединении:

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

Шаг 2. Удаление кода неиспользуемых подсистем

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

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

Шаг 3. Настройка свойств метаданных и модуля обновления ИБ

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

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

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

Шаг 4. Подключение обработчиков в модуле приложения и модуле сеанса

Проверим стандартные точки входа, необходимые для работы инфраструктуры БСП.

В Модуле управляемого приложения вызываем стандартные клиентские методы библиотеки:


Процедура ПередНачаломРаботыСистемы(Отказ)
	
	СтандартныеПодсистемыКлиент.ПередНачаломРаботыСистемы(Отказ);
	
КонецПроцедуры

Процедура ПриНачалеРаботыСистемы()
	
	СтандартныеПодсистемыКлиент.ПриНачалеРаботыСистемы();
	
КонецПроцедуры

Процедура ПередЗавершениемРаботыСистемы(Отказ)
	
	СтандартныеПодсистемыКлиент.ПередЗавершениемРаботыСистемы(Отказ);
	
КонецПроцедуры

В Модуле сеанса обязательно инициализируем параметры сеанса вызовом обработчика БСП:


Процедура УстановкаПараметровСеанса(ТребуемыеПараметры)
	
	СтандартныеПодсистемыСервер.УстановкаПараметровСеанса(ТребуемыеПараметры);
	
КонецПроцедуры

Шаг 5. Тонкости настройки интерфейса, прав и режима совместимости

Рассмотрим дополнительные нюансы, которые могут приводить к сбоям инициализации подсистем:

  1. Флаг «Включать в командный интерфейс»: для подчиненных подсистем внутри подсистемы СтандартныеПодсистемы нельзя включать флаг Включать в командный интерфейс. В коде БСП заложена проверка структуры подсистем — включение этого флага нарушает логику автоматической инициализации модулей.
  2. Права доступа: первый запуск после объединения должен выполняться под пользователем с ролью ПолныеПрава (или административным профилем). Если у пользователя отсутствуют права на вспомогательные объекты подсистем, первоначальное заполнение регистров завершится ошибкой.
  3. Режим совместимости: свойство «Режим совместимости» конфигурации должно соответствовать версии, заявленной в требованиях конкретного релиза БСП. Повышение режима совместимости без предварительной адаптации библиотеки может приводить к ошибкам работы платформенных механизмов.
  4. Очистка служебных данных: если первый запуск завершился с ошибками, в регистре сведений ВерсииПодсистем могут остаться некорректные записи, из-за чего система будет непрерывно открывать форму «Переход с другой программы». В тестовой базе рекомендуется очистить данный регистр перед повторным запуском после исправления кода.
← На главную