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

Справочники и Данные · 12 мин

Как выгрузить DBF-файл из 1С

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

DBF — один из старейших форматов обмена данными, который до сих пор используется для интеграции 1С с банковскими системами, сторонними учётными программами, кассовым оборудованием и государственными порталами. Несмотря на возраст формата, задача «выгрузить из 1С файл DBF» возникает регулярно: например, банк принимает реестр платежей только в DBF, или кассовое ПО загружает товары именно из этого файла.

Существует несколько рабочих способов выгрузки: штатные обработки типовых конфигураций, универсальные обработки обмена, программная выгрузка средствами встроенного языка 1С (объект XBase) и сторонние конвертеры. Выбор зависит от того, какие данные нужны (справочник, табличная часть документа, регистр), как часто выполняется выгрузка и есть ли доступ к конфигуратору.

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

Что нужно знать о формате DBF перед выгрузкой

DBF (DataBase File) — табличный формат, в котором данные хранятся в виде фиксированной структуры: шапка с описанием полей и набор записей. Каждое поле имеет имя (до 10 символов в классическом dBase III), тип (символьный, числовой, дата, логический) и фиксированную длину. Это принципиальное отличие от CSV или Excel: строка длиннее заявленного размера поля будет обрезана без предупреждения.

Ключевые ограничения формата, которые влияют на выгрузку из 1С:

  • имена полей — до 10 символов, латиницей, без пробелов;
  • символьные поля — максимум 254 символа, длинные наименования и многострочные реквизиты нужно сокращать или разбивать;
  • числовые поля имеют фиксированную точность — количество знаков после запятой задаётся при создании структуры;
  • даты хранятся в формате ГГГГММДД, время отдельно не поддерживается в классическом варианте;
  • кодировка текста — чаще всего OEM (CP866) или ANSI (Windows-1251), неверный выбор даёт «кракозябры» в принимающей системе.

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

Способ 1. Штатные обработки типовых конфигураций

Во многих типовых решениях 1С выгрузка в DBF уже встроена. Например, в конфигурациях для зарплаты есть выгрузка реестров в банк, в торговых решениях — выгрузка товаров на кассы и весы, в бухгалтерских — обмен с клиент-банком. Искать такие функции стоит в разделах «Сервис», «Обмен данными» или в меню конкретного документа (кнопка «Выгрузить»).

Типовой порядок действий обычно такой: открыть обработку обмена, указать период и отбор данных, задать каталог и имя файла, нажать «Выгрузить». Система сама формирует структуру DBF под требования конкретного приёмника (например, формат зарплатного проекта банка). Проверьте результат, открыв файл в Excel, LibreOffice Calc или специальном просмотрщике DBF.

Выгрузка через типовую обработку
  1. 1
    Откройте раздел обмена данными или сервисные обработки конфигурации
  2. 2
    Найдите обработку выгрузки в DBF (обмен с банком, кассой, внешней системой)
  3. 3
    Задайте отбор: период, организацию, список документов или элементов
  4. 4
    Укажите путь и имя файла, при необходимости — кодировку
  5. 5
    Нажмите «Выгрузить» и дождитесь сообщения о завершении
  6. 6
    Откройте созданный файл и проверьте содержимое и кодировку

Способ 2. Универсальные обработки выгрузки

Если штатной выгрузки нет, а дорабатывать конфигурацию не хочется, используются универсальные внешние обработки (файлы с расширением .epf для управляемого приложения или .ert для 7.7). Такие обработки позволяют выбрать любой справочник, документ или регистр, отметить нужные реквизиты и сохранить их в DBF. Их можно найти в составе поставки некоторых конфигураций или на дисках информационно-технологического сопровождения.

Общий принцип работы: обработка открывается через меню «Файл — Открыть», в ней выбирается тип объекта метаданных, конкретный объект, состав выгружаемых полей. Далее задаётся соответствие реквизитов 1С и полей DBF (имена полей придётся сократить до 10 символов), после чего выполняется выгрузка. Некоторые обработки позволяют сохранить настройки для повторного использования.

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

