В системе 1С:Предприятие термин «предопределенный» встречается повсеместно — от справочников до документов. Но что он означает на практике? Почему некоторые элементы нельзя удалить, а другие автоматически восстанавливаются после обновления? Если вы сталкивались с ошибками вроде «Не найден предопределенный элемент» или пытались изменить стандартный справочник, эта статья поможет разобраться в механизме предопределенных данных.

Предопределенные элементы — это «зашитые» в конфигурацию объекты, которые использует для корректной работы типовых механизмов. Они отличаются от обычных элементов тем, что их состав и свойства задаются на этапе разработки конфигурации, а не пользователем в процессе работы. Например, в справочнике «Валюты» предопределенными будут Рубль, Доллар США или Евро — их нельзя удалить, даже если ваша компания не работает с иностранной валютой.

В этой статье мы детально разберём:

  • 🔹 Что такое предопределенные данные и чем они отличаются от обычных элементов
  • 🔹 Где хранятся предопределенные элементы и как их найти в конфигураторе
  • 🔹 Как редактировать предопределенные данные (и можно ли это делать)
  • 🔹 Типичные ошибки, связанные с предопределенными элементами, и способы их исправления

А также ответим на частые вопросы: почему предопределенные элементы восстанавливаются после обновления, как их переносить между базами и что делать, если они «исчезли».

📊 Вы работаете с предопределенными элементами в 1С?
Да, регулярно
Иногда, при настройке
Только если возникают ошибки
Не знаю, что это такое

1. Предопределенные элементы в 1С: определение и ключевые особенности

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

Ключевые признаки предопределенных элементов:

  • 📌 Не удаляются стандартными средствами (кнопка «Удалить» недоступна или появляется предупреждение)
  • 📌 Восстанавливаются после обновления конфигурации или тестирования и исправления ИБ
  • 📌 Имеют фиксированные идентификаторы (например, Валюта.Рубль всегда имеет один и тот же UUID)
  • 📌 Могут быть изменены только в конфигураторе (с ограничениями)

Примеры предопределенных элементов:

  • 💰 Валюты: Рубль, Доллар США, Евро
  • 📦 Единицы измерения: Штука, Килограмм, Метр
  • 👥 Виды контрагентов: Покупатель, Поставщик, Банк
  • 📄 Виды документов: Счёт-фактура, Акт выполненных работ

Важно понимать, что предопределенные элементы — это не просто «защищённые» данные. Они встроены в логику конфигурации. Например, если в справочнике «Ставки НДС» удалить предопределенную ставку 20%, то документы, использующие её, перестанут проводиться, а отчёты (например, декларация по НДС) будут формироваться с ошибками.

⚠️ Внимание: В некоторых конфигурациях (например, 1С:Бухгалтерия 8) предопределенные элементы могут быть скрыты от пользователя в интерфейсе. Чтобы их увидеть, требуется включить отображение служебных данных в настройках списка.

2. Где хранятся предопределенные данные в 1С

Предопределенные элементы хранятся в двух местах:

  1. В конфигурации — их описание (имена, свойства, идентификаторы) заложено в метаданных.
  2. В базе данных — фактические записи с данными (наименование, код, реквизиты).

Чтобы найти предопределенные элементы в конфигураторе, выполните следующие шаги:

Откройте конфигуратор в режиме «1С:Предприятие»|Перейдите в дерево метаданных (Объекты → Справочники или другой раздел)|Выберите нужный справочник (например, «Валюты»)|Нажмите правой кнопкой и выберите «Предопределенные элементы»|В открывшемся окне вы увидите список всех предопределенных записей-->

Например, для справочника Валюты путь будет таким: Объекты конфигурации → Справочники → Валюты → Предопределенные элементы.

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

  • 🔠 Пометке «Предопределенный» в колонке IsPredefined (если смотреть напрямую в SQL)
  • 🔠 Фиксированному UUID (уникальному идентификатору), который не меняется при переносе между базами
  • 🔠 Системным реквизитам, таким как Предустановленный или Служебный

