К статье
Практический материал

Справочники и Данные · 11 мин

Как поменять предопределённый элемент в 1С

Как изменить предопределённый элемент в 1С: переименование в режиме предприятия, замена через конфигуратор, обновление предопределённых данных и типичные ошибки.

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

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

Ниже разобраны оба сценария: работа в режиме «1С:Предприятие» без конфигуратора, изменение предопределённых данных через конфигуратор, обновление предопределённых элементов при обновлении конфигурации, а также способы исправить типовые ошибки, связанные с предопределёнными данными.

Что такое предопределённый элемент и чем он отличается от обычного

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

Ключевое отличие от обычного элемента — способ обращения из кода. К обычному элементу обращаются поиском по наименованию, коду или ссылке. К предопределённому — через менеджер объекта по имени, например Справочники.Валюты.Рубль или через метод ПредопределенноеЗначение("Справочник.СтавкиНДС.БезНДС"). Такое обращение быстрее и надёжнее поиска, но именно поэтому имя предопределённого элемента нельзя менять бездумно.

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

Как переименовать предопределённый элемент в режиме «1С:Предприятие»

Самая частая задача — поменять наименование, которое видят пользователи в документах и отчётах. Например, предопределённая организация, склад, статья расходов или вид номенклатуры названы неудобно, и требуется осмысленное название. Это делается штатно:

Порядок действий
  1. 1
    Откройте список справочника, где находится предопределённый элемент (например, «Номенклатура», «Склады», «Статьи расходов»).
  2. 2
    Найдите нужный элемент и откройте его форму двойным щелчком.
  3. 3
    Измените наименование и при необходимости другие доступные реквизиты.
  4. 4
    Нажмите «Записать и закрыть».
  5. 5
    Проверьте, как новое наименование отображается в документах и отчётах, где элемент уже использовался.

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

Важно понимать: переименование элемента не создаёт новый объект. Ссылка остаётся той же, поэтому все документы, проводки и регистры, где элемент использовался, автоматически начнут показывать новое наименование. Никакой замены в документах выполнять не нужно.

Как заменить предопределённый элемент на другой в документах

Иногда требуется не переименовать, а заменить: например, предопределённая статья затрат больше не используется, и вместо неё в документах должна стоять другая. Здесь есть два подхода, и выбор зависит от того, нужно ли сохранить историю.

Первый подход — просто переименовать существующий предопределённый элемент, как описано выше. История сохранится: старые документы будут показывать новое наименование, что логично, если суть элемента не изменилась, а уточнилось только название.

Второй подход — массовая замена ссылок. Если нужно, чтобы вместо предопределённого элемента везде использовался другой элемент, применяется штатная обработка поиска и замены значений (в типовых конфигурациях она обычно доступна в разделе администрирования) или обработка «Поиск и замена значений» с диска ИТС. После замены предопределённый элемент можно пометить на удаление — но не удалять физически, если конфигурация всё ещё обращается к нему в коде.

Изменение предопределённого элемента в конфигураторе

Когда требуется поменять служебное имя, состав предопределённых элементов или их реквизиты на уровне метаданных, работа ведётся в конфигураторе. Для этого конфигурация должна быть открыта для изменений (снята с полной поддержки или включена возможность изменения).

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

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

Типичные ошибки
01
Переименовали элемент в конфигураторе, но не исправили обращения в коде — при выполнении алгоритмов возникает ошибка обращения к несуществующему предопределённому значению.
02
Удалили предопределённый элемент из метаданных, но не из данных — в базе остаётся «отвязанный» элемент, который пользователи принимают за дубль.
03
Создали в пользовательском режиме обычный элемент с таким же наименованием вместо использования предопределённого — код продолжает работать со старым элементом, а пользователи видят два похожих.
04
Изменили предопределённые данные в копии конфигурации, но не выполнили обновление конфигурации базы данных — изменения не попали в рабочую базу.

Обновление предопределённых данных при обновлении конфигурации

