Как загрузить данные в 1С 8.3 — из Excel, XML, JSON и других программ

· 10 мин

Содержание

Чтобы сделать загрузку данных в 1С 8.3, чаще всего хватает встроенной команды: откройте список справочника (например, Номенклатура) или табличную часть документа, нажмите Загрузить или найдите в меню Ещё пункт загрузки из файла, вставьте таблицу из Excel и сопоставьте колонки. Для обмена между базами 1С есть Администрирование → Синхронизация данных, для внешних систем — XML, JSON и HTTP-запросы.

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

Как подготовить файл перед загрузкой в 1С

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

Требования к таблице Excel:

  • 📋 Одна строка — один объект. Шапка — в первой строке, без объединённых ячеек.
  • 🔢 Числа хранятся как числа. Цена 1 250,00 ₽ текстом не распознается — уберите символ валюты и пробелы.
  • 🔑 Есть ключевое поле для поиска: артикул, ИНН, код. По наименованию сопоставлять ненадёжно — «Болт М8» и «Болт М8» с двумя пробелами для программы разные.
  • 📅 Даты в одном формате — ДД.ММ.ГГГГ.
  • 🧹 Нет пустых строк в середине, итоговых строк и скрытых столбцов.
  • 📐 Единицы измерения и ставки НДС записаны так же, как в справочниках 1С: шт, а не штук; 20%, а не 0,2.

Требования к XML и JSON:

  • кодировка UTF-8;
  • корректная структура — проверьте файл любым валидатором до загрузки;
  • для обмена по правилам — версия формата должна совпадать с той, которую поддерживает ваша конфигурация.

Сначала загрузите 5–10 строк в копию базы. Если всё легло правильно — загружайте весь файл в рабочую.

Перед массовой загрузкой сделайте резервную копию: Конфигуратор → Администрирование → Выгрузить информационную базу (файл .dt). Без копии откатить неудачную загрузку тысяч объектов почти невозможно. Для выгрузки .dt пользователи должны выйти из базы — делайте это вне рабочего времени.

Загрузка данных штатными средствами 1С без программиста

В типовых конфигурациях на базе БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11, КА, ERP) встроен механизм «Загрузка данных из файла». Он работает в справочниках и табличных частях документов.

Загрузка справочника из Excel

  1. Откройте форму списка справочника: Справочники → Товары и услуги → Номенклатура в Бухгалтерии 3.0.
  2. Нажмите Загрузить (если кнопки нет на панели — ищите в меню Ещё).
  3. В открывшейся таблице вставьте данные из Excel через Ctrl+V или выберите файл.
  4. Укажите соответствие колонок реквизитам справочника.
  5. Задайте, по какому полю искать существующие элементы: артикул, код или наименование.
  6. Нажмите Далее. Программа покажет, какие строки создадут новые элементы, какие обновят существующие, а какие не распознаны.
  7. Проверьте результат и завершите загрузку.

Так же загружают контрагентов (в Бухгалтерии — Справочники → Покупки и продажи → Контрагенты), физлиц, основные средства в части справочника.

Загрузка строк в документ

В документах с табличной частью товаров (Поступление (акты, накладные, УПД), Реализация (акты, накладные, УПД), Счёт покупателю) над табличной частью есть команда Загрузить. Порядок тот же: вставили таблицу, сопоставили колонки, проверили.

Если номенклатура из файла не найдена в справочнике, строка останется пустой или программа предложит создать элемент. Не соглашайтесь вслепую — получите дубли товаров с чуть другими названиями.

Банковские выписки

Выписки грузят отдельным механизмом: Банк и касса → Банковские выписки → Загрузить. Файл из клиент-банка — текстовый, формат обмена 1CClientBankExchange, часто называется kl_to_1c.txt. Если ваш банк подключён через «1С:ДиректБанк», файл не нужен — выписка приходит кнопкой.

Начальные остатки

Для ввода остатков при старте учёта в Бухгалтерии есть помощник ввода начальных остатков в разделе Главное. Остатки по счетам можно вводить вручную или загружать в табличные части документов ввода остатков той же командой Загрузить.

Обработки для загрузки данных в 1С

Когда штатной команды нет или её мало, используют внешние обработки (.epf). Открываются через Файл → Открыть или подключаются в Администрирование → Печатные формы, отчёты и обработки → Дополнительные отчёты и обработки.

ОбработкаЧто умеетКогда выбирать
«Загрузка данных из табличного документа» (с диска ИТС)Загружает в любой справочник, документ, регистр сведенийНестандартный объект, где нет кнопки Загрузить
«Универсальный обмен данными в формате XML»Выгрузка и загрузка по правилам обменаПеренос между разными конфигурациями
Самописная обработкаЛюбая логика: свои форматы, расчёты, проверкиРегулярная загрузка от одного поставщика или системы

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

