Данные из 1С 8.3 в CSV-файл: от отчёта до ночной выгрузки по расписанию

· 10 мин

Содержание

Чтобы выгрузить данные из 1С в CSV, сформируйте отчёт или выведите список (Ещё → Вывести список), сохраните табличный документ в формате Excel (.xlsx), а затем пересохраните его как CSV в Excel или LibreOffice, выбрав кодировку и разделитель. Прямого пункта «CSV» в окне сохранения табличного документа 1С нет. Если CSV нужен регулярно или в строгом формате для другой системы, его пишут кодом через объект ЗаписьТекста: так вы сами задаёте кодировку, разделитель и формат чисел.

Сложности почти всегда в мелочах. Excel открывает файл «одной колонкой», кириллица превращается в Привет, коды 00045 теряют нули, а суммы с запятой принимающая система читает как текст. Ниже разобрано, как настроить каждую из этих вещей заранее.

Подготовка выгрузки: откуда брать данные и что спросить у получателя

Перед выгрузкой определите источник. От него зависит способ.

  • 📊 Отчёт (оборотно-сальдовая ведомость, остатки товаров, анализ продаж) — когда нужны итоги и группировки.
  • 📋 Список справочника или журнала документов — когда нужны строки «как есть»: номенклатура, контрагенты, перечень счетов.
  • 🧩 Запрос к базе — когда нужны поля, которых нет ни в одном отчёте, или выгрузка повторяется каждый день.

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

  1. Какая кодировка: UTF-8 (с BOM или без) или Windows-1251?
  2. Какой разделитель полей: точка с запятой, запятая или табуляция?
  3. Нужна ли строка заголовков и как должны называться колонки?
  4. Как писать числа и даты: 1234,50 или 1234.50, 31.12.2025 или 2025-12-31?

Попросите у получателя образец файла на 3–5 строк, который его система точно принимает. Сверяться с образцом быстрее, чем угадывать по описанию.

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

Выгрузка в CSV из отчёта и списка стандартными средствами

Этот способ не требует программирования и подходит для разовых задач в любой типовой конфигурации на платформе 8.3: Бухгалтерии, ЗУП, Управлении торговлей.

Из отчёта

  1. Откройте отчёт и задайте период и отборы.
  2. Нажмите Сформировать.
  3. Сохраните результат: кнопка с изображением дискеты в командной панели отчёта или главное меню Файл → Сохранить как.
  4. В поле типа файла выберите Лист Microsoft Excel 2007 (*.xlsx).
  5. Откройте файл в Excel и сохраните как CSV (подробности в следующем разделе).

Отчёт сохраняется так, как выглядит на экране: с шапкой, объединёнными ячейками, промежуточными итогами. Для CSV это мешает. Перед сохранением откройте настройки отчёта и уберите лишнее: заголовок, отборы в шапке, группировки, если нужны «плоские» строки.

Из списка справочника или документов

  1. Откройте нужный список, например Справочники → Товары и услуги → Номенклатура в Бухгалтерии 3.0.
  2. Установите отбор, если нужна часть строк.
  3. Нажмите Ещё → Вывести список.
  4. Отметьте колонки, которые попадут в выгрузку. При необходимости включите флажок «Только выделенные».
  5. Нажмите ОК: откроется табличный документ.
  6. Сохраните его в .xlsx, как в шагах для отчёта.

Вывести список выводит только те колонки, которые есть в форме списка. Если нужного реквизита нет, сначала добавьте его в список через Ещё → Изменить форму, затем повторите вывод.

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

Кодировка и разделитель: какие настройки выбрать при сохранении

Финальное сохранение в CSV делается в табличном редакторе. Какой вариант выбрать, зависит от ответа получателя.

РедакторВариант сохраненияКодировкаРазделитель
Excel (русская Windows)CSV (разделители - запятые)Windows-1251точка с запятой — берётся из региональных настроек Windows
Excel 365 / 2019CSV UTF-8 (разделители - запятые)UTF-8 с BOMтоже из региональных настроек
LibreOffice CalcТекст CSV + флажок «Изменение настроек фильтра»выбирается в диалогевыбирается в диалоге

Название варианта в Excel сбивает с толку: «разделители — запятые», а в файле стоит точка с запятой. Excel берёт разделитель списка из настроек Windows, а для русской локали это ;. Если получатель ждёт именно запятую, проще всего сохранить файл через LibreOffice: там разделитель и кодировка задаются явно, а кавычки вокруг текстовых полей включаются отдельным флажком.

