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

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

Как установить тип поля ввода в 1С

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

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

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

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

Где в конфигураторе задаётся тип поля ввода

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

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

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

Как установить тип реквизита: пошаговая инструкция

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

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

При обновлении конфигурации базы данных платформа может выполнить реструктуризацию — физическое изменение таблиц. Если тип сужается (например, строка 100 символов уменьшается до 25), платформа предупредит о возможной потере данных: значения, не помещающиеся в новый формат, будут усечены или очищены. Перед таким изменением на рабочей базе обязательно сделайте выгрузку данных.

Как изменить вид поля на форме

Тип значения и внешний вид поля — разные вещи. Один и тот же реквизит типа «Булево» можно показать как поле флажка или как поле переключателя, а ссылочный реквизит — как поле ввода с кнопкой выбора или как поле надписи без возможности редактирования.

Чтобы изменить вид поля, откройте форму объекта в конфигураторе (ветка «Формы» нужного объекта), выделите элемент в дереве элементов формы и в палитре свойств найдите свойство «Вид». Для поля, связанного с реквизитом, доступны варианты: поле ввода, поле надписи, поле флажка, поле переключателя, поле периода и другие — набор зависит от типа связанных данных.

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

Как установить тип поля ввода программно

В управляемых формах элементы часто создаются или настраиваются кодом — например, когда состав полей зависит от настроек пользователя. Для этого используется объект ОписаниеТипов и свойство ОграничениеТипа элемента формы.

Типичный сценарий: на форму обработки нужно добавить поле, принимающее только ссылки на справочник «Номенклатура», или поле, допускающее строку либо число. Код выполняется в модуле формы, обычно в обработчике ПриСозданииНаСервере.

&НаСервере

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

// Описание типа: только ссылка на справочник "Номенклатура"

МассивТипов = Новый Массив;

МассивТипов.Добавить(Тип("СправочникСсылка.Номенклатура"));

ОписаниеТипа = Новый ОписаниеТипов(МассивТипов);

// Реквизит формы

НовыйРеквизит = Новый РеквизитФормы(

"Товар", ОписаниеТипа, "", "Товар", Ложь);

Добавляемые = Новый Массив;

Добавляемые.Добавить(НовыйРеквизит);

ИзменитьРеквизиты(Добавляемые);

// Элемент формы

Элемент = Элементы.Добавить("Товар", Тип("ПолеФормы"));

Элемент.Вид = ВидПоляФормы.ПолеВвода;

Элемент.ПутьКДанным = "Товар";

Элемент.ОграничениеТипа = ОписаниеТипа;

КонецПроцедуры

Для числовых и строковых типов в конструктор ОписаниеТипов передаются квалификаторы: Новый КвалификаторыЧисла(15, 2) или Новый КвалификаторыСтроки(200). Уже существующему элементу формы можно просто присвоить новое значение свойству ОграничениеТипа — это сузит ввод без изменения типа реквизита.

bsl
ОграничениеСтрока = Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(50));
Элементы.Комментарий.ОграничениеТипа = ОграничениеСтрока;

Выбор типа под задачу: условия и ограничения

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

ЗадачаРекомендуемый типОграничения и замечания
Суммы, количестваЧисло (15, 2) или (15, 3)Точность подбирается под учёт: для веса часто нужны 3 знака
Наименование, комментарийСтрока ограниченной или неограниченной длиныНеограниченная строка не индексируется и хуже работает в отборах
Дата документа, периодДата (состав: дата или дата и время)Для графиков работы нужен состав «дата и время»
Ссылка на товар, контрагентаСправочникСсылка на нужный объектОбеспечивает ссылочную целостность и выбор из списка
Признак «да/нет»БулевоНа форме удобнее показывать как поле флажка
Значение из фиксированного набораПеречислениеСсылкаПредпочтительнее строки со списком выбора для отчётов

Составные типы применяйте осознанно. Реквизит «строка или ссылка на любой справочник» гибок, но запросы по нему усложняются (потребуется ВЫРАЗИТЬ или проверка ТИПЗНАЧЕНИЯ), индексы работают хуже, а пользователи получают поле с неочевидным поведением. Если составного типа можно избежать — избегайте.

Маршрут решения

Как выбрать действие

Нужно изменить хранимый тип данных существующего реквизитаМеняйте свойство «Тип» реквизита в палитре свойств с последующим обновлением конфигурации базы данных и резервной копией
Нужно только ограничить ввод на конкретной форме, не трогая базуУстановите ОграничениеТипа элемента формы программно или настройте СписокВыбора
Нужно поменять внешний вид (флажок, надпись, переключатель)Измените свойство «Вид» элемента формы, тип реквизита не трогайте
Поле создаётся динамически в обработкеСоздайте реквизит формы через ИзменитьРеквизиты с нужным ОписаниеТипов, затем добавьте элемент формы

Проверка результата и типичные ошибки

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

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

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

Ввод значения в поле
Норма

Поле принимает только значения заданного типа, лишние знаки и чужие типы отсекаются

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

Поле принимает любой текст или очищается после ввода — тип задан неверно или не обновлена конфигурация БД

Кнопка выбора у ссылочного поля
Норма

Открывается форма выбора нужного справочника или документа

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

Открывается выбор из всех объектов — значит, задан составной тип или тип не сохранён

Сохранение объекта
Норма

Значение сохраняется и корректно отображается при повторном открытии

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

Значение пропадает — возможно, реквизит не связан с элементом формы или реструктуризация очистила данные

Отчёты и запросы по реквизиту
Норма

Отборы и группировки по полю работают

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

Поле недоступно в отборах — проверьте, не является ли строка неограниченной длины

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

Ещё одна частая ситуация: после изменения типа поле на форме ведёт себя по-старому. Причина обычно в том, что свойства элемента формы (например, ОграничениеТипа или СписокВыбора) были заданы ранее и теперь конфликтуют с новым типом реквизита. Сбросьте эти свойства или приведите их в соответствие с новым типом.

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

Частые вопросы

Как сделать поле, в которое можно вводить только числа?

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

Можно ли изменить тип реквизита, если в базе уже есть данные?

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

Чем отличается ОграничениеТипа от свойства «Тип» реквизита?

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

Как разрешить в поле выбор из нескольких справочников?

В диалоге редактирования типа данных отметьте флажками несколько ссылочных типов — получится составной тип. На форме у поля появится кнопка выбора типа значения. Учтите, что в запросах к такому полю потребуется функция ВЫРАЗИТЬ или проверка ТИПЗНАЧЕНИЯ.

Почему после изменения типа поле на форме не изменилось?

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

Как сделать поле доступным только для просмотра?

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

Итог

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

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