При работе с программными продуктами на базе 1С:Предприятие 8.3, в частности с конфигурацией «Зарплата и управление персоналом» (ЗУП), пользователи и администраторы часто сталкиваются с ситуацией, когда в блоке «Текущие дела» на рабочем столе появляется раздражающее уведомление: «Некорректные данные (1)». При попытке расшифровать эту ошибку система выдает сообщение о нарушении ссылочной целостности в техническом регистре БезопасноеХранилищеДанных, указывая на несуществующий объект <Объект не найден> с длинным уникальным идентификатором (GUID).
Особенность этой проблемы заключается в том, что стандартные средства обслуживания базы данных, такие как Тестирование и исправление (ТиИ) или очистка кэша, зачастую не приносят результата. Сообщение продолжает висеть в списке дел, даже если сам регистр был очищен вручную. В данной статье мы подробно разберем природу этой ошибки и рассмотрим эффективные способы её устранения, основываясь на практическом опыте решения подобных инцидентов.
Для начала проанализируем ситуацию. Блок «Текущие дела» — это механизм, построенный на базе Библиотеки стандартных подсистем (БСП). Он предназначен для оперативного информирования пользователя о задачах, требующих внимания. Информация в этот блок попадает не напрямую из рабочих документов или регистров, а собирается специальными фоновыми заданиями и кэшируется в промежуточных таблицах.
Ошибка, связанная с регистром БезопасноеХранилищеДанных, чаще всего возникает по следующим причинам:
БезопасноеХранилищеДанных, результат проверки уже записан в другой технический регистр — РезультатыПроверокУчета. Система мониторинга считывает данные именно оттуда, поэтому ошибка «зависает».ВидыПроверок могут содержать некорректные настройки или ссылки на старые алгоритмы мониторинга, которые выдают ложноположительные результаты.Рассмотрим наиболее быстрый и действенный метод, который помогает в большинстве случаев, когда ТиИ бессильно. Суть метода заключается в принудительном обновлении системных алгоритмов проверки через пересоздание управляющего элемента.
Выполним следующие шаги вместе:
ВидыПроверок.Проанализируем, что произошло: при нажатии кнопки «Обновить», программный код БСП обнаруживает отсутствие обязательного системного элемента в справочнике ВидыПроверок и инициализирует его создание «с нуля» по эталонному шаблону. В процессе этого обновления кэш проверок сбрасывается, и фантомное сообщение о некорректных данных исчезает.
Если первый способ не помог, разберем более глубокий метод очистки кэша проверок. Как мы уже выяснили, сообщения в «Текущих делах» — это лишь отражение записей в специализированном регистре.
Посмотрим на алгоритм действий:
РезультатыПроверокУчета.МониторингСостоянияСистемы или просто нажмем «Обновить» в интерфейсе текущих дел.Иногда ошибка вызвана тем, что ссылка в БезопасноеХранилищеДанных имеет тип ЛюбаяСсылка, и стандартные механизмы не могут корректно сопоставить её с метаданными. В таких случаях можно воспользоваться программным методом «лечения» GUID.
Представим ситуацию: у нас есть конкретный GUID 15:997854137972872811e80e5ec046d044. Мы можем программно создать объект с таким идентификатором, чтобы система признала его существующим, а затем удалить его корректно.
Рассмотрим пример кода для внешней обработки:
// Пример создания ссылки с конкретным GUID для исправления битой связи
НужныйGUID = Новый УникальныйИдентификатор("99785413-7972-8728-11e8-0e5ec046d044");
СсылкаНаОбъект = Справочники.Пользователи.ПолучитьСсылку(НужныйGUID);
// Проверяем, действительно ли объект не найден
Если СсылкаНаОбъект.ПолучитьОбъект() = Неопределено Тогда
НовыйОбъект = Справочники.Пользователи.СоздатьЭлемент();
НовыйОбъект.Наименование = "Временный объект для исправления ошибки";
НовыйОбъект.УстановитьСсылкуНового(СсылкаНаОбъект);
НовыйОбъект.Записать();
Сообщить("Объект воссоздан, теперь его можно удалить штатно.");
КонецЕсли;
После выполнения подобного кода ссылка перестает быть «битой», и механизмы 1С начинают видеть владельца. После этого можно запустить Тестирование и исправление, которое теперь сможет корректно очистить записи в регистре БезопасноеХранилищеДанных, так как тип объекта определен.
Чтобы подобные ситуации не повторялись, разберем несколько правил эксплуатации базы 1С:ЗУП:
ОчисткаНенужныхДанных.Мониторинг состояния системы выполняется под пользователем с достаточными правами, иначе кэш проверок может обновляться не полностью, оставляя старые ошибки.Подводя итог, можно сказать, что ошибка «Некорректные данные» чаще всего является следствием «зависшего» кэша в подсистеме мониторинга БСП. Использование метода с удалением и автоматическим пересозданием элемента справочника ВидыПроверок является наиболее эффективным и безопасным способом вернуть рабочему столу программы чистый и информативный вид.