В системе 1С:Предприятие термин «предопределенный» встречается повсеместно — от справочников до документов. Но что он означает на практике? Почему некоторые элементы нельзя удалить, а другие автоматически восстанавливаются после обновления? Если вы сталкивались с ошибками вроде «Не найден предопределенный элемент» или пытались изменить стандартный справочник, эта статья поможет разобраться в механизме предопределенных данных.
Предопределенные элементы — это «зашитые» в конфигурацию объекты, которые 1С использует для корректной работы типовых механизмов. Они отличаются от обычных элементов тем, что их состав и свойства задаются на этапе разработки конфигурации, а не пользователем в процессе работы. Например, в справочнике «Валюты» предопределенными будут Рубль, Доллар США или Евро — их нельзя удалить, даже если ваша компания не работает с иностранной валютой.
В этой статье мы детально разберём:
- 🔹 Что такое предопределенные данные и чем они отличаются от обычных элементов
- 🔹 Где хранятся предопределенные элементы и как их найти в конфигураторе
- 🔹 Как редактировать предопределенные данные (и можно ли это делать)
- 🔹 Типичные ошибки, связанные с предопределенными элементами, и способы их исправления
А также ответим на частые вопросы: почему предопределенные элементы восстанавливаются после обновления, как их переносить между базами и что делать, если они «исчезли».
1. Предопределенные элементы в 1С: определение и ключевые особенности
Предопределенные элементы — это объекты 1С:Предприятие, которые создаются автоматически при инициализации базы данных и не могут быть удалены пользователем через интерфейс программы. Их основное назначение — обеспечить стабильную работу типовых механизмов, таких как бухгалтерские операции, расчёты зарплаты или торговля.
Ключевые признаки предопределенных элементов:
- 📌 Не удаляются стандартными средствами (кнопка «Удалить» недоступна или появляется предупреждение)
- 📌 Восстанавливаются после обновления конфигурации или тестирования и исправления ИБ
- 📌 Имеют фиксированные идентификаторы (например,
Валюта.Рубльвсегда имеет один и тот же UUID) - 📌 Могут быть изменены только в конфигураторе (с ограничениями)
Примеры предопределенных элементов:
- 💰 Валюты: Рубль, Доллар США, Евро
- 📦 Единицы измерения: Штука, Килограмм, Метр
- 👥 Виды контрагентов: Покупатель, Поставщик, Банк
- 📄 Виды документов: Счёт-фактура, Акт выполненных работ
Важно понимать, что предопределенные элементы — это не просто «защищённые» данные. Они встроены в логику конфигурации. Например, если в справочнике «Ставки НДС» удалить предопределенную ставку 20%, то документы, использующие её, перестанут проводиться, а отчёты (например, декларация по НДС) будут формироваться с ошибками.
⚠️ Внимание: В некоторых конфигурациях (например, 1С:Бухгалтерия 8) предопределенные элементы могут быть скрыты от пользователя в интерфейсе. Чтобы их увидеть, требуется включить отображение служебных данных в настройках списка.
2. Где хранятся предопределенные данные в 1С
Предопределенные элементы хранятся в двух местах:
- В конфигурации — их описание (имена, свойства, идентификаторы) заложено в метаданных.
- В базе данных — фактические записи с данными (наименование, код, реквизиты).
Чтобы найти предопределенные элементы в конфигураторе, выполните следующие шаги:
Откройте конфигуратор в режиме «1С:Предприятие»|Перейдите в дерево метаданных (Объекты → Справочники или другой раздел)|Выберите нужный справочник (например, «Валюты»)|Нажмите правой кнопкой и выберите «Предопределенные элементы»|В открывшемся окне вы увидите список всех предопределенных записей-->
Например, для справочника Валюты путь будет таким:
Объекты конфигурации → Справочники → Валюты → Предопределенные элементы.
В базе данных предопределенные элементы хранятся в тех же таблицах, что и обычные, но имеют специальную пометку. Их можно идентифицировать по:
- 🔠 Пометке «Предопределенный» в колонке
IsPredefined(если смотреть напрямую в SQL) - 🔠 Фиксированному UUID (уникальному идентификатору), который не меняется при переносе между базами
- 🔠 Системным реквизитам, таким как
ПредустановленныйилиСлужебный
Если предопределенный элемент был случайно удалён (например, через прямой SQL-запрос), его можно восстановить с помощью процедуры ТестированиеИИсправлениеИБ() или через выгрузку/загрузку данных (XML).
ВЫБРАТЬ
Ссылка КАК Ссылка,
Наименование КАК Наименование
ИЗ
Справочник.Валюты КАК Валюты
ГДЕ
Валюты.ЭтоГруппа = ЛОЖЬ
И Валюты.Предопределенный = ИСТИНА
Замените Справочник.Валюты на нужный объект.-->
3. Можно ли редактировать предопределенные элементы
Да, предопределенные элементы можно редактировать, но с серьёзными ограничениями. Изменения допускаются только в конфигураторе (в режиме 1С:Предприятие большинство полей будет заблокировано). Вот что можно делать:
| Действие | Разрешено? | Последствия |
|---|---|---|
| Изменение наименования | ✅ Да | Отобразится в интерфейсе, но может сломать отчёты, если они ссылаются на старое имя |
| Редактирование кода | ✅ Да | Может привести к ошибкам в обменах данными (например, при выгрузке в 1С:Отчётность) |
| Добавление реквизитов | ✅ Да | Новые реквизиты будут доступны только для этого элемента, но могут не перенестись при обновлении |
| Удаление элемента | ❌ Нет | Приведёт к ошибкам при проведении документов или формировании отчётов |
| Изменение UUID | ❌ Нет | Сломает все ссылки на этот элемент в базе |
При редактировании предопределенных элементов в конфигураторе следует придерживаться правил:
- 🛠️ Не меняйте идентификаторы (UUID) — это приведёт к разрыву ссылок в документах.
- 🛠️ Сохраняйте оригинальные коды, если они используются в типовых обменах (например, код
840для доллара США). - 🛠️ Проверяйте зависимые объекты — некоторые отчёты или обработки могут жёстко ссылаться на предопределенные элементы по имени.
⚠️ Внимание: Если вы изменили предопределенный элемент (например, переименовали валюту), а затем обновили конфигурацию, ваши правки могут быть перезаписаны стандартными значениями. Чтобы этого избежать, используйте механизм расширений конфигурации.
4. Типичные ошибки с предопределенными элементами и их решения
Работа с предопределенными элементами часто сопровождается ошибками, особенно при обновлении конфигураций или переносе данных. Рассмотрим наиболее распространённые проблемы и способы их устранения.
Ошибка 1: «Не найден предопределенный элемент»
Эта ошибка возникает, когда система не может найти элемент, на который ссылается код или документ. Причины:
- 🔍 Элемент был удалён вручную (например, через SQL).
- 🔍 UUID элемента изменился после восстановления базы из резервной копии.
- 🔍 Конфигурация обновлена, но предопределенные данные не синхронизированы.
- Запустите
Тестирование и исправление ИБс флагом «Проверять логическую целостность». - Если ошибка осталась, восстановите элемент через конфигуратор (
Предопределенные элементы → Добавить). - Для сложных случаев используйте обработку «Поиск и исправление ссылок» (доступна в 1С:ИТС).
Ошибка 2: Дублирование предопределенных элементов
Иногда после обновления или переноса данных появляются дубли предопределенных элементов (например, две записи «Рубль» с разными UUID). Это мешает корректной работе системы, так как документы могут ссылаться на «неправильный» экземпляр.
Решение:
- 🔄 Выгрузите данные в
XMLс флагом «Только предопределенные». - 🔄 Удалите все дубли вручную (через конфигуратор или SQL).
- 🔄 Загрузите данные обратно, выбрав опцию «Заменять существующие».
Что будет, если оставить дубли предопределенных элементов?
Дубли приводят к непредсказуемому поведению системы:
- 📉 Документы могут проводиться с ошибками (например, «Неоднозначная ссылка»).
- 📉 Отчёты будут формироваться с искажёнными данными (например, суммы по валютам сложатся неверно).
- 📉 При обновлении конфигурации возможны конфликты, приводящие к потере данных.
В некоторых случаях 1С автоматически выбирает первый найденный элемент, что маскирует проблему до критического момента (например, при сдаче отчётности).
Ошибка 3: Предопределенные элементы не обновляются
После обновления конфигурации новые предопределенные элементы (например, добавленные в последней версии) не появляются в базе. Это происходит, если:
- 🔄 Обновление выполнялось без флага «Загружать предопределенные данные».
- 🔄 Права пользователя не позволяют изменять служебные данные.
- 🔄 В базе есть модификации, блокирующие обновление (например, расширения).
Решение: Повторите обновление с включённой опцией Загружать предопределенные данные. Если проблема осталась, выполните синхронизацию вручную через Администрирование → Поддержка и обслуживание → Синхронизация предопределенных данных.
5. Как переносить предопределенные элементы между базами
Перенос предопределенных элементов требуется при миграции данных, объединении баз или восстановлении после сбоев. Основные способы:
Способ 1: Выгрузка/загрузка в XML
Самый надёжный метод — использовать стандартный механизм выгрузки:
- В исходной базе:
Администрирование → Выгрузка данных. - Выберите формат
XMLи отметьте флагТолько предопределенные данные. - В целевой базе:
Администрирование → Загрузка данныхс опциейЗаменять существующие.
⚠️ Внимание: При загрузке в базу с другой версией конфигурации возможны конфликты. Например, если в старой базе предопределенный элемент был изменён, а в новой версии он обновлён — ваши правки будут утеряны.
Способ 2: Прямой перенос через SQL
Для опытных пользователей возможен перенос через запросы к базе. Например, для справочника Валюты:
-- Пример запроса для переноса предопределенной валюты
ВСТАВИТЬ В _Reference16 (ReferenceID, DeletionMark, Predefined, PredefinedDataName, Description)
ЗНАЧЕНИЯ (Новый UUID(), 0, 1, 'Валюта_Рубль', 'Рубль')
Этот метод требует знания структуры базы и не рекомендуется для типовых конфигураций, так как может нарушить целостность данных.
Способ 3: Использование обработок
В 1С:ИТС и на портале Infostart доступны обработки для переноса предопределенных данных, например:
- 📁 «Перенос предопределенных элементов между базами»
- 📁 «Синхронизация предопределенных данных»
Эти инструменты автоматизируют процесс и снижают риск ошибок.
При переносе предопределенных элементов всегда проверяйте их ссылки в документах. Если UUID элемента изменится, все документы, ссылающиеся на него, станут некорректными.
6. Предопределенные элементы в типовых конфигурациях 1С
В каждой типовой конфигурации 1С есть свой набор предопределенных элементов. Рассмотрим наиболее важные из них:
| Конфигурация | Примеры предопределенных элементов | Назначение |
|---|---|---|
| 1С:Бухгалтерия 8 |
|
Обеспечение корректного учёта и отчётности |
| 1С:Зарплата и Управление Персоналом |
|
Автоматизация расчёта зарплаты и кадрового учёта |
| 1С:Управление Торговлей |
|
Стандартизация торговых операций |
| 1С:ERP |
|
Интеграция производственного и финансового учёта |
В некоторых конфигурациях предопределенные элементы скрыты от пользователя по умолчанию. Чтобы их увидеть, необходимо:
- Открыть список (например, справочник «Валюты»).
- Нажать
Ещё → Настройки списка. - Включить опцию
Показывать предопределенные элементы.
Если предопределенный элемент отсутствует в списке, но должен быть (например, после обновления), попробуйте:
- 🔄 Выполнить
Тестирование и исправление ИБ. - 🔄 Обновить конфигурацию с флагом
Загружать предопределенные данные. - 🔄 Вручную добавить элемент через конфигуратор (если вы уверены в его параметрах).
7. Программная работа с предопределенными элементами
Для разработчиков 1С предопределенные элементы доступны через встроенный язык. Основные методы работы:
Получение предопределенного элемента
Чтобы получить ссылку на предопределенный элемент, используйте метод ПредопределенныйЭлемент() или НайтиПоНаименованию() с проверкой флага Предопределенный:
// Пример получения предопределенной валюты "Рубль"
СсылкаНаРубль = Справочники.Валюты.ПредопределенныйЭлемент("Рубль");
// Альтернативный вариант (менее надёжный)
СсылкаНаРубль = Справочники.Валюты.НайтиПоНаименованию("Рубль", Истина);
Если СсылкаНаРубль.Предопределенный Тогда
// Работаем с элементом
КонецЕсли;
Проверка предопределенности элемента
Чтобы узнать, является ли элемент предопределенным, используйте свойство Предопределенный:
Если Элемент.Предопределенный Тогда
Сообщить("Этот элемент предопределен в конфигурации!");
КонецЕсли;
Создание новых предопределенных элементов
Новые предопределенные элементы можно добавлять только в конфигураторе:
- Откройте нужный справочник в дереве метаданных.
- Выберите
Предопределенные элементы → Добавить. - Задайте имя (например,
Валюта_Юань) и реквизиты. - Сохраните конфигурацию и обновите базу данных.
В коде новый элемент будет доступен через ПредопределенныйЭлемент("Валюта_Юань").
⚠️ Внимание: При добавлении предопределенных элементов вручную убедитесь, что их имена и UUID уникальны. Конфликты идентификаторов могут привести к ошибкам при обновлении конфигурации.
Обработка событий для предопределенных элементов
В некоторых случаях требуется выполнить действие при изменении предопределенного элемента. Для этого используйте обработчики событий ПриЗаписи или ПередЗаписью с проверкой:
Процедура ПередЗаписью(Отказ)
Если ЭтотОбъект.Предопределенный Тогда
// Логика для предопределенных элементов
Сообщить("Изменение предопределенного элемента!");
КонецЕсли;
КонецПроцедуры
FAQ: Частые вопросы о предопределенных элементах в 1С
🔹 Почему предопределенные элементы восстанавливаются после обновления конфигурации?
Предопределенные элементы являются частью конфигурации, а не данных пользователя. При обновлении 1С сверяет их с эталонными значениями из новой версии и восстанавливает стандартные настройки. Если вы изменили предопределенный элемент (например, переименовали валюту), эти изменения могут быть утеряны.
Чтобы сохранить правки, используйте расширения конфигурации или переносите изменения в новую версию вручную.
🔹 Можно ли удалить предопределенный элемент через SQL?
Технически — да, но это крайне не рекомендуется. Удаление предопределенного элемента напрямую в базе приведёт к:
- 🚨 Ошибкам при проведении документов, ссылающихся на этот элемент.
- 🚨 Некорректной работе отчётов и обработок.
- 🚨 Проблемам при следующем обновлении конфигурации.
Если элемент мешает, лучше скрыть его (установить пометку удаления) или заменить на другой предопределенный.
🔹 Как перенести предопределенные элементы из одной базы в другую без XML?
Альтернативные способы переноса:
- Через обработку «Универсальный обмен данными» (доступна в 1С:ИТС).
- С помощью внешних отчётов/обработок, например, «ВыгрузкаЗагрузкаДанныхЧерезФайл».
- Прямой перенос через
COM-соединение(требует знаний программирования).
Для сложных случаев (например, при слиянии баз) рекомендуется использовать специализированные инструменты, такие как «1С:Конвертация данных».
🔹 Почему в отчёте не отображаются предопределенные элементы?
Возможные причины:
- 📌 В настройках отчёта установлен фильтр, исключающий предопределенные элементы.
- 📌 Элементы скрыты в интерфейсе (см.
Настройки списка). - 📌 В коде отчёта есть явная проверка на
НЕ Предопределенный.
Решение: проверьте настройки отчёта и код его формирования. Если проблема в коде, измените условие или добавьте исключение для нужных элементов.
🔹 Как добавить свой предопределенный элемент в типовую конфигурацию?
В типовых конфигурациях добавлять предопределенные элементы не рекомендуется, так как это может нарушить поддержку. Однако если это необходимо:
- Создайте расширение конфигурации.
- В расширении добавьте новый предопределенный элемент (например, в справочник
Валюты). - Обновите базу данных.
Такой подход сохраняет возможность обновления типовой конфигурации без потери ваших изменений.