Разработка и Конфигурация · 10 мин
Как создать текстовое поле в 1С
Как создать текстовое поле в 1С: добавление реквизита в конфигураторе, поле ввода на форме, программное создание, многострочный режим и типичные ошибки.
Текстовое поле в 1С — это элемент формы, связанный с реквизитом типа «Строка», в котором пользователь вводит и редактирует текст: наименование, комментарий, адрес, описание. Создать его можно двумя путями: в конфигураторе через структуру метаданных и форму объекта либо программно в модуле формы. Выбор зависит от того, нужно ли поле постоянно хранить данные в базе или оно требуется только для временного ввода.
Для постоянного хранения текстового значения (например, «Комментарий» в документе) реквизит добавляется в объект конфигурации — справочник, документ или обработку. Для временного ввода достаточно реквизита формы, который существует только пока форма открыта. Оба сценария разобраны ниже с конкретными действиями.
Материал ориентирован на управляемые формы, которые используются в актуальных конфигурациях на платформе 8.3. Для обычных форм (режим совместимости старых конфигураций) логика похожа, но интерфейс редактора форм отличается — отличия указаны отдельно.
Подготовка: что понадобится перед началом работы
Для создания текстового поля нужен доступ к конфигуратору с правами на изменение конфигурации. В типовых конфигурациях объекты часто находятся на поддержке — перед изменением потребуется включить возможность изменения через меню «Конфигурация» → «Поддержка» → «Настройка поддержки». Учтите, что снятие объектов с поддержки усложняет последующие обновления.
Перед изменениями сделайте резервную копию информационной базы или хотя бы выгрузите конфигурацию в файл .cf. Ошибочное изменение структуры реквизитов может привести к проблемам при обновлении конфигурации базы данных, особенно если удалить или сузить уже используемый реквизит с данными.
Создание реквизита типа «Строка» в конфигураторе
Откройте конфигуратор, найдите нужный объект в дереве конфигурации (справочник, документ, обработка) и раскройте ветку «Реквизиты». Через контекстное меню выберите «Добавить» или нажмите кнопку добавления на панели инструментов. Откроется палитра свойств нового реквизита.
Задайте имя реквизита латиницей без пробелов, например Комментарий или ОписаниеЗадачи. Синоним платформа сформирует автоматически — именно его увидит пользователь как подпись поля. В свойстве «Тип» выберите «Строка» и укажите длину. Длина 0 означает неограниченную строку, но такие реквизиты нельзя использовать в индексах и некоторых выборках — для коротких значений лучше задать конкретную длину.
Дополнительные полезные свойства: «Фиксированная строка» запрещает хранение строк короче указанной длины (редко нужно), «Значение заполнения» задаёт текст по умолчанию при создании объекта, проверка заполнения «Выдавать ошибку» сделает поле обязательным.
Добавление поля на форму объекта
Откройте форму объекта: в дереве конфигурации раскройте ветку «Формы» нужного объекта и откройте основную форму. Если формы нет, создайте её через «Добавить» — конструктор предложит тип формы и набор реквизитов. В редакторе формы справа находится панель реквизитов, слева — дерево элементов формы.
Самый быстрый способ — перетащить реквизит из панели реквизитов в нужное место дерева элементов. Платформа автоматически создаст элемент с видом «Поле ввода» и свяжет его с данными. После этого в палитре свойств элемента можно настроить внешний вид: заголовок, подсказку, положение заголовка, доступность.
Многострочное текстовое поле
Для длинных текстов (описания, комментарии) у элемента формы установите свойство «МногострочныйРежим» в значение «Истина». Поле станет многострочным, появится возможность вводить переносы строк. Дополнительно можно задать высоту в строках и включить кнопку открытия текста в отдельном окне.
Поле только для чтения
Если текст нужно показывать, но не редактировать, установите свойство «ТолькоПросмотр» у элемента формы или измените вид поля на «Поле надписи» через свойство «Вид». Поле надписи не даёт фокуса ввода и подходит для вывода вычисляемых или справочных текстов.
- 1Откройте конфигуратор и найдите нужный объект в дереве конфигурации
- 2Добавьте реквизит типа «Строка», задайте имя и длину
- 3Откройте форму объекта и перетащите реквизит в дерево элементов формы
- 4Настройте свойства поля: многострочный режим, заголовок, доступность
- 5Обновите конфигурацию базы данных (F7) и проверьте результат в режиме предприятия
Реквизит формы для временного текстового поля
Если значение не нужно сохранять в базе (например, строка поиска, фильтр, примечание к операции), добавьте реквизит формы. В редакторе формы откройте вкладку «Реквизиты», нажмите «Добавить» и задайте имя, тип «Строка» и длину. Такой реквизит живёт только внутри формы и не влияет на структуру данных.
Дальше действия те же: перетащите реквизит формы в дерево элементов, настройте вид. Для обработки введённого значения используйте события элемента — «ПриИзменении», «НачалоВыбора», «ОкончаниеВводаТекста». Например, по событию «ПриИзменении» можно запускать поиск или фильтрацию списка.
Реквизиты формы не участвуют в обмене данными и не сохраняются между сеансами. Если после закрытия формы значение должно остаться, сохраняйте его программно — в хранилище настроек, константу или реквизит объекта.
Программное создание текстового поля
Когда поле нужно добавить динамически — по условию, в расширении без изменения типовой формы или в форме, созданной полностью кодом, — используется программный способ. Сначала создаётся реквизит формы через метод ИзменитьРеквизиты(), затем добавляется элемент формы.
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ДобавляемыеРеквизиты = Новый Массив;
ОписаниеТипа = Новый ОписаниеТипов("Строка", ,
Новый КвалификаторыСтроки(500));
Реквизит = Новый РеквизитФормы("ДопКомментарий",
ОписаниеТипа, "", "Комментарий");
ДобавляемыеРеквизиты.Добавить(Реквизит);
ИзменитьРеквизиты(ДобавляемыеРеквизиты);
Элемент = Элементы.Добавить("ДопКомментарий",
Тип("ПолеФормы"), Элементы.ГруппаДополнительно);
Элемент.Вид = ВидПоляФормы.ПолеВвода;
Элемент.ПутьКДанным = "ДопКомментарий";
Элемент.МногострочныйРежим = Истина;
КонецПроцедуры
Ключевые моменты: ИзменитьРеквизиты() вызывается только на сервере, добавление элемента возможно и на клиенте, но обычно всё делается в обработчике «ПриСозданииНаСервере». Свойство ПутьКДанным обязательно должно ссылаться на существующий реквизит формы — иначе поле не отобразится или выдаст ошибку.
Программно добавленные элементы не видны в редакторе формы, поэтому такой код нужно комментировать и размещать в предсказуемом месте модуля, чтобы следующий разработчик мог его найти.
Элемент = Элементы.Добавить("ПолеКомментария", Тип("ПолеФормы"), Родитель);
Элемент.Вид = ВидПоляФормы.ПолеВвода;
Элемент.ПутьКДанным = "Комментарий";Проверка результата
После добавления реквизита объекта обязательно обновите конфигурацию базы данных: клавиша F7 или меню «Конфигурация» → «Обновить конфигурацию базы данных». Без этого шага реквизит не появится в базе, и при открытии формы в режиме предприятия возникнет ошибка обращения к несуществующему полю.
Запустите режим предприятия, откройте объект и проверьте: поле отображается с правильной подписью, текст вводится и сохраняется после записи объекта, многострочный режим работает, при повторном открытии значение на месте. Для реквизитов формы проверьте, что события обработчиков срабатывают.
Как проверить результат
После записи и повторного открытия текст на месте
Текст пропадает — реквизит не связан с данными объекта
Поле видно на форме с корректным заголовком
Поля нет — элемент не привязан к реквизиту или скрыт условным оформлением
Вводится весь нужный текст
Текст обрезается — задана слишком малая длина строки
Типичные ошибки и ограничения
Самая частая ошибка — добавить реквизит в конфигуратор, но забыть обновить конфигурацию базы данных. Вторая по частоте — создать элемент формы без привязки к данным (не заполнен «ПутьКДанным»): поле визуально есть, но значение никуда не сохраняется и не читается.
Ещё одна распространённая ситуация — слишком короткая длина строки. Пользователь вводит длинный комментарий, а при записи он молча обрезается до заданной длины. Продумывайте длину с запасом: для комментариев обычно берут 250–1024 символа или неограниченную строку.
При работе с расширениями конфигурации помните: программно добавленные элементы могут конфликтовать с обновлениями типовой формы. Проверяйте расширение после каждого обновления конфигурации поставщика.
FAQ
Как сделать текстовое поле обязательным для заполнения?
У реквизита объекта в палитре свойств установите «Проверка заполнения» в значение «Выдавать ошибку». Для реквизита формы аналогичное свойство есть у самого реквизита формы. Дополнительно можно реализовать свою проверку в обработчике «ПередЗаписью» с отказом от записи и сообщением пользователю.
Чем поле ввода отличается от поля надписи?
Поле ввода позволяет редактировать значение, поле надписи — только отображает текст без возможности фокуса и изменения. Вид меняется в свойстве «Вид» элемента формы. Для вывода вычисляемых подсказок и справочных текстов используйте поле надписи.
Можно ли добавить текстовое поле, не меняя конфигурацию?
Да, через расширение конфигурации: создайте расширение, заимствуйте форму объекта и добавьте реквизит формы и элемент. Данные придётся хранить отдельно — например, в дополнительных сведениях или собственном регистре, добавленном в том же расширении.
Как ограничить ввод только определёнными символами?
Используйте событие элемента «ОкончаниеВводаТекста» или «ПриИзменении» и проверяйте введённую строку кодом, удаляя недопустимые символы. Для масок ввода вроде телефона удобнее реквизит с параметрическим ограничением или обработка ввода вручную — встроенной маски ввода у поля ввода нет.
Почему программно добавленное поле не видно на форме?
Чаще всего указан несуществующий родительский элемент в методе Элементы.Добавить() или реквизит формы не создан до добавления элемента. Проверьте порядок вызовов: сначала ИзменитьРеквизиты(), затем добавление элемента, и убедитесь, что имя родителя совпадает с именем группы на форме.
Как сохранить многострочный текст с переносами строк?
Строковый реквизит хранит переносы строк автоматически — достаточно включить у поля многострочный режим. Символы переноса сохраняются в базе как служебные символы и корректно выводятся при повторном открытии, в печатных формах и отчётах.
Что важно запомнить
Текстовое поле в 1С создаётся через реквизит типа «Строка» и элемент формы «Поле ввода»: для хранения данных — реквизит объекта, для временного ввода — реквизит формы, для динамики — программное добавление. После изменений структуры всегда обновляйте конфигурацию базы данных и проверяйте сохранение значения в режиме предприятия.