Как исправить ошибку при открытии списков в 1С:УТ 11.5 после загрузки данных из другой базы?

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

При работе с современными конфигурациями на базе Библиотеки стандартных подсистем (БСП), такими как «1С:Управление торговлей 11.5», специалисты часто сталкиваются с ситуацией, когда после частичного переноса данных или загрузки документов из другой информационной базы перестают открываться списки (динамические списки). Вместо привычного перечня документов система выдает критическую ошибку. Рассмотрим подробно, почему это происходит и как восстановить работоспособность базы.

Выясним причину возникновения ошибки

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

Когда мы загружаем документы из базы с «почти» идентичной конфигурацией, может возникнуть конфликт. Например, в базе-приемнике установлено расширение, которое добавляет свои реквизиты, а в базе-источнике этого расширения нет. При загрузке объектов через механизмы XML или другие обработки система может пометить существующие идентификаторы метаданных на удаление или создать новые, «фантомные» записи. В результате динамический список при попытке обращения к структуре данных натыкается на помеченный на удаление или некорректный идентификатор, что и вызывает программный сбой.

Способ 1. Обновление конфигурации и регламентные процедуры

Самый простой, но не всегда очевидный способ — выполнение штатного обновления. Как показывает практика, переход даже на минорный релиз (например, с 11.5.12.130 на 11.5.12.147) инициирует автоматический запуск процедур обновления информационной базы. Разберем, что происходит в этот момент:

  1. Система запускает обработчики обновления БСП.
  2. Выполняется процедура Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника().
  3. Проверяется соответствие реальных объектов метаданных записям в справочнике.
  4. Пометки удаления со справочников, которые реально существуют в конфигурации, снимаются автоматически.

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

/C ЗапуститьОбновлениеИнформационнойБазы

Этот метод заставит систему прогнать все регламентные процедуры, что часто исправляет «битые» ссылки в служебных таблицах.

Способ 2. Принудительное программное обновление идентификаторов

Если автоматические процедуры не помогли, нам придется вмешаться в работу системы программно. Это наиболее надежный метод для программиста. Нам потребуется внешняя обработка или «Консоль кода». Выполним следующий фрагмент кода, который обращается к методам БСП:


// Принудительное обновление справочника идентификаторов объектов метаданных
// Первый параметр - ВыполнятьОбновлениеДанных (Истина)
// Второй параметр - УдалятьНеактуальныеЗаписи (Истина)
Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника(Истина, Истина);

Разберем подробнее параметры этого метода. Установка второго параметра в значение Истина крайне важна, так как это позволяет системе очистить «мусор» — те самые записи, которые были созданы ошибочно при загрузке данных из базы с другой структурой метаданных (без расширений).

Способ 3. Использование типовой обработки «Групповое изменение реквизитов»

Часто пользователи пытаются найти справочник ИдентификаторыОбъектовМетаданных в стандартном интерфейсе или через групповую обработку, но не видят его. Посмотрим, как сделать его видимым и отредактировать пометку удаления вручную.

  1. Откроем обработку «Групповое изменение реквизитов».
  2. Нажмем кнопку «Дополнительные параметры».
  3. В появившемся окне установим флажки «Показывать служебные реквизиты» и «Показывать скрытые объекты метаданных». Без этих настроек нужный нам справочник будет скрыт.
  4. Теперь выберем справочник Идентификаторы объектов метаданных в поле «Изменять».
  5. Проанализируем элементы. Нам нужно найти те записи, которые имеют пометку на удаление, хотя соответствующие документы или справочники реально присутствуют в базе.
  6. Снимем пометку удаления у этих элементов.

Важный момент: если мы видим дубликаты (один идентификатор помечен на удаление, а другой — нет), рекомендуется воспользоваться типовой обработкой «Поиск и удаление дублей». Это позволит правильно перепривязать все существующие ссылки в базе к актуальному идентификатору метаданных.

Способ 4. Работа с кэшем конфигурации

Иногда даже после исправления данных в справочниках ошибка продолжает появляться. Это происходит из-за того, что платформа 1С кэширует структуру конфигурации и настройки динамических списков. Посмотрим, как правильно произвести очистку.

Проанализируем два уровня кэширования:

  1. Пользовательские настройки: В справочнике «Пользователи» выберем нужного сотрудника, зайдем в «Настройки» и выполним «Очистить все настройки». Это сбросит настройки форм и динамических списков, которые могли сохранить ошибочное состояние.
  2. Локальный кэш платформы: Самый надежный способ — удалить базу из списка в стартере 1С и добавить её заново. При этом создастся новая папка кэша в каталоге %AppData%\1C\1Cv8, и старые описания типов не будут мешать работе.

Рекомендации по предотвращению проблемы

Чтобы в будущем избежать подобных ситуаций при переносе документов между базами с разным набором расширений, придерживайтесь следующих правил:

  1. Перед загрузкой данных в тестовую или рабочую базу всегда убеждайтесь, что расширения в базе-источнике и базе-приемнике идентичны.
  2. Если вы используете «Универсальный обмен данными в формате XML», отключайте флажок «Использовать оптимизированную запись объектов», если возникают ошибки с идентификаторами.
  3. После любой массовой загрузки данных, затрагивающей структуру метаданных, рекомендуется запускать регламентное задание «Извлечение текста» и «Очистка неактуальных идентификаторов» (если они предусмотрены вашей версией БСП).

Таким образом, мы выяснили, что корень проблемы кроется не в самих документах, а в системных механизмах регистрации метаданных. Сочетание программного обновления справочника идентификаторов и очистки кэша позволяет полностью устранить ошибку и убрать лишний «мусор» из системы.

← На главную