Как безопасно увеличить количество символов в поле "Наименование" справочника "Номенклатура" через расширение в 1С:Предприятии?

Программист 1С v8.3 (Управляемые формы)
← К списку

Часто при работе с типовыми конфигурациями 1С:Предприятия мы сталкиваемся с необходимостью увеличить длину стандартных строковых полей, таких как Наименование справочника Номенклатура. Стандартной длины в 25, 50 или 100 символов бывает недостаточно для полного и информативного названия товара или услуги. Однако, на форумах и среди разработчиков существуют опасения по поводу безопасности таких изменений, особенно через расширения, связанные с риском "обвала" или повреждения информационной базы при обновлениях.

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

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

1. Прямое изменение длины реквизита "Наименование" через расширение (Рекомендуемый подход)

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

Рассмотрим по шагам, как это сделать:

  1. Создание нового расширения:

    Откройте конфигуратор 1С:Предприятия. Перейдите в меню Конфигурация -> Расширения конфигурации. Нажмите кнопку Добавить для создания нового расширения. Присвойте ему понятное имя, например, "УвеличениеДлиныНаименования".

  2. Добавление справочника в расширение:

    В окне расширения перейдите на вкладку Общие. В дереве объектов конфигурации найдите нужный справочник (в нашем случае это Справочники.Номенклатура). Щелкните по нему правой кнопкой мыши и выберите пункт Добавить в расширение. Или же перетащите его в окно расширения.

  3. Изменение свойства "Длина" реквизита "Наименование":

    После добавления справочника Номенклатура в расширение, разверните его и найдите стандартный реквизит Наименование. Выделите его. В окне свойств реквизита найдите свойство Длина (Length) и установите желаемое значение (например, 150, 200 или 255 символов). Мы рекомендуем выбирать значения, кратные степени двойки или близкие к ним, но это не строгое требование.

  4. Переключение свойства в режим "модифицируемого" (значок "пазл"):

    Это ключевой шаг. Рядом со свойством Длина (а также рядом с другими свойствами, которые мы хотим изменить) вы увидите значок. Изначально это могут быть две синие стрелочки, указывающие на наследование свойства от основной конфигурации. Нам необходимо щелкнуть по этому значку, чтобы он изменился на изображение "пазла" (или "оранжевого пазла" в некоторых версиях платформы). Значок "пазла" означает, что это свойство является модифицируемым, и его значение, установленное в расширении, будет иметь приоритет над значением из основной конфигурации.

  5. Сохранение и публикация расширения:

    Сохраните расширение (Файл -> Сохранить). Затем закройте конфигуратор и запустите 1С:Предприятие в пользовательском режиме. Платформа предложит обновить конфигурацию базы данных. Согласитесь на обновление. После этого длина поля Наименование будет изменена.

Анализ рисков: Как мы уже выяснили, при корректном использовании расширений в актуальных версиях платформы 1С:Предприятие (от 8.3.18 и выше) риск "обвала базы" при изменении длины строкового реквизита Наименование минимален. Платформа самостоятельно управляет изменениями в структуре базы данных, расширяя соответствующее поле. Это считается безопасным и поддерживаемым методом.

2. Использование поля "Полное наименование"

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

Рассмотрим, как можно использовать этот подход:

  1. Хранение полной информации:

    Используйте поле Полное наименование для хранения всей необходимой длинной информации о номенклатуре.

  2. Отображение на форме:

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

  3. Программное заполнение "Наименования":

    Если стандартное поле Наименование все-таки требуется для каких-либо внутренних механизмов (например, для поиска, печати в документах), вы можете программно заполнять его, копируя часть данных из Полного наименования при записи элемента.

    Например, мы можем добавить обработчик события ПередЗаписью для справочника Номенклатура в нашем расширении:

    
    &НаКлиенте
    Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ЗаписываемыеЗначения)
        Если ЗначениеЗаполнено(ТекущийОбъект.ПолноеНаименование) Тогда
            // Ограничиваем длину, чтобы не превысить стандартное ограничение
            // если оно осталось, или до новой установленной длины
            ДлинаНаименования = 150; // Укажите новую или старую длину поля Наименование
            Если СтрДлина(ТекущийОбъект.ПолноеНаименование) > ДлинаНаименования Тогда
                ТекущийОбъект.Наименование = Лев(ТекущийОбъект.ПолноеНаименование, ДлинаНаименования);
            Иначе
                ТекущийОбъект.Наименование = ТекущийОбъект.ПолноеНаименование;
            КонецЕсли;
        КонецЕсли;
    КонецПроцедуры
    

    Обратите внимание: Полное наименование не всегда автоматически обновляется при изменении Наименования. Это происходит только если Полное наименование не заполнено или совпадает с Наименованием. При использовании этого метода вам придется самостоятельно управлять синхронизацией этих полей.

3. Добавление дополнительных реквизитов

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

Разберем процесс по шагам:

  1. Создание дополнительного реквизита:

    Запустите 1С:Предприятие в пользовательском режиме. Перейдите в раздел Администрирование -> Общие настройки -> Дополнительные реквизиты и сведения. Установите флажок Дополнительные реквизиты, если он еще не установлен.

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

  2. Настройка нового реквизита:

    В открывшейся форме создайте новый дополнительный реквизит:

    • Наименование: Присвойте ему понятное имя, например, "ДлинноеНаименование" или "НаименованиеДляПоиска".
    • Тип значения: Выберите Строка.
    • Длина: Укажите необходимую длину строки (например, 255, 500 или больше).
    • Вид сравнения: Установите Полное совпадение или По частичному совпадению в зависимости от ваших потребностей.

    Сохраните новый дополнительный реквизит.

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

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

    При необходимости, стандартное поле Наименование можно по-прежнему заполнять программно, используя данные из вашего нового дополнительного реквизита, аналогично примеру с Полным наименованием.

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

Надеемся, что это подробное руководство поможет вам безопасно и эффективно решить задачу увеличения длины наименований в вашей информационной базе 1С:Предприятия.

← К списку