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