Почему в 1С 7.7 исчезают пробелы в начале наименования номенклатуры и как их сохранить

Программист 1С v7.7 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

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

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

Выясним причину: почему отсекаются ведущие пробелы

При внесении изменений в состав или свойства реквизитов справочника в Конфигураторе 1С 7.7 (особенно в файловом варианте базы данных DBF) запускается процесс реструктуризации таблиц. В ходе реструктуризации платформа переносит данные во временные файлы, пересоздает индексы и нормализует строковые поля фиксированной длины.

Встроенные механизмы платформы 1С 7.7 рассматривают обычный пробел (символ ASCII 32 / 0x20) в начале и в конце текстовой строки как неинформативный служебный разделитель. В системном реквизите Наименование при выполнении процедур записи и индексации платформой автоматически выполняется удаление лишних краевых пробелов. Это гарантирует корректную работу внутренних выборок, поиска и формирования индексов.

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

Способ 1. Использование неразрывного пробела

Если пользователям критически важно сохранить визуальные отступы без изменения общей структуры справочника, обычные пробелы в начале названий можно заменить на неразрывные пробелы. Символ неразрывного пробела имеет код 160 (0xA0) и не воспринимается платформой как пустой край строки, поэтому он успешно проходит реструктуризацию файлов базы данных DBF.

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


Спр = СоздатьОбъект("Справочник.Номенклатура");
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент() = 1 Цикл
    СтрНаим = Спр.Наименование;
    Пока Лев(СтрНаим, 1) = " " Цикл
        СтрНаим = Симв(160) + Сред(СтрНаим, 2);
    КонецЦикла;
    Если СтрНаим <> Спр.Наименование Тогда
        Спр.Наименование = СтрНаим;
        Спр.Записать();
    КонецЕсли;
КонецЦикла;

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

Способ 2. Замена пробелов специальными символами

Вместо пробелов для сортировки элементов можно рекомендовать пользователям использовать символы-префиксы, которые находятся вверху таблицы кодировки. Посмотрим на наиболее распространенные варианты:

  1. Нижнее подчеркивание: _Кабель силоvisible
  2. Точка или дефис: .Принтеры, -Услуги
  3. Служебные знаки: ~, #, @

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

Способ 3. Добавление специального реквизита сортировки

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

  1. Добавим в справочник Номенклатура числовой или строковый реквизит, например, Порядок или Артикул.
  2. В настройках реквизита укажем флаг Сортировка.
  3. Сформируем систему кодирования: например, ТК0001 (Товар - Кабель), УП0001 (Услуга - Принтер).
  4. Настроим форму списка справочника для автоматической сортировки по данному реквизиту.

При таком подходе полное наименование позиции остается чистым и готовым для вывода в печатные формы, а сортировка осуществляется по строго заданному правилу.

Способ 4. Использование реквизита для печатных форм

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

  1. В реквизите Наименование оставляем рабочее название с префиксами для быстрого поиска и сортировки внутри программы.
  2. В реквизите ПолнНаименование (Полное наименование) храним официальное наименование номенклатуры без спецсимволов.
  3. В печатных формах документов (Накладная, Счет, Акт) настраиваем вывод значения из реквизита ПолнНаименование.

Рекомендации по работе с базой DBF без реструктуризации

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

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

← На главную