Как изменить регистр наименований в колонке табличного поля 1С?

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

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

Вариант 1: Изменение данных непосредственно в информационной базе

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

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

Разберем пример кода для такой обработки:


Процедура ИзменитьРегистр(ИмяРеквизита, СписокСсылок)
    Для Каждого СсылкаНаТовар Из СписокСсылок Цикл
        ОбъектТовар = СсылкаНаТовар.ПолучитьОбъект();
        Если ОбъектТовар <> Неопределено Тогда
            ОбъектТовар[ИмяРеквизита] = ВРег(ОбъектТовар[ИмяРеквизита]);
            ОбъектТовар.Записать();
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры

Важное примечание: При обработке больших объемов данных помните об оптимизации. Рекомендуется использовать транзакции и, при необходимости, устанавливать ОбменДанными.Загрузка = Истина, чтобы избежать запуска ненужных проверок и подписок на события при записи каждого элемента.

Вариант 2: Использование возможностей Динамического списка

Если вы работаете с Динамическим списком, помните, что данные в нем «перечитываются» при прокрутке и обновлении. Поэтому прямое редактирование ячеек в списке не даст перманентного результата. Здесь у нас есть два пути:

Путь А: Программная настройка запроса. Вы можете изменять текст запроса Динамического списка «на лету». Используя функции языка запросов, такие как ВРег() или НРег(), вы можете динамически переключать вывод колонки между обычным и верхним регистром.

Путь Б: Дополнительная колонка для отображения. Если вы хотите сохранить исходное наименование в базе, но дать пользователю возможность видеть его в другом регистре, создайте дополнительную колонку в Таблице формы. Эту колонку можно заполнять при получении данных, используя серверную логику обработки событий. Это позволит избежать искажения данных в самой карточке товара, но предоставит нужный визуальный эффект.

Как реализовать вызов через контекстное меню?

Чтобы пользователь мог инициировать смену регистра самостоятельно, выполним следующие настройки формы:

  1. Добавляем команду в форму. В свойствах команды указываем Используемая таблица — это свяжет команду с вашим списком данных.
  2. Размещаем эту команду в Командной панели таблицы.
  3. В свойствах кнопки командной панели находим раздел, отвечающий за отображение: установите Отображение в контекстном меню в значение Дополнительно в контекстном меню или Только в контекстном меню.

Теперь при нажатии правой кнопкой мыши на любую ячейку колонки в контекстном меню появится пункт «Изменить регистр», который запустит написанный нами код.

Рекомендации и предостережения

Проанализируем ситуацию: массовое изменение данных — это ответственная операция. Прежде чем запускать цикл по всей номенклатуре, убедитесь в следующем:

Используя предложенные методы, вы сможете гибко управлять представлением данных и их структурой в соответствии с потребностями пользователей вашей системы 1С.

← На главную