Выгрузка таблиц и списков из 1С: 6 рабочих способов
Содержание
Чтобы выгрузить таблицу из 1С в Excel, не нужны ни программист, ни дополнительные обработки. В любом списке или отчёте нажмите кнопку Ещё в правом верхнем углу формы, выберите Вывести список…, а затем в появившемся табличном документе — Главное меню → Файл → Сохранить как… и формат Лист Excel 2007 (*.xlsx). Это работает в большинстве типовых конфигураций на платформе 8.3 с интерфейсом «Такси».
Распространённое заблуждение: будто для сохранения в .xlsx на компьютере должен стоять Microsoft Excel. Это не так — платформа пишет файл Excel своим механизмом, офисный пакет для сохранения не требуется. А вот способов выгрузки на самом деле больше, чем один: от копирования пары строк через буфер до регулярной выгрузки по расписанию через COM или OData. Ниже — все варианты по возрастанию сложности, с точными путями и примерами.
Ctrl+C, вставил в Excel.Вывести список → Сохранить как в нужный формат.Копирование через буфер обмена — за десять секунд
Самый быстрый путь, когда нужно перенести несколько строк. Откройте нужный список (например, Справочники → Номенклатура или журнал документов
), выделите строки:
- 🖱️ одну строку — просто щёлкните по ней;
- ⌨️ несколько подряд — щёлкните первую, зажмите
Shiftи щёлкните последнюю; - 🔀 вразнобой — удерживайте
Ctrlи отмечайте строки по одной; - 🗂️ весь список —
Ctrl+A.
Дальше Ctrl+C и Ctrl+V в открытый лист Excel. В буфер попадут колонки, которые сейчас видны на форме, с учётом установленного отбора и сортировки.
Если в Excel вставились не все колонки, которые нужны, сначала выведите их на форму: кнопка Ещё → Изменить форму…, затем отметьте галочками нужные поля. После этого копирование подхватит и их.
Минус способа — переносится только то, что помещается в видимую часть динамического списка, а числовые коды с ведущими нулями Excel может превратить в обычные числа. Для аккуратной выгрузки лучше следующий способ.
Команда «Вывести список» и сохранение в Excel, CSV, ODS
Это штатный механизм выгрузки, встроенный в каждый список и журнал. Он собирает данные в табличный документ, который потом сохраняется в любой табличный формат.
- Откройте список и при необходимости настройте отбор и сортировку — выгрузится именно то, что видно.
- Нажмите
Ещё → Вывести список…. - В диалоге выберите тип —
Табличный документ(для Excel) илиТекстовый документ— и отметьте галочками колонки, которые нужно выгрузить. - Нажмите
ОК. Откроется сформированный табличный документ. - В нём:
Главное меню → Файл → Сохранить как…(кнопка главного меню — значок в левом верхнем углу окна). - В поле
Тип файлавыберите формат и сохраните.
Доступные форматы при сохранении табличного документа:
| Формат | Расширение | Когда выбирать |
|---|---|---|
| Лист Excel 2007 | .xlsx | Основной вариант для Excel, без ограничения на число строк |
| Лист Excel | .xls | Старый Excel или программа, не читающая xlsx |
| Документ ODF | .ods | LibreOffice / OpenOffice |
| Текстовый документ | .txt | Простой текст с разделителями-табуляцией |
| Табличный документ | .mxl | Чтобы снова открыть в 1С |
Для CSV в списке форматов отдельной строки обычно нет. Самый надёжный путь — сохранить как .xlsx, открыть в Excel или LibreOffice и пересохранить в CSV уже оттуда, задав нужный разделитель и кодировку. Так вы точно контролируете, чем разделяются поля.
При открытии CSV в Excel ведущие нули в кодах и длинные номера теряются или превращаются в экспоненту. Перед импортом задайте проблемным столбцам текстовый формат — в мастере импорта Excel, а не после вставки.
Точно так же сохраняется любой отчёт: сформируйте его, затем Сохранить как из того же меню. Отчёт — это тот же табличный документ, поэтому форматы те же.
Выгрузка через внешние обработки: XML и произвольные форматы
Когда нужен не Excel, а структурированный обмен — например, перенести данные в другую базу 1С или в стороннюю систему — применяют внешние обработки (.epf). Это файлы, которые открываются в работающей базе без изменения конфигурации.
Самая известная — универсальная выгрузка/загрузка данных в формате XML. Она входит в комплект поставки типовых решений и доступна на диске ИТС. Открывается так: Главное меню → Файл → Открыть…, выбираете файл обработки, и она запускается прямо в сеансе.
Что умеет такой инструмент:
- 📦 выгрузить объекты справочника или документы за период в XML;
- 🔁 перенести данные между двумя базами на одной конфигурации;
- 🎯 отобрать выгружаемые объекты по условию.
Внешние обработки запускаются только при включённом праве на их открытие. В типовых базах интерактивное открытие внешних обработок по умолчанию ограничено ролями безопасности — потребуется профиль с таким правом или помощь администратора.
Если готовой обработки под ваш формат нет, под конкретную задачу пишут свою: она формирует табличный документ или текстовый файл с нужной структурой колонок. Это уже работа программиста, но результат — кнопка «Выгрузить», понятная любому пользователю.
Автоматизация выгрузки через COM-соединение
COM-соединение нужно, когда выгрузку надо повторять по расписанию без открытия 1С вручную — например, каждую ночь складывать остатки в файл для сайта. Внешняя программа (скрипт, служба, другое приложение) подключается к базе через объект V83.COMConnector, выполняет запрос и сохраняет результат.
Пример на VBScript — выгрузка номенклатуры в текст с разделителями:
Set Connector = CreateObject("V83.COMConnector")
Set Conn = Connector.Connect("File=""C:\Base"";Usr=""Выгрузка"";Pwd=""пароль""")
Set Query = Conn.NewObject("Запрос")
Query.Текст = "ВЫБРАТЬ Код, Наименование ИЗ Справочник.Номенклатура"
Set Result = Query.Выполнить().Выбрать()
Do While Result.Следующий()
WScript.Echo Result.Код & ";" & Result.Наименование
Loop
Методы и свойства объектов 1С вызываются по-русски — так же, как во встроенном языке.
Если данные нужно сохранить именно в файл Excel, удобнее это делать уже внутри 1С. Табличный документ умеет записываться в файл одной строкой:
ТабДок.Записать("C:\Выгрузка\nom.xlsx", ТипФайлаТабличногоДокумента.XLSX);
Такой код можно вынести в регламентное задание — тогда выгрузка пойдёт на сервере по расписанию вообще без участия пользователя и без COM.
Разрядность COM-коннектора (comcntr.dll) должна совпадать с разрядностью программы, которая его вызывает. 64-битный скрипт не подключится через 32-битный коннектор и наоборот — это причина большинства ошибок на старте.
Прямой доступ к данным через ODBC и SQL
Если база работает в клиент-серверном варианте на MS SQL Server, к ней технически можно подключиться напрямую через ODBC и читать таблицы запросами SQL. Это самый быстрый способ выгрузить миллионы строк, но и самый рискованный.
Главная сложность — имена таблиц и полей в SQL системные и нечитаемые: _Reference123, _Document45_IDRRef, _Fld678. Чтобы сопоставить их с объектами конфигурации, в 1С есть метод ПолучитьСтруктуруХраненияБазыДанных() — он возвращает карту «объект метаданных → имя таблицы и полей в СУБД». Без этой карты понять содержимое SQL-таблиц практически невозможно.
Правила, которые нарушать нельзя:
- 🔒 подключайтесь только на чтение — отдельной учётной записью SQL с правами
SELECT; - ⛔ никогда не меняйте данные в таблицах 1С напрямую через SQL — вы обойдёте всю бизнес-логику, итоги и регистры рассинхронизируются, база станет некорректной;
- 🧩 структура хранения меняется при обновлении конфигурации — запросы по именам таблиц придётся править.
Прямой SQL-доступ не поддерживается фирмой «1С» как штатный, поэтому используйте его только для разовой тяжёлой выгрузки в отчётную систему и только силами администратора базы.
Выгрузка для разработчиков: OData и HTTP-сервисы
Когда внешней системе нужен постоянный доступ к данным, правильнее отдавать их по сети, а не файлами. Платформа 8.3 умеет это из коробки через стандартный интерфейс OData — его не нужно программировать.
Как включить:
- При публикации базы на веб-сервере в диалоге публикации отметьте
Публиковать стандартный интерфейс OData. - В конфигураторе задайте состав интерфейса — какие объекты отдавать наружу (
Администрирование → Настройка состава стандартного интерфейса ODataв режиме «Предприятие», если конфигурация это поддерживает).
После этого данные доступны по адресу вида:
http://server/base/odata/standard.odata/Catalog_Номенклатура?$format=json
Полезные параметры запроса:
$top=100— отдать первые 100 записей;$skip=100— пропустить первые 100 (постраничная выгрузка);$filter— отбор по условию;$format=json— формат ответа JSON вместо XML по умолчанию.
Имя ресурса собирается как Catalog_<ИмяСправочника>, Document_<ИмяДокумента> и так далее.
Если стандартного OData мало — нужна своя логика, агрегация, особый формат ответа — в конфигураторе создают HTTP-сервис: описывают шаблон URL и обработчик, который формирует ответ. Это даёт полный контроль над тем, что и как отдаётся, но требует доработки конфигурации.
Ошибки при выгрузке и как их решить
Большие таблицы: выгрузка без зависаний
Если в списке десятки или сотни тысяч строк, команда Вывести список надолго подвесит клиент — она тянет все данные на машину пользователя. Для таких объёмов другой подход.
- 📊 Выгружайте запросом, а не из динамического списка. Запрос отбирает только нужные поля и условия, не загружая лишнее.
- ✂️ Делите на порции. В OData — через
$topи$skip, в SQL — через постраничные выборки. Так вы не упираетесь в память. - 🧮 Отключайте итоги и группировки в отчёте, если нужна только детализация строк — расчёт итогов по большому массиву тормозит сильнее всего.
- 🌙 Тяжёлую регулярную выгрузку выносите в регламентное задание на сервере и запускайте ночью, когда нагрузка минимальна.
Перед выгрузкой большого объёма сузьте отбор по периоду или организации. Чаще всего реально нужен не весь справочник целиком, а срез за месяц — и он выгрузится в разы быстрее.
Частые вопросы
В каком формате выгружать, чтобы потом обрабатывать данные программой?
.xlsx) удобен человеку, но при автоматическом разборе Excel капризнее из-за форматов ячеек. Для обмена между базами 1С — XML.Можно ли выгрузить таблицу без прав администратора?
Нужен ли установленный Excel, чтобы сохранить файл `.xlsx`?
Как выгрузить только отфильтрованные строки?
Почему при копировании через буфер пропали некоторые столбцы?
Ещё → Изменить форму, после чего скопируйте список заново.