При выгрузке отчетов из 1С в Excel пользователи часто сталкиваются с проблемой: платформенные механизмы Excel воспринимают артикулы и коды, состоящие из цифр, как числовые значения. В результате лидирующие нули (например, код 00012345 превращается в 12345) автоматически отсекаются. Попытка решить проблему путем добавления символа апострофа (одиночной кавычки ') перед значением приводит к другой сложности: апостроф отображается в ячейке как обычный печатный символ и не скрывается до тех пор, пока пользователь не зайдет в ячейку и не нажмет Enter.
Разберем подробно причины такого поведения и проанализируем основные способы корректного вывода текстовых данных с нулями из 1С в таблицы Excel.
Символ апострофа в Excel является служебным префиксом формата, подсказывающим табличному редактору, что содержимое ячейки необходимо трактовать как текст. Однако при сохранении табличного документа из 1С через штатный метод Записать() в форматы XLS или XLSX, платформа выгружает апостроф как текстовый символ ячейки. Специальный служебный флаг Excel при этом не устанавливается, из-за чего кавычка остается видимой при обычном открытии файла.
Если выгрузка происходит из отчета (например, на базе Универсального отчета в конфигурации 1С:Управление торговлей 10.3), проанализируем настройки свойств ячеек макета:
Явное указание строкового типа на уровне макета помогает платформе сформировать правильные текстовые свойства ячеек в выгружаемом файле без использования символа апострофа.
Если штатное сохранение табличного документа не дает нужного результата, наиболее надежным решением является программное формирование файла с помощью OLE/COM-автоматизации (Excel.Application).
Рассмотрим два варианта корректной передачи текстовых данных через COM:
Вариант А: Задание текстового формата для ячейки или колонки
Перед записью значений установим для требуемой колонки текстовый формат (маска @). В этом случае значение передается напрямую без подстановки апострофа:
// Создаем объект Excel
Excel = Новый COMОбъект("Excel.Application");
Книга = Excel.Workbooks.Add();
Лист = Книга.Worksheets(1);
// Задаем текстовый формат для всей колонки артикулов (например, колонка A)
Лист.Columns("A:A").NumberFormat = "@";
// Заполняем ячейку значением с лидирующими нулями
Лист.Cells(1, 1).Value = "00012345";
Excel.Visible = Истина;
Вариант Б: Запись значения в виде формулы
Если требуется зафиксировать строковое представление без изменения общего формата колонки, можно записать значение в ячейку в виде текстовой формулы:
// Передаем значение в виде формулы Excel
Артикул = "00012345";
Лист.Cells(ИндексСтроки, ИндексКолонки).Formula = "=""" + Артикул + """";
Если отчет уже сохранен и файл передан пользователю, разберем способы быстрого удаления апострофов и восстановления нулей без изменения кода 1С:
00000000). Нули отобразятся визуально без изменения типа исходных данных.Сформируем текстовый документ в формате CSV с разделителями. При открытии файла в Excel воспользуемся инструментом импорта (вкладка Данные > Из текста/CSV или Мастер импорта текста). На шаге настройки типов данных укажем для колонки с артикулами тип Текстовый. Это гарантирует сохранение всех лидирующих нулей без искажения структуры данных.