Выгрузка таблиц и списков из 1С: 6 рабочих способов

· 9 мин

Содержание

Чтобы выгрузить таблицу из 1С в Excel, не нужны ни программист, ни дополнительные обработки. В любом списке или отчёте нажмите кнопку Ещё в правом верхнем углу формы, выберите Вывести список…, а затем в появившемся табличном документе — Главное меню → Файл → Сохранить как… и формат Лист Excel 2007 (*.xlsx). Это работает в большинстве типовых конфигураций на платформе 8.3 с интерфейсом «Такси».

Распространённое заблуждение: будто для сохранения в .xlsx на компьютере должен стоять Microsoft Excel. Это не так — платформа пишет файл Excel своим механизмом, офисный пакет для сохранения не требуется. А вот способов выгрузки на самом деле больше, чем один: от копирования пары строк через буфер до регулярной выгрузки по расписанию через COM или OData. Ниже — все варианты по возрастанию сложности, с точными путями и примерами.

Какой способ выгрузки выбрать?

Копирование через буфер обмена — за десять секунд

Самый быстрый путь, когда нужно перенести несколько строк. Откройте нужный список (например, Справочники → Номенклатура или журнал документов ), выделите строки:

  • 🖱️ одну строку — просто щёлкните по ней;
  • ⌨️ несколько подряд — щёлкните первую, зажмите Shift и щёлкните последнюю;
  • 🔀 вразнобой — удерживайте Ctrl и отмечайте строки по одной;
  • 🗂️ весь список — Ctrl+A.

Дальше Ctrl+C и Ctrl+V в открытый лист Excel. В буфер попадут колонки, которые сейчас видны на форме, с учётом установленного отбора и сортировки.

Если в Excel вставились не все колонки, которые нужны, сначала выведите их на форму: кнопка Ещё → Изменить форму…, затем отметьте галочками нужные поля. После этого копирование подхватит и их.

Минус способа — переносится только то, что помещается в видимую часть динамического списка, а числовые коды с ведущими нулями Excel может превратить в обычные числа. Для аккуратной выгрузки лучше следующий способ.

Команда «Вывести список» и сохранение в Excel, CSV, ODS

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

  1. Откройте список и при необходимости настройте отбор и сортировку — выгрузится именно то, что видно.
  2. Нажмите Ещё → Вывести список….
  3. В диалоге выберите тип — Табличный документ (для Excel) или Текстовый документ — и отметьте галочками колонки, которые нужно выгрузить.
  4. Нажмите ОК. Откроется сформированный табличный документ.
  5. В нём: Главное меню → Файл → Сохранить как… (кнопка главного меню — значок в левом верхнем углу окна).
  6. В поле Тип файла выберите формат и сохраните.

Доступные форматы при сохранении табличного документа:

ФорматРасширениеКогда выбирать
Лист Excel 2007.xlsxОсновной вариант для Excel, без ограничения на число строк
Лист Excel.xlsСтарый Excel или программа, не читающая xlsx
Документ ODF.odsLibreOffice / 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 — его не нужно программировать.

Как включить:

  1. При публикации базы на веб-сервере в диалоге публикации отметьте Публиковать стандартный интерфейс OData.
  2. В конфигураторе задайте состав интерфейса — какие объекты отдавать наружу (Администрирование → Настройка состава стандартного интерфейса 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 — через постраничные выборки. Так вы не упираетесь в память.
  • 🧮 Отключайте итоги и группировки в отчёте, если нужна только детализация строк — расчёт итогов по большому массиву тормозит сильнее всего.
  • 🌙 Тяжёлую регулярную выгрузку выносите в регламентное задание на сервере и запускайте ночью, когда нагрузка минимальна.

Перед выгрузкой большого объёма сузьте отбор по периоду или организации. Чаще всего реально нужен не весь справочник целиком, а срез за месяц — и он выгрузится в разы быстрее.

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

В каком формате выгружать, чтобы потом обрабатывать данные программой?
Для загрузки в другую программу берите XML или CSV — у них строгая структура. Excel (.xlsx) удобен человеку, но при автоматическом разборе Excel капризнее из-за форматов ячеек. Для обмена между базами 1С — XML.
Можно ли выгрузить таблицу без прав администратора?
Да, если у вашей роли включено право «Вывод». Копирование, «Вывести список» и сохранение в файл — это обычные пользовательские действия. Администратор нужен только для COM, прямого SQL и настройки OData.
Нужен ли установленный Excel, чтобы сохранить файл `.xlsx`?
Нет. Платформа формирует файл Excel собственными средствами. Excel понадобится, только если вы управляете им через COM из кода 1С, чтобы оформлять ячейки по ходу выгрузки.
Как выгрузить только отфильтрованные строки?
Настройте отбор в списке до выгрузки — и копирование, и «Вывести список» учитывают текущий отбор и сортировку. Выгрузится ровно то, что осталось на экране после фильтра.
Почему при копировании через буфер пропали некоторые столбцы?
В буфер попадают только видимые на форме колонки. Выведите недостающие поля через Ещё → Изменить форму, после чего скопируйте список заново.