Справочники и Данные · 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Откройте раздел обмена данными или сервисные обработки конфигурации
- 2Найдите обработку выгрузки в DBF (обмен с банком, кассой, внешней системой)
- 3Задайте отбор: период, организацию, список документов или элементов
- 4Укажите путь и имя файла, при необходимости — кодировку
- 5Нажмите «Выгрузить» и дождитесь сообщения о завершении
- 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). Если спецификация неизвестна, выгрузите тестовый файл в обеих кодировках и проверьте загрузку на стороне приёмника.
Как выбрать действие
Проверка результата и контроль качества файла
После выгрузки файл обязательно нужно проверить до передачи в принимающую систему. Минимальный набор проверок: файл существует и имеет ненулевой размер; открывается просмотрщиком без ошибок; количество записей совпадает с количеством выгружаемых объектов; русский текст читается; числа и даты в ожидаемом формате.
Для просмотра подойдут LibreOffice Calc (при открытии позволяет выбрать кодировку), Excel (через открытие с указанием кодовой страницы) или специализированные просмотрщики DBF. Полезно также программно прочитать файл обратно через XBase и посчитать записи — это быстрый способ убедиться, что структура не повреждена.
Как проверить результат
Совпадает с числом выгруженных объектов в 1С
Записей меньше — часть данных отсеялась фильтром или вызвала ошибку
Текст читается в просмотрщике при выбранной кодировке
Иероглифы при любой кодировке просмотра — файл записан не в той кодировке
Суммы и количества совпадают с данными 1С, копейки на месте
Округление до целых или сдвиг разрядов — неверная точность поля
Даты отображаются корректно, пустых дат нет или они допустимы приёмником
Даты вида 01.01.0001 или пустые значения там, где приёмник требует заполнение
Типичные ошибки и альтернативные форматы
Опыт показывает, что большинство проблем при выгрузке DBF связано не с самой выгрузкой, а с невнимательностью к ограничениям формата и требованиям приёмника. Разберите типичные ошибки до того, как они проявятся на боевом обмене.
Если требования приёмника не жёсткие, стоит обсудить альтернативы: 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 в тестовой обработке.