Способ 3. Программная выгрузка через объект XBase

Самый гибкий вариант — написать выгрузку на встроенном языке 1С. Объект XBase позволяет создать файл с произвольной структурой и заполнить его данными из любых источников: справочников, документов, запросов. Этот способ используется, когда требуется регулярная выгрузка по расписанию, нестандартная структура или предварительная обработка данных.

Общая логика кода: создать объект XBase, описать поля (имя, тип, длина, точность), вызвать метод создания файла, пройти циклом по выборке данных и добавить записи, затем закрыть файл. Ниже пример выгрузки справочника номенклатуры с кодом, наименованием и ценой.

Файл = Новый XBase;

Файл.Кодировка = КодировкаXBase.OEM; // CP866 для старых приёмников

Файл.Поля.Добавить("CODE", "S", 12);

Файл.Поля.Добавить("NAME", "S", 100);

Файл.Поля.Добавить("PRICE", "N", 15, 2);

Файл.СоздатьФайл("C:\Обмен\goods.dbf");

Выборка = Справочники.Номенклатура.Выбрать();

Пока Выборка.Следующий() Цикл

Если Выборка.ЭтоГруппа Тогда

Продолжить;

КонецЕсли;

Файл.Добавить();

Файл.CODE = СокрЛП(Выборка.Код);

Файл.NAME = Лев(СокрЛП(Выборка.Наименование), 100);

Файл.PRICE = Выборка.Цена;

КонецЦикла;

Файл.ЗакрытьФайл();

Обратите внимание на функцию Лев() для наименования: она гарантирует, что строка не превысит длину поля. Типы полей задаются буквами: S — символьное, N — числовое, D — дата, L — логическое. Для дат значение присваивается как дата 1С, платформа сама преобразует её в формат DBF.

Кодировка и типичные проблемы с кириллицей

Самая частая жалоба после выгрузки DBF — «в файле иероглифы вместо русских букв». Причина в несовпадении кодировки записи и кодировки, в которой файл открывает принимающая программа. В 1С кодировка задаётся свойством Кодировка объекта XBase: значение OEM соответствует CP866 (DOS), ANSI — Windows-1251.

Как выбрать: старые DOS-ориентированные приёмники, многие кассовые системы и банковские форматы ожидают OEM (866). Современные Windows-программы и Excel обычно корректно читают ANSI (1251). Если спецификация неизвестна, выгрузите тестовый файл в обеих кодировках и проверьте загрузку на стороне приёмника.

Маршрут решения

Как выбрать действие

Принимающая система показывает кракозябры вместо русского текстаСмените кодировку XBase с ANSI на OEM или наоборот и выгрузите заново
Длинные наименования обрезаны в файлеУвеличьте длину символьного поля в структуре (до 254) или сократите строку функцией Лев()
Числа теряют знаки после запятойПроверьте точность числового поля — третий параметр при добавлении поля N
Файл не открывается вообще или приёмник ругается на структуруСверьте имена (до 10 символов), порядок и типы полей со спецификацией приёмника

Проверка результата и контроль качества файла

После выгрузки файл обязательно нужно проверить до передачи в принимающую систему. Минимальный набор проверок: файл существует и имеет ненулевой размер; открывается просмотрщиком без ошибок; количество записей совпадает с количеством выгружаемых объектов; русский текст читается; числа и даты в ожидаемом формате.

Для просмотра подойдут LibreOffice Calc (при открытии позволяет выбрать кодировку), Excel (через открытие с указанием кодовой страницы) или специализированные просмотрщики DBF. Полезно также программно прочитать файл обратно через XBase и посчитать записи — это быстрый способ убедиться, что структура не повреждена.

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

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

Количество записей в DBF
Норма

Совпадает с числом выгруженных объектов в 1С

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