Особый случай — обновление типовой конфигурации. В новых релизах поставщик может добавлять, переименовывать или удалять предопределённые элементы. При обновлении конфигурации базы данных платформа автоматически выполняет синхронизацию: новые предопределённые элементы создаются в данных, переименованные — связываются с уже существующими, удалённые из метаданных — теряют связь, но физически остаются в базе как обычные элементы.

Если по какой-то причине автоматическое создание не сработало (например, обновление прервано или режим обновления предопределённых данных был изменён), элементы можно создать принудительно. Для этого в режиме предприятия через встроенный язык используется метод менеджера объекта ОбновитьПредопределенныеДанные(), либо при обновлении конфигурации базы данных в конфигураторе устанавливается соответствующий режим в параметрах обновления.

Признак проблемы с предопределёнными данными — сообщения об ошибках вида «Предопределенный элемент ... отсутствует в данных» при работе документов или отчётов. Это сигнал, что метаданные требуют элемент, которого нет в таблице данных, и нужно выполнить обновление предопределённых данных.

Как проверить результат и убедиться, что ничего не сломалось

После любого изменения предопределённых элементов полезно выполнить короткую проверку. Минимальный набор: открыть элемент в пользовательском режиме и убедиться, что наименование и реквизиты корректны; открыть документ, где элемент использовался ранее, и проверить отображение; запустить типовой отчёт или операцию, которая обращается к этому элементу в коде.

Контрольные точки

Как проверить результат

Открытие элемента в списке
Норма

Элемент открывается, наименование и реквизиты отображаются корректно

Тревожный признак

Ошибка открытия формы или пустые реквизиты

Документы с этим элементом
Норма

В документах показывается актуальное наименование, проведение работает

Тревожный признак

Ошибки при проведении или «Объект не найден»

Типовые операции и отчёты
Норма

Отчёты и обработки выполняются без сообщений об ошибках

Тревожный признак

Ошибка «Предопределенный элемент отсутствует в данных»

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

Итог

Что важно запомнить

Наименование и реквизиты предопределённого элемента безопасно меняются в пользовательском режиме — ссылка и связи сохраняются. Служебное имя меняется только в конфигураторе с обязательной правкой всех обращений в коде. Удалять предопределённые элементы без анализа кода нельзя, а перед любыми изменениями стоит сделать резервную копию.

Частые вопросы

Можно ли удалить предопределённый элемент?

Технически пометить на удаление можно, но делать это стоит только после проверки, что код конфигурации к нему не обращается. В типовых конфигурациях предопределённые элементы почти всегда используются алгоритмами, поэтому вместо удаления безопаснее переименовать элемент или прекратить его использование в новых документах.

Почему поле наименования предопределённого элемента недоступно для редактирования?

Чаще всего причина в правах пользователя или в программной блокировке, установленной конфигурацией. Проверьте роли пользователя и попробуйте выполнить редактирование под учётной записью с полными правами. Если поле заблокировано программно, потребуется доработка конфигурации.

Что делать, если появилась ошибка «Предопределенный элемент отсутствует в данных»?

Ошибка означает, что в метаданных элемент есть, а в данных его нет. Обычно помогает принудительное обновление предопределённых данных: метод ОбновитьПредопределенныеДанные() у соответствующего менеджера объекта или повторное обновление конфигурации базы данных с включённым режимом обновления предопределённых данных.

Чем предопределённый элемент отличается от помеченного специальной пиктограммой?

Это одно и то же: пиктограмма в списке как раз и показывает, что элемент предопределённый. Вид пиктограммы зависит от конфигурации, но смысл один — элемент связан с метаданными и используется кодом по служебному имени.

Можно ли создать предопределённый элемент без конфигуратора?

Нет. В пользовательском режиме создаются только обычные элементы. Связь элемента с метаданными по имени устанавливается исключительно через конфигуратор при описании предопределённых данных и последующем обновлении конфигурации базы данных.