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