Перенос между базами 1С

Для обмена между типовыми конфигурациями (Бухгалтерия ↔ УТ, Бухгалтерия ↔ ЗУП) правила писать не нужно. Есть готовые сценарии синхронизации через формат EnterpriseData: Администрирование → Синхронизация данных. Включите флажок синхронизации, выберите программу-партнёр и настройте, какие данные и с какой даты передавать.

Для переноса из старых или нетиповых баз используют «Конвертацию данных»: в ней составляют правила, затем выгружают и загружают по ним через «Универсальный обмен данными в формате XML».

Загрузка XML и JSON: интеграция 1С с внешними системами

Сайт, маркетплейс, CRM, складская программа обычно отдают данные в XML или JSON. Встроенный язык 1С читает оба формата без внешних компонент.

Чтение JSON из файла

ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.ОткрытьФайл("D:\Обмен\orders.json");
Данные = ПрочитатьJSON(ЧтениеJSON); // Структура или Массив
ЧтениеJSON.Закрыть();

Для Каждого Заказ Из Данные.orders Цикл
    Сообщить(СтрШаблон("Заказ %1 на сумму %2", Заказ.number, Формат(Заказ.total, "ЧДЦ=2")));
КонецЦикла;

ПрочитатьJSON возвращает структуру, если ключи — корректные имена. Если в JSON ключи с дефисами или начинаются с цифры, передайте второй параметр Истина — получите Соответствие вместо структуры, и обращаться к полям придётся через Заказ.Получить("order-id").

Получение данных по HTTP

Соединение = Новый HTTPСоединение("api.example.ru", , , , , 30, Новый ЗащищенноеСоединениеOpenSSL);
Запрос = Новый HTTPЗапрос("/v1/products");
Запрос.Заголовки.Вставить("Authorization", "Bearer " + Токен);
Ответ = Соединение.Получить(Запрос);

Если Ответ.КодСостояния = 200 Тогда
    ЧтениеJSON = Новый ЧтениеJSON;
    ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку("UTF-8"));
    Товары = ПрочитатьJSON(ЧтениеJSON);
    ЧтениеJSON.Закрыть();
КонецЕсли;

Токен храните не в коде, а в защищённом хранилище или константе с ограниченными правами.

Когда внешняя система сама отправляет данные в 1С

Тогда 1С публикуют на веб-сервере (IIS или Apache) и дают доступ одним из способов:

  • 🌐 HTTP-сервисы — свой REST-интерфейс, который пишет разработчик в конфигураторе;
  • 📡 Стандартный интерфейс OData — автоматический REST-доступ к объектам без программирования, включается в настройках публикации и составом объектов;
  • 🧩 Веб-сервисы (SOAP) — для систем, где принят этот протокол.

XML читают объектами ЧтениеXML (потоково, для больших файлов) или через XDTO, если есть схема XSD.

Загрузка данных из Excel: нюансы и типичные ошибки

Excel — самый частый источник и самый частый источник проблем.

Диагностика: выберите симптом

Чтение Excel в своей обработке

Платформа 8.3 читает .xlsx в табличный документ без установленного Excel:

ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать("D:\Обмен\price.xlsx");

Для НомерСтроки = 2 По ТабДок.ВысотаТаблицы Цикл // строка 1 — шапка
    Артикул = СокрЛП(ТабДок.Область(НомерСтроки, 1).Текст);
    ЦенаТекст = СтрЗаменить(ТабДок.Область(НомерСтроки, 3).Текст, " ", "");
    Цена = ?(ПустаяСтрока(ЦенаТекст), 0, Число(СтрЗаменить(ЦенаТекст, ",", ".")));
    // дальше — поиск номенклатуры по артикулу и запись цены
КонецЦикла;

Число() вызовет исключение на мусоре в ячейке. В рабочей обработке оборачивайте преобразование в Попытка … Исключение и пишите номер строки в протокол.

Автоматическая загрузка по расписанию

Регулярную загрузку (заказы с сайта каждые 15 минут, курсы, остатки склада) не стоит делать руками.

Регламентные задания

Разработчик создаёт регламентное задание в конфигурации, а расписание задают в Администрирование → Обслуживание → Регламентные и фоновые задания.

  • В клиент-серверной базе задания выполняет сервер 1С, даже если никто не вошёл.
  • В файловой базе задания выполняются, только пока открыт хотя бы один сеанс клиента. Для ночной загрузки в файловом варианте это ненадёжно.

Запуск по расписанию Windows

Для файловой базы рабочий вариант — планировщик заданий Windows и пакетный файл:

