При выгрузке больших печатных форм или отчетов из программы 1С в формат Microsoft Excel (XLS) разработчики и пользователи иногда сталкиваются со странным поведением: документ, содержащий тысячи строк, сохраняется не полностью. На выходе получается файл, обрезанный на произвольной строке (например, на 97-й строке из 1700), при этом система 1С не выдает никаких ошибок или исключений.
Разберем подробнее, с чем связано такое поведение платформы, проанализируем основные причины обрезки данных и рассмотрим рабочие способы решения этой проблемы.
В коде конфигураций 1С программный экспорт табличного документа обычно выполняется с использованием следующего вызова:
ТабДок.Записать(Файл, ТипФайлаТабличногоДокумента.XLS);
Метод Записать объекта ТабличныйДокумент конвертирует внутреннее представление таблицы 1С в указанный формат. Стандартный тип ТипФайлаТабличногоДокумента.XLS соотносится со старым стандартом Excel 97–2003, работающим со сложной бинарной структурой данных. Если в процессе формирования файла внутренний бинарный конвертер платформы сталкивается со сбоем библиотек или некорректными данными, запись потока прекращается досрочно без генерации фатальной ошибки.
Рассмотрим главные факторы, которые могут приводить к обрезанию табличного документа при экспорте:
\0) или символы ASCII с кодами от 0 до 31, внутренний конвертер 1С может ошибочно расценить такой символ как маркер конца потока и завершить запись.%TEMP% или ограничения прав доступа к временным директориям системы могут препятствовать сборке и сохранению больших файлов.Как показывает практика, сбой экспорта в XLS часто носит локальный характер и устраняется обслуживанием самой платформы 1С. Выполним следующие действия:
%LOCALAPPDATA%\1C\1cv8 и %APPDATA%\1C\1cv8.%TEMP%.Формат XLS является устаревшим бинарным стандартом с ограничением в 65 536 строк. Проанализируем переход на формат OpenXML. Для этого изменим тип файла при вызове метода Записать в коде 1С:
ТабДок.Записать(Файл, ТипФайлаТабличногоДокумента.XLSX);
Формат XLSX поддерживает более 1 миллиона строк, работает значительно стабильнее при экспорте больших объемов данных и не обрывает запись при наличии спецсимволов.
Если требуется выгрузить документ без привязки к бинарному конвертеру XLS, рассмотрим другие доступные типы табличных документов:
ТипФайлаТабличногоДокумента.HTML5 или HTML4 позволяет получить файл, который корректно открывается в Microsoft Excel без потери данных.ТипФайлаТабличногоДокумента.MXL гарантирует полное сохранение структуры и оформления документа внутри системы 1С.ТипФайлаТабличногоДокумента.PDF.Таким образом, при возникновении внезапной обрезки строк в файлах XLS первичным шагом является очистка кэша или переустановка платформы 1С, а наиболее надежным техническим решением — перенос выгрузки на современный формат XLSX.