К статье
Практический материал

Администрирование · 12 мин

Как сохранить большой файл из 1С

Как сохранить большой файл из 1С: выгрузка данных, отчётов и табличных документов, разбивка на части, решение ошибок нехватки памяти и таймаутов.

Большой файл из 1С — это чаще всего объёмная выгрузка данных, отчёт на сотни тысяч строк, табличный документ или файл обмена (XML, CSV, Excel). Стандартное сохранение через «Файл → Сохранить как» на таких объёмах нередко заканчивается ошибкой нехватки памяти, зависанием клиента или обрывом по таймауту. Причина почти всегда одна: весь объём данных сначала собирается в оперативной памяти, а уже потом записывается на диск.

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

Ниже разобраны рабочие сценарии для типовых конфигураций (Бухгалтерия, Управление торговлей, ERP, ЗУП) на платформе 8.3, а также способы диагностики, почему сохранение «падает», и как проверить, что файл записался полностью.

Почему большой файл не сохраняется: типичные причины

Прежде чем менять способ выгрузки, полезно понять, на каком этапе происходит сбой. При сохранении табличного документа 1С сначала формирует его целиком в памяти, затем конвертирует в выбранный формат (XLSX, MXL, PDF) и только после этого пишет на диск. Каждый из этих этапов имеет свой лимит.

Самые частые причины сбоев:

  • Нехватка оперативной памяти. 32-разрядный клиент 1С ограничен примерно 2 ГБ адресного пространства на процесс. Отчёт на несколько сотен тысяч строк в формате Excel легко упирается в этот предел.
  • Ограничения формата. Лист Excel имеет жёсткий предел около 1 048 576 строк. Если строк больше — сохранение в XLSX невозможно в принципе, независимо от мощности компьютера.
  • Таймауты клиент-серверного взаимодействия. В файловом варианте по сети или при медленном канале длительная операция обрывается до завершения записи.
  • Нехватка места на диске или в temp-каталоге. Промежуточные файлы при конвертации могут занимать больше, чем итоговый файл.
  • Антивирус. Проверка большого файла «на лету» замедляет запись и иногда блокирует её.
Ошибка «Недостаточно памяти»Процесс уперся в лимит ОЗУ

Проверьте разрядность клиента 1С и объём свободной памяти в диспетчере задач

1С зависает надолго без ошибкиИдёт формирование или конвертация

Посмотрите загрузку CPU и диска; если процесс работает — дождитесь, не прерывайте

Файл создаётся, но не открываетсяЗапись оборвалась

Сравните размер файла с ожидаемым и проверьте свободное место на диске

Ошибка только при сохранении в ExcelЛимит строк листа

Прикиньте число строк: больше миллиона — нужен CSV или разбивка

Способ 1. Выгрузить отчёт или табличный документ порциями

Если нужно сохранить большой отчёт (оборотно-сальдовая ведомость, карточка счёта, анализ продаж за длительный период), самый простой и надёжный приём — сформировать его не целиком, а по частям. Почти все типовые отчёты позволяют задать период и отборы.

Порядок действий: сформируйте отчёт за первый месяц или квартал, сохраните его, затем смените период и повторите. Для отчётов с отборами по организациям, складам или контрагентам делите выгрузку по этим измерениям — так части получаются логически целостными, и их удобно склеивать в Excel или обрабатывать по отдельности.

При сохранении каждой части выбирайте формат осознанно. MXL (формат табличного документа 1С) сохраняется быстрее всего и не теряет данные, но открывается только в 1С. XLSX удобен для передачи, но конвертируется дольше всего. PDF подходит, если файл нужен только для просмотра и печати.

Порядок действий при порционной выгрузке отчёта
  1. 1
    Откройте отчёт и задайте узкий период (месяц или квартал)
  2. 2
    Сформируйте отчёт и дождитесь полного построения
  3. 3
    Сохраните через «Файл → Сохранить как» в MXL или XLSX
  4. 4
    Повторите для следующего периода, давая файлам имена с датами
  5. 5
    Проверьте, что каждый файл открывается и содержит ожидаемое число строк

Способ 2. Выгрузка в CSV вместо Excel

CSV — самый «дёшевый» по ресурсам формат для больших таблиц: это простой текст, который пишется потоково и не требует сборки всей структуры в памяти. Если цель — передать данные в другую систему, загрузить в базу или обработать скриптом, CSV почти всегда предпочтительнее XLSX.