Если предопределенный элемент был случайно удалён (например, через прямой SQL-запрос), его можно восстановить с помощью процедуры ТестированиеИИсправлениеИБ() или через выгрузку/загрузку данных (XML).

ВЫБРАТЬ

Ссылка КАК Ссылка,

Наименование КАК Наименование

ИЗ

Справочник.Валюты КАК Валюты

ГДЕ

Валюты.ЭтоГруппа = ЛОЖЬ

И Валюты.Предопределенный = ИСТИНА

Замените Справочник.Валюты на нужный объект.-->

3. Можно ли редактировать предопределенные элементы

Да, предопределенные элементы можно редактировать, но с серьёзными ограничениями. Изменения допускаются только в конфигураторе (в режиме 1С:Предприятие большинство полей будет заблокировано). Вот что можно делать:

Действие Разрешено? Последствия
Изменение наименования ✅ Да Отобразится в интерфейсе, но может сломать отчёты, если они ссылаются на старое имя
Редактирование кода ✅ Да Может привести к ошибкам в обменах данными (например, при выгрузке в 1С:Отчётность)
Добавление реквизитов ✅ Да Новые реквизиты будут доступны только для этого элемента, но могут не перенестись при обновлении
Удаление элемента ❌ Нет Приведёт к ошибкам при проведении документов или формировании отчётов
Изменение UUID ❌ Нет Сломает все ссылки на этот элемент в базе

При редактировании предопределенных элементов в конфигураторе следует придерживаться правил:

  • 🛠️ Не меняйте идентификаторы (UUID) — это приведёт к разрыву ссылок в документах.
  • 🛠️ Сохраняйте оригинальные коды, если они используются в типовых обменах (например, код 840 для доллара США).
  • 🛠️ Проверяйте зависимые объекты — некоторые отчёты или обработки могут жёстко ссылаться на предопределенные элементы по имени.
⚠️ Внимание: Если вы изменили предопределенный элемент (например, переименовали валюту), а затем обновили конфигурацию, ваши правки могут быть перезаписаны стандартными значениями. Чтобы этого избежать, используйте механизм расширений конфигурации.

4. Типичные ошибки с предопределенными элементами и их решения

Работа с предопределенными элементами часто сопровождается ошибками, особенно при обновлении конфигураций или переносе данных. Рассмотрим наиболее распространённые проблемы и способы их устранения.

Ошибка 1: «Не найден предопределенный элемент»

Эта ошибка возникает, когда система не может найти элемент, на который ссылается код или документ. Причины:

  • 🔍 Элемент был удалён вручную (например, через SQL).
  • 🔍 UUID элемента изменился после восстановления базы из резервной копии.
  • 🔍 Конфигурация обновлена, но предопределенные данные не синхронизированы.
Решение:
  1. Запустите Тестирование и исправление ИБ с флагом «Проверять логическую целостность».
  2. Если ошибка осталась, восстановите элемент через конфигуратор (Предопределенные элементы → Добавить).
  3. Для сложных случаев используйте обработку «Поиск и исправление ссылок» (доступна в 1С:ИТС).

Ошибка 2: Дублирование предопределенных элементов

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

Решение:

  • 🔄 Выгрузите данные в XML с флагом «Только предопределенные».
  • 🔄 Удалите все дубли вручную (через конфигуратор или SQL).
  • 🔄 Загрузите данные обратно, выбрав опцию «Заменять существующие».
Что будет, если оставить дубли предопределенных элементов?

Дубли приводят к непредсказуемому поведению системы:

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

В некоторых случаях автоматически выбирает первый найденный элемент, что маскирует проблему до критического момента (например, при сдаче отчётности).

