К статье
Практический материал

Разработка и Конфигурация · 10 мин

Что такое поля в 1С и как с ними работать

Поля в 1С — что это, какие бывают типы полей, где они задаются в конфигураторе и на форме. Практические примеры, ошибки и ответы на вопросы.

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

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

Поля в 1С существуют в двух измерениях: в метаданных (описание в конфигураторе) и на формах (визуальное представление для пользователя). Один и тот же реквизит может быть полем данных в базе и полем ввода на экране, и важно различать эти роли.

Что такое поле в 1С: определение и уровни

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

Различают три уровня, на которых встречаются поля. Первый — поля метаданных: реквизиты справочников, документов, измерения и ресурсы регистров. Второй — поля формы: элементы «Поле ввода», «Поле надписи», «Поле флажка», связанные с данными объекта. Третий — поля запроса: колонки результата, которые возвращает конструктор запросов или СКД.

Практический вывод: когда пользователь говорит «добавьте поле в карточку товара», разработчику нужно сделать два действия — создать реквизит в метаданных и вывести его на форму. Одно без другого не даст результата: реквизит без элемента формы невидим, а элемент формы без реквизита не имеет источника данных.

Какие типы полей существуют в 1С

Тип поля определяет, какие значения в него можно записать и как платформа будет их хранить и сравнивать. Основные примитивные типы: строка, число, дата, булево. Для строки обязательно задаётся длина (фиксированная или переменная), для числа — общее количество разрядов и количество знаков после запятой.

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

Отдельная группа — составные типы. Поле может принимать значения нескольких типов, например «СправочникСсылка.Контрагенты» или «СправочникСсылка.ФизическиеЛица». Такое поле удобно для универсальных реквизитов, но усложняет запросы и индексацию. Тип «ХранилищеЗначения» используют для картинок, файлов и сериализованных данных.

Тип поляЧто хранитКогда применять
СтрокаТекст заданной длиныНаименования, комментарии, коды
ЧислоЧисловое значение с точностьюСуммы, количества, коэффициенты
ДатаДата и/или времяПериоды, сроки, отметки времени
БулевоИстина или ЛожьПризнаки, флажки
СсылкаСсылку на объект базыСвязи между объектами
ХранилищеЗначенияДвоичные данныеФайлы, изображения, настройки

Где поля задаются: реквизиты объектов конфигурации

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

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

Как добавить поле в справочник
  1. 1
    Откройте конфигуратор и найдите нужный справочник в дереве конфигурации
  2. 2
    Дважды щёлкните по объекту и перейдите на закладку «Данные»
  3. 3
    Нажмите «Добавить» в разделе «Реквизиты» и задайте имя латиницей без пробелов
  4. 4
    Выберите тип данных, для строки укажите длину, для числа — точность
  5. 5
    Откройте форму элемента и перетащите новый реквизит из панели реквизитов на форму
  6. 6
    Обновите конфигурацию базы данных (F7) и проверьте результат в режиме предприятия

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

Поля на форме: как данные становятся видимыми

Реквизит объекта сам по себе не появляется на экране. Чтобы пользователь мог его видеть и редактировать, на форму добавляют элемент управления — чаще всего «Поле ввода», связанное с реквизитом через свойство «ПутьКДанным». Один реквизит может быть выведен на форму несколько раз в разных видах, а может не быть выведен вовсе.

Вид поля платформа подбирает по типу данных: для строки и числа — поле ввода, для булево — флажок, для даты — поле с календарём, для ссылки — поле с кнопкой выбора из списка. Вид можно изменить вручную: например, числовое поле сделать «Полем переключателя», если значений всего два-три.

У полей формы есть свойства поведения: «ТолькоПросмотр» запрещает редактирование, «Доступность» управляется кодом, «АвтоОтметкаНезаполненного» подсвечивает обязательное поле. Проверку заполнения лучше задавать у реквизита в метаданных (свойство «Проверка заполнения»), тогда она сработает и на форме, и при программной записи объекта.

Поля в запросах и отчётах