В типовых конфигурациях прямой кнопки «Сохранить в CSV» у табличного документа может не быть, но есть обходные пути. Во-первых, многие обработки и отчёты на СКД поддерживают вывод в текстовый формат. Во-вторых, табличный документ можно сохранить в формате «Текстовый документ с разделителями» — в диалоге сохранения выберите тип файла TXT с разделителем-точкой с запятой. В-третьих, для списков (справочников, документов) работает стандартная команда «Вывести список» с последующим сохранением.

Учтите особенности CSV: в одном файле нет нескольких листов, форматирование и формулы теряются, а кодировку при открытии в Excel иногда приходится выбирать вручную (обычно UTF-8 или Windows-1251). Если получатель файла работает в Excel, предупредите его, что открывать CSV лучше через «Данные → Из текста», чтобы числа и даты не исказились.

Сравнение форматов для большой выгрузки

XLSX

Удобен получателю, но медленно конвертируется и ограничен ~1 млн строк на лист

CSV / TXT с разделителями

Быстрый и компактный, без лимита строк, но без форматирования и листов

MXL

Сохраняется быстро и без потерь, но открывается только в 1С

PDF

Только для просмотра и печати; большие документы конвертируются долго

Способ 3. Штатные механизмы выгрузки данных

Если задача — выгрузить не отчёт, а сами данные (справочники, документы, движения), не сохраняйте их через табличные документы вовсе. В типовых конфигурациях есть специальные инструменты, которые пишут файл потоково и справляются с миллионами записей.

Основные варианты: «Выгрузка и загрузка данных XML» (обработка с диска ИТС, есть и в составе многих конфигураций), универсальный обмен данными в формате XML, встроенные обмены (например, выгрузка в банк, в ЕГАИС, в форматы ФНС). Для выгрузки всей информационной базы используйте «Администрирование → Выгрузить информационную базу» — создаётся файл .dt.

Файл .dt — это полный слепок базы, и он тоже бывает очень большим: десятки гигабайт для крупных баз. Выгрузку .dt делайте на диск с гарантированным запасом места (файл может быть сопоставим с размером базы), в период минимальной нагрузки и желательно в монопольном режиме. Для клиент-серверных баз вместо .dt часто правильнее делать резервную копию средствами СУБД (MS SQL, PostgreSQL) — это быстрее и надёжнее.

Способ 4. Сохранение на стороне сервера и 64-разрядный клиент

Если выгрузка регулярно упирается в память, проверьте разрядность клиента 1С. 32-разрядный тонкий и толстый клиент ограничены примерно 2 ГБ памяти на процесс — для больших отчётов этого мало. Установите 64-разрядную версию клиента платформы: предел памяти снимается, и отчёты, которые раньше «падали», формируются и сохраняются.

В клиент-серверном варианте тяжёлую операцию можно выполнить непосредственно на сервере: запустить сеанс на серверном компьютере или настроить регламентное задание, которое формирует файл и кладёт его в сетевую папку. Так снимается проблема слабого рабочего места и нестабильного канала связи.

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

Способ 5. Программная выгрузка с потоковой записью

Когда штатных средств не хватает, задачу решает небольшая внешняя обработка. Ключевой принцип — не собирать весь результат в памяти, а писать файл построчно: выбрать запросом данные порциями и сразу выводить их в текстовый файл. Такой подход выдерживает выгрузки практически любого объёма, потому что расход памяти не зависит от размера результата.

Типовой скелет обработки: запрос с отбором по периоду, обход выборки, формирование строки CSV с экранированием разделителей и кавычек, запись через объект «ЗаписьТекста». Для очень больших выборок запрос выполняют с обходом «по пачкам» или с выгрузкой в временную таблицу, чтобы не держать открытой гигантскую выборку.

Пример фрагмента кода для потоковой записи CSV:

bsl
Запись = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.UTF8);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
    Строка = Строка(Выборка.Номенклатура) + ";" + Формат(Выборка.Количество, "ЧГ=");
    Запись.ЗаписатьСтроку(Строка);
КонецЦикла;
Запись.Закрыть();

