Как сохранить лидирующие нули при экспорте таблиц из 1С 7.7 в Excel?

Программист 1С v7.7 IT и автоматизация бизнеса
← На главную

При стандартном сохранении табличных форм (накладных, актов, прайс-листов) из платформы 1С:Предприятие 7.7 в формат XLS часто возникает неприятная ситуация: ячейки с кодами товаров или артикулами, состоящими из одних цифр с ведущими нулями (например, 00045), открываются в Microsoft Excel, OpenOffice или LibreOffice как обычные числа (45). Разберем причины такого поведения и рассмотрим надежные способы решения данной задачи.

Выясним причину потери лидирующих нулей

Проанализируем, почему Excel автоматически отсекает нули. Встроенный модуль платформы 1С 7.7 сохраняет таблицы в формате Excel устаревшей версии (BIFF5 / Excel 95/97). При экспорте механизм выгрузки анализирует содержимое ячеек и их форматирование в табличном документе:

  1. Если ячейка содержит исключительно цифры и в свойствах ячейки установлено горизонтальное выравнивание По правому краю или По центру, платформа записывает данные в файл как числовое поле (тип NUMBER). В результате Excel открывает значение как число и отбрасывает начальные нули.
  2. Если в ячейке явно задать апостроф через код (например, "'"+Код), то апостроф воспринимается как печатный символ и физически отображается в ячейке и на печати.
  3. Если же для ячейки в макете 1С установлено горизонтальное выравнивание По левому краю, внутренний алгоритм 1С сам маркирует ячейку как текстовую, благодаря чему Excel оставляет ведущие нули нетронутыми.

Способ 1. Установка выравнивания по левому краю в макете таблицы

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

Разберем по шагам:

  1. Откроем нужную печатную форму (макет) в 1С 7.7.
  2. Выделим ячейку, куда выводится код номенклатуры или артикул (например, секция строки накладной).
  3. Откроем свойства ячейки, перейдем на закладку Положение.
  4. Установим параметр По горизонтали в значение Лево.
  5. Сохраним макет.

При таком выравнивании внутренний механизм конвертации 1С 7.7 самостоятельно передает в файл XLS признак текста. В результате значение 00045 отобразится в Excel именно как 00045 без визуального апострофа и без потери начальных нулей.

Способ 2. Добавление непечатаемых служебных символов

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

Рассмотрим примеры кода для заполнения ячейки макета:


// Использование символа Backspace (код 8)
ПечКод = Симв(8) + СокрЛП(Докум.Номенклатура.Код);

// Использование символа горизонтальной табуляции (код 9)
ПечКод = Симв(9) + СокрЛП(Докум.Номенклатура.Код);

Проанализируем действие этих символов: наличие символа Симв(8) или Симв(9) не позволяет алгоритму платформы преобразовать строку в чистое число, поэтому Excel открывает ячейку в текстовом формате и сохраняет все лидирующие нули, при этом значение остается выровненным по правому краю.

Также можно использовать символ неразрывного пробела:


// Добавление неразрывного пробела (код 160)
ПечКод = СокрЛП(Докум.Номенклатура.Код) + Симв(160);

В отличие от обычного пробела (Симв(32)), который удаляется при обработке, неразрывный пробел воспринимается табличным процессором как строковый символ и сохраняет текстовый тип данных.

Способ 3. Экспорт через HTML с CSS-стилями Excel

Если требуется сформировать файл программно и избежать проблем со встроенным конвертером BIFF5, рассмотрим вариант выгрузки таблицы в формат HTML с последующим открытием в Excel. Метод Записать() объекта Таблица позволяет сохранить документ в HTML:


Таб = СоздатьОбъект("Таблица");
// Формирование и заполнение макета
Таб.ВывестиСекцию("Шапка");
Таб.ВывестиСекцию("Строка");
// Сохранение в формате HTML (тип 2)
Таб.Записать(КаталогВременныхФайлов() + "Накладная.htm", 2);

При необходимости тонкой настройки можно добавить специальный CSS-стиль Microsoft Excel для текстовых колонок: mso-number-format:"\@". При открытии такого файла в Excel ячейки с ведущими нулями гарантированно интерпретируются как текст.

Способ 4. Использование внешних компонент экспорта

Для полного контроля над структурой и типами колонок в 1С 7.7 часто применяются сторонние библиотеки конвертации, такие как компонента Йоксель (Yoksel / SpreadSheet.dll). Она перехватывает процесс сохранения табличных документов .mxl и формирует полноценные файлы .xls с корректной типизацией данных и сохранением всех форматов ячеек независимо от выравнивания текста.

← На главную