При разработке или внедрении конфигураций на базе 1С:Предприятие 8 часто возникает вопрос: почему при программной загрузке номенклатуры в поле Код автоматически добавляются пробелы в конце значения? Если вы столкнулись с тем, что вместо ожидаемых 7 символов система «дописывает» строку до 11, давайте разберемся, является ли это ошибкой и что с этим делать.
Первое, что необходимо осознать: поведение системы, при котором в конце кода появляются пробелы, не является ошибкой. Это фундаментальная особенность работы платформы 1С с данными строкового типа.
В конфигураторе для стандартного реквизита Код задается свойство Длина. Если свойство Допустимая длина установлено в значение Фиксированная, платформа берет на себя обязательство строго следить за тем, чтобы длина строки в базе данных всегда соответствовала заданному числу символов. Если вы вводите строку короче, ядро системы автоматически «дозабивает» недостающее пространство пробелами справа.
В отличие от реквизита Артикул, который обычно настраивается с Допустимая длина = Переменная, стандартный Код изменить невозможно — это объект метаданных типовой конфигурации. Поэтому любые попытки «обрезать» пробелы через СокрЛП() в обработчике ПередЗаписью() будут бесполезны: сразу после вашего кода ядро системы снова добавит пробелы перед физической записью в таблицу БД.
Рассмотрим, какие стратегии можно применить, если наличие пробелов критически мешает вашим бизнес-процессам:
Код для внутренних нужд системы (инкрементная нумерация, ссылки, обмены). Для отображения пользователям или печати создайте дополнительный реквизит справочника с типом Строка и свойством Допустимая длина = Переменная.
ДанныеДляВыгрузки = СокрЛП(Объект.Код);
// Дальнейшая логика отправки очищенного кода
// Пример формирования кода с дополнением нулями (если это допустимо бизнес-логикой)
КодСНулями = Формат(Число(ВходящийКод), "ЧЦ=11; ЧВН=; ЧГ=0");
В процессе работы с данной задачей важно помнить о нескольких аспектах:
Прав(), вы столкнетесь с тем, что стандартная сортировка в списках номенклатуры станет непредсказуемой и неудобной для пользователя.ПриПолученииДанных в формах списка или представлений, чтобы на лету форматировать отображение кода для визуального комфорта, не меняя при этом само значение в базе данных.Подводя итог: если пробелы в конце кода не мешают работе стандартных механизмов 1С (поиск, ссылки, записи в регистрах), лучше оставить все как есть. Стандартный Код — это технический идентификатор, и наличие пробелов — его нормальное рабочее состояние в рамках архитектуры 1С:Предприятие.