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