Как загрузить данные в 1С из таблицы Excel и файлов XML
Содержание
Сделать заливку данных в 1С проще всего через обработку «Загрузка данных из табличного документа»: открываете её, вставляете таблицу из Excel, указываете, в какой справочник или документ лить и по какому полю искать совпадения, — и запускаете. Это универсальный способ, он работает в любой типовой конфигурации на платформе 8.3.
Частое заблуждение: чтобы загрузить сотни позиций номенклатуры или список контрагентов, нужен программист. На деле многие разовые заливки делаются штатными средствами без единой строки кода. Куда важнее аккуратно подготовить исходную таблицу и настроить поиск дублей — иначе вместо 500 новых элементов получите 500 копий уже существующих.
Заливка меняет данные в базе необратимо. Перед первой загрузкой в рабочую базу сделайте резервную копию или потренируйтесь на копии базы. Откатить массовую загрузку кнопкой «отмена» не получится.
Что можно залить и каким способом
Под «заливкой» понимают разные задачи, и способ зависит от того, что именно грузите. Выбор определяет половину успеха: таблицей Excel нельзя перенести документ со связями, а форматным обменом неудобно загрузить разовый прайс.
| Что грузим | Рабочий способ |
|---|---|
| Справочник (номенклатура, контрагенты, цены) | Таблица Excel + универсальная обработка |
| Начальные остатки на счетах | Документ ввода остатков, табличная часть из Excel |
| Табличная часть документа (строки реализации, поступления) | Вставка в документ из буфера или обработка |
| Регистр сведений (цены, соответствия) | Загрузка в регистр универсальной обработкой |
| Перенос объектов между базами 1С | Выгрузка/загрузка в XML, правила обмена |
Разделяют две принципиально разные ситуации. Первая — разовая заливка справочника или прайса: тут хватает таблицы Excel и штатной обработки. Вторая — перенос учётных данных со связями между объектами: здесь нужен форматный обмен, потому что в XML сохраняются ссылки (товар знает свою единицу, документ — своего контрагента), а плоская таблица эти связи рвёт.
Отдельно стоит загрузка начальных остатков при старте учёта в новой базе. Её делают не напрямую в регистры, а документами ввода остатков: так движения получаются корректными и их видно в оборотке. Табличные части этих документов тоже заполняют из Excel.
Как подготовить таблицу Excel перед загрузкой
Качество заливки на 80% определяется исходным файлом. Приведите таблицу к виду, который 1С сможет прочитать построчно.
- 🧹 Одна строка — один объект. Никаких объединённых ячеек, подзаголовков и пустых строк-разделителей внутри данных.
- 📋 Первая строка — шапка с названиями колонок. Сами данные начинаются со второй строки.
- 🔤 Формат ячеек — текстовый там, где важны ведущие нули. ИНН, артикулы, коды КЛАДР в числовом формате теряют нули и превращаются в экспоненту.
- 📅 Даты — в одном формате на весь столбец (например,
ДД.ММ.ГГГГ). - 🧮 Числа — без разделителей тысяч и без текста в числовых колонках («10 шт.» →
10).
Проверьте справочные значения заранее. Если в колонке «Единица измерения» встречается шт, шт. и штука, 1С воспримет это как три разные единицы. Приведите к одному написанию прямо в Excel через автозамену.
Отдельная колонка-ключ очень облегчает жизнь. Для номенклатуры это артикул или ваш внутренний код, для контрагентов — ИНН. По этому полю 1С будет искать, есть ли объект в базе.
Загрузка через обработку «Загрузка данных из табличного документа»
Это универсальная внешняя обработка (.epf). Она идёт в составе типовой поставки конфигураций и доступна подписчикам ИТС. Если файла у вас нет, его выдаёт обслуживающий франчайзи или администратор.
Порядок работы:
- Запустите 1С в режиме
1С:Предприятие. - Откройте обработку через
Файл → Открытьи выберите файл.epf. Если открытие внешних обработок запрещено политикой базы, права даёт администратор в настройках профиля. - На закладке загрузки выберите режим: в справочник, в табличную часть документа или в регистр сведений .
- Укажите, куда грузим — конкретный справочник (например,
НоменклатураилиКонтрагенты). - Вставьте данные из Excel в табличное поле обработки через
Ctrl+Vлибо прочитайте файл кнопкой чтения из файла. - Сопоставьте колонки: каждому реквизиту объекта назначьте номер колонки вашей таблицы.
Сопоставление колонок и режим поиска можно сохранить в настройку и переиспользовать для следующих файлов той же структуры — не придётся настраивать заново.
После сопоставления запустите контроль заполнения. Обработка подсветит строки, где не хватает обязательных реквизитов, и даст их исправить до записи в базу. Только потом нажимайте загрузку.
Для небольших справочников удобнее бывает штатная загрузка прямо из списка: во многих типовых конфигурациях в командной панели списка номенклатуры есть команда загрузки из внешнего файла. Если её видите — для разовой заливки прайса она проще универсальной обработки.
Правила поиска: как не наплодить дубли справочников
Главный риск массовой заливки — задвоение элементов. 1С перед записью каждой строки должна понять: это новый объект или такой уже есть в базе. Отвечает за это поле поиска.
В настройках обработки по каждому реквизиту есть два флага:
- Поиск — по этому полю ищем существующий элемент.
- Создавать новый, если не найден — что делать, когда совпадения нет.
Логика простая:
| Что хотите | Поле поиска | «Создавать новый» |
|---|---|---|
| Добавить только новые позиции | Артикул / ИНН | Включено |
| Обновить реквизиты у имеющихся | Артикул / ИНН | Выключено |
| Полная заливка с нуля | Код или Наименование | Включено |
Искать по «Наименованию» опасно: лишний пробел, другой регистр или «ООО» вместо «ООО “…"» — и 1С посчитает элемент новым. Ищите по жёсткому ключу: артикулу, коду, ИНН.
Если в базе уже есть дубли до заливки, сначала почистите их обработкой поиска и удаления дублей (входит в типовые конфигурации, раздел Администрирование), а уже потом грузите.
Полезный приём для обновлений: прогоните заливку сначала с выключенным «создавать новый». Все позиции, которые обработка не нашла в базе, попадут в протокол как ненайденные — это и есть список действительно новых элементов. Проверьте его глазами (нет ли там опечаток в артикулах), и только вторым проходом включайте создание новых. Так вы не создадите дубль из-за лишнего пробела в ключе.
Загрузка через форматные файлы: XML и XLSX
Таблица из Excel хороша для справочников и простых документов. Когда нужно перенести связанные данные целиком — остатки, взаиморасчёты, настройки — используют форматный обмен.
XLSX и MXL. Современная платформа 8.3 читает файлы .xlsx в табличный документ напрямую, поэтому универсальная обработка принимает оба формата. Формат .mxl — родной табличный документ 1С, в него же можно предварительно выгрузить и проверить данные.
XML — для переноса между базами. Для выгрузки и загрузки объектов целиком служит стандартная обработка «Выгрузка и загрузка данных XML» (ВыгрузкаЗагрузкаДанныхXML.epf). В базе-источнике вы отмечаете, какие объекты выгрузить, получаете .xml, в базе-приёмнике загружаете его той же обработкой. Ссылки между объектами (товар → единица измерения) при этом сохраняются.
Сложные сопоставления — через «Конвертацию данных». Когда структуры баз не совпадают (разные реквизиты, другой план счетов ), применяют правила обмена и конфигурацию «Конвертация данных ». Это уже проектная задача, для разовой заливки прайса она избыточна.
Что делать, когда строки не загружаются
После запуска обработка показывает протокол: сколько строк записано, сколько пропущено и почему. Не закрывайте его — именно там причина сбоя.
Типичные ситуации и как их развести:
Если загрузка упала на середине, часть строк уже в базе. Перед повтором либо удалите загруженную порцию, либо поставьте поиск так, чтобы повтор обновлял уже созданные элементы, а не плодил новые.
Большие файлы (десятки тысяч строк) грузите частями по несколько тысяч. Так протокол читаемее, а при сбое не придётся откатывать всё.
Автоматизация регулярной заливки
Если прайс или остатки приходят каждый день в одном формате, разовую ручную заливку превращают в фоновую.
Регламентное задание. Внешнюю обработку
назначают на расписание: 1С сама забирает файл из заданной папки и грузит ночью. Настраивается в разделе Администрирование → Обслуживание → Регламентные и фоновые задания (в клиент-серверной базе задание выполняет сервер).
Чтение файла из кода. Основа автоматизации — чтение табличного документа. Минимальный рабочий пример перебора строк:
ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать("C:\import\price.xlsx");
Для НомерСтроки = 2 По ТабДок.ВысотаТаблицы Цикл
Артикул = СокрЛП(ТабДок.Область(НомерСтроки, 1).Текст);
Наименование = СокрЛП(ТабДок.Область(НомерСтроки, 2).Текст);
Если ПустаяСтрока(Артикул) Тогда
Продолжить;
КонецЕсли;
// здесь поиск по артикулу и запись элемента
КонецЦикла;
Цикл идёт со второй строки (первая — шапка), пустые строки пропускаются. Дальше по артикулу ищете элемент справочника и либо создаёте, либо обновляете — ту же логику, что в ручном режиме, вы описываете кодом один раз.
Загрузка из внешней программы. Когда источник данных — не файл, а другая система (сайт, складская программа), заливку запускают снаружи через COM-соединение с базой. Внешняя программа подключается к 1С, передаёт данные и вызывает процедуру записи. Такой сценарий уже требует программиста, но принцип тот же: поиск по ключу и запись реквизитов.
Обмен без участия человека. Между своими базами 1С настраивают узлы обмена и синхронизацию данных (Администрирование → Синхронизация данных): заливка идёт по расписанию штатным механизмом, без выгрузки в файл вручную. Результат каждого сеанса остаётся в журнале обмена — там видно, какие объекты перенесены и где возникли предупреждения.
Автоматизацию запускайте только после того, как та же заливка несколько раз прошла руками без ошибок. Фоновое задание повторит любую ошибку настройки молча и во всех строках сразу.
Как проверить результат заливки
Протокол обработки говорит, сколько строк записано, но не гарантирует, что данные встали правильно. Сверьте три вещи.
- Количество. Число загруженных строк из протокола должно совпасть с числом строк данных в файле (без шапки). Расхождение — значит, часть строк пропущена; ищите их в протоколе.
- Справочник. Откройте целевой справочник, отсортируйте список по дате создания или воспользуйтесь отбором по новым элементам. Пробегите глазами первые и последние записи: нет ли задвоений, не слиплись ли колонки.
- Остатки — оборотно-сальдовой. Если грузили начальные остатки, сформируйте оборотно-сальдовую ведомость на дату ввода. Итог по дебету и кредиту должен сойтись с исходной таблицей; расхождение сразу покажет, какой счёт залит неверно.
Нашли ошибку в уже залитой порции — не правьте сотни элементов руками. Удалите загруженную партию (её легко отобрать по дате создания) и перезалейте исправленный файл. Это быстрее и надёжнее точечной правки.
Частые вопросы
Можно ли залить данные в 1С без внешней обработки?
Как обновить цены у существующей номенклатуры, не создавая дубли?
Почему после загрузки ИНН контрагентов отображается неверно?
В каком формате сохранять файл для загрузки?
.xlsx напрямую, поэтому подойдёт обычная книга Excel. Если данные готовите в самой 1С, используйте родной формат табличного документа .mxl.