Как исправить ошибки подписок на события при первом внедрении БСП 3.0

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

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

Анализ причины возникновения ошибок метаданных

Разберем природу ошибок «Недопустимый тип» и «Имя события недопустимо для указанного источника события». В архитектуре БСП 3.0 механизмы управления доступом и регистрации изменений глубоко интегрированы через подписки на события. Источниками для этих событий чаще всего выступают Определяемые типы (Defined Types). Проанализируем ситуацию: если в новой конфигурации еще нет ни одного документа или справочника, либо если определяемые типы не были настроены после переноса, они по умолчанию принимают тип Строка или остаются пустыми.

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

Шаг 1. Настройка определяемых типов

Для устранения ошибок в подписках необходимо правильно заполнить состав определяемых типов, которые БСП использует как «заглушки» для ваших будущих объектов. Рассмотрим основные типы, из-за которых возникают ошибки доступа:

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

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

Шаг 2. Использование помощника внедрения БСП

Посмотрим на процесс внедрения шире. Ручной перенос объектов (копирование через буфер обмена или сравнение/объединение) часто приводит к потере связей. Разработчики 1С предусмотрели специальный инструмент — Помощник внедрения БСП. Проанализируем, как он упрощает работу:

В составе дистрибутива БСП находится внешняя обработка (обычно с именем FirstImplementation.epf). Воспользуемся ей для первичной настройки. Помощник позволяет выбрать только необходимые подсистемы и автоматически формирует файл конфигурации (.cf) или дает рекомендации по переносу зависимых объектов. Это гарантирует, что все обязательные Определяемые типы и Общие модули будут перенесены корректно.

Шаг 3. Инициализация параметров сеанса и обновление ИБ

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

Во-первых, убедимся, что в модуле управляемого приложения и модуле сеанса прописаны необходимые вызовы обработчиков БСП. Рассмотрим пример кода, который должен присутствовать в модуле сеанса:


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

Во-вторых, первый запуск системы после внедрения БСП рекомендуется выполнять с параметром командной строки /С ЗапускОбновленияИнформационнойБазы. Это принудительно запустит процедуры обновления и заполнит служебные справочники, такие как справочник идентификаторов объектов метаданных.

Проблема избыточности: стоит ли внедрять БСП частично?

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

Если вы не обладаете глубоким опытом работы с БСП, рекомендуется внедрять библиотеку целиком или использовать только базовую функциональность. Удаление «лишних» подписок на события, как правило, не решает проблему, а лишь маскирует ее, что в будущем приведет к неработоспособности прав доступа или механизмов обмена данными. Современные жесткие диски и мощности серверов позволяют не беспокоиться о лишних 50-80 мегабайтах объема конфигурации, в то время как стабильность системы является приоритетом.

Резюме по исправлению ошибок подписок

Подведем итог наших действий. Если вы столкнулись с ошибками недопустимых типов в подписках БСП 3.0:

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

← На главную