Ошибка 3: Предопределенные элементы не обновляются

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

  • 🔄 Обновление выполнялось без флага «Загружать предопределенные данные».
  • 🔄 Права пользователя не позволяют изменять служебные данные.
  • 🔄 В базе есть модификации, блокирующие обновление (например, расширения).

Решение: Повторите обновление с включённой опцией Загружать предопределенные данные. Если проблема осталась, выполните синхронизацию вручную через Администрирование → Поддержка и обслуживание → Синхронизация предопределенных данных.

5. Как переносить предопределенные элементы между базами

Перенос предопределенных элементов требуется при миграции данных, объединении баз или восстановлении после сбоев. Основные способы:

Способ 1: Выгрузка/загрузка в XML

Самый надёжный метод — использовать стандартный механизм выгрузки:

  1. В исходной базе: Администрирование → Выгрузка данных.
  2. Выберите формат XML и отметьте флаг Только предопределенные данные.
  3. В целевой базе: Администрирование → Загрузка данных с опцией Заменять существующие.
⚠️ Внимание: При загрузке в базу с другой версией конфигурации возможны конфликты. Например, если в старой базе предопределенный элемент был изменён, а в новой версии он обновлён — ваши правки будут утеряны.

Способ 2: Прямой перенос через SQL

Для опытных пользователей возможен перенос через запросы к базе. Например, для справочника Валюты:

-- Пример запроса для переноса предопределенной валюты

ВСТАВИТЬ В _Reference16 (ReferenceID, DeletionMark, Predefined, PredefinedDataName, Description)

ЗНАЧЕНИЯ (Новый UUID(), 0, 1, 'Валюта_Рубль', 'Рубль')

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

Способ 3: Использование обработок

В 1С:ИТС и на портале Infostart доступны обработки для переноса предопределенных данных, например:

  • 📁 «Перенос предопределенных элементов между базами»
  • 📁 «Синхронизация предопределенных данных»

Эти инструменты автоматизируют процесс и снижают риск ошибок.

💡

При переносе предопределенных элементов всегда проверяйте их ссылки в документах. Если UUID элемента изменится, все документы, ссылающиеся на него, станут некорректными.

6. Предопределенные элементы в типовых конфигурациях 1С

В каждой типовой конфигурации есть свой набор предопределенных элементов. Рассмотрим наиболее важные из них:

Конфигурация Примеры предопределенных элементов Назначение
1С:Бухгалтерия 8
  • 💰 Валюты (Рубль, Доллар, Евро)
  • 📊 Ставки НДС (20%, 10%, 0%)
  • 📑 Виды операций (Поступление товаров, Реализация)
Обеспечение корректного учёта и отчётности
1С:Зарплата и Управление Персоналом
  • 👥 Виды расчётов (Оклад, Премия, Больничный)
  • 📅 Виды времени (Рабочие дни, Отпуск, Командировка)
Автоматизация расчёта зарплаты и кадрового учёта
1С:Управление Торговлей
  • 📦 Виды номенклатуры (Товар, Услуга, Комплект)
  • 🚚 Виды цен (Розничная, Оптовая, Закупочная)
Стандартизация торговых операций
1С:ERP
  • 🏭 Виды затрат (Материалы, Амортизация, Зарплата)
  • 📈 Виды плановых показателей (Выручка, Прибыль)
Интеграция производственного и финансового учёта

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

  1. Открыть список (например, справочник «Валюты»).
  2. Нажать Ещё → Настройки списка.
  3. Включить опцию Показывать предопределенные элементы.

Если предопределенный элемент отсутствует в списке, но должен быть (например, после обновления), попробуйте:

  • 🔄 Выполнить Тестирование и исправление ИБ.
  • 🔄 Обновить конфигурацию с флагом Загружать предопределенные данные.
  • 🔄 Вручную добавить элемент через конфигуратор (если вы уверены в его параметрах).

7. Программная работа с предопределенными элементами

Для разработчиков предопределенные элементы доступны через встроенный язык. Основные методы работы:

Получение предопределенного элемента

