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

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

Почему появляются пробелы между цифрами в 1С?

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

  • 📑 Импорт из Excel или CSV: при переносе данных из таблиц пробелы часто сохраняются как часть строки, особенно если ячейки были отформатированы как текст.
  • 🖱️ Ручной ввод: пользователи случайно добавляют пробелы при наборе длинных номеров (например, 123 4567 вместо 1234567).
  • 🔄 Обмен данными: при интеграции с другими системами (например, CRM или ERP) пробелы могут добавляться как разделители.
  • 🛠️ Ошибки конфигурации: в некоторых обработках или отчётах пробелы вставляются намеренно для выравнивания колонок, но потом остаются в данных.
  • 📊 Форматирование полей: если поле имеет тип "Строка" с маской ввода, пробелы могут добавляться автоматически (например, для разделения тысяч).

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

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

📊 Где вы чаще всего сталкиваетесь с пробелами между цифрами в 1С?
В номерах документов
В кодах номенклатуры
В реквизитах контрагентов
При импорте данных
Другое

Способ 1: Ручная правка через интерфейс 1С

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

Как убрать пробелы вручную:

  1. Откройте документ или элемент справочника, где есть пробелы (например, номер 123 456).
  2. Дважды кликните по полю с номером, чтобы перейти в режим редактирования.
  3. Удалите пробелы клавишей Backspace или Delete.
  4. Сохраните изменения (Ctrl+S или кнопка "Записать").

Для ускорения процесса можно использовать комбинации клавиш:

  • 🔍 Ctrl+F — найти все документы с пробелами в номере (если поле доступно для поиска).
  • 🔄 F5 — обновить список после правки.
  • 📋 Shift+Enter — быстро перейти к следующему документу в списке.

⚠️ Внимание: При ручной правке в справочниках (например, номенклатуре) проверьте, не используются ли эти коды в связанных документах. Изменение кода может привести к разрыву связей в базе!

☑️ Подготовка к ручной правке

Выполнено: 0 / 4

Способ 2: Поиск и замена через обработку "Поиск и замена значений"

Для массового исправления пробелов в удобно использовать стандартную обработку "Поиск и замена значений". Она доступна в большинстве конфигураций и позволяет автоматизировать процесс.

Пошаговая инструкция:

  1. Откройте меню Все функции → Стандартные → Поиск и замена значений (путь может отличаться в зависимости от конфигурации).
  2. В поле "Тип объекта" выберите документ или справочник, где нужно убрать пробелы (например, "Документ.РеализацияТоваровУслуг").
  3. В поле "Реквизит" укажите название поля с номером (например, "Номер").
  4. В поле "Значение для поиска" введите шаблон с пробелом, например "% %" (символ % обозначает любой набор символов).
  5. В поле "Значение для замены" введите тот же шаблон, но без пробела: "%%".
  6. Нажмите "Выполнить замену" и подтвердите действие.

Пример шаблонов для замены:

Цель Шаблон поиска Шаблон замены
Убрать все пробелы в номере % % %%
Убрать пробелы между цифрами (сохранить буквы) [0-9] [0-9] [0-9][0-9]
Заменить пробел на дефис % % %-%
Убрать пробелы в начале/конце % или % % (пусто)

⚠️ Внимание: Перед массовой заменой обязательно сделайте резервную копию базы! Ошибка в шаблоне может привести к порче данных. Например, шаблон % % заменит все пробелы, включая пробелы в тексте наименований.
💡

Если обработка "Поиск и замена" отсутствует в вашей конфигурации, её можно добавить через "Дополнительные отчёты и обработки" или скачать с сайта 1С-ИТС (раздел "Стандартные обработки").

Способ 3: Использование запроса 1С для массового исправления

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

Пример запроса для удаления пробелов в номерах документов "РеализацияТоваровУслуг":

ВЫБРАТЬ

РеализацияТоваровУслуг.Ссылка КАК Ссылка,

ЗАМЕНИТЬ(РеализацияТоваровУслуг.Номер, " ", "") КАК НовыйНомер

ИЗ

Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг

ГДЕ

СОДЕРЖИТ(РеализацияТоваровУслуг.Номер, " ")

Чтобы применить изменения, нужно обернуть запрос в цикл обхода результата:

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| РеализацияТоваровУслуг.Ссылка КАК Ссылка,

