Код, Наименование, Ссылка и другие поля, которые платформа создаёт за вас
Содержание
Стандартные реквизиты в 1С — это поля объекта, которые платформа создаёт сама, как только вы добавляете справочник, документ или регистр. У справочника это Ссылка, Код, Наименование, ПометкаУдаления, у документа — Номер, Дата, Проведен. Их не нужно описывать в конфигураторе, их нельзя удалить кнопкой, но можно настроить: переименовать синоним, задать проверку заполнения, длину кода, формат.
Разработчику стандартные реквизиты нужны, чтобы правильно их использовать в коде и запросах и не дублировать своими полями. Пользователю и администратору — чтобы понимать, откуда в карточке берутся «Код» и «Наименование» и почему их нельзя просто убрать. Всё ниже относится к платформе 8.3 и одинаково работает в любой конфигурации: БП 3.0, ЗУП 3.1, УТ 11.
Что такое стандартные реквизиты и зачем их создаёт платформа
Любой прикладной объект 1С хранится в таблице базы данных. Часть колонок этой таблицы платформе нужна для собственной работы: опознать запись, связать её с другими, пометить на удаление, отследить изменения. Эти колонки и есть стандартные реквизиты.
Без них платформа не умеет делать базовые вещи:
- 🔗
Ссылка— уникальный идентификатор записи. Через него один объект ссылается на другой: документ на контрагента, строка на номенклатуру. - 🗑️
ПометкаУдаления— на этом флаге построено двухэтапное удаление: сначала пометка, потом обработка «Удаление помеченных объектов» с контролем ссылок. - 🔢
КодиНомер— человекочитаемый идентификатор, по нему ищут и вводят по строке. - 🕒
Датадокумента — по ней документы встают в хронологию, по ней строится последовательность проведения. - 🔄
ВерсияДанных— строка, которая меняется при каждой записи. Её используют обмены и контроль конфликтов редактирования.
Состав стандартных реквизитов зависит от вида объекта и от его свойств. Включили иерархию у справочника — появился Родитель. Указали владельца — появился Владелец. Включили иерархию групп и элементов — появился ЭтоГруппа.
Стандартные и пользовательские реквизиты: чем отличаются
Пользовательские (их ещё называют просто реквизитами) разработчик добавляет сам на вкладке Данные окна объекта. Стандартные приходят «в комплекте».
| Признак | Стандартный реквизит | Пользовательский реквизит |
|---|---|---|
| Кто создаёт | Платформа, автоматически | Разработчик в конфигураторе |
| Можно удалить | Нет. Только косвенно: обнулить длину кода, выключить иерархию | Да |
| Имя | Фиксированное (Код, Наименование, Дата) | Любое уникальное |
| Тип | Задан платформой или выбирается из короткого списка | Любой допустимый тип |
| Что настраивается | Синоним, подсказка, проверка заполнения, формат, параметры выбора | Всё, включая тип и индексирование |
| Доступ на запись | Часть только для чтения (Ссылка, Проведен, Предопределенный) | Обычно чтение и запись |
Главное практическое отличие — в именах. Нельзя создать свой реквизит Наименование или Дата у объекта, где такой стандартный уже есть: конфигуратор не даст сохранить неуникальное имя. Поэтому реквизит с датой поставки у документа называют, например, ДатаПоставки, а не Дата.
Если стандартное имя в интерфейсе не подходит, меняйте синоним, а не заводите параллельный реквизит. У справочника «Договоры» поле Наименование можно показать как «Номер и дата договора», и пользователь увидит именно эту надпись.
Где найти стандартные реквизиты в конфигураторе
Свои реквизиты видны в дереве конфигурации под объектом. Стандартных в дереве нет — они открываются отдельно.
Как открыть список
- Откройте конфигуратор и дерево конфигурации.
- Дважды щёлкните объект, например справочник
Номенклатура, чтобы открыть окно редактирования объекта. - Перейдите на вкладку
Данные. - Нажмите кнопку
Стандартные реквизиты. Откроется список с именами вродеКод,Наименование,Родитель. - Выделите строку и откройте палитру свойств (
Alt+Enter), чтобы настроить конкретный реквизит.
Что можно поменять у стандартного реквизита
- ✏️ Синоним — подпись поля в формах и отчётах.
- 💬 Подсказка — текст всплывающей подсказки.
- ✅ Проверка заполнения —
Выдавать ошибкузаставит пользователя заполнить поле перед записью. Так обычно делают сНаименованием. - 🎭 Формат и маска ввода — например, маска кода или формат даты.
- 🎯 Параметры выбора и связи параметров выбора — для ссылочных стандартных реквизитов (
Родитель,Владелец).
Что задаётся в свойствах самого объекта
Длина и тип кода, длина наименования, автонумерация, контроль уникальности, тип и длина номера документа, периодичность номера — это свойства объекта, а не реквизита. Их ищите на вкладках окна объекта (Нумерация у документа, Данные и Иерархия у справочника).
Если поставить длину кода или наименования справочника 0, соответствующий стандартный реквизит пропадёт из объекта. Код, который к нему обращался, сломается. Делайте так только в новом объекте, а не в работающей базе с готовыми отчётами и обработками.
Какие стандартные реквизиты есть у разных объектов
Ниже — основной состав для объектов, с которыми работают чаще всего. Реквизиты в скобках появляются только при определённых настройках.
Справочник
| Реквизит | Тип | Что хранит |
|---|---|---|
Ссылка | СправочникСсылка | Идентификатор элемента |
Код | Строка или Число | Код элемента (если длина кода больше 0) |
Наименование | Строка | Наименование (если длина больше 0) |
ПометкаУдаления | Булево | Помечен ли на удаление |
Предопределенный | Булево | Создан ли элемент как предопределённый в конфигурации |
ИмяПредопределенныхДанных | Строка | Имя предопределённого элемента |
(Родитель) | Ссылка на тот же справочник | Группа или вышестоящий элемент — при иерархии |
(ЭтоГруппа) | Булево | Признак группы — при иерархии групп и элементов |
(Владелец) | Ссылка на владельца | Чей это элемент — если задан владелец |
ВерсияДанных | Строка | Версия записи |
Классический пример подчинения: справочник «Договоры контрагентов» подчинён «Контрагентам», поэтому у договора есть Владелец — ссылка на контрагента.
Документ
- 📄
Ссылка,ПометкаУдаления,ВерсияДанных— как у справочника. - 🔢
Номер— строка или число, длина и периодичность уникальности задаются на вкладкеНумерация. - 📅
Дата— дата и время документа, всегда со временем. - ✔️
Проведен— признак проведения, только для чтения.
Регистры
- 📊 Регистр сведений
:
Период(если регистр периодический); при подчинении регистратору —Регистратор,НомерСтроки,Активность. - 📦 Регистр накопления:
Период,Регистратор,НомерСтроки,Активность, а у регистра остатков ещёВидДвижения(ПриходилиРасход). - 🧾 Регистр бухгалтерии
: кроме общих —
Счет(илиСчетДт/СчетКтпри корреспонденции).
Табличная часть
У каждой табличной части есть НомерСтроки и Ссылка — ссылка на объект-владелец. В запросе к Документ.РеализацияТоваровУслуг.Товары поле Ссылка даёт сам документ, а не строку.
Другие объекты
- 🗂️ План счетов
:
Код,Наименование,Родитель,Вид(активный, пассивный, активно-пассивный),Забалансовый,Порядок. - 🧩 План видов характеристик:
ТипЗначения— описание типов, которые может принимать характеристика. - 🔁 Бизнес-процесс и задача:
Номер,Дата, у бизнес-процессаСтартованиЗавершен, у задачиВыполнена,БизнесПроцесс,ТочкаМаршрута. - 🔌 План обмена:
Код,Наименование,НомерОтправленного,НомерПринятого.
Точный список для своего объекта всегда можно посмотреть кнопкой Стандартные реквизиты или программно — об этом ниже.
Как обращаться к стандартным реквизитам в коде и запросах
В языке 1С стандартный реквизит выглядит так же, как обычный: через точку от объекта или ссылки.
Чтение и запись у объекта
НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент();
НовыйЭлемент.Наименование = "Бумага А4";
НовыйЭлемент.Родитель = ГруппаКанцтовары; // если справочник иерархический
НовыйЭлемент.Записать();
Сообщить("Записан элемент с кодом " + НовыйЭлемент.Код);
Код при автонумерации назначается при записи, поэтому до вызова Записать() он пустой.
Несколько реквизитов только читаются. Для них есть отдельные методы:
| Реквизит | Как изменить |
|---|---|
Ссылка | Нельзя. Для нового объекта задают заранее через УстановитьСсылкуНового() |
Проведен | Документ.Записать(РежимЗаписиДокумента.Проведение) или ОтменаПроведения |
ЭтоГруппа | Определяется при создании: СоздатьГруппу() вместо СоздатьЭлемент() |
ПометкаУдаления | Свойство доступно на запись, но надёжнее УстановитьПометкуУдаления(Истина) — у документа метод заодно отменяет проведение |
Запросы
В тексте запроса стандартные реквизиты пишут по имени, как поля таблицы:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.Код КАК Код,
| Номенклатура.Наименование КАК Наименование
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| НЕ Номенклатура.ПометкаУдаления
| И НЕ Номенклатура.ЭтоГруппа";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(Выборка.Код + " — " + Выборка.Наименование);
КонецЦикла;
Склейка Выборка.Код + " — " работает, если тип кода — строка. Для числового кода используйте Формат(Выборка.Код, "ЧГ=0").
Список стандартных реквизитов из метаданных
Коллекция СтандартныеРеквизиты у объекта метаданных возвращает описания реквизитов. Это удобно для универсальных обработок:
Для Каждого Реквизит Из Метаданные.Справочники.Номенклатура.СтандартныеРеквизиты Цикл
Сообщить(Реквизит.Имя + " (" + Реквизит.Синоним + ")");
КонецЦикла;
Значение по ссылке без чтения объекта
Обращение Ссылка.Код выглядит дёшево, но платформа при этом читает объект целиком. В цикле по тысяче ссылок это тысяча чтений. В типовых конфигурациях на БСП вместо этого используют функцию ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, "Код") или ЗначенияРеквизитовОбъекта для нескольких полей сразу — она получает значения запросом. Для массива ссылок ещё лучше один запрос с условием В (&Ссылки).
Формы
В управляемой форме стандартные реквизиты лежат внутри основного реквизита Объект. Чтобы вывести, например, Родитель на форму, раскройте Объект в списке реквизитов формы и перетащите поле в дерево элементов. В динамическом списке они доступны как колонки: Список.Ссылка, Список.Код.
Типичные ошибки со стандартными реквизитами
Ссылка, Проведен, ЭтоГруппа. Используйте метод из таблицы выше: Записать с режимом проведения, СоздатьГруппу, УстановитьСсылкуНового.Дата хранит время. Условие Дата <= &КонецПериода с датой 31.03 00:00:00 отрежет всё, что проведено днём 31 марта. Передавайте КонецДня(ДатаОкончания) или используйте МЕЖДУ с границей конца дня.Дата, а для нумерации смотрите периодичность номера на вкладке Нумерация.НЕ ЭтоГруппа. Добавьте его, если нужны только элементы.Код, Наименование одним запросом.Ещё одна частая ловушка — Наименование у справочника с выключенной проверкой заполнения. Пользователь записывает пустой элемент, а потом в списке выбора видит пустые строки. Поставьте у реквизита Наименование свойство Проверка заполнения в значение Выдавать ошибку.
Как добавить свои реквизиты и не задеть стандартные
Есть три пути. Выбор зависит от того, снята ли конфигурация с поддержки и кто будет добавлять поле.
| Способ | Кто делает | Когда подходит | Риски |
|---|---|---|---|
| Дополнительные реквизиты и сведения (БСП) | Пользователь с правами администратора | Нужно поле в карточке для учёта и отборов, без программирования | Хранятся отдельно от объекта, в запросах обращаться сложнее |
| Расширение конфигурации | Разработчик | Типовая на поддержке, нужен полноценный реквизит | Расширение нужно проверять после каждого обновления |
| Реквизит в основной конфигурации | Разработчик | Конфигурация своя или снята с поддержки | Типовая перестаёт обновляться автоматически |
Дополнительные реквизиты без конфигуратора
В БП 3.0 и других конфигурациях на БСП:
- Откройте
Администрирование → Общие настройки. - Включите флажок
Дополнительные реквизиты и сведенияи перейдите по одноимённой ссылке. - Выберите набор, например «Номенклатура», и создайте новый реквизит: название, тип значения, обязательность заполнения.
- Откройте карточку номенклатуры — поле появится в группе дополнительных реквизитов.
Стандартные реквизиты при этом не меняются вообще: данные пишутся в табличную часть объекта, предусмотренную под это в типовой.
Расширение конфигурации
В расширении заимствуют нужный объект и добавляют ему свой реквизит. Добавлять собственные реквизиты в заимствованные объекты платформа умеет с версии 8.3.11. Порядок:
Конфигурация → Расширения конфигурации, создайте расширение.- В дереве основной конфигурации найдите объект и через контекстное меню добавьте его в расширение.
- В заимствованном объекте добавьте реквизит с префиксом расширения, например
мр_СрокГодности. - Обновите конфигурацию базы данных.
Префикс в имени — защита от конфликта со стандартными реквизитами и с реквизитами, которые фирма-разработчик добавит в типовую в следующих релизах.
Добавление реквизитов меняет структуру таблиц базы. Перед этим сделайте резервную копию и выполняйте обновление в нерабочее время: пока структура меняется, пользователи не смогут работать в базе.
Правила именования
- 🚫 Не используйте имена стандартных реквизитов:
Код,Наименование,Дата,Номер,Родитель,Владелец,Период. - 🏷️ Давайте префикс в расширениях и в доработках типовой.
- 📝 Если хочется «второе наименование», это обычный реквизит
НаименованиеПолноеили похожий — в типовой номенклатуре он уже есть.
Частые вопросы о стандартных реквизитах
Можно ли скрыть стандартный реквизит от пользователя?
Как переименовать «Наименование» в карточке?
Стандартные реквизиты на вкладке Данные, выделите Наименование и измените свойство Синоним. Имя в коде остаётся прежним.Почему у одного справочника есть «Родитель», а у другого нет?
Родитель появляется только у иерархического справочника. Включается флажок Иерархический справочник на вкладке Иерархия.Можно ли сделать код справочника числовым?
Относится ли «Представление» к стандартным реквизитам?
Представление — вычисляемое поле в запросах и на формах, в таблице базы его нет. Для справочника оно обычно совпадает с наименованием.