Как организовать удобный ввод большого текста в формах 1С 7.7?

Программист 1С v7.7 IT и автоматизация бизнеса
← На главную

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

Метод 1. Использование стандартной функции ВвестиСтроку

Рассмотрим самый быстрый и простой способ — вызов стандартного модального окна для ввода текста. Этот метод идеально подходит, если вы не хотите менять структуру слоев формы, но пользователю нужно периодически вводить или редактировать большой объем данных.

Проанализируем ситуацию: у нас есть реквизит Описание. Мы можем разместить рядом с ним небольшую кнопку (например, с картинкой или текстом "..."). В формуле этой кнопки пропишем вызов функции. Разберем по шагам реализацию в модуле формы:


Процедура ВвестиБольшойТекст()
    // Создаем переменную для хранения текста
    Перем ТекстДляРедактирования;
    ТекстДляРедактирования = Описание;
    
    // Вызываем стандартное окно ввода
    // Параметр 1 — многострочный режим (0 - нет, 1 - да)
    Если ВвестиСтроку(ТекстДляРедактирования, "Введите описание товара", 0, 1) = 1 Тогда
        Описание = ТекстДляРедактирования;
    КонецЕсли;
КонецПроцедуры

Функция ВвестиСтроку позволяет открыть отдельное окно, которое пользователь может растягивать, что значительно упрощает работу с текстом из нескольких абзацев. Важно отметить, что четвертый параметр функции, установленный в значение 1, как раз отвечает за многострочность.

Метод 2. Перехват события ПриНачалеВыбораЗначения

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

После этого мы сможем использовать предопределенную процедуру ПриНачалеВыбораЗначения. Рассмотрим пример кода:


Процедура ПриНачалеВыбораЗначения(ИдентЭлемДиалога, ФлагСтандОбр)
    Если ИдентЭлемДиалога = "Описание" Тогда
        // Отключаем стандартную обработку выбора (так как для строки ее нет)
        ФлагСтандОбр = 0;
        
        // Вызываем наше окно редактирования
        ВвестиСтроку(Описание, "Редактирование описания", 0, 1);
    КонецЕсли;
КонецПроцедуры

Выясним причину, по которой этот метод удобнее: пользователю не нужно искать специальную кнопку, достаточно нажать на привычную кнопку выбора прямо в поле ввода. Чтобы предотвратить случайное удаление текста в узком поле на основной форме, вы можете дополнительно установить свойство "Только просмотр" для этого элемента диалога — тогда редактирование будет возможно исключительно через широкое окно ввода.

Метод 3. Использование слоев и закладок

Проанализируем ситуацию, когда данных настолько много, что форма превращается в "привет из 90-х". В этом случае лучшим решением будет использование механизма слоев. Это позволит разгрузить основную закладку и выделить под текстовое поле практически всю площадь формы.

Рассмотрим алгоритм действий:

  1. Откроем форму в конфигураторе и перейдем в меню "Слои".
  2. Создадим новый слой, например, с названием ОписаниеТовара.
  3. Разместим на этом слое текстовый реквизит и растянем его на максимально возможную ширину и высоту.
  4. В свойствах поля ввода на закладке "Дополнительно" убедимся, что установлена галочка "Многострочный".
  5. Для переключения между основным видом и описанием добавим закладки в нижней или верхней части формы (используя объект "Текст" с функцией переключения слоев).

Такой подход считается "золотым стандартом" в типовых конфигурациях (например, "Торговля и Склад 7.7"), так как он не требует открытия дополнительных модальных окон и позволяет видеть текст в контексте всей формы.

Метод 4. Работа с внешними файлами и расширенное форматирование

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

1. При нажатии кнопки текст выгружается во временный файл .txt с помощью объекта Текст.


Т = СоздатьОбъект("Текст");
Т.ДобавитьСтроку(Описание);
Т.Записать(КаталогВременныхФайлов() + "desc.txt");

2. Файл открывается внешним редактором через ЗапуститьПриложение.

3. После редактирования текст загружается обратно. Этот метод позволяет использовать возможности полноценных текстовых редакторов.

Важные технические нюансы

При работе с большими текстами в 1С 7.7 следует помнить о нескольких особенностях:

Подводя итог, мы проанализировали три основных подхода. Для быстрой правки "на лету" идеально подходит ВвестиСтроку, для эстетичного интерфейса — ПриНачалеВыбораЗначения, а для серьезной работы с большими описаниями — разделение формы на слои. Выбор зависит от конкретных задач ваших пользователей и загруженности текущей формы реквизитами.

← На главную