Если вы не разработчик, такую обработку лучше заказать специалисту по 1С — это стандартная задача, которая решается быстро. Самостоятельно экспериментировать с кодом на рабочей базе не стоит: обработка должна выполняться в безопасном режиме и только на чтение данных.

Как проверить, что файл сохранился корректно

Большой файл, который «вроде сохранился», нужно проверить до удаления данных из 1С или передачи контрагенту. Минимальная проверка — открыть файл и убедиться, что он читается, содержит и начало, и конец данных, а число строк соответствует ожиданиям.

Контрольные точки

Как проверить результат

Размер файла
Норма

Больше нуля и сопоставим с объёмом выгрузки

Тревожный признак

0 байт или подозрительно маленький размер

Открытие файла
Норма

Файл открывается без ошибок, видны первые и последние строки

Тревожный признак

Ошибка открытия, обрезанный конец данных

Количество строк
Норма

Совпадает с контрольным числом из отчёта или запроса

Тревожный признак

Строк заметно меньше, чем ожидалось

Итоговые суммы
Норма

Суммы в файле сходятся с отчётом в 1С

Тревожный признак

Расхождения в итогах — выгрузка неполная

Для CSV полезно сверить количество строк с контрольным числом: например, сформировать в 1С простой отчёт по количеству записей за тот же период. Для денежных выгрузок сверяйте итоговые суммы — это самый чувствительный индикатор потери данных.

Типичные ошибки
01
Сохранять миллион строк в XLSX — упирается в лимит листа, часть данных теряется без предупреждения
02
Прерывать «зависшую» 1С через диспетчер задач — файл остаётся недописанным, а операцию приходится начинать заново
03
Сохранять напрямую в сетевую папку по медленному каналу — обрыв соединения портит весь файл
04
Выгружать .dt без проверки свободного места — процесс обрывается на 90%, время потрачено впустую
05
Не проверять итоги после выгрузки — неполные данные уходят контрагенту или в налоговую

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

Что делать, если при сохранении появляется ошибка «Недостаточно памяти»?

Проверьте разрядность клиента 1С — на 32-разрядном это типичная ситуация. Установите 64-разрядный клиент, закройте лишние программы, уменьшите объём выгрузки (короче период, уже отборы) или перейдите на CSV вместо XLSX. Если не помогает — выполните операцию на более мощном компьютере или сервере.

Можно ли сохранить из 1С таблицу больше миллиона строк?

В XLSX — нет, это ограничение самого формата Excel. Используйте CSV/TXT с разделителями или разбейте выгрузку на несколько файлов по периодам либо отборам. Для передачи в другие системы CSV обычно даже удобнее.

Как выгрузить всю базу 1С в один файл?

Через «Администрирование → Выгрузить информационную базу» создаётся файл .dt. Убедитесь, что на диске достаточно места, выполняйте выгрузку в период низкой нагрузки и не прерывайте процесс. Для клиент-серверных баз надёжнее резервная копия средствами СУБД.

Файл сохранился, но Excel открывает его с «кракозябрами». Что не так?

Проблема в кодировке CSV. Открывайте файл в Excel через «Данные → Получить данные → Из текстового/CSV-файла» и выберите кодировку UTF-8 или 1251. Либо сохраняйте из 1С сразу в XLSX, если объём позволяет.

Почему сохранение в PDF большого отчёта занимает очень много времени?

Конвертация табличного документа в PDF — ресурсоёмкая операция, особенно при тысячах страниц. Если файл нужен для передачи данных, а не для печати, используйте MXL или CSV. Если PDF обязателен — делите отчёт на части по периодам.

Безопасно ли делать большую выгрузку в рабочее время?

Выгрузка на чтение не меняет данные, но создаёт нагрузку на сервер и может замедлить работу пользователей. Тяжёлые операции (выгрузка .dt, отчёты за год) лучше планировать на нерабочие часы. Перед регламентными операциями вроде закрытия месяца большие выгрузки запускать не стоит.

Итог

Что важно запомнить

Большой файл из 1С сохраняется надёжно, если выбрать правильный инструмент: CSV вместо XLSX для больших таблиц, штатные механизмы выгрузки вместо копирования табличных документов, разбивка по периодам при ограничениях памяти. Проверяйте результат по числу строк и итоговым суммам, а любые сбои базы — повод сначала сделать резервную копию.