Как правильно извлечь мощность из наименования номенклатуры в 1С:УНФ?

Программист 1С v8.3 (Управляемые формы) 1С:Управление нашей фирмой Управленческий учет Сфера услуг, туризм и социальный сектор
← На главную

При автоматизации учета часто возникает задача выделения характеристик товара или услуги из текстового наименования. Рассмотрим ситуацию, когда в 1С:УНФ необходимо получить значение мощности из строки вида «Капитальный ремонт эл. двигателя 3 кВт» для заполнения печатных форм. Разберем, как подойти к этому вопросу с точки зрения профессиональной разработки.

Вариант 1: Программный парсинг строки

Если вы все же решили извлекать данные из наименования программно, важно понимать, что простые методы вроде Прав() работают только при строгом соблюдении шаблона. Если формат строки изменится (появятся лишние пробелы, другие сокращения или разное количество цифр), код сломается.

Для более гибкого разбора строки рекомендуем использовать разделение на массив подстрок. Разберем по шагам, как это сделать:

  1. Разделите строку на части, используя символ пробела как разделитель.
  2. Переберите массив в цикле.
  3. Найдите элемент, содержащий «кВт», и возьмите предыдущий элемент как искомое значение для последующей сортировки товаров.

Пример реализации алгоритма на встроенном языке 1С:


Функция ПолучитьМощностьИзСтроки(Наименование)
    МассивСлов = СтрРазделить(Наименование, " ", Ложь);
    Для Индекс = 0 По МассивСлов.ВГраница() Цикл
        Если СтрНайти(НРег(МассивСлов[Индекс]), "квт") > 0 Тогда
            Если Индекс > 0 Тогда
                Возврат МассивСлов[Индекс - 1];
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
    Возврат "";
КонецФункции

Однако помните, что такой подход ненадежен, так как он не учитывает вариативность ввода. В таких случаях может потребоваться массовое изменение существующей номенклатуры. Мы настоятельно рекомендуем использовать этот метод только как временное решение.

Вариант 2: Архитектурно правильное решение — Дополнительные реквизиты

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

В современных конфигурациях, таких как 1С:УНФ, не обязательно менять конфигуратор. Воспользуйтесь механизмом ДополнительныеРеквизиты из состава БСП (Библиотеки стандартных подсистем), который позволяет добавлять дополнительные реквизиты в табличные части:

  1. Перейдите в раздел Настройки — Еще больше возможностей — Общие настройки.
  2. Установите флаг Дополнительные реквизиты и сведения.
  3. Откройте справочник Номенклатура и перейдите в Дополнительные реквизиты (обычно через кнопку «Еще» в карточке или настройку видов номенклатуры).
  4. Создайте новый реквизит «Мощность (кВт)» с типом значения «Число» (также поддерживаются множественные свойства номенклатуры).

Теперь вам не нужно заниматься сложным парсингом текста. В печатной форме вы просто обращаетесь к значению реквизита: Объект.ДополнительныеРеквизиты.Найти(СвойствоМощность, "Свойство").Значение. Это исключает необходимость в сложных алгоритмах и обеспечивает чистоту данных.

Рекомендации по доработке системы

При работе в 1С:УНФ важно придерживаться следующих правил:

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

← На главную