При разработке интерфейсов в 1С часто возникает задача создания удобного поля для ввода комментариев, примечаний или описаний. Стандартное текстовое поле по умолчанию ограничено одной строкой, что крайне неудобно для работы с большими объемами информации. Разберем детально, как превратить обычное поле ввода в полноценный текстовый редактор и, что не менее важно, как сделать так, чтобы введенные данные не исчезали после закрытия формы или отчета.
Для начала проанализируем ситуацию, когда у нас уже есть реквизит строкового типа, размещенный на форме. Чтобы превратить его в многострочный блок, нам необходимо обратиться к палитре свойств соответствующего элемента формы. Рассмотрим пошагово, какие параметры за это отвечают:
Истина. Именно этот параметр сообщает платформе, что поле ввода должно поддерживать разрывы строк.Высота равным 3 или более. Это позволит пользователю сразу видеть, что поле предназначено для объемного текста.Enter на форме приводит к переходу на следующее поле. В многострочном режиме логичнее настроить это свойство так, чтобы нажатие клавиши создавало новую строку в текущем поле.Одной из главных проблем, озвученных пользователями, является очистка поля комментария при перезапуске отчета. Рассмотрим способы, как «заставить» систему помнить введенный текст.
Наиболее простой и эффективный способ в управляемом приложении — это использование стандартного механизма автосохранения данных формы. Разберем по шагам, как это реализовать:
Истина.Теперь при закрытии отчета 1С автоматически запишет значение комментария в системное хранилище настроек для текущего пользователя, а при следующем открытии — восстановит его.
В некоторых случаях стандартного автосохранения бывает недостаточно — например, если нужно привязать комментарий к конкретному варианту отчета или сохранять его в разрезе определенных параметров. Проанализируем, как реализовать это программно с помощью процедур на сервере.
Для этого мы можем использовать события формы ПриЗагрузкеДанныхИзНастроекНаСервере и ПриСохраненииДанныхВНастройкахНаСервере. Посмотрим на пример кода, который позволяет гибко управлять данными:
&НаСервере
Процедура ПриСохраненииДанныхВНастройкахНаСервере(Настройки)
// Сохраняем наш комментарий в структуру настроек
Настройки.Вставить("МойКомментарий", Объект.Комментарий);
КонецПроцедуры
&НаСервере
Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки)
// Извлекаем сохраненное значение
Если Настройки.Свойство("МойКомментарий") Тогда
Объект.Комментарий = Настройки.МойКомментарий;
КонецЕсли;
КонецПроцедуры
Этот подход дает полный контроль над процессом. Мы можем проверять условия, модифицировать текст перед сохранением или записывать дополнительные метаданные.
Если задача стоит шире и нам нужно не просто ввести текст на форме, а отобразить его в печатной форме или табличном документе (макете), здесь действуют свои правила. Выясним, как добиться корректного отображения в ячейках ТабличныйДокумент.
Чтобы текст в ячейке не обрезался и переносился на новые строки, выполним следующие настройки в свойствах ячейки макета:
Переносить.Авто, чтобы система сама расширяла строку в зависимости от объема введенного комментария.Если же вы используете ПолеВвода, размещенное непосредственно в табличном документе (как упоминалось в некоторых вопросах), важно помнить: такое поле является графическим объектом и не привязано к данным напрямую. Чтобы данные из него сохранялись, их необходимо считывать программно при изменении и записывать, например, в РегистрСведений. Рассмотрим пример записи данных в регистр для "вечного" хранения:
&НаСервере
Процедура СохранитьКомментарийВБазу(ТекстКомментария, ОбъектСсылка)
Менеджер = РегистрыСведений.ДополнительныеКомментарии.СоздатьМенеджерЗаписи();
Менеджер.Объект = ОбъектСсылка;
Менеджер.Комментарий = ТекстКомментария;
Менеджер.Период = ТекущаяДата();
Менеджер.Записать();
КонецПроцедуры
Этот метод гарантирует, что комментарий будет доступен всем пользователям системы и сохранится даже при полной очистке настроек интерфейса.
Для того чтобы работа пользователя с многострочным полем была максимально приятной, рекомендуем использовать свойство Подсказка ввода. Впишите туда фразу: "Введите здесь ваше примечание...". Этот текст будет отображаться серым цветом в пустом поле, помогая сориентироваться в интерфейсе.
Таким образом, мы с вами рассмотрели полный цикл настройки: от визуального отображения МногострочныйРежим до архитектурных решений по хранению данных. Используя эти методы, вы создадите функциональный и надежный инструмент для работы с текстовой информацией в 1С.