Выгрузка остатков из 1С в Excel — рутинная, но критически важная задача для бухгалтеров, логистов и менеджеров по закупкам. Без актуальных данных об остатках невозможно спланировать заказы, провести инвентаризацию или проанализировать оборот товара. Однако даже опытные пользователи 1С:Предприятие сталкиваются с проблемами: выгрузка «сбивает» форматы, теряет связки номенклатуры или требует часовой ручной доводки в Excel.
В этой статье мы разберём 5 проверенных способов экспорта остатков — от стандартных отчётов до автоматизации через COM-соединение и Power Query. Вы узнаете, как выгрузить данные с сохранением иерархии номенклатуры, избежать ошибок округления и настроить автообновление файла. А для тех, кто работает с большими базами, приведём примеры оптимизации выгрузки для 100 000+ позиций номенклатуры без зависаний 1С.
1. Стандартный отчёт «Ведомость по товарам на складах»
Самый простой способ — использовать встроенный отчёт Ведомость по товарам на складах. Он доступен в большинстве конфигураций 1С:Управление торговлей, 1С:Бухгалтерия и 1С:ERP. Преимущество метода: не требует технических навыков и работает даже в облачных версиях 1С.
Чтобы выгрузить остатки:
- 📊 Перейдите в раздел
Отчёты → Товары и цены → Ведомость по товарам на складах. - 🔍 В настройках отчёта укажите:
- Период (обычно текущая дата)
- Склады (выберите нужные или оставьте все)
- Номенклатуру (можно отфильтровать по группам)
- 📥 Нажмите
Сформировать, затемЕщё → Выгрузить в Excel.
⚠️ Внимание: В стандартной выгрузке часто «слетают» форматы ячеек — количества выводятся как текст, а цены округляются до целых. Чтобы этого избежать, перед выгрузкой настройте параметры вФайл → Параметры → Экспорт в Excel(галочкаСохранять форматы чисел).
Если вам нужны остатки по партиям (с учётом сроков годности или серийных номеров), стандартный отчёт не подойдёт. В этом случае используйте отчёт Анализ доступности товаров с детализацией по характеристикам. Для выгрузки данных по резервам (зарезервированным под заказы товарам) потребуется доработка отчёта или использование внешних обработок.
2. Выгрузка через «Универсальный отчёт» (для опытных пользователей)
Универсальный отчёт — мощный инструмент 1С, который позволяет гибко настраивать вывод данных, включая остатки. Его главное преимущество: можно выгрузить произвольные поля (например, артикулы, вес, габариты) и применить сложные фильтры (по поставщикам, датам поступления и т.д.).
Инструкция по настройке:
- Откройте
Отчёты → Стандартные отчёты → Универсальный отчёт. - В поле
Источник данныхвыберите таблицуРегистрНакопления.ТоварыНаСкладах.Остатки. - Добавьте нужные поля в
Структуру отчёта:- Номенклатура (с иерархией или без)
- Характеристика (если ведётся учёт по размерам/цветам)
- Количество
- Склад
Дата >= ТекущаяДата).Ещё → Выгрузить.| Поле в 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 с картинками» — экспортирует остатки вместе с изображениями товаров (подходит для интернет-магазинов).
- 📦 «Остатки по партиям» — выгружает данные с учётом серийных номеров и сроков годности.
- 🔄 «Сравнение остатков» — позволяет сравнить текущие остатки с данными на прошлую дату и выгрузить разницу.
Чтобы установить обработку:
- Скачайте файл с расширением
.epfили.erf. - В 1С откройте
Файл → Открыть → Выбрать файл обработки. - Запустите обработку и следуйте инструкциям (обычно нужно указать период, склады и формат выгрузки).
Обратите внимание на лицензионные ограничения: некоторые обработки работают только в определённых конфигурациях (например, только в 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
Можно ли выгрузить остатки с учётом резервов (зарезервированных товаров)?
Да, но стандартные отчёты этого не умеют. Вам потребуется:
- Использовать обработку «Остатки с учётом резервов» (есть на Infostart).
- Или написать запрос к регистру
ТоварыНаСкладахс join’ом к таблицеРезервыТоваров.
Пример запроса:
ВЫБРАТЬ
Номенклатура.Наименование,
СУММА(КоличествоОстатков) КАК Остаток,
СУММА(РезервыТоваров.Количество) КАК Резерв
ИЗ
РегистрНакопления.ТоварыНаСкладах.Остатки КАК Остатки
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РезервыТоваров.Остатки КАК РезервыТоваров
ПО Остатки.Номенклатура = РезервыТоваров.Номенклатура
СГРУППИРОВАТЬ ПО
Номенклатура.Наименование
Как выгрузить остатки по нескольким организациям одновременно?
В стандартных отчётах 1С обычно выгружаются данные только по текущей организации. Чтобы получить остатки по всем организациям:
- Используйте универсальный отчёт с фильтром по полю
Организация. - Или напишите запрос с указанием нужных организаций:
ВЫБРАТЬ
Номенклатура.Наименование,
Организация.Наименование,
КоличествоОстатков
ИЗ
РегистрНакопления.ТоварыНаСкладах.Остатки
ГДЕ
Организация В (&СписокОрганизаций)
Где &СписокОрганизаций — массив с нужными организациями.
Почему в выгрузке не отображаются товары с нулевым остатком?
По умолчанию многие отчёты 1С скрывают позиции с нулевыми остатками. Чтобы их показать:
- В настройках отчёта найдите параметр
Только ненулевые остаткии снимите галочку. - Если параметра нет, добавьте в запрос условие
КоличествоОстатков >= 0(вместо> 0).
В универсальном отчёте также проверьте, что не стоит фильтр по полю Количество.
Как автоматизировать выгрузку остатков по расписанию?
Есть несколько способов:
- 📅 Через регламентные задания 1С:
- Создайте обработку выгрузки (или используйте готовую).
- В
Администрирование → Регламентные заданиядобавьте новое задание. - Укажите расписание (например, ежедневно в 23:00) и путь для сохранения файла.
- Напишите скрипт на Python (пример приведён выше).
- Создайте задачу в
Планировщике заданий Windows, которая будет запускать скрипт по расписанию.
Для облачных версий 1С (например, 1С:Фреш) автоматизацию можно настроить через 1С:Link или Make (ex-Integromat).
Можно ли выгрузить остатки вместе с ценами и себестоимостью?
Да, но для этого потребуется:
- Использовать универсальный отчёт с join’ом к регистрам цен:
ВЫБРАТЬОстатки.Номенклатура.Наименование,
Остатки.КоличествоОстатков,
Цены.Цена КАК РозничнаяЦена,
Себестоимость.СтоимостьОстатков / Остатки.КоличествоОстатков КАК Себестоимость
ИЗ
РегистрНакопления.ТоварыНаСкладах.Остатки КАК Остатки
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК Цены
ПО Остатки.Номенклатура = Цены.Номенклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СебестоимостьТоваров.Остатки КАК Себестоимость
ПО Остатки.Номенклатура = Себестоимость.Номенклатура
- Или использовать обработку «Выгрузка остатков с ценами» (доступна на Infostart).
Учтите, что для выгрузки себестоимости пользователь должен иметь право на просмотр конфиденциальных данных (настраивается в ролях 1С).