Зелёный треугольник в ячейках после выгрузки из 1С: возвращаем числам числовой тип

· 9 мин

Содержание

Ошибка «Число сохранено как текст» — это предупреждение 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 можно отключить, а при печати треугольников нет. Надёжные способы проверки:

  1. Выравнивание. По умолчанию числа прижаты вправо, текст — влево. Если столбец сумм «уехал» влево, это первый признак.
  2. Строка состояния. Выделите столбец. Если внизу Excel показывает только «Количество», а «Сумма» и «Среднее» не появились — чисел в выделении нет.
  3. Выделение группы ячеек. Ctrl+G → Выделить → Константы, оставьте только флажок «Текст». Excel подсветит все текстовые ячейки на листе, и сразу видно, где среди них цифры.
  4. Формула-проверка. В соседнем столбце: =ЕТЕКСТ(B2). ИСТИНА — значит, в B2 текст.
  5. Сверка итога. Сравните =СУММ(B2:B500) с итогом отчёта в 1С. Расхождение укажет, что часть строк выпала из суммы.

Чтобы понять, какой тип мусора внутри, посчитайте длину: =ДЛСТР(B2). Если у «1 234,56» длина 9, а видимых символов 8 — внутри неразрывный пробел или невидимый символ. Код первого символа покажет =КОДСИМВ(ПСТР(B2;2;1)): 160 — неразрывный пробел, 32 — обычный.

Диагностика: выберите симптом

Способы превратить текст в число: какой когда выбрать

СпособКогда подходитОграничения
Ромб «Преобразовать в число»Десяток ячеек, чистые цифрыНе убирает пробелы и буквы
Данные → Текст по столбцамЦелый столбецОбрабатывает один столбец за раз
Специальная вставка «Умножить» на 1Несколько столбцов сразуПробелы и буквы надо убрать заранее
Замена Ctrl+HНеразрывные пробелы, «руб.», «шт»Нужен второй шаг преобразования
Формулы ЗНАЧЕН, ПОДСТАВИТЬГрязные данные, нужен контрольПоявляется вспомогательный столбец

Ромб «Преобразовать в число»

Выделите диапазон, начиная с ячейки, где виден зелёный треугольник. Рядом появится жёлтый ромб с восклицательным знаком. Нажмите его и выберите «Преобразовать в число». Команда применится ко всему выделению.

Минус: на десятках тысяч строк Excel заметно задумывается, а ячейки с пробелами внутри остаются как были.

Текст по столбцам

  1. Выделите один столбец с числами.
  2. Откройте Данные → Текст по столбцам.
  3. Сразу нажмите «Готово».

Excel заново разберёт содержимое и запишет числа числами. Если в данных дробная часть через точку, а Windows ждёт запятую, пройдите мастер до третьего шага, нажмите «Подробнее» и укажите разделитель целой и дробной части вручную.

Специальная вставка с умножением

  1. В любую пустую ячейку введите 1 и скопируйте её.
  2. Выделите все проблемные столбцы.
  3. Главная → Вставить → Специальная вставка, отметьте «Умножить», нажмите ОК.

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

Замена неразрывного пробела

Это главный приём для выгрузок из 1С. Обычный пробел в поле «Найти» не сработает: у 1С между разрядами стоит символ с кодом 160.

  1. Выделите столбец, нажмите Ctrl+H.
  2. В поле «Найти» удерживайте Alt и наберите 0160 на цифровой клавиатуре. Поле будет выглядеть пустым, но символ там есть.
  3. Поле «Заменить на» оставьте пустым, нажмите «Заменить все».
  4. Тем же способом уберите « руб.», « шт» и другие хвосты.
  5. Добейте результат «Текстом по столбцам» или умножением на 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С ловят выпавшие строки за секунды.

Если зелёные треугольники мешают только визуально, а с данными всё в порядке, индикатор можно выключить: Файл → Параметры → Формулы, в правилах проверки ошибок снимите флажок «Числа, отформатированные как текст или с предшествующим апострофом». Сами значения при этом останутся текстом, на расчёты это не влияет.

Частые вопросы

Можно ли настроить 1С, чтобы при сохранении в Excel числа всегда были числами?
Отдельной общей настройки нет. Тип в файле зависит от того, что лежит в ячейке табличного документа: значение или строка. Исправляется это правкой макета конкретного отчёта.
Почему в одном отчёте числа нормальные, а в другом текстом?
Отчёты устроены по-разному. Стандартные отчёты выводят значения, а печатные формы и часть доработанных отчётов выводят уже отформатированные строки.
Что значит апостроф перед числом в ячейке?
Это признак принудительного текста. Excel не показывает апостроф в ячейке, только в строке формул. «Текст по столбцам» или умножение на 1 его убирают.
Изменится ли сумма после преобразования текста в число?
Значение не меняется, меняется тип. Итоги станут правильными, потому что ячейки начнут попадать в СУММ и сводные таблицы.
Формат ячейки «Числовой» не помогает. Почему?
Смена формата не пересчитывает уже введённые данные. После смены формата значение нужно ввести заново: «Текстом по столбцам», умножением на 1 или формулой.