Как выбирать кодировку:

  • 🌐 UTF-8 — для сайтов, маркетплейсов, сервисов рассылок, любых веб-систем. Хранит любые символы.
  • 🪟 Windows-1251 — для старых программ под Windows и для файлов, которые будут открывать двойным щелчком в Excel без мастера импорта.
  • 🔖 BOM (метка порядка байтов в начале файла) помогает Excel распознать UTF-8, но некоторые парсеры принимают её за часть названия первой колонки. Если первое поле у получателя «не находится», дело часто в BOM.

Быстрая проверка кодировки: откройте CSV в Блокноте Windows. Справа в строке состояния видно, в какой кодировке он прочитан (UTF-8, UTF-8 с BOM или ANSI).

Универсальный обмен данными в формате XML: когда он нужен вместо CSV

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

ЗадачаЧто выбрать
Перенести справочники и документы из одной базы 1С в другуюуниверсальный обмен XML с правилами
Отдать таблицу на сайт, в банк, в аналитику, в ExcelCSV
Передать связанные объекты (документ + контрагент + номенклатура)XML
Получить плоский список полейCSV

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

Если получатель по какой-то причине принимает только CSV, а у вас уже налажена XML-выгрузка, преобразуйте файл внешним скриптом (Python, PowerShell). Делать CSV через правила обмена неудобно: обработка рассчитана на XML-структуру с объектами и ссылками.

Выгрузка в CSV кодом: кавычки, спецсимволы, числа и даты

Когда формат строгий, а выгрузка регулярная, надёжнее написать её во внешней обработке или расширении. Код ниже выгружает номенклатуру из Бухгалтерии 3.0. Он работает на платформе 8.3.6 и выше: функции СтрНайти и СтрСоединить появились именно там.

Процедура ВыгрузитьНоменклатуруВCSV(ИмяФайла) Экспорт

	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	Номенклатура.Код КАК Код,
	|	Номенклатура.Наименование КАК Наименование,
	|	Номенклатура.Артикул КАК Артикул
	|ИЗ
	|	Справочник.Номенклатура КАК Номенклатура
	|ГДЕ
	|	НЕ Номенклатура.ЭтоГруппа
	|	И НЕ Номенклатура.ПометкаУдаления";
	Выборка = Запрос.Выполнить().Выбрать();

	Разделитель = ";";
	Запись = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.UTF8);
	Запись.ЗаписатьСтроку("Код;Наименование;Артикул");

	Пока Выборка.Следующий() Цикл
		Поля = Новый Массив;
		Поля.Добавить(ПолеCSV(Выборка.Код, Разделитель));
		Поля.Добавить(ПолеCSV(Выборка.Наименование, Разделитель));
		Поля.Добавить(ПолеCSV(Выборка.Артикул, Разделитель));
		Запись.ЗаписатьСтроку(СтрСоединить(Поля, Разделитель));
	КонецЦикла;

	Запись.Закрыть();

КонецПроцедуры

