Как выгрузить остатки из 1С в Excel: все способы с инструкциями и нюансами

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

В этой статье мы разберём 5 проверенных способов экспорта остатков — от стандартных отчётов до автоматизации через COM-соединение и Power Query. Вы узнаете, как выгрузить данные с сохранением иерархии номенклатуры, избежать ошибок округления и настроить автообновление файла. А для тех, кто работает с большими базами, приведём примеры оптимизации выгрузки для 100 000+ позиций номенклатуры без зависаний 1С.

1. Стандартный отчёт «Ведомость по товарам на складах»

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

Чтобы выгрузить остатки:

  • 📊 Перейдите в раздел Отчёты → Товары и цены → Ведомость по товарам на складах.
  • 🔍 В настройках отчёта укажите:
    • Период (обычно текущая дата)
    • Склады (выберите нужные или оставьте все)
    • Номенклатуру (можно отфильтровать по группам)
  • 📥 Нажмите Сформировать, затем Ещё → Выгрузить в Excel.
⚠️ Внимание: В стандартной выгрузке часто «слетают» форматы ячеек — количества выводятся как текст, а цены округляются до целых. Чтобы этого избежать, перед выгрузкой настройте параметры в Файл → Параметры → Экспорт в Excel (галочка Сохранять форматы чисел).
📊 Какой отчёт вы используете чаще всего?
Ведомость по товарам
Оборотно-сальдовая ведомость
Анализ доступности товаров
Другой

Если вам нужны остатки по партиям (с учётом сроков годности или серийных номеров), стандартный отчёт не подойдёт. В этом случае используйте отчёт Анализ доступности товаров с детализацией по характеристикам. Для выгрузки данных по резервам (зарезервированным под заказы товарам) потребуется доработка отчёта или использование внешних обработок.

2. Выгрузка через «Универсальный отчёт» (для опытных пользователей)

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

