Как реализовать ввод многострочного текста и комментариев в 1С с помощью БСП и платформы?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

В этой статье мы подробно разберем, как решить эту задачу изящно и быстро. Выясним, какие готовые механизмы ввода многострочного текста уже встроены в платформу «1С:Предприятие», какие специализированные инструменты предоставляет Библиотека стандартных подсистем (БСП) и как правильно оформлять такие поля в соответствии со стандартами разработки фирмы «1С».

1. Встроенные возможности платформы «1С:Предприятие»

Прежде чем переходить к БСП, рассмотрим базовые возможности платформы. Разработчику доступны стандартные системные методы для организации диалога ввода строки. Платформа берет на себя отрисовку окна, обработку переносов и управление кнопками подтверждения или отмены ввода.

Для модального режима работы (который в современном управляемом приложении использовать не рекомендуется) существует метод ВвестиСтроку. Однако для асинхронной работы в управляемом интерфейсе следует использовать метод ПоказатьВводСтроки. Он не блокирует интерфейс и работает через механизм описания оповещения.

Главный секрет этих методов заключается в параметре многострочности. Рассмотрим пример реализации асинхронного ввода многострочного текста через платформенный метод:


&НаКлиенте
Процедура ВвестиМногострочныйТекст(Команда)
    
    ОписаниеОповещения = Новый ОписаниеОповещения("ПослеВводаТекста", ЭтотОбъект);
    
    // Инициализируем исходное значение текста
    ИсходныйТекст = Объект.Комментарий;
    Подсказка = "Введите подробный комментарий к документу:";
    МаксимальнаяДлина = 1000; // Ограничение на длину строки, 0 — без ограничений
    Мультистрока = Истина;     // Это ключевой параметр для включения многострочного режима
    
    ПоказатьВводСтроки(ОписаниеОповещения, ИсходныйТекст, Подсказка, МаксимальнаяДлина, Мультистрока);
    
КонецПроцедуры

&НаКлиенте
Процедура ПослеВводаТекста(ВведеннаяСтрока, ДополнительныеПараметры) Экспорт
    
    Если ВведеннаяСтрока <> Неопределено Тогда
        // Пользователь нажал ОК и ввел текст
        Объект.Комментарий = ВведеннаяСтрока;
    КонецЕсли;
    
КонецПроцедуры

Когда параметр Многострочность (пятый по счету параметр метода) установлен в значение Истина, платформа автоматически открывает аккуратное диалоговое окно с текстовым полем увеличенного размера. В этом окне поддерживается перенос слов, перевод строки по клавише Enter и полосы прокрутки.

2. Готовые решения в Библиотеке стандартных подсистем (БСП)

Если ваша конфигурация создана на базе БСП, то вам не придется вручную описывать процедуры оповещения для каждого поля ввода. В БСП уже встроены готовые универсальные интерфейсные решения, которые находятся в общем модуле ОбщегоНазначенияКлиент.

Проанализируем основные методы БСП, предназначенные для работы с многострочными текстами:

Метод 1: ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияКомментария()

Это специализированный и наиболее часто используемый метод. Он ориентирован на работу с реквизитом комментария объекта. Метод открывает удобную стандартную форму редактирования и автоматически помещает измененный текст в соответствующий реквизит вашей формы.

Синтаксис метода предполагает передачу следующих параметров:

Разберем по шагам, как подключить этот метод к полю ввода на форме. Обычно вызов привязывают к событию НачалоВыбора или Открытие элемента формы:


&НаКлиенте
Процедура КомментарийНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    
    // Отменяем стандартное поведение платформы
    СтандартнаяОбработка = Ложь;
    
    // Вызываем готовую форму БСП для редактирования комментария
    ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияКомментария(
        Элемент.ТекстРедактирования, 
        ЭтотОбъект, 
        "Объект.Комментарий"
    );
    
КонецПроцедуры

При таком вызове БСП сама откроет красивое всплывающее окно с возможностью редактирования большого объема текста и кнопкой сохранения, а после закрытия окна обновленное значение сразу запишется в Объект.Комментарий.

Метод 2: ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияМногострочногоТекста()

Этот метод является более универсальным аналогом предыдущей функции. Его целесообразно использовать, когда редактируемое текстовое поле логически не является «комментарием» (например, это может быть поле «Адрес доставки», «Техническое описание товара» или «Условия договора»). Метод под капотом использует платформенный вызов ПоказатьВводСтроки с флагом многострочности, обеспечивая стабильную работу в веб-клиенте и на мобильных устройствах.

Метод 3: ВариантыОтчетовКлиент.РедактироватьМногострочныйТекст()

В некоторых специализированных подсистемах БСП (например, в подсистеме вариантов отчетов) можно встретить данную процедуру. Она оптимизирована под специфику работы с табличными частями и позволяет гибко задавать заголовки окон ввода непосредственно в процессе интерактивного взаимодействия.

3. Требования стандартов разработки «1С:Предприятия»

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

  1. Экономия экранного пространства. На форме документа поле комментария не должно занимать много полезного места. Рекомендуется отображать его в самом низу формы в виде одной компактной строки.
  2. Наличие внешнего редактора. Поскольку поле ввода на форме имеет высоту всего в одну строку, разработчик обязан предоставить пользователю возможность открыть внешнее окно для удобного ввода длинных текстов.
  3. Запрет на дублирование кода. Стандарты прямо указывают:
    • Если конфигурация разрабатывается без использования БСП, для открытия внешнего редактора необходимо применять платформенный метод ПоказатьВводСтроки с включенным параметром многострочности.
    • Если конфигурация разрабатывается на базе БСП, создавать собственные формы ввода строго запрещено. Разработчик обязан использовать системную процедуру ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияКомментария.

Таким образом, использование готового метода БСП — это не просто рекомендация для ускорения разработки, а обязательное требование стандартов качества кода 1С. Это обеспечивает единообразие интерфейса всех прикладных решений и минимизирует количество ошибок при обновлении конфигураций.

← На главную