В процессе работы с конфигурациями на базе 1С:Зарплата и кадры государственного учреждения (ЗКГУ) или 1С:Зарплата и управление персоналом (ЗУП) версии 3.1 пользователи могут столкнуться с критической проблемой: при попытке открыть любой ранее созданный документ программа выдает ошибку и блокирует доступ к данным. При этом создание новых документов может проходить без сбоев, а стандартное тестирование и исправление информационной базы не всегда приносит желаемый результат. Проанализируем причины этой ситуации и разберем по шагам методы её решения.
Проблема чаще всего кроется в техническом справочнике ИдентификаторыОбъектовМетаданных. Этот справочник является частью Библиотеки стандартных подсистем (БСП) и служит связующим звеном между структурой конфигурации (метаданными) и данными в таблицах базы данных. Каждый объект — будь то документ ПрисвоениеКлассногоЧинаРанга или справочник Сотрудники — имеет свою запись в этом техническом списке.
Рассмотрим подробнее механизм сбоя. Когда вы открываете документ, система обращается к подсистеме «Даты запрета изменения». Эта подсистема должна проверить, разрешено ли редактирование данных на конкретную дату. Для этого ей необходимо точно сопоставить таблицу документа с его описанием в метаданных. Если в справочнике ИдентификаторыОбъектовМетаданных возникают дубли или некорректные ссылки, механизм проверки прав «теряется» и выдает ошибку: «Для проверки запрета изменения не найдены источники данных для таблицы...».
Почему появляются дубли? Проанализируем основные факторы:
Если вы обнаружили, что документы не открываются, первым делом попробуем запустить штатную процедуру обновления идентификаторов, предусмотренную разработчиками БСП. Для этого нам понадобится консоль кода или обработка «Групповое изменение реквизитов» (с включенным режимом выполнения произвольного алгоритма).
Выполним следующий код, который принудительно инициирует пересчет связей метаданных:
ПараметрыОбновления = Справочники.ИдентификаторыОбъектовМетаданных.ПараметрыОбновленияДанных();
ПараметрыОбновления.ВыполнитьВФоне = Ложь;
Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника(Истина, Истина);
Этот метод хорош тем, что он анализирует текущую структуру конфигурации и сопоставляет её с записями в справочнике, удаляя помеченные на удаление или дублирующие записи и восстанавливая отсутствующие. После выполнения этого кода обязательно следует перезапустить сеанс пользователя.
Существует еще один эффективный способ инициировать полные процедуры обновления информационной базы, включая пересчет идентификаторов. Для этого запустим 1С:Предприятие в режиме «Тонкий клиент» или «Толстый клиент» с дополнительным параметром.
Разберем последовательность действий:
/С ЗапуститьОбновлениеИнформационнойБазы (обратите внимание, что буква 'С' — латинская).Этот способ позволяет избежать ручного написания кода и задействует все механизмы самодиагностики системы.
Иногда после исправления справочника ИдентификаторыОбъектовМетаданных ошибка продолжает проявляться у отдельных пользователей. Это происходит из-за того, что старые (битые) идентификаторы закэшированы локально на компьютере или в сеансовых данных на сервере 1С.
Рассмотрим, как правильно произвести очистку:
AppData/Local/1C и полной очистке локального кэша метаданных.1C:Enterprise 8.3 Server Agent. Если это невозможно, следует завершить все активные сеансы пользователей в консоли администрирования серверов 1С и удалить временные файлы сеансов.Если поиск документа по его уникальному идентификатору (UUID) через внешние инструменты (например, через консоль запросов) показывает, что «объект не найден», а физически в таблице СУБД данные присутствуют, это говорит о глубоком повреждении структуры. В этом случае стандартное тестирование и исправление (ТиИ) должно выполняться с определенными настройками.
Проанализируем необходимые флаги в окне «Тестирование и исправление»:
Важное замечание: ТиИ не всегда понимает, что записи в ИдентификаторыОбъектовМетаданных некорректны, так как для платформы это просто данные в обычном справочнике. Именно поэтому ручная очистка или использование метода ОбновитьДанныеСправочника часто оказывается эффективнее автоматического тестирования.
Чтобы избежать подобных ситуаций в будущем, придерживайтесь следующих правил технического обслуживания 1С:ЗКГУ:
Таким образом, мы выяснили, что причина невозможности открытия документов часто скрыта в рассинхронизации технических идентификаторов. Применение программных методов восстановления БСП и правильная очистка кэша позволяют решить проблему без потери данных.