Данные из 1С 8.3 в CSV-файл: от отчёта до ночной выгрузки по расписанию
Содержание
Чтобы выгрузить данные из 1С в CSV, сформируйте отчёт или выведите список (Ещё → Вывести список), сохраните табличный документ в формате Excel (.xlsx), а затем пересохраните его как CSV в Excel или LibreOffice, выбрав кодировку и разделитель. Прямого пункта «CSV» в окне сохранения табличного документа 1С нет. Если CSV нужен регулярно или в строгом формате для другой системы, его пишут кодом через объект ЗаписьТекста: так вы сами задаёте кодировку, разделитель и формат чисел.
Сложности почти всегда в мелочах. Excel открывает файл «одной колонкой», кириллица превращается в Привет, коды 00045 теряют нули, а суммы с запятой принимающая система читает как текст. Ниже разобрано, как настроить каждую из этих вещей заранее.
Подготовка выгрузки: откуда брать данные и что спросить у получателя
Перед выгрузкой определите источник. От него зависит способ.
- 📊 Отчёт (оборотно-сальдовая ведомость, остатки товаров, анализ продаж) — когда нужны итоги и группировки.
- 📋 Список справочника или журнала документов — когда нужны строки «как есть»: номенклатура, контрагенты, перечень счетов.
- 🧩 Запрос к базе — когда нужны поля, которых нет ни в одном отчёте, или выгрузка повторяется каждый день.
Второй шаг — выяснить требования того, кто будет читать файл. CSV не стандартизован жёстко, и «просто CSV» у каждой системы свой. Задайте получателю четыре вопроса:
- Какая кодировка: UTF-8 (с BOM или без) или Windows-1251?
- Какой разделитель полей: точка с запятой, запятая или табуляция?
- Нужна ли строка заголовков и как должны называться колонки?
- Как писать числа и даты:
1234,50или1234.50,31.12.2025или2025-12-31?
Попросите у получателя образец файла на 3–5 строк, который его система точно принимает. Сверяться с образцом быстрее, чем угадывать по описанию.
Перед выгрузкой отфильтруйте данные в самой 1С: уберите помеченные на удаление, группы справочника, лишние периоды. Чистить готовый CSV руками дольше и легко ошибиться.
Выгрузка в CSV из отчёта и списка стандартными средствами
Этот способ не требует программирования и подходит для разовых задач в любой типовой конфигурации на платформе 8.3: Бухгалтерии, ЗУП, Управлении торговлей.
Из отчёта
- Откройте отчёт и задайте период и отборы.
- Нажмите
Сформировать. - Сохраните результат: кнопка с изображением дискеты в командной панели отчёта или главное меню
Файл → Сохранить как. - В поле типа файла выберите
Лист Microsoft Excel 2007 (*.xlsx). - Откройте файл в Excel и сохраните как CSV (подробности в следующем разделе).
Отчёт сохраняется так, как выглядит на экране: с шапкой, объединёнными ячейками, промежуточными итогами. Для CSV это мешает. Перед сохранением откройте настройки отчёта и уберите лишнее: заголовок, отборы в шапке, группировки, если нужны «плоские» строки.
Из списка справочника или документов
- Откройте нужный список, например
Справочники → Товары и услуги → Номенклатурав Бухгалтерии 3.0. - Установите отбор, если нужна часть строк.
- Нажмите
Ещё → Вывести список. - Отметьте колонки, которые попадут в выгрузку. При необходимости включите флажок «Только выделенные».
- Нажмите
ОК: откроется табличный документ. - Сохраните его в
.xlsx, как в шагах для отчёта.
Вывести список выводит только те колонки, которые есть в форме списка. Если нужного реквизита нет, сначала добавьте его в список через Ещё → Изменить форму, затем повторите вывод.
Иерархический справочник выводится вместе со строками групп. Перед выгрузкой переключите список в режим без иерархии или удалите строки групп в Excel, иначе получатель примет названия папок за товары.
Кодировка и разделитель: какие настройки выбрать при сохранении
Финальное сохранение в CSV делается в табличном редакторе. Какой вариант выбрать, зависит от ответа получателя.
| Редактор | Вариант сохранения | Кодировка | Разделитель |
|---|---|---|---|
| Excel (русская Windows) | CSV (разделители - запятые) | Windows-1251 | точка с запятой — берётся из региональных настроек Windows |
| Excel 365 / 2019 | CSV 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 с правилами |
| Отдать таблицу на сайт, в банк, в аналитику, в Excel | CSV |
| Передать связанные объекты (документ + контрагент + номенклатура) | 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 с явными настройками.