@echo off
rem путь к 1cv8.exe замените на номер своей версии платформы
"C:\Program Files\1cv8\8.3.24.1467\bin\1cv8.exe" ENTERPRISE /F "D:\Bases\Trade" /N "Обмен" /P "пароль" /Execute "D:\Scripts\load.epf" /DisableStartupMessages

Обработка из /Execute должна сама в конце завершать сеанс — например, вызовом ЗавершитьРаботуСистемы(Ложь) из формы. Иначе процесс 1С останется висеть, и следующий запуск упрётся в него.

Пароль в bat-файле лежит открытым текстом. Создайте для обмена отдельного пользователя с правами только на нужные объекты и ограничьте доступ к папке со скриптом.

Для серверных сценариев без интерфейса также используют внешнее соединение (COM-объект V83.COMConnector), но только на Windows.

Ошибки при загрузке и откат изменений

Хорошая обработка загрузки делает три вещи: проверяет, логирует и откатывает.

Проверка до записи. Сначала разбор файла в таблицу значений и проверка: все ли товары найдены, нет ли пустых сумм, совпадает ли количество строк. Записывать в базу — только после проверки.

Транзакции. Связанные объекты пишите в одной транзакции: если упадёт пятая запись, первые четыре откатятся.

НачатьТранзакцию();
Попытка
    // запись документов пачки
    ЗафиксироватьТранзакцию();
Исключение
    ОтменитьТранзакцию();
    ЗаписьЖурналаРегистрации("Загрузка заказов", УровеньЖурналаРегистрации.Ошибка, , ,
        ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;

Протокол. Номер строки файла, текст ошибки, что пропущено. Пишите в журнал регистрации или отдельный файл — потом смотрите в Администрирование → Обслуживание → Журнал регистрации.

Если загрузили лишнее

  1. Найдите созданные объекты: отбор списка по дате создания или по автору.
  2. Пометьте их на удаление.
  3. Запустите Администрирование → Обслуживание → Удаление помеченных объектов. Программа удалит только те объекты, на которые нет ссылок.
  4. Если объектов тысячи и они уже переплелись с рабочими документами — восстановите базу из .dt, сделанного перед загрузкой. Работа пользователей после копии при этом потеряется — согласуйте момент.

Как ускорить загрузку больших объёмов в 1С

Загрузка 100 000 строк «в лоб» может идти часами. Что реально ускоряет:

  • ⚡ Режим загрузки. Перед записью установите Объект.ОбменДанными.Загрузка = Истина. Отключаются проверки и обработчики подписок, запись идёт в разы быстрее. Минус: проверки заполнения не работают, следить за корректностью придётся самому.
  • 📦 Пачки в транзакциях. Одна транзакция на 500–1000 объектов. Одна транзакция на всё — долгие блокировки и большой откат при сбое. Транзакция на каждый объект — медленно.
  • 🔍 Кэш поиска. Не ищите товар запросом на каждой строке. Один раз получите соответствие «артикул → ссылка» и берите из него.
  • 📝 Запись без проведения. Документы запишите, а проведите потом групповым перепроведением за период — так проще поймать ошибки и разнести нагрузку.
  • 🖥️ Запуск на сервере. В клиент-серверной базе выносите загрузку в фоновое задание: данные не гоняются между клиентом и сервером.
ПодходСкоростьРиск
Штатная команда ЗагрузитьПодходит до нескольких тысяч строкМинимальный
Обработка с обычной записьюСредняяНизкий: проверки работают
Обработка с ОбменДанными.Загрузка = ИстинаВысокаяНужна своя проверка данных
Фоновое задание + пачкиСамая высокая для серверной базыНужен разработчик

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

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

Можно ли загрузить данные в 1С из Google Таблиц?
Напрямую — нет. Скачайте таблицу в формате .xlsx и загрузите как обычный файл Excel. Для регулярной загрузки разработчик может получать CSV по ссылке HTTP-запросом.
Как загрузить в 1С файл CSV?
Откройте его в Excel, проверьте разделитель и кодировку, сохраните как .xlsx и загрузите штатной командой. В обработке CSV читают построчно через ЧтениеТекста и делят строку функцией СтрРазделить.
Чем загрузка из файла отличается от синхронизации данных?
Загрузка из файла — разовая операция: файл пришёл, вы его загрузили. Синхронизация — постоянный обмен между двумя программами: изменения передаются туда и обратно по расписанию или кнопкой.
Можно ли загрузить данные в облачную 1С (1С:Фреш)?
Да, штатная команда Загрузить работает так же, как в локальной базе. Со своими внешними обработками в сервисе строже: правила их подключения уточняйте у поставщика сервиса.
Загрузка изменит уже существующие элементы?
Если найден элемент по ключевому полю, штатный механизм предложит обновить его реквизиты. Отключите обновление, если нужно только добавить новые позиции.