Чтобы получить ссылку на предопределенный элемент, используйте метод ПредопределенныйЭлемент() или НайтиПоНаименованию() с проверкой флага Предопределенный:

// Пример получения предопределенной валюты "Рубль"

СсылкаНаРубль = Справочники.Валюты.ПредопределенныйЭлемент("Рубль");

// Альтернативный вариант (менее надёжный)

СсылкаНаРубль = Справочники.Валюты.НайтиПоНаименованию("Рубль", Истина);

Если СсылкаНаРубль.Предопределенный Тогда

// Работаем с элементом

КонецЕсли;

Проверка предопределенности элемента

Чтобы узнать, является ли элемент предопределенным, используйте свойство Предопределенный:

Если Элемент.Предопределенный Тогда

Сообщить("Этот элемент предопределен в конфигурации!");

КонецЕсли;

Создание новых предопределенных элементов

Новые предопределенные элементы можно добавлять только в конфигураторе:

  1. Откройте нужный справочник в дереве метаданных.
  2. Выберите Предопределенные элементы → Добавить.
  3. Задайте имя (например, Валюта_Юань) и реквизиты.
  4. Сохраните конфигурацию и обновите базу данных.

В коде новый элемент будет доступен через ПредопределенныйЭлемент("Валюта_Юань").

⚠️ Внимание: При добавлении предопределенных элементов вручную убедитесь, что их имена и UUID уникальны. Конфликты идентификаторов могут привести к ошибкам при обновлении конфигурации.

Обработка событий для предопределенных элементов

В некоторых случаях требуется выполнить действие при изменении предопределенного элемента. Для этого используйте обработчики событий ПриЗаписи или ПередЗаписью с проверкой:

Процедура ПередЗаписью(Отказ)

Если ЭтотОбъект.Предопределенный Тогда

// Логика для предопределенных элементов

Сообщить("Изменение предопределенного элемента!");

КонецЕсли;

КонецПроцедуры

FAQ: Частые вопросы о предопределенных элементах в 1С

🔹 Почему предопределенные элементы восстанавливаются после обновления конфигурации?

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

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

🔹 Можно ли удалить предопределенный элемент через SQL?

Технически — да, но это крайне не рекомендуется. Удаление предопределенного элемента напрямую в базе приведёт к:

  • 🚨 Ошибкам при проведении документов, ссылающихся на этот элемент.
  • 🚨 Некорректной работе отчётов и обработок.
  • 🚨 Проблемам при следующем обновлении конфигурации.

Если элемент мешает, лучше скрыть его (установить пометку удаления) или заменить на другой предопределенный.

🔹 Как перенести предопределенные элементы из одной базы в другую без XML?

Альтернативные способы переноса:

  1. Через обработку «Универсальный обмен данными» (доступна в 1С:ИТС).
  2. С помощью внешних отчётов/обработок, например, «ВыгрузкаЗагрузкаДанныхЧерезФайл».
  3. Прямой перенос через COM-соединение (требует знаний программирования).

Для сложных случаев (например, при слиянии баз) рекомендуется использовать специализированные инструменты, такие как «1С:Конвертация данных».

🔹 Почему в отчёте не отображаются предопределенные элементы?

Возможные причины:

  • 📌 В настройках отчёта установлен фильтр, исключающий предопределенные элементы.
  • 📌 Элементы скрыты в интерфейсе (см. Настройки списка).
  • 📌 В коде отчёта есть явная проверка на НЕ Предопределенный.

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

🔹 Как добавить свой предопределенный элемент в типовую конфигурацию?

В типовых конфигурациях добавлять предопределенные элементы не рекомендуется, так как это может нарушить поддержку. Однако если это необходимо:

  1. Создайте расширение конфигурации.
  2. В расширении добавьте новый предопределенный элемент (например, в справочник Валюты).
  3. Обновите базу данных.

Такой подход сохраняет возможность обновления типовой конфигурации без потери ваших изменений.