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