Записей меньше — часть данных отсеялась фильтром или вызвала ошибку

Кириллица в символьных полях
Норма

Текст читается в просмотрщике при выбранной кодировке

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

Иероглифы при любой кодировке просмотра — файл записан не в той кодировке

Числовые значения
Норма

Суммы и количества совпадают с данными 1С, копейки на месте

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

Округление до целых или сдвиг разрядов — неверная точность поля

Даты
Норма

Даты отображаются корректно, пустых дат нет или они допустимы приёмником

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

Даты вида 01.01.0001 или пустые значения там, где приёмник требует заполнение

Типичные ошибки и альтернативные форматы

Опыт показывает, что большинство проблем при выгрузке DBF связано не с самой выгрузкой, а с невнимательностью к ограничениям формата и требованиям приёмника. Разберите типичные ошибки до того, как они проявятся на боевом обмене.

Типичные ошибки
01
Имена полей длиннее 10 символов или с кириллицей — приёмник не распознаёт структуру или обрезает имена до неузнаваемости
02
Не задана длина символьного поля под реальные данные — наименования обрезаются, теряются артикулы и адреса
03
Выгрузка в ANSI для DOS-приёмника — русский текст превращается в кракозябры
04
Не отфильтрованы группы справочника или помеченные на удаление элементы — в файл попадает мусор
05
Файл не закрыт методом ЗакрытьФайл() — данные не сброшены на диск, приёмник читает пустой или битый файл
06
Выгрузка в каталог, к которому нет прав записи у пользователя регламентного задания — файл молча не создаётся

Если требования приёмника не жёсткие, стоит обсудить альтернативы: CSV и XML проще в отладке, не имеют ограничений на длину полей и лучше поддерживаются современными системами. DBF имеет смысл только когда он прямо требуется спецификацией обмена или принимающее ПО ничего другого не понимает.

Итог

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

Выгрузить DBF из 1С можно типовой обработкой, универсальной внешней обработкой или кодом через объект XBase. Критичны три вещи: правильная кодировка (OEM или ANSI по требованию приёмника), длина и типы полей в соответствии со спецификацией, обязательная проверка файла просмотрщиком до передачи. Тестируйте новую выгрузку на копии базы и небольшом объёме данных.

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

Можно ли выгрузить DBF из 1С без программирования?

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

Почему в выгруженном файле иероглифы вместо русских букв?

Файл записан в одной кодировке, а открывается в другой. В объекте XBase за кодировку отвечает свойство «Кодировка»: значение OEM — это CP866 (DOS), ANSI — Windows-1251. Попробуйте сменить кодировку и выгрузить заново. Если файл открываете в Excel для проверки, импортируйте его через мастер с ручным выбором кодовой страницы.

Как выгрузить в DBF только часть данных, например документы за период?

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

Длинное наименование товара обрезалось в файле. Что делать?

У символьного поля DBF фиксированная длина, максимум 254 символа. Увеличьте длину поля в структуре до разумного предела. Если приёмник ограничивает длину (например, 40 символов в кассовом формате), сокращайте строку функцией Лев() и согласуйте сокращение с принимающей стороной, чтобы не потерять смысловую часть названия.

Можно ли настроить автоматическую выгрузку DBF по расписанию?

Да. Оформите код выгрузки как процедуру в общем модуле или внешней обработке и запускайте её регламентным заданием (в файловой базе — через планировщик Windows с запуском 1С в пакетном режиме). Убедитесь, что у пользователя, под которым выполняется задание, есть права на запись в целевой каталог и на чтение выгружаемых данных.

Чем открыть DBF-файл для проверки без 1С?

Подойдут LibreOffice Calc (при открытии предложит выбрать кодировку), Excel через импорт данных с указанием кодовой страницы, а также бесплатные просмотрщики DBF. Для быстрой проверки структуры и количества записей можно прочитать файл обратно тем же объектом XBase в тестовой обработке.