Лишние нули в полях количества товаров, остатков или документов в 1С:Предприятие — распространённая проблема, которая усложняет работу с данными. Они появляются при экспорте/импорте, ручном вводе через точку (например, 5.000 вместо 5), или из-за особенностей хранения чисел в базе. В некоторых случаях нули мешают аналитике, занимают место в отчётах, а иногда даже вызывают ошибки при обмене данными с внешними системами.
Решить эту проблему можно разными способами — от базовых настроек интерфейса до программных доработок конфигурации. Важно понимать, что метод зависит от версии платформы (1С 8.2 или 1С 8.3), типа данных (число, дробное число) и конкретной конфигурации (УТ 11, ERP 2, Розница 2.3 и др.). В этой статье разберём все актуальные способы, включая нюансы для типовых и нетиповой конфигураций.
Если вы не программист, начните с первых трёх разделов — там описаны решения без кода. Разработчикам пригодятся разделы про программное форматирование и обработку данных на уровне СКД или запросов.
1. Настройка отображения чисел в интерфейсе 1С
Самый простой способ скрыть нули — изменить формат отображения чисел непосредственно в интерфейсе программы. Это не удалит нули из базы данных, но сделает их невидимыми для пользователя в таблицах, документах и отчётах.
Для этого:
- Откройте любой документ или справочник, где отображаются числа с нулями (например,
Остатки товаровилиПриходная накладная). - Кликните правой кнопкой мыши по колонке с количеством и выберите
Настройка списка(в 1С 8.3 путь может отличаться:Ещё → Настроить список). - В открывшемся окне найдите вкладку
Колонки, выделите нужную колонку (например,Количество) и нажмитеИзменить. - В поле
Форматукажите параметрЧДЦ=0(число десятичных знаков равно 0). Для дробных чисел используйтеЧДЦ=2, если нужны только два знака после запятой.
Эти настройки сохранятся для текущего пользователя. Чтобы применить их для всех, потребуется доработка конфигурации (см. раздел 5).
- ✅ Плюсы: не требует прав администратора, работает сразу.
- ❌ Минусы: не убирает нули в базе, только скрывает их в интерфейсе.
- ⚠️ Нюанс: в некоторых конфигурациях (например, 1С:ERP) настройки колонок могут сбрасываться после обновлений.
Если после изменения формата нули всё равно отображаются, проверьте настройки Регистра сведений или Плана видов характеристик — там может быть привязан другой формат.
2. Использование обработок для массового исправления
Если нули stored directly in the database (например, после импорта из Excel или миграции данных), их можно удалить с помощью стандартных или внешних обработок. Для типовой 1С:Управление Торговлей 11 подойдёт обработка Поиск и замена значений, которая входит в комплект поставки.
Алгоритм действий:
- Откройте обработку через меню
Файл → Открыть(выберите файлSearchAndReplace.epfв каталоге шаблонов). - В поле
Таблицаукажите документ или справочник (например,Документ.ПоступлениеТоваровУслуг). - В поле
ПолевыберитеКоличество(или аналогичное). - В
Значение для поискавведите*.000(звёздочка — любой символ, точка и три нуля). - В
Значение для заменыукажите\1(это регулярное выражение, которое оставляет только целую часть числа). - Нажмите
Заменить всеи подтвердите действие.
Для нетиповой конфигурации может потребоваться внешняя обработка, например, "Универсальный корректор данных" от Инфостарт. Она позволяет гибко настраивать правила замены, включая работу с дробными числами.
⚠️ Внимание: Перед массовой заменой обязательно сделайте резервную копию базы! Ошибка в регулярном выражении может испортить данные. Например, замена*.000на\1преобразует10.000в1, что не всегда корректно.
| Обработка | Поддерживаемые конфигурации | Особенности |
|---|---|---|
Поиск и замена значений (стандартная) |
УТ 11, ERP 2, Розница 2.3 | Работает только с простыми типами данных, нет поддержки транзакций. |
| Универсальный корректор данных (Инфостарт) | Любые конфигурации на 8.3 | Поддерживает сложные условия, транзакции, логирование изменений. |
| DataProcessor (от 1С-Битрикс) | 1С + интеграция с веб | Позволяет экспортировать данные в CSV, исправить и импортировать обратно. |
3. Корректировка через запросы (для разработчиков)
Если нули хранятся в базе в виде дробных чисел (например, 5.000000), их можно исправить SQL-запросом. Этот метод подходит для 1С на MS SQL Server или PostgreSQL, но требует прав доступа к серверу базы данных.
Пример запроса для MS SQL, который обрезает нули в таблице документов:
UPDATE [dbo].[Document_ПоступлениеТоваровУслуг]
SET [Количество] = CAST([Количество] AS INT)
WHERE [Количество] = CAST([Количество] AS INT)
Для PostgreSQL используйте функцию TRUNC:
UPDATE document_поступлениетоваровуслуг
SET количество = TRUNC(количество)
WHERE количество = TRUNC(количество);
- 🔧 Важно: перед выполнением запроса проверьте его на тестовой копии базы!
- 📊 Нюанс: в 1С некоторые поля могут храниться как
NUMERIC(15,6), и простое приведение кINTприведёт к ошибке. - 🔄 Альтернатива: если нули появляются при обмене данными, исправляйте их на стороне источника (например, в Excel перед импортом).
⚠️ Внимание: Прямые SQL-запросы к базе 1С могут нарушить целостность данных, если не учитывать механизмы блокировок и транзакций платформы. Используйте этот метод только в крайнем случае или через Внешнее соединение в конфигураторе.
Что будет если обнулить дробную часть в валютах?
Если в поле хранится курс валюты (например, 75.0000), а вы приведёте его к целому числу (75), это исказит все расчёты в документах. Перед массовой заменой проверьте, не используется ли поле в финансовых операциях.
4. Настройка печатных форм и отчётов
Нули в количестве часто проявляются в печатных формах документов (например, в Счёте на оплату или Торг-12). Исправить это можно через редактор макетов:
Инструкция для 1С 8.3:
- Откройте нужный документ (например,
Реализация товаров) и перейдите в печатную форму (Печать → Счёт на оплату). - Нажмите
Изменить форму(илиНастроить макетв зависимости от конфигурации). - Найдите поле с количеством (обычно это
ТаблицаДокумента.Количество) и откройте его свойства. - В свойстве
ФорматукажитеЧДЦ=0; ЧН=Неотрицательное. - Сохраните макет и обновите форму.
Для системы компоновки данных (СКД) (используется в отчётах вроде Остатки товаров):
- Откройте отчёт в режиме
Конфигуратор. - Перейдите на вкладку
Настройки→Поля. - Выделите поле
Количествои в свойствах укажитеФормат = ЧДЦ=0. - Если нужно округлить дробные значения, добавьте выражение:
ВЫБРАТЬЦЕЛ(Количество) КАК КоличествоБезНулей
ИЗ
&Таблица
Сделать резервную копию макета|Проверить права доступа (нужен режим"Конфигуратор")|Убедиться, что поле не используется в расчётах|Тестировать изменения на копии документа-->
5. Программное решение: обработка событий
Если нули появляются при вводе данных (например, пользователь вводит 5.000, а нужно 5), можно добавить обработчик события ПриИзменении для поля Количество. Этот метод требует доступа к конфигуратору и знания 1С-программирования.
Пример кода для обработки ввода в документе ПоступлениеТоваровУслуг:
&НаСервере
Процедура КоличествоПриИзменении(Элемент)
Если ТипЗнч(Элемент.Значение) = Тип("Число") Тогда
Элемент.Значение = Цел(Элемент.Значение);
КонецЕсли;
КонецПроцедуры
Для управляемых форм (тонкий клиент, веб-клиент) используйте серверный код:
&НаСервере
Процедура ТоварыКоличествоПриИзменении(Элемент)
Если Элемент.Значение = Цел(Элемент.Значение) Тогда
Элемент.Значение = Цел(Элемент.Значение);
КонецЕсли;
КонецПроцедуры
- 💡 Совет: чтобы не терять дробную часть при реальной необходимости (например, для весового товара), добавьте проверку на тип номенклатуры:
Если НЕ Номенклатура.ВесовойТовар ТогдаЭлемент.Значение = Цел(Элемент.Значение);
КонецЕсли;
- 🔧 Нюанс: в 1С:Розница 2.3 поле
Количествоможет быть привязано кРегиструНакопления.ОстаткиТоваров, и его изменение потребует перепроведения документа.
Обработчики событий — самый надёжный способ контролировать ввод данных, но они работают только для новых документов. Для исправления старых данных используйте обработки или запросы.
6. Обмен данными и интеграции: почему нули возвращаются
Если вы удалили нули в 1С, но они появляются снова после обмена с внешними системами (например, 1С-Битрикс, МойСклад, или Excel), проблема кроется в настройках интеграции. Рассмотрим типичные сценарии:
1. Импорт из Excel:
- 📑 Excel по умолчанию сохраняет числа с двумя десятичными знаками. При импорте в 1С через
ЗагрузкаДанныхИзТабличногоДокументанули переносятся"как есть". - 🔄 Решение: перед загрузкой отформатируйте колонку в Excel как
Целое числоили используйте обработку с предварительной очисткой данных.
2. Обмен с сайтом (1С-Битрикс, WooCommerce):
- 🌐 Многие CMS передают количество как строку (например,
"5.000"). В 1С это преобразуется в дробное число. - 🔧 Решение: доработайте обработку обмена, добавив приведение к целому числу:
Количество = Цел(Число(ДанныеJSON.Количество));
3. Обмен с МойСклад или Диадок:
настройте правила конвертации в 3.000000).Плане обмена или используйте промежуточную обработку для очистки данных.
⚠️ Внимание: Если вы используете 1С:EDT (Enterprise Development Tools) для интеграций, проверьте настройки Формата обмена — там может быть явное указание на передачу дробных чисел даже для целых значений.
7. Особенности для конкретных конфигураций
В зависимости от конфигурации 1С способы удаления нулей могут отличаться. Рассмотрим нюансы для популярных решений:
| Конфигурация | Типичные проблемы с нулями | Рекомендуемое решение |
|---|---|---|
| 1С:Управление Торговлей 11 | Нули в Остатках товаров и Заказах покупателей после обмена с МойСклад. |
Использовать обработку Поиск и замена или доработать План обмена. |
| 1С:ERP 2 | Нули в Планах производства и Спецификациях из-за дробных коэффициентов. |
Настроить округление в Регистре сведений"Нормы расхода". |
| 1С:Розница 2.3 | Нули в Чеках ККМ при работе с весовыми товарами. |
Добавить обработчик ПриЗаписи для документа ЧекККМ. |
| 1С:Бухгалтерия 3.0 | Нули в Счётах-фактурах при экспорте в Контур.Диадок. |
Исправить шаблон печатной формы или настроить Формат выгрузки. |
Для нетиповой конфигурации или сильно доработанной типовика потребуется анализ структуры базы. В этом случае:
Изменение типа поля в метаданных может привести к ошибкам в существующих документах! Перед такой доработкой обязательно протестируйте её на копии базы.
Скорее всего, нули прописаны в правилах обмена данными или в источнике данных (например, в Excel-файле, из которого вы загружаете товары). Проверьте настройки интеграции и отключите автоматическое округление в внешней системе. Также причиной может быть регламентное задание, которое периодически обновляет данные из другого источника. Откройте Да, в большинстве отчётов на СКД (Система Компоновки Данных) можно изменить формат прямо в настройках: Если отчёт не на СКД, а на старых механизмах (например, При выгрузке через Таблица.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число",,"ЧДЦ=0")); // Заполнение таблицы данными Таблица.Выгрузить(ПутьКФайлу, ФорматВыгрузкиДанных.Excel8);
Поиск по метаданным).Число(15,3), а вам нужны только целые значения, измените его на Число(15,0).FAQ: Частые вопросы по удалению нулей в 1С
Почему после удаления нулей через обработку они появляются снова?
Администрирование → Регламентные задания и проверьте задачи, связанные с синхронизацией.Можно ли убрать нули в отчёте"Ведомость по товарам" без доработок?
Настройки → Другие настройки.Поля и найдите колонку Количество.Формат = ЧДЦ=0.Табличный документ), потребуется доработка макета.Как убрать нули в количестве при выгрузке в Excel?
Сохранить как Excel формат чисел сохраняется"как есть". Чтобы убрать нули:
CSV, затем откройте файл в Excel и примените формат Целое число.Таблица = Новый ТаблицаЗначений;
Почему в некоторых документах нули остаются, а в других — нет?
Это зависит от типа поля в метаданных:
- Если поле имеет тип
Число(10,0)— нулей не будет. - Если тип
Число(10,3)— платформа 1С будет хранить три знака после запятой, даже если они нулевые.
Чтобы унифицировать отображение:
- Откройте конфигуратор и найдите документ, где остаются нули.
- Проверьте тип поля
Количествов его структуре. - Если нужно изменить тип, сделайте это через
Конфигуратор → Объекты → [ВашДокумент] → Реквизиты.
После изменения типа поля может потребоваться обновление конфигурации базы и перепроведение документов.
Как убрать нули в количестве при печати этикеток?
В этикетках (например, в 1С:Розница) формат чисел настраивается в макете печатной формы:
- Откройте документ (например,
Поступление товаров) и выберитеПечать → Этикетки. - Нажмите
Настроить макети найдите поле с количеством. - В свойствах поля укажите
Формат = ЧДЦ=0; ЧН=Неотрицательное. - Если макет на СКД, измените формат в настройках компоновки (см. раздел 4).
Для термопринтеров (например, Атол или Штрих-М) может потребоваться доработка драйвера печати, так как некоторые модели автоматически добавляют нули к дробным числам.