Инструкция по настройке:

  1. Откройте Отчёты → Стандартные отчёты → Универсальный отчёт.
  2. В поле Источник данных выберите таблицу РегистрНакопления.ТоварыНаСкладах.Остатки.
  3. Добавьте нужные поля в Структуру отчёта:
    • Номенклатура (с иерархией или без)
    • Характеристика (если ведётся учёт по размерам/цветам)
    • Количество
    • Склад
  • Настройте фильтры (например, Дата >= ТекущаяДата).
  • Экспортируйте в Excel через Ещё → Выгрузить.
  • Поле в 1С Соответствие в Excel Тип данных
    Номенклатура Столбец A Текст
    Количество Столбец C Число (2 знака после запятой)
    Склад.Наименование Столбец B Текст
    Характеристика.Наименование Столбец D Текст

    Если в выгрузке появляются пустые строки или дубли, проверьте настройки группировки в универсальном отчёте. Частая ошибка — включён параметр Показывать иерархию для номенклатуры, из-за чего в Excel попадают промежуточные группы (например, «Обувь → Кроссовки» вместо конкретных моделей).

    Убрать лишние группировки|Отключить иерархию, если не нужна|Проверить фильтры по датам|Указать нужные склады|Добавить все требуемые поля-->

    3. Автоматическая выгрузка через COM-соединение (для программистов)

    Если вам нужно регулярно обновлять остатки в Excel (например, ежедневно), ручная выгрузка не подходит. В этом случае используйте COM-соединение между 1С и Excel через VBA или Power Query. Этот метод требует знаний программирования, но позволяет:

    • 🔄 Автоматически обновлять данные по расписанию.
    • 📊 Сохранять форматы и формулы в Excel.
    • 🔗 Связывать несколько таблиц (например, остатки + цены + заказы).

    Пример кода на VBA для выгрузки остатков:

    Sub ВыгрузитьОстаткиИз1С
    

    Dim Conn As Object, rs As Object

    Set Conn = CreateObject("ADODB.Connection")

    Set rs = CreateObject("ADODB.Recordset")

    ' Подключение к базе 1С (указать свой путь!)

    Conn.Open"Driver={1C:ENTERPRISE 8.3};Location=SRV1C\Base;UID=Администратор;PWD=;"

    ' Запрос остатков

    rs.Open"SELECT Номенклатура.Наименование, Склад.Наименование, КоличествоОстатков" & _

    "FROM РегистрНакопления.ТоварыНаСкладах.Остатки", Conn

    ' Выгрузка в Excel (начиная с ячейки A1)

    Sheets("Остатки").Range("A1").CopyFromRecordset rs

    ' Закрытие соединения

    rs.Close: Conn.Close

    End Sub

    ⚠️ Внимание: Для работы COM-соединения на сервере 1С должна быть включена опция Разрешить внешние соединения (настраивается в Администрирование → Настройки программы). Также проверьте, что на компьютере установлен OLE DB-провайдер для 1С (идет в комплекте с платформой).

    Альтернатива VBA — использование Power Query в Excel. Этот инструмент позволяет подключиться к 1С как к источнику данных и обновлять таблицу одним кликом. Пример запроса в Power Query:

    let
    

    Источник = Odbc.DataSource("dsn=1CBase", [HierarchicalNavigation=true]),

    База = Источник{[Name="Base"]}[Data],

    Остатки = База{[Schema="РегистрНакопления",Item="ТоварыНаСкладах.Остатки"]}[Data]

    in

    Остатки

    Как настроить ODBC-соединение с 1С?

    1. Откройте Панель управления → Администрирование → Источники данных ODBC.

    2. Добавьте новый источник данных типа 1C:Enterprise 8 ODBC Driver.

    3. Укажите путь к базе (например, \\SRV1C\Base) и учётные данные.

    4. В Excel используйте Данные → Получить данные → Из других источников → Из ODBC.

    4. Выгрузка через внешние обработки (для нестандартных задач)

    Если стандартные отчёты не покрывают ваши нужды (например, требуется выгрузить остатки с фото товара, историей движения или данными из нескольких регистров), используйте внешние обработки. Их можно скачать бесплатно (например, на Infostart) или заказать у партнёров 1С.

    Популярные обработки для выгрузки остатков:

    • 📋 «Выгрузка в Excel с картинками» — экспортирует остатки вместе с изображениями товаров (подходит для интернет-магазинов).
    • 📦 «Остатки по партиям» — выгружает данные с учётом серийных номеров и сроков годности.
    • 🔄 «Сравнение остатков» — позволяет сравнить текущие остатки с данными на прошлую дату и выгрузить разницу.

    Чтобы установить обработку:

    1. Скачайте файл с расширением .epf или .erf.
    2. В 1С откройте Файл → Открыть → Выбрать файл обработки.
    3. Запустите обработку и следуйте инструкциям (обычно нужно указать период, склады и формат выгрузки).

    Обратите внимание на лицензионные ограничения: некоторые обработки работают только в определённых конфигурациях (например, только в 1С:УТ 11 или 1С:ERP 2.5). Перед установкой проверьте совместимость на сайте разработчика.

    5. Выгрузка остатков через 1С:Предприятие + Python (для больших баз)

    Для баз с десятками тысяч позиций стандартные методы выгрузки работают медленно или вообще «подвешивают» 1С. В этом случае поможет автоматизация через Python с использованием библиотеки py1c. Этот способ требует навыков программирования, но позволяет:

    • 🚀 Выгружать данные в 5–10 раз быстрее, чем через COM.
    • 📂 Сохранять остатки в CSV, JSON или напрямую в Google Sheets.
    • 🔧 Обрабатывать данные перед выгрузкой (например, округлять количества или заменять названия складов).

    Пример скрипта на Python:

    import py1c
    
    

    Подключение к базе

    conn = py1c.connect("http://srv1c/base","Администратор","")

    Запрос остатков

    query ="""

    ВЫБРАТЬ

    Номенклатура.Наименование КАК Товар,

    Склад.Наименование КАК Склад,

    КоличествоОстатков КАК Количество

    ИЗ

    РегистрНакопления.ТоварыНаСкладах.Остатки

    """

    data = conn.query(query).execute.fetchall

    Сохранение в Excel

    import pandas as pd

    df = pd.DataFrame(data, columns=["Товар","Склад","Количество"])

    df.to_excel("остатки.xlsx", index=False)

    Для работы скрипта потребуется:

    • Установить Python 3.8+ и библиотеки py1c, pandas, openpyxl.
    • Настроить OData-доступ в 1С (в Администрирование → Публикация на веб-сервере).
    • Проверить, что на сервере разрешён HTTP-доступ к базе.
    ⚠️ Внимание: При выгрузке больших объёмов данных (более 50 000 строк) разбейте запрос на части по алфавиту (например, выгружайте товары на букву «А», затем «Б» и т.д.). Это предотвратит перегрузку памяти и ошибки тайм-аута.

    6. Решениеных ошибок при выгрузке

    Даже при правильной настройке выгрузки пользователи сталкиваются с типичными проблемами. Вот самые частые и способы их решения:

    Ошибка Причина Решение
    Выгрузка прерывается с ошибкой "Недостаточно памяти" Слишком большой объём данных или мало оперативной памяти на сервере Разбейте выгрузку на части (по складам или группам номенклатуры)
    В Excel вместо кириллицы отображаются ????? Неверная кодировка при экспорте В настройках выгрузки укажите кодировку UTF-8 или Windows-1251
    Количества выводятся как текст (нельзя суммировать в Excel) Формат ячеек сбивается при экспорте После выгрузки примените формат Числовой с 2 знаками после запятой
    Не выгружаются характеристики (размеры, цвета) В отчёте не указано поле Характеристика Добавьте поле в структуру отчёта или используйте обработку с поддержкой характеристик

    Если при выгрузке через COM или ODBC появляется ошибка "Отказано в доступе", проверьте:

    • 🔑 Права пользователя в 1С (должны быть права на чтение регистра ТоварыНаСкладах).
    • 🔌 Настройки брандмауэра (порт 1541 должен быть открыт для соединений).
    • 📋 Параметры rphost в файле конфигурации 1С (должен быть указан корректный адрес сервера).

    FAQ: Частые вопросы по выгрузке остатков из 1С в Excel

    Можно ли выгрузить остатки с учётом резервов (зарезервированных товаров)?

    Да, но стандартные отчёты этого не умеют. Вам потребуется:

    1. Использовать обработку «Остатки с учётом резервов» (есть на Infostart).
    2. Или написать запрос к регистру ТоварыНаСкладах с join’ом к таблице РезервыТоваров.

    Пример запроса:

    ВЫБРАТЬ
    

    Номенклатура.Наименование,

    СУММА(КоличествоОстатков) КАК Остаток,

    СУММА(РезервыТоваров.Количество) КАК Резерв

    ИЗ

    РегистрНакопления.ТоварыНаСкладах.Остатки КАК Остатки

    ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РезервыТоваров.Остатки КАК РезервыТоваров

    ПО Остатки.Номенклатура = РезервыТоваров.Номенклатура

    СГРУППИРОВАТЬ ПО

    Номенклатура.Наименование

    Как выгрузить остатки по нескольким организациям одновременно?

    В стандартных отчётах 1С обычно выгружаются данные только по текущей организации. Чтобы получить остатки по всем организациям:

    • Используйте универсальный отчёт с фильтром по полю Организация.
    • Или напишите запрос с указанием нужных организаций:
    ВЫБРАТЬ
    

    Номенклатура.Наименование,

    Организация.Наименование,

    КоличествоОстатков

    ИЗ

    РегистрНакопления.ТоварыНаСкладах.Остатки

    ГДЕ

    Организация В (&СписокОрганизаций)

    Где &СписокОрганизаций — массив с нужными организациями.

    Почему в выгрузке не отображаются товары с нулевым остатком?

    По умолчанию многие отчёты 1С скрывают позиции с нулевыми остатками. Чтобы их показать:

    1. В настройках отчёта найдите параметр Только ненулевые остатки и снимите галочку.
    2. Если параметра нет, добавьте в запрос условие КоличествоОстатков >= 0 (вместо > 0).

    В универсальном отчёте также проверьте, что не стоит фильтр по полю Количество.

    Как автоматизировать выгрузку остатков по расписанию?

    Есть несколько способов:

    • 📅 Через регламентные задания 1С:
      1. Создайте обработку выгрузки (или используйте готовую).
      2. В Администрирование → Регламентные задания добавьте новое задание.
      3. Укажите расписание (например, ежедневно в 23:00) и путь для сохранения файла.
  • 🤖 Через Python + Task Scheduler:
    1. Напишите скрипт на Python (пример приведён выше).
    2. Создайте задачу в Планировщике заданий Windows, которая будет запускать скрипт по расписанию.
  • Для облачных версий 1С (например, 1С:Фреш) автоматизацию можно настроить через 1С:Link или Make (ex-Integromat).

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

    Да, но для этого потребуется:

    1. Использовать универсальный отчёт с join’ом к регистрам цен:
      ВЫБРАТЬ
      

      Остатки.Номенклатура.Наименование,

      Остатки.КоличествоОстатков,

      Цены.Цена КАК РозничнаяЦена,

      Себестоимость.СтоимостьОстатков / Остатки.КоличествоОстатков КАК Себестоимость

      ИЗ

      РегистрНакопления.ТоварыНаСкладах.Остатки КАК Остатки

      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК Цены

      ПО Остатки.Номенклатура = Цены.Номенклатура

      ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СебестоимостьТоваров.Остатки КАК Себестоимость

      ПО Остатки.Номенклатура = Себестоимость.Номенклатура

    2. Или использовать обработку «Выгрузка остатков с ценами» (доступна на Infostart).

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