Как увеличить длину строкового значения свойства в 1С: подробное руководство и лучшие практики

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

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

В этой статье мы подробно разберем, как устроен механизм свойств на уровне платформы, как правильно увеличить длину строкового свойства через Конфигуратор, проанализируем неочевидные риски этого процесса для производительности базы данных и рассмотрим наиболее архитектурно верное решение этой задачи.

Разбор архитектуры: Как хранятся дополнительные свойства в 1С

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

  1. План видов характеристик (ПВХ): Обычно он называется СвойстваОбъектов или ДополнительныеРеквизитыИСведения. Этот объект определяет, какие именно свойства (характеристики) могут быть созданы в системе, и задает их типы данных (строка, число, дата, ссылка на справочник и т.д.).
  2. Регистр сведений: Например, ЗначенияСвойствОбъектов. В нем физически хранятся записи в разрезе объектов (номенклатура, контрагенты, документы) и самих свойств.
  3. Справочник значений: Часто используется подчиненный справочник (например, ЗначенияСвойствОбъектов) для хранения предопределенных текстовых значений, выбираемых пользователем из списка.

Главный нюанс кроется в типе ресурса Значение в регистре сведений. Он имеет составной тип данных, который формируется динамически и называется Характеристика.СвойстваОбъектов. Платформа 1С автоматически включает в этот тип все типы данных, которые разрешены в свойстве "Тип значения характеристик" соответствующего Плана видов характеристик. Поэтому прямое изменение регистра сведений невозможно — его тип данных жестко завязан на ПВХ.

Решение 1: Прямое изменение длины строки в свойствах ПВХ

Если нам необходимо пойти самым простым путем и увеличить длину строки непосредственно в механизме характеристик, выполним следующие шаги:

  1. Откроем базу данных в режиме Конфигуратор.
  2. В дереве метаданных найдем раздел Планы видов характеристик и выберем нужный объект (например, СвойстваОбъектов или ДополнительныеРеквизитыИСведения).
  3. Откроем палитру свойств этого ПВХ.
  4. Найдем свойство Тип значения характеристик и нажмем на кнопку выбора (три точки).
  5. В открывшемся окне настройки типов найдем тип Строка.
  6. Увеличим длину строки до необходимого значения (например, 1000 символов) и при необходимости установим флаг Переменная длина, чтобы СУБД оптимально расходовала память.
  7. Сохраним изменения и обновим конфигурацию базы данных (клавиша F7).

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

Критические риски прямого увеличения длины свойства

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

Решение 2 (Best Practice): Использование архитектурного обходного пути

Чтобы обойти технические ограничения СУБД и сохранить высокую производительность системы при работе со строками длиной до 1000 символов и более, применим лучшую практику разработки 1С. Создадим выделенный справочник для хранения длинных текстов.

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

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

Теперь в режиме "1С:Предприятие" при создании нового свойства пользователь сможет выбрать в качестве типа значения созданный нами справочник ДополнительныеТекстовыеЗначения. Сам длинный текст будет храниться в реквизите справочника, а в регистре сведений будет находиться лишь компактная ссылка на элемент справочника (16 байт), что никак не повлияет на производительность индексов СУБД.

Посмотрим на пример запроса, с помощью которого мы можем безопасно извлечь наши длинные текстовые данные без потери производительности при соединении таблиц:


ВЫБРАТЬ
    ЗначенияСвойств.Объект КАК Объект,
    ЗначенияСвойств.Свойство КАК Свойство,
    ВЫРАЗИТЬ(ЗначенияСвойств.Значение КАК Справочник.ДополнительныеТекстовыеЗначения).ЗначениеТекстом КАК ДлинныйТекст
ИЗ
    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойств
ГДЕ
    ЗначенияСвойств.Свойство = &ЦелевоеСвойство

Используя конструкцию ВЫРАЗИТЬ, мы явно приводим составной тип характеристики к нашему новому справочнику и получаем доступ к его реквизиту неограниченной длины. Это гарантирует корректное выполнение запроса на уровне СУБД.

Нюансы работы в типовых конфигурациях и использование расширений

Если вы работаете с типовой конфигурацией (например, 1С:ERP, 1С:Комплексная автоматизация или 1С:Управление торговлей), которая находится на поддержке, прямое изменение ПВХ усложнит процедуру последующих обновлений.

В современных реалиях платформы 1С рекомендуется использовать Расширения конфигурации. Рассмотрим особенности этого подхода:

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

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

← На главную