Часто разработчики сталкиваются с ситуацией: в конфигураторе создан новый предопределенный элемент справочника, для него установлен режим обновления «Обновлять автоматически», конфигурация базы данных успешно обновлена, но в пользовательском режиме (1С:Предприятие) этот элемент так и не появился. Рассмотрим подробно, почему это может происходить и какие шаги предпринять для решения проблемы.
Проанализируем основные причины и методы их устранения, двигаясь от самых простых и частых к более сложным случаям.
Самая распространенная причина — процедуры обновления данных не были запущены или выполнены корректно после обновления конфигурации (может помочь Помощник оператора обновления КБД). Платформа 1С считает, что раз версия конфигурации не изменилась (или изменилась незначительно), то и обработчики обновления выполнять не нужно. Мы можем запустить этот процесс принудительно.
Для этого необходимо запустить базу данных со специальным параметром запуска.
/C ЗапуститьОбновлениеИнформационнойБазыВажный момент: после запуска с этим параметром вы должны увидеть окно с сообщением «Выполнено обновление информационной базы...» или аналогичное, как при обновлении релиза конфигурации. Если такого окна не было, значит, параметр не сработал.
Это может произойти, если версия конфигурации в метаданных и версия конфигурации базы данных совпадают. Чтобы «обмануть» систему и гарантированно запустить обработчики, можно перед этим выполнить простое действие:
1.0.1.5 на 1.0.1.6.ЗапуститьОбновлениеИнформационнойБазы.Возможно, элементы были созданы в базе данных, но по какой-то причине не видны в стандартных формах. Чтобы это проверить, воспользуемся управляемой консолью запросов.
Выполним запрос к таблице проблемного справочника, чтобы увидеть все предопределенные элементы, которые физически существуют в базе.
ВЫБРАТЬ
МойСправочник.Ссылка,
МойСправочник.Код,
МойСправочник.Наименование,
МойСправочник.Предопределенный,
МойСправочник.ИмяПредопределенныхДанных
ИЗ
Справочник.МойСправочник КАК МойСправочник
ГДЕ
МойСправочник.Предопределенный = ИСТИНА
Замените Справочник.МойСправочник на имя вашего справочника.
Проанализируем результат запроса:
ПриСозданииНаСервере) или в настройках динамического списка установлены отборы, которые скрывают новые элементы.Платформа 1С следит за уникальностью системных полей. Предопределенные элементы не смогут создаться, если в базе уже существуют обычные (созданные пользователями) элементы с такими же уникальными реквизитами.
Что нужно проверить:
Начиная с более новых версий платформы (например, 8.3.6+), контроль уникальности имен предопределенных данных стал строже. Если ранее в базе был создан обычный элемент «ТоварА», а вы пытаетесь добавить предопределенный элемент с именем «ТоварА», система может не создать его. В этом случае необходимо найти и переименовать или удалить конфликтующий элемент, созданный вручную, а затем повторно обновить конфигурацию.
Иногда проблема может быть вызвана нарушением целостности данных или устаревшим кэшем конфигурации.
%APPDATA%\1C\1Cv8\ или %LOCALAPPDATA%\1C\1Cv8\, внутри которых находятся папки с длинными буквенно-цифровыми именами (ID баз).Администрирование). Установите флаги «Реиндексация таблиц информационной базы» и «Проверка ссылочной целостности информационной базы». Это может исправить внутренние ошибки в данных. Для файловых баз также полезно выполнить проверку утилитой chdbfl.exe.Если вышеописанные способы не помогли, рассмотрим еще несколько специфических ситуаций.
УникальныйИдентификатор.Уникальный идентификатор и вставьте туда скопированное значение.Таким образом, проблема с отсутствием предопределенных элементов имеет множество потенциальных причин. Начинать диагностику стоит с принудительного обновления, затем переходить к проверке существования элементов через консоль запросов и анализу возможных конфликтов уникальности. В большинстве случаев один из этих методов поможет успешно решить задачу.