Справочники и Данные · 11 мин
Как поменять предопределённый элемент в 1С
Как изменить предопределённый элемент в 1С: переименование в режиме предприятия, замена через конфигуратор, обновление предопределённых данных и типичные ошибки.
Предопределённые элементы — это элементы справочников, планов видов характеристик, планов счетов и планов видов расчёта, которые создаются разработчиком в конфигураторе и используются кодом программы. От обычных элементов они отличаются тем, что на них завязана логика конфигурации: алгоритмы обращаются к ним по фиксированному имени, а не по наименованию или коду. Поэтому вопрос «как поменять предопределённый элемент» почти всегда упирается в одну дилемму: что именно нужно изменить — видимое пользователю наименование или само служебное имя, к которому обращается программа.
На практике чаще всего требуется первое: переименовать элемент, поменять его реквизиты, заменить значение или убрать из использования. Это делается в пользовательском режиме и безопасно. Второй сценарий — изменение имени предопределённого элемента в конфигураторе — затрагивает код и требует аккуратности, потому что при несовпадении имён программа начнёт выдавать ошибки вида «Предопределенный элемент отсутствует в данных».
Ниже разобраны оба сценария: работа в режиме «1С:Предприятие» без конфигуратора, изменение предопределённых данных через конфигуратор, обновление предопределённых элементов при обновлении конфигурации, а также способы исправить типовые ошибки, связанные с предопределёнными данными.
Что такое предопределённый элемент и чем он отличается от обычного
Предопределённый элемент создаётся разработчиком конфигурации на уровне метаданных. В конфигураторе у справочника есть закладка «Прочие» — «Предопределённые», где перечислены такие элементы с их именами. Когда база создаётся или обновляется, платформа автоматически создаёт в данных соответствующие элементы и связывает их с метаданными по имени.
Ключевое отличие от обычного элемента — способ обращения из кода. К обычному элементу обращаются поиском по наименованию, коду или ссылке. К предопределённому — через менеджер объекта по имени, например Справочники.Валюты.Рубль или через метод ПредопределенноеЗначение("Справочник.СтавкиНДС.БезНДС"). Такое обращение быстрее и надёжнее поиска, но именно поэтому имя предопределённого элемента нельзя менять бездумно.
В пользовательском режиме предопределённые элементы часто помечены специальной пиктограммой (обычно это элемент с отметкой в списке), а в типовых конфигурациях для них может быть заблокировано редактирование отдельных полей или удаление. Это защита, а не ограничение платформы: технически наименование и большинство реквизитов редактируются свободно.
Как переименовать предопределённый элемент в режиме «1С:Предприятие»
Самая частая задача — поменять наименование, которое видят пользователи в документах и отчётах. Например, предопределённая организация, склад, статья расходов или вид номенклатуры названы неудобно, и требуется осмысленное название. Это делается штатно:
- 1Откройте список справочника, где находится предопределённый элемент (например, «Номенклатура», «Склады», «Статьи расходов»).
- 2Найдите нужный элемент и откройте его форму двойным щелчком.
- 3Измените наименование и при необходимости другие доступные реквизиты.
- 4Нажмите «Записать и закрыть».
- 5Проверьте, как новое наименование отображается в документах и отчётах, где элемент уже использовался.
Если кнопка записи недоступна или поле заблокировано, причин может быть несколько: у пользователя нет прав на редактирование объекта, в конфигурации включён запрет редактирования предопределённых данных, либо элемент заблокирован другим сеансом. Первое решается настройкой ролей, второе — изменением настроек в конфигураторе, третье — завершением конфликтующего сеанса.
Важно понимать: переименование элемента не создаёт новый объект. Ссылка остаётся той же, поэтому все документы, проводки и регистры, где элемент использовался, автоматически начнут показывать новое наименование. Никакой замены в документах выполнять не нужно.
Как заменить предопределённый элемент на другой в документах
Иногда требуется не переименовать, а заменить: например, предопределённая статья затрат больше не используется, и вместо неё в документах должна стоять другая. Здесь есть два подхода, и выбор зависит от того, нужно ли сохранить историю.
Первый подход — просто переименовать существующий предопределённый элемент, как описано выше. История сохранится: старые документы будут показывать новое наименование, что логично, если суть элемента не изменилась, а уточнилось только название.
Второй подход — массовая замена ссылок. Если нужно, чтобы вместо предопределённого элемента везде использовался другой элемент, применяется штатная обработка поиска и замены значений (в типовых конфигурациях она обычно доступна в разделе администрирования) или обработка «Поиск и замена значений» с диска ИТС. После замены предопределённый элемент можно пометить на удаление — но не удалять физически, если конфигурация всё ещё обращается к нему в коде.
Изменение предопределённого элемента в конфигураторе
Когда требуется поменять служебное имя, состав предопределённых элементов или их реквизиты на уровне метаданных, работа ведётся в конфигураторе. Для этого конфигурация должна быть открыта для изменений (снята с полной поддержки или включена возможность изменения).
Порядок действий: откройте конфигуратор, найдите нужный объект (справочник, план видов характеристик, план счетов), откройте его свойства и перейдите на закладку «Прочие» — «Предопределённые». В списке можно добавить новый элемент, переименовать существующий или удалить. После сохранения конфигурации и обновления конфигурации базы данных платформа синхронизирует данные: создаст новые элементы, перепривяжет переименованные и отвяжет удалённые.
Переименование предопределённого элемента в конфигураторе — относительно безопасная операция: платформа при обновлении свяжет существующий элемент данных с новым именем, и ссылка не потеряется. Но нужно одновременно исправить все обращения к этому имени в коде. Для этого используйте глобальный поиск по конфигурации (меню «Правка» — «Глобальный поиск») с текстом старого имени — он найдёт все места в модулях, где используется это обращение.
Обновление предопределённых данных при обновлении конфигурации
Особый случай — обновление типовой конфигурации. В новых релизах поставщик может добавлять, переименовывать или удалять предопределённые элементы. При обновлении конфигурации базы данных платформа автоматически выполняет синхронизацию: новые предопределённые элементы создаются в данных, переименованные — связываются с уже существующими, удалённые из метаданных — теряют связь, но физически остаются в базе как обычные элементы.
Если по какой-то причине автоматическое создание не сработало (например, обновление прервано или режим обновления предопределённых данных был изменён), элементы можно создать принудительно. Для этого в режиме предприятия через встроенный язык используется метод менеджера объекта ОбновитьПредопределенныеДанные(), либо при обновлении конфигурации базы данных в конфигураторе устанавливается соответствующий режим в параметрах обновления.
Признак проблемы с предопределёнными данными — сообщения об ошибках вида «Предопределенный элемент ... отсутствует в данных» при работе документов или отчётов. Это сигнал, что метаданные требуют элемент, которого нет в таблице данных, и нужно выполнить обновление предопределённых данных.
Как проверить результат и убедиться, что ничего не сломалось
После любого изменения предопределённых элементов полезно выполнить короткую проверку. Минимальный набор: открыть элемент в пользовательском режиме и убедиться, что наименование и реквизиты корректны; открыть документ, где элемент использовался ранее, и проверить отображение; запустить типовой отчёт или операцию, которая обращается к этому элементу в коде.
Как проверить результат
Элемент открывается, наименование и реквизиты отображаются корректно
Ошибка открытия формы или пустые реквизиты
В документах показывается актуальное наименование, проведение работает
Ошибки при проведении или «Объект не найден»
Отчёты и обработки выполняются без сообщений об ошибках
Ошибка «Предопределенный элемент отсутствует в данных»
Если изменения делались в конфигураторе, дополнительно стоит выполнить тестирование и исправление информационной базы в режиме проверки ссылочной целостности — это выявит «битые» ссылки, если элемент всё же был удалён некорректно.
Что важно запомнить
Наименование и реквизиты предопределённого элемента безопасно меняются в пользовательском режиме — ссылка и связи сохраняются. Служебное имя меняется только в конфигураторе с обязательной правкой всех обращений в коде. Удалять предопределённые элементы без анализа кода нельзя, а перед любыми изменениями стоит сделать резервную копию.
Частые вопросы
Можно ли удалить предопределённый элемент?
Технически пометить на удаление можно, но делать это стоит только после проверки, что код конфигурации к нему не обращается. В типовых конфигурациях предопределённые элементы почти всегда используются алгоритмами, поэтому вместо удаления безопаснее переименовать элемент или прекратить его использование в новых документах.
Почему поле наименования предопределённого элемента недоступно для редактирования?
Чаще всего причина в правах пользователя или в программной блокировке, установленной конфигурацией. Проверьте роли пользователя и попробуйте выполнить редактирование под учётной записью с полными правами. Если поле заблокировано программно, потребуется доработка конфигурации.
Что делать, если появилась ошибка «Предопределенный элемент отсутствует в данных»?
Ошибка означает, что в метаданных элемент есть, а в данных его нет. Обычно помогает принудительное обновление предопределённых данных: метод ОбновитьПредопределенныеДанные() у соответствующего менеджера объекта или повторное обновление конфигурации базы данных с включённым режимом обновления предопределённых данных.
Чем предопределённый элемент отличается от помеченного специальной пиктограммой?
Это одно и то же: пиктограмма в списке как раз и показывает, что элемент предопределённый. Вид пиктограммы зависит от конфигурации, но смысл один — элемент связан с метаданными и используется кодом по служебному имени.
Можно ли создать предопределённый элемент без конфигуратора?
Нет. В пользовательском режиме создаются только обычные элементы. Связь элемента с метаданными по имени устанавливается исключительно через конфигуратор при описании предопределённых данных и последующем обновлении конфигурации базы данных.