При активной разработке с использованием механизма расширений разработчики иногда сталкиваются с неожиданной ситуацией: при попытке запустить конфигурацию для отладки или обновления информационной базы платформа выдает ошибку проверки метаданных вида «ПодпискаНаСобытие.УстановитьПометкуУдаленияПрисоединенныхФайлов: Имя события недопустимо для указанного источника события». При этом разработчик не вносил изменений в саму подписку, она заблокирована на поддержку поставщика и даже отсутствует в составе расширения.
В этой статье мы подробно разберем, почему возникает такое поведение платформы, как устроен механизм подписок на события при использовании определяемых типов и какие шаги необходимо предпринять для устранения неполадки.
Проанализируем архитектурную логику платформы «1С:Предприятие» и выясним, почему типовой неизмененный объект вызывает критическую ошибку метаданных:
УстановитьПометкуУдаленияПрисоединенныхФайлов выступает ОпределяемыйТип.ВладелецПрисоединенныхФайловОбъект. Список доступных для подписки событий формируется динамически как логическое пересечение событий всех типов метаданных, входящих в определяемый тип. Если в состав типа по ошибке попадает объект, у которого отсутствует событие ПередЗаписью (например, ссылочный тип ДокументСсылка.* вместо ДокументОбъект.*, константа или регистр), платформа не может сопоставить общее событие для всего списка и поле «Событие» в свойствах подписки становится пустым.Config и ConfigSave.Рассмотрим быстрое и действенное решение, которое позволяет обойти ошибку валидатора платформы 8.3.10 без необходимости снимать типовую конфигурацию с поддержки.
Разберем по шагам порядок действий в конфигураторе:
Версия 8.3.9 (или в версию, соответствующую текущим требованиям релиза конфигурации).Версия 8.3.9, чтобы они строго совпадали со значением основной конфигурации.Такая корректировка отключает избыточную строгую валидацию пустых событий в неизмененных объектах поставщика и позволяет запустить базу в режиме отладки.
Если конфигурация уже находится в режиме редактирования с сохранением поддержки, разберем, как восстановить корректный состав типов источника подписки:
ОпределяемыйТип.ВладелецПрисоединенныхФайловОбъект и откроем его свойства.*Объект), поддерживающие запись. Ссылочные типы (*Ссылка) выбирать для данного определяемого типа категорически нельзя.ПодпискаНаСобытие.УстановитьПометкуУдаленияПрисоединенныхФайлов. В выпадающем списке свойства «Событие» снова появится доступный пункт ПередЗаписью. Выберем его и сохраним конфигурацию.Если в процессе экспериментов с подписками и расширениями при закрытии конфигуратора или программы стало появляться сообщение «Файл базы данных поврежден», необходимо восстановить внутреннюю структуру таблиц метаданных:
%LocalAppData%\1C\1cv8\
%AppData%\1C\1cv8\
chdbfl.exe (находится в каталоге bin установленной платформы 1С), выберем файл 1Cv8.1CD, установим флаг «Исправлять обнаруженные ошибки» и выполним проверку..dt через меню «Администрирование» — «Выгрузить информационную базу», создадим новую пустую информационную базу и загрузим архив обратно. Это гарантированно перестроит служебные таблицы метаданных.Чтобы избежать подобных коллизий при дальнейшей работе, придерживаемся следующих правил: