Как загрузить данные в 1С 8.3 — из Excel, XML, JSON и других программ
Содержание
Чтобы сделать загрузку данных в 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
- Откройте форму списка справочника:
Справочники → Товары и услуги → Номенклатурав Бухгалтерии 3.0. - Нажмите
Загрузить(если кнопки нет на панели — ищите в менюЕщё). - В открывшейся таблице вставьте данные из Excel через
Ctrl+Vили выберите файл. - Укажите соответствие колонок реквизитам справочника.
- Задайте, по какому полю искать существующие элементы: артикул, код или наименование.
- Нажмите
Далее. Программа покажет, какие строки создадут новые элементы, какие обновят существующие, а какие не распознаны. - Проверьте результат и завершите загрузку.
Так же загружают контрагентов (в Бухгалтерии — Справочники → Покупки и продажи → Контрагенты), физлиц, основные средства
в части справочника.
Загрузка строк в документ
В документах с табличной частью товаров (Поступление (акты, накладные, УПД), Реализация (акты, накладные, УПД), Счёт покупателю) над табличной частью есть команда Загрузить. Порядок тот же: вставили таблицу, сопоставили колонки, проверили.
Если номенклатура из файла не найдена в справочнике, строка останется пустой или программа предложит создать элемент. Не соглашайтесь вслепую — получите дубли товаров с чуть другими названиями.
Банковские выписки
Выписки грузят отдельным механизмом: Банк и касса → Банковские выписки → Загрузить. Файл из клиент-банка — текстовый, формат обмена 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.
Ошибки при загрузке и откат изменений
Хорошая обработка загрузки делает три вещи: проверяет, логирует и откатывает.
Проверка до записи. Сначала разбор файла в таблицу значений и проверка: все ли товары найдены, нет ли пустых сумм, совпадает ли количество строк. Записывать в базу — только после проверки.
Транзакции. Связанные объекты пишите в одной транзакции: если упадёт пятая запись, первые четыре откатятся.
НачатьТранзакцию();
Попытка
// запись документов пачки
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ЗаписьЖурналаРегистрации("Загрузка заказов", УровеньЖурналаРегистрации.Ошибка, , ,
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
Протокол. Номер строки файла, текст ошибки, что пропущено. Пишите в журнал регистрации или отдельный файл — потом смотрите в Администрирование → Обслуживание → Журнал регистрации.
Если загрузили лишнее
- Найдите созданные объекты: отбор списка по дате создания или по автору.
- Пометьте их на удаление.
- Запустите
Администрирование → Обслуживание → Удаление помеченных объектов. Программа удалит только те объекты, на которые нет ссылок. - Если объектов тысячи и они уже переплелись с рабочими документами — восстановите базу из
.dt, сделанного перед загрузкой. Работа пользователей после копии при этом потеряется — согласуйте момент.
Как ускорить загрузку больших объёмов в 1С
Загрузка 100 000 строк «в лоб» может идти часами. Что реально ускоряет:
- ⚡ Режим загрузки. Перед записью установите
Объект.ОбменДанными.Загрузка = Истина. Отключаются проверки и обработчики подписок, запись идёт в разы быстрее. Минус: проверки заполнения не работают, следить за корректностью придётся самому. - 📦 Пачки в транзакциях. Одна транзакция на 500–1000 объектов. Одна транзакция на всё — долгие блокировки и большой откат при сбое. Транзакция на каждый объект — медленно.
- 🔍 Кэш поиска. Не ищите товар запросом на каждой строке. Один раз получите соответствие «артикул → ссылка» и берите из него.
- 📝 Запись без проведения. Документы запишите, а проведите потом групповым перепроведением за период — так проще поймать ошибки и разнести нагрузку.
- 🖥️ Запуск на сервере. В клиент-серверной базе выносите загрузку в фоновое задание: данные не гоняются между клиентом и сервером.
| Подход | Скорость | Риск |
|---|---|---|
Штатная команда Загрузить | Подходит до нескольких тысяч строк | Минимальный |
| Обработка с обычной записью | Средняя | Низкий: проверки работают |
Обработка с ОбменДанными.Загрузка = Истина | Высокая | Нужна своя проверка данных |
| Фоновое задание + пачки | Самая высокая для серверной базы | Нужен разработчик |
Если в базе включён обмен с другой программой, массовая загрузка породит тысячи регистраций изменений. Перед загрузкой решите, нужно ли передавать эти объекты партнёру, иначе следующий сеанс синхронизации затянется надолго.
Частые вопросы
Можно ли загрузить данные в 1С из Google Таблиц?
Как загрузить в 1С файл CSV?
ЧтениеТекста и делят строку функцией СтрРазделить.Чем загрузка из файла отличается от синхронизации данных?
Можно ли загрузить данные в облачную 1С (1С:Фреш)?
Загрузить работает так же, как в локальной базе. Со своими внешними обработками в сервисе строже: правила их подключения уточняйте у поставщика сервиса.