Функция ПолеCSV(Значение, Разделитель)

	Если ТипЗнч(Значение) = Тип("Число") Тогда
		Возврат Формат(Значение, "ЧРД=,; ЧГ=0; ЧН=0");
	ИначеЕсли ТипЗнч(Значение) = Тип("Дата") Тогда
		Возврат Формат(Значение, "ДФ=dd.MM.yyyy");
	КонецЕсли;

	Текст = Строка(Значение);
	Если СтрНайти(Текст, Разделитель) > 0
		Или СтрНайти(Текст, """") > 0
		Или СтрНайти(Текст, Символы.ПС) > 0
		Или СтрНайти(Текст, Символы.ВК) > 0 Тогда
		Текст = """" + СтрЗаменить(Текст, """", """""") + """";
	КонецЕсли;

	Возврат Текст;

КонецФункции

Что делает функция ПолеCSV:

  • 🔢 Числа — ЧГ=0 убирает пробелы между разрядами (иначе 1 234,50 разобьётся на части), ЧН=0 выводит ноль вместо пустой строки. Если получателю нужна точка, замените ЧРД=, на ЧРД=..
  • 📅 Даты — формат задан явно, а не через Строка(Дата), которая добавит время 0:00:00. Для ISO-формата используйте ДФ=yyyy-MM-dd.
  • ✂️ Спецсимволы — поле с разделителем, кавычкой или переводом строки берётся в двойные кавычки, а кавычки внутри удваиваются. Наименование ООО "Ромашка"; склад превратится в "ООО ""Ромашка""; склад". Это правило описано в RFC 4180, его понимают Excel, LibreOffice и большинство парсеров.

КодировкаТекста.UTF8 записывает файл с BOM. Для Windows-1251 укажите КодировкаТекста.ANSI (на русской Windows это и есть 1251) или строку "windows-1251". В Windows-1251 нет части символов: знак евро обычно есть, а эмодзи и некоторые типографские знаки из наименований потеряются.

Если процедура выполняется на сервере, файл появится на диске сервера 1С, а не у пользователя. Для выгрузки «себе на компьютер» сформируйте файл во временном каталоге сервера, поместите его во временное хранилище и получите на клиенте.

Список полей и названия колонок удобно держать в одном месте. Перед написанием кода сведите их в таблицу соответствия:

Сопоставление полей
Код→Код (строка, нули сохраняются)
Наименование→Наименование
Артикул→Артикул (может быть пустым)
Цена из регистра цен→Цена (число, запятая)

Автоматическая выгрузка CSV по расписанию

Для ежедневной выгрузки есть два рабочих пути.

Регламентное задание в расширении

Если у вас клиент-серверная база , добавьте в расширение конфигурации регламентное задание и вызовите из его процедуры код выгрузки. Расписание задаётся в свойствах задания. Файл пишется на диск сервера, поэтому путь должен быть доступен учётной записи, под которой работает служба сервера 1С. Сетевые папки указывайте в формате \\server\share\, а не через подключённую букву диска.

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

Запуск 1С из планировщика Windows

Внешнюю обработку можно открыть при запуске клиента параметром /Execute. В её форме, в обработчике ПриОткрытии, вызовите выгрузку, а затем ЗавершитьРаботуСистемы(Ложь), чтобы сеанс закрылся сам. Пример bat-файла для клиент-серверной базы:

@echo off
"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" ENTERPRISE ^
  /S"srv1c\buh" /N"Выгрузка" /P"пароль" ^
  /Execute"D:\scripts\export_csv.epf" /DisableStartupMessages

Номер платформы в пути замените на свой. Для файловой базы вместо /S"сервер\база" укажите /F"D:\Bases\Buh". Задание в планировщике запускайте от пользователя Windows, у которого есть доступ к каталогу назначения.

  • 👤 Заведите в 1С отдельного пользователя с правами только на чтение нужных данных, чтобы пароль из bat-файла не давал полного доступа.
  • 🛡️ При открытии внешней обработки платформа может показать предупреждение о защите от опасных действий. Для служебного пользователя эту защиту отключают в его свойствах в списке пользователей, иначе запуск остановится на вопросе.
  • 🔐 Каждый такой запуск занимает лицензию на время работы. Ставьте выгрузку на время, когда свободные лицензии точно есть.

Перекодировка готового файла скриптом

Если 1С уже выдаёт CSV в UTF-8, а получателю нужна Windows-1251, перекодируйте файл после выгрузки:

with open("export.csv", encoding="utf-8-sig") as src, \
     open("export_1251.csv", "w", encoding="cp1251", errors="replace", newline="") as dst:
    dst.write(src.read())

utf-8-sig отбрасывает BOM, а errors="replace" заменяет на ? символы, которых нет в 1251, вместо того чтобы прерывать скрипт.

Почему CSV из 1С открывается неправильно и как это исправить

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

Ещё одна частая ловушка — пересохранение. Пользователь открывает присланный CSV двойным щелчком, правит одну ячейку и нажимает «Сохранить». Excel молча меняет кодировку, разделитель и формат дат на свои. Если файл предназначен для загрузки в другую систему, правьте его в текстовом редакторе или в LibreOffice с явными настройками.

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

Можно ли сохранить табличный документ 1С сразу в CSV?
Нет, такого типа в окне сохранения нет. Сохраните в .xlsx и пересохраните в Excel или LibreOffice либо пишите CSV кодом через ЗаписьТекста.
Чем CSV отличается от TXT, который предлагает 1С?
Текстовое сохранение табличного документа рассчитано на чтение человеком, без правил экранирования полей. Для загрузки в другие программы нужен CSV с явным разделителем и кавычками.
Сколько строк можно выгрузить в CSV?
У самого CSV ограничений нет. Ограничение есть у Excel: 1 048 576 строк на лист. Большой файл открывайте мастером импорта или сразу загружайте в принимающую систему.
Как выгрузить CSV в 1С из облака (1С:Фреш, аренда)?
Через отчёт или список так же, как в локальной базе: файл .xlsx сохранится на ваш компьютер. Внешние обработки в облаке обычно разрешены только после проверки провайдером.
Почему у получателя первая колонка называется странно?
Скорее всего, его парсер не ожидает BOM и считает эти байты частью названия. Сохраните файл в UTF-8 без BOM или в Windows-1251.