Зелёный треугольник в ячейках после выгрузки из 1С: возвращаем числам числовой тип
Содержание
Ошибка «Число сохранено как текст» — это предупреждение Excel, а не самой 1С. Быстрее всего её убирает выделение столбца и команда Данные → Текст по столбцам → Готово. Если в числах есть пробелы-разделители разрядов, сначала замените неразрывный пробел через Ctrl+H, иначе преобразование не сработает.
Способов исправить несколько, и выбирают их по объёму. Пара ячеек — жёлтый ромб с командой «Преобразовать в число». Целый столбец — «Текст по столбцам» или специальная вставка с умножением на 1. Регулярная выгрузка — правка макета отчёта в 1С, чтобы числа уходили в файл числами с самого начала.
Почему числа из 1С превращаются в текст
Табличный документ 1С хранит в ячейке либо значение (число, дату, ссылку), либо готовую строку. При сохранении в .xlsx значение уходит числом, а строка — текстом. Excel видит в текстовой ячейке цифры и ставит зелёный треугольник в левом верхнем углу.
Откуда в ячейке берётся строка вместо числа:
- 🧾 Печатные формы. Счёт, накладная, акт заполняются суммами, уже превращёнными в строку через форматирование. После «Сохранить как» в Excel почти все суммы печатной формы будут текстом.
- 🔢 Разделители разрядов. Число
1 234 567,89в 1С выводится с неразрывным пробелом (код 160). При копировании через буфер обмена Excel не узнаёт такую запись как число. - 💱 Единицы в той же ячейке. «1 500,00 руб.», «12 шт», «18%» — Excel не умеет отрезать хвост сам.
- ✂️ Копирование через буфер. Выделили диапазон в отчёте,
Ctrl+C, вставили в Excel — тип теряется чаще, чем при сохранении файлом. - 🛠 Доработанные отчёты. Программист вывел в макет результат выражения вида
Формат(Сумма, "ЧДЦ=2")вместо самого числа. - 🌐 Региональные настройки Windows. Если разделитель дробной части в системе — точка, а в данных запятая (или наоборот), Excel оставит «12,5» текстом.
Чем это мешает: СУММ такие ячейки пропускает, итог получается меньше реального. Сортировка ставит «1000» перед «200». Сводная таблица считает количество вместо суммы. А при обратной загрузке в 1С возникает ошибка Преобразование значения к типу Число не может быть выполнено.
Как найти ячейки с числами в текстовом виде
Визуально проблема видна не всегда: индикатор ошибок в Excel можно отключить, а при печати треугольников нет. Надёжные способы проверки:
- Выравнивание. По умолчанию числа прижаты вправо, текст — влево. Если столбец сумм «уехал» влево, это первый признак.
- Строка состояния. Выделите столбец. Если внизу Excel показывает только «Количество», а «Сумма» и «Среднее» не появились — чисел в выделении нет.
- Выделение группы ячеек.
Ctrl+G → Выделить → Константы, оставьте только флажок «Текст». Excel подсветит все текстовые ячейки на листе, и сразу видно, где среди них цифры. - Формула-проверка. В соседнем столбце:
=ЕТЕКСТ(B2). ИСТИНА — значит, в B2 текст. - Сверка итога. Сравните
=СУММ(B2:B500)с итогом отчёта в 1С. Расхождение укажет, что часть строк выпала из суммы.
Чтобы понять, какой тип мусора внутри, посчитайте длину: =ДЛСТР(B2). Если у «1 234,56» длина 9, а видимых символов 8 — внутри неразрывный пробел или невидимый символ. Код первого символа покажет =КОДСИМВ(ПСТР(B2;2;1)): 160 — неразрывный пробел, 32 — обычный.
Способы превратить текст в число: какой когда выбрать
| Способ | Когда подходит | Ограничения |
|---|---|---|
| Ромб «Преобразовать в число» | Десяток ячеек, чистые цифры | Не убирает пробелы и буквы |
Данные → Текст по столбцам | Целый столбец | Обрабатывает один столбец за раз |
| Специальная вставка «Умножить» на 1 | Несколько столбцов сразу | Пробелы и буквы надо убрать заранее |
Замена Ctrl+H | Неразрывные пробелы, «руб.», «шт» | Нужен второй шаг преобразования |
Формулы ЗНАЧЕН, ПОДСТАВИТЬ | Грязные данные, нужен контроль | Появляется вспомогательный столбец |
Ромб «Преобразовать в число»
Выделите диапазон, начиная с ячейки, где виден зелёный треугольник. Рядом появится жёлтый ромб с восклицательным знаком. Нажмите его и выберите «Преобразовать в число». Команда применится ко всему выделению.
Минус: на десятках тысяч строк Excel заметно задумывается, а ячейки с пробелами внутри остаются как были.
Текст по столбцам
- Выделите один столбец с числами.
- Откройте
Данные → Текст по столбцам. - Сразу нажмите «Готово».
Excel заново разберёт содержимое и запишет числа числами. Если в данных дробная часть через точку, а Windows ждёт запятую, пройдите мастер до третьего шага, нажмите «Подробнее» и укажите разделитель целой и дробной части вручную.
Специальная вставка с умножением
- В любую пустую ячейку введите
1и скопируйте её. - Выделите все проблемные столбцы.
Главная → Вставить → Специальная вставка, отметьте «Умножить», нажмите ОК.
Умножение на единицу заставляет Excel пересчитать каждую ячейку как число. Удобно, когда текстовых столбцов пять-шесть: обрабатываются за один проход.
Замена неразрывного пробела
Это главный приём для выгрузок из 1С. Обычный пробел в поле «Найти» не сработает: у 1С между разрядами стоит символ с кодом 160.
- Выделите столбец, нажмите
Ctrl+H. - В поле «Найти» удерживайте
Altи наберите0160на цифровой клавиатуре. Поле будет выглядеть пустым, но символ там есть. - Поле «Заменить на» оставьте пустым, нажмите «Заменить все».
- Тем же способом уберите « руб.», « шт» и другие хвосты.
- Добейте результат «Текстом по столбцам» или умножением на 1.
Если на ноутбуке нет цифровой клавиатуры, скопируйте пробел-разделитель прямо из ячейки с выгрузкой и вставьте его в поле «Найти».
Формулы для грязных данных
Когда в столбце смешаны разные форматы, надёжнее формула во вспомогательном столбце:
=ЗНАЧЕН(ПОДСТАВИТЬ(ПОДСТАВИТЬ(B2;СИМВОЛ(160);"");" руб.";""))
Короткий вариант для чистых цифр — двойное отрицание =--B2. Затем скопируйте результат и вставьте его поверх исходного столбца как «Значения», а вспомогательный столбец удалите.
Загрузка из Excel в 1С: когда программа не видит число
Обратная ситуация: файл от поставщика или из другой программы нужно загрузить в документ 1С. В БП 3.0, УТ 11 и других типовых конфигурациях в табличных частях товаров есть команда загрузки из файла. Она сопоставляет колонки файла с реквизитами документа. Если в колонке «Количество» или «Цена» лежит текст, поле в строке останется пустым или нулевым, а при программной загрузке появится ошибка Преобразование значения к типу Число не может быть выполнено.
Что проверить в файле до загрузки:
- 📏 Нет пробелов-разделителей. «1 200» превратите в «1200» заменой символа 160.
- 🔣 Единый разделитель дробной части. Одна строка «12,5», другая «12.5» — частая картина в прайсах поставщиков.
- 🔤 Нет текста в числовых колонках. «по запросу», «—», «нет» замените на 0 или удалите строку.
- 🧮 Нет формул с ошибками. Ячейка с
#Н/Дили#ЗНАЧ!загрузится мусором. - 📑 Шапка в одной строке. Объединённые ячейки заголовка сбивают сопоставление колонок.
Простой контроль перед загрузкой: строка итогов =СУММ() по количеству и сумме в Excel. После загрузки сравните её с итогом табличной части документа в 1С. Если цифры совпали — ни одна строка не потерялась.
Если загрузка идёт в уже проведённый документ, после исправления данных перепроведите его, чтобы движения по регистрам пересчитались по новым суммам.
Программное решение: правка макета и конвертация строк в коде
Если отчёт выгружают в Excel каждый день, вручную чистить файл неудобно. Причину лучше убрать в самой 1С. Делается это в расширении конфигурации, чтобы правка не слетела при обновлении типовой.
Число в ячейку, а не строка
В макете табличного документа у ячейки, куда выводится сумма, должно быть заполнение «Параметр», а в параметр нужно передавать само число. Формат вывода (разряды, два знака после запятой) задаётся свойством ячейки «Формат», а не функцией Формат() в коде. Тогда 1С покажет красивое «1 234,56», а в Excel уйдёт число 1234,56.
Если ячейку заполняют программно, используйте свойства области:
Область = ТабДок.Область("R5C3");
Область.СодержитЗначение = Истина;
Область.ТипЗначения = Новый ОписаниеТипов("Число");
Область.Значение = Сумма;
Область.Формат = "ЧДЦ=2";
Неправильный вариант, который и даёт текст в Excel: Область.Текст = Формат(Сумма, "ЧДЦ=2").
Функция для загрузки строковых чисел
При собственной загрузке из Excel не передавайте значение ячейки напрямую в числовой реквизит. Очистите строку и преобразуйте её с перехватом ошибки:
Функция СтрокаВЧисло(Знач Стр)
Стр = СокрЛП(Стр);
Стр = СтрЗаменить(Стр, Символы.НПП, "");
Стр = СтрЗаменить(Стр, " ", "");
Стр = СтрЗаменить(Стр, ",", ".");
Если ПустаяСтрока(Стр) Тогда
Возврат 0;
КонецЕсли;
Попытка
Возврат Число(Стр);
Исключение
Возврат Неопределено;
КонецПопытки;
КонецФункции
Функция Число() ждёт точку в дробной части, поэтому запятая заменяется на точку. Неопределено вместо нуля возвращается намеренно: так строку с мусором видно и её можно вывести в протокол загрузки, а не молча записать ноль.
После подключения расширения перезапустите сеанс 1С у пользователей, которые работают с отчётом: изменения применяются при новом входе.
Как не получать текст вместо чисел
- 💾 Сохраняйте файлом, а не копируйте. Команда сохранения табличного документа в
.xlsxпередаёт типы точнее, чемCtrl+C/Ctrl+V. - 📊 Для анализа берите отчёт, а не печатную форму. ОСВ, анализ счёта, отчёты по продажам выводят числа значениями. Печатная форма накладной для анализа в Excel не годится.
- 🧹 Убирайте единицы из колонок сумм. «руб.» и «шт» уместны в заголовке столбца, а не в каждой ячейке.
- ⚙️ Проверьте региональные настройки. Разделитель дробной части в Windows и в Excel (
Файл → Параметры → Дополнительно) должен совпадать с тем, что приходит в данных. - 🧩 Шаблон приёма в Excel. Для регулярных прайсов сделайте лист с формулами очистки: вставили данные в первый столбец, забрали готовые числа из второго.
- 📌 Контрольная сумма. Строка итогов в Excel и сверка с итогом в 1С ловят выпавшие строки за секунды.
Если зелёные треугольники мешают только визуально, а с данными всё в порядке, индикатор можно выключить: Файл → Параметры → Формулы, в правилах проверки ошибок снимите флажок «Числа, отформатированные как текст или с предшествующим апострофом». Сами значения при этом останутся текстом, на расчёты это не влияет.