В языке запросов 1С поле — это колонка выборки. Запрос «ВЫБРАТЬ Номенклатура.Наименование, Номенклатура.Артикул» возвращает два поля из таблицы справочника. Поля можно переименовывать через «КАК», вычислять выражениями и агрегировать функциями СУММА, КОЛИЧЕСТВО, МАКСИМУМ.

В СКД (системе компоновки данных) поля настраиваются на закладке «Наборы данных» и «Настройки»: разработчик отмечает, какие поля доступны пользователю, какие выводятся по умолчанию, какие участвуют в группировках. Пользователь отчёта затем сам перетаскивает доступные поля в настройках, не меняя код.

Типичная ошибка — обращение в запросе к полю через точку от ссылочного поля («разыменование») в больших выборках. Конструкция вида Документ.Контрагент.Наименование заставляет платформу делать дополнительное соединение с таблицей контрагентов. На малых объёмах это незаметно, на больших — замедляет отчёт. Лучше явно соединять таблицы и брать только нужные поля.

Типичные ошибки и ограничения при работе с полями

Самая распространённая ошибка — недостаточная длина строкового поля. Если задать «Наименование» длиной 25 символов, длинные названия будут обрезаться при записи без предупреждения в части сценариев. Изменение длины существующего поля в большую сторону безопасно, а уменьшение требует проверки данных: при реструктуризации значения могут быть усечены.

Вторая группа ошибок связана с типом. Хранение сумм в строковом поле ломает сортировку («100» окажется раньше «20») и делает невозможным суммирование в отчётах. Хранение дат текстом мешает отборам по периоду. Тип поля нельзя менять бесконтрольно: при смене несовместимых типов платформа очистит значения при обновлении конфигурации базы данных.

Типичные ошибки
01
Слишком короткая строка — данные обрезаются при записи и обмене
02
Число без дробной части для сумм — копейки теряются
03
Составной тип «на всякий случай» — медленные запросы и сложные отборы
04
Изменение типа существующего поля без анализа данных — потеря значений при реструктуризации
05
Реквизит создан, но не выведен на форму — пользователи не видят поле

Как проверить результат после добавления поля

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

Контрольные точки

Как проверить результат

Поле на форме
Норма

Видно, редактируется, значение сохраняется

Тревожный признак

Поле отсутствует или сбрасывается после записи

Тип данных
Норма

Вводятся только корректные значения

Тревожный признак

Можно ввести текст в числовое поле или значение обрезается

Поле в отчёте
Норма

Доступно в настройках СКД и отборах

Тревожный признак

Поля нет в списке доступных

Права
Норма

Поле видно всем нужным ролям

Тревожный признак

У части пользователей поле скрыто

Для программной проверки полезно помнить: обращение к несуществующему реквизиту в коде вызывает ошибку «Поле объекта не обнаружено». Эта ошибка при обмене или синхронизации часто означает, что конфигурации источника и приёмника разошлись по составу реквизитов.

Итог

Что важно запомнить

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

Частые вопросы о полях в 1С

Чем поле отличается от реквизита?

Реквизит — это описание поля в метаданных объекта. «Поле» — более широкое слово: оно обозначает и реквизит, и элемент формы, и колонку в запросе. В конфигураторе корректнее говорить «реквизит», на форме — «поле ввода».

Можно ли добавить поле без конфигуратора?

Да, через механизм дополнительных реквизитов и сведений в режиме предприятия (раздел администрирования). Такие поля не требуют доработки конфигурации, но хранятся отдельно от основной таблицы объекта, что замедляет отчёты и усложняет запросы.

Почему значение в строковом поле обрезалось?

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

Что будет с данными при изменении типа поля?

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

Как сделать поле обязательным для заполнения?

Установите у реквизита в конфигураторе свойство «Проверка заполнения» в значение «Выдавать ошибку». Тогда платформа не даст записать объект с пустым полем ни через форму, ни программно. Проверка только на форме ненадёжна — её можно обойти кодом.

Почему поле есть в конфигураторе, но не видно пользователю?

Три основные причины: реквизит не выведен на форму, поле скрыто функциональной опцией или у роли пользователя нет права просмотра этого реквизита. Проверяйте в указанном порядке — чаще всего дело в форме.