| ЗАМЕНИТЬ(РеализацияТоваровУслуг.Номер, "" "", """") КАК НовыйНомер

|ИЗ

| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг

|ГДЕ

| СОДЕРЖИТ(РеализацияТоваровУслуг.Номер, "" "")";

Результат = Запрос.Выполнить();

Выборка = Результат.Выбрать();

Пока Выборка.Следующий() Цикл

Док = Выборка.Ссылка.ПолучитьОбъект();

Док.Номер = Выборка.НовыйНомер;

Док.Записать();

КонецЦикла;

Для обработки справочников (например, номенклатуры) используйте аналогичный подход, заменив Документ.РеализацияТоваровУслуг на Справочник.Номенклатура и поле Номер на Код или Артикул.

Как проверить запрос перед выполнением?

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

Пока Выборка.Следующий() Цикл

Сообщить(Выборка.Ссылка + " | Старый номер: " + Выборка.Ссылка.Номер + " | Новый: " + Выборка.НовыйНомер);

КонецЦикла;

Это выведет в сообщениях все планируемые изменения без их применения.

Способ 4: Обработка через внешнюю обработку или отчёт

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

Где взять готовую обработку:

  • 📥 Сайт 1С-ИТС: в разделе "Дополнительные отчёты и обработки" есть бесплатные решения для работы со строками.
  • 🛠️ Инфостарт: на этом ресурсе публикуются обработки для массового редактирования данных (например, "Универсальная обработка замены значений").
  • 🔧 Гитхаб: некоторые разработчики выкладывают открытые обработки для работы с строками в .

Пример кода для универсальной обработки (упрощённая версия):

Процедура УбратьПробелыИзЧисел(ТаблицаДанных, ИмяКолонки)

Для Каждого Строка Из ТаблицаДанных Цикл

Если ТипЗнч(Строка[ИмяКолонки]) = Тип("Строка") Тогда

НовоеЗначение = СтрЗаменить(Строка[ИмяКолонки], " ", "");

Если НовоеЗначение <> Строка[ИмяКолонки] Тогда

Строка[ИмяКолонки] = НовоеЗначение;

Изменено = Истина;

КонецЕсли;

КонецЕсли;

КонецЦикла;

Если Изменено Тогда

Сообщить("Пробелы удалены в колонке " + ИмяКолонки);

КонецЕсли;

КонецПроцедуры

Чтобы использовать эту обработку:

  1. Создайте новую внешнюю обработку в Конфигураторе (Файл → Новый → Внешняя обработка).
  2. Добавьте на форму табличное поле и кнопку "Убрать пробелы".
  3. В модуле формы разместите приведённый выше код.
  4. Загрузите данные в таблицу (например, через запрос) и запустите обработку.

⚠️ Внимание: При использовании сторонних обработок проверьте их совместимость с вашей версией платформы 1С 8.3. Некоторые решения могут требовать доработки под конкретную конфигурацию (например, УТ 11, БП 3.0, ЗУП 3.1).

Способ 5: Предотвращение пробелов на этапе ввода (маски и события)

Лучший способ борьбы с пробелами — не допустить их появления. Для этого в можно настроить:

  • 🎭 Маски ввода для полей (например, запретить пробелы в номерах документов).
  • 🔧 Обработчики событий "ПриИзменении" или "ПередЗаписью", которые автоматически убирают пробелы.
  • 📋 Контроль ввода через модули объектов (например, проверка формата кода номенклатуры).

Пример настройки маски ввода для поля "Номер" документа:

  1. Откройте конфигуратор (Ctrl+Shift+C).
  2. Найдите документ, где нужно ограничить ввод (например, "ПоступлениеТоваровУслуг").
  3. В свойствах реквизита "Номер" установите маску ввода: (звёздочки обозначают разрешённые символы, пробелы будут запрещены).
  4. Сохраните конфигурацию и обновите базу.

Пример кода для обработчика "ПередЗаписью" (убирает пробелы в номере документа):

Процедура ПередЗаписью(Отказ)

Если НЕ ЗначениеЗаполнено(Номер) Тогда

Возврат;

КонецЕсли;

Номер = СтрЗаменить(Номер, " ", "");

КонецПроцедуры

Для справочников (например, номенклатуры) аналогичный код можно разместить в модуле объекта:

Процедура ПередЗаписью(Отказ, ПроводитьОперативныйКонтроль)

Если НЕ ПустаяСтрока(Код) Тогда

Код = СтрЗаменить(Код, " ", "");

КонецЕсли;

Если НЕ ПустаяСтрока(Артикул) Тогда

Артикул = СтрЗаменить(Артикул, " ", "");

КонецЕсли;

КонецПроцедуры

Эти методы помогут избежать пробелов в новых данных, но не исправят уже существующие записи. Поэтому их рекомендуется комбинировать с массовыми исправлениями (см. Способ 3).

💡

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

Типичные ошибки и как их избежать

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

  • 🔢 Потеря значимых пробелов: например, в артикулах типа AB 123 CD пробелы могут быть частью формата. В этом случае нужно использовать точную замену (например, убирать пробелы только между цифрами).
  • 🔗 Разрыв связей: если код номенклатуры используется в документах, его изменение может привести к ошибкам типа "Не найден элемент справочника". Перед массовой заменой проверьте ссылки!
  • 📉 Ошибки в отчётах: после удаления пробелов могут "сломаться" отчёты, где использовалось сравнение с учётом пробелов (например, Номер = "123 456"). Обновите условия в отчётах.
  • 🔒 Блокировки базы: массовые изменения могут заблокировать таблицы и вызвать ошибки у других пользователей. Выполняйте такие операции в нерабочее время.

Как избежать ошибок:

Проблема Решение
Заменили пробелы в кодах, но документы перестали проводиться Используйте обработку, которая обновляет ссылки в связанных документах (например, через временное поле).
После замены пропали ведущие нули в номерах Перед удалением пробелов преобразуйте поле в строку фиксированной длины (например, Строка(Номер, 10)).
Запрос выполняется слишком долго Разбейте обработку на пакеты (например, по 1000 записей) или используйте фоновые задания.
Пользователи продолжают вводить пробелы Добавьте проверку в модуль формы с выводом предупреждения: Если СтрНайти(Номер, " ") > 0 Тогда Сообщить("Пробелы в номере запрещены!"); КонецЕсли;

⚠️ Внимание: Если вы работаете с облачной версией 1С (например, 1С:Фреш), некоторые методы (например, прямые SQL-запросы) могут быть недоступны. В этом случае используйте стандартные обработки или обратитесь в поддержку.

FAQ: Частые вопросы по удалению пробелов в 1С

Можно ли убрать пробелы в номерах документов без программирования?

Да, для этого подойдут:

  • Ручная правка (если документов мало).
  • Стандартная обработка "Поиск и замена значений" (доступна в большинстве конфигураций).
  • Внешние обработки с сайта Инфостарт или 1С-ИТС (например, "Универсальный редактор реквизитов").

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

Почему после удаления пробелов некоторые документы не находятся по номеру?

Это происходит, если номер документа используется в других объектах базы (например, в регистрах или движениях). При изменении номера связь разрывается. Решения:

  • Используйте обработку, которая обновляет все ссылки (например, через временное поле с старым номером).
  • Восстановите связи вручную через отчёт "Проверка ссылочной целостности".
  • Если документов мало — перепроведите их.

В сложных случаях может потребоваться помощь программиста.

Как убрать пробелы в выгружаемых данных (например, для Excel или XML)?

Если пробелы нужны в базе, но не должны попадать в выгрузку, исправляйте их на этапе экспорта:

  • В обработке выгрузки добавьте замену: НомерДляВыгрузки = СтрЗаменить(Документ.Номер, " ", "");
  • Используйте Формат() для числовых полей: Формат(ЧисловоеПоле, "ЧГ=0") (убирает разделители тысяч).
  • Для XML-выгрузки настройте шаблон так, чтобы он игнорировал пробелы.

Пример для выгрузки в Excel:

ТаблицаДанных.Колонки.Добавить("НомерБезПробелов");

Для Каждого Строка Из ТаблицаДанных Цикл

Строка.НомерБезПробелов = СтрЗаменить(Строка.Номер, " ", "");

КонецЦикла;

Можно ли настроить 1С так, чтобы пробелы автоматически заменялись на дефис?

Да, для этого модифицируйте обработчик ПриИзменении или ПередЗаписью. Пример для замены пробелов на дефис в номере документа:

Процедура ПередЗаписью(Отказ)

Если НЕ ПустаяСтрока(Номер) Тогда

Номер = СтрЗаменить(Номер, " ", "-");

КонецЕсли;

КонецПроцедуры

Для справочников (например, номенклатуры) используйте аналогичный код в модуле объекта. Если нужно заменить только пробелы между цифрами, используйте регулярные выражения:

Номер = СтрЗаменитьПоШаблону(Номер, "[0-9] [0-9]", "$1-$2");

Что делать, если пробелы появляются при импорте из Excel?

Проблема typical для импорта, так как Excel может добавлять пробелы в ячейках с текстом. Решения:

  • 📑 Предварительная обработка в Excel: используйте функцию =СЖПРОБЕЛЫ(A1) или =ПОДСТАВИТЬ(A1; " "; "") перед экспортом.
  • 🔄 Настройка обработки импорта: добавьте в код обработки строку Данные.Номер = СтрЗаменить(Данные.Номер, " ", "");.
  • 📊 Используйте формат "Текстовый" для колонок с номерами в Excel, чтобы избежать автоматического форматирования.

Если импорт выполняется через COM-соединение, настройте параметры чтения данных:

Параметры = Новый Соответствие;

Параметры.Вставить("TrimStrings", Истина); // Убирает пробелы в начале/конце

Таблица = ПолучитьДанныеИзExcel(ИмяФайла, Параметры);