Как загрузить в 1С базу данных из Excel, XML и JSON
Содержание
Чтобы загрузить данные в 1С 8.3, выберите способ по источнику. Таблица Excel со списком товаров или контрагентов — кнопка Загрузить прямо в списке справочника или над табличной частью документа. Другая база 1С — универсальный обмен данными в формате XML с правилами конвертации. Файл JSON или XML от сайта и внешней системы — обработка с кодом на встроенном языке.
Перед любой загрузкой сделайте резервную копию базы . Массовый импорт за минуту создаёт сотни объектов, а «отменить» его одной кнопкой нельзя. Поэтому первые 10–20 строк всегда грузите на пробу и смотрите, что получилось.
Подготовка данных перед загрузкой в 1С
Больше половины проблем при импорте возникает не в 1С, а в исходном файле. Полчаса на чистку таблицы экономят день на удаление дублей.
Резервная копия
Файловая база: закройте все сеансы и скопируйте каталог базы целиком или выгрузите её в файл .dt через Конфигуратор → Администрирование → Выгрузить информационную базу. Для выгрузки .dt пользователи должны выйти из базы — предупредите их заранее и делайте это вне рабочего времени.
Клиент-серверная база : попросите администратора сделать резервную копию средствами СУБД. Это быстрее и не требует выгонять пользователей.
Чистка таблицы
📌 Что проверить в Excel до загрузки:
- 🧹 Одна строка — один объект. Без объединённых ячеек, промежуточных итогов и пустых строк посреди данных.
- 🏷️ Шапка в одну строку. Заголовки колонок понятные: «Наименование», «Артикул», «ИНН», «Цена».
- 🔢 Числа — числами. Цена
1 250,00с неразрывным пробелом или с текстом «руб.» не превратится в число. Уберите пробелы заменой и задайте числовой формат. - 📅 Даты — в одном формате.
05.03.2025, а не вперемешку с5 мартаи2025-03-05. - 🆔 Ключ для поиска заполнен везде. Если 1С будет искать контрагента по ИНН, пустой ИНН у трёх строк даст три новых контрагента вместо обновления.
- 🔁 Дубли убраны. Отсортируйте по ключевой колонке и проверьте соседние строки.
Пробная база
Первую загрузку прогоните на копии. В клиент-серверном варианте администратор разворачивает копию из бэкапа, в файловом — достаточно загрузить .dt в новую пустую базу. Посмотрели результат, поправили файл — тогда загружайте в рабочую.
Какой способ загрузки данных в 1С выбрать
| Источник | Способ | Когда подходит | Риски |
|---|---|---|---|
| Excel, список элементов | Кнопка Загрузить в списке справочника | Номенклатура, контрагенты, до нескольких тысяч строк | Дубли при плохом ключе поиска |
| Excel, строки документа | Загрузить над табличной частью | Поступление, реализация, инвентаризация | Несопоставленные позиции |
| Excel, нестандартный объект | Универсальная обработка загрузки из табличного документа | Справочники и регистры без встроенной загрузки | Ошибки в настройке колонок |
| Другая база 1С | Универсальный обмен данными XML | Перенос между разными конфигурациями | Нужны правила конвертации |
| Та же конфигурация, частично | Синхронизация данных или выгрузка/загрузка XML | Справочники и остатки между копиями | Затирание существующих данных |
| JSON, XML от внешней системы | Своя обработка на встроенном языке | Сайт, маркетплейс, CRM | Нужен программист |
💡 Если нужно перенести базу целиком, со всеми данными и конфигурацией, — это не импорт, а загрузка файла .dt через Конфигуратор. Она полностью заменяет данные приёмника.
Загрузка из Excel в 1С встроенными средствами
В типовых конфигурациях на БСП (Бухгалтерия 3.0, УТ 11, КА 2, ERP) загрузка из таблицы встроена в списки справочников и табличные части многих документов. Внешние обработки не нужны.
Загрузка в справочник
На примере номенклатуры в Бухгалтерии 3.0:
- Откройте
Справочники → Номенклатура. - Нажмите
Загрузитьв командной панели списка. Если кнопки не видно, проверьте менюЕщё. - В открывшейся форме вставьте данные: скопируйте диапазон в Excel и вставьте в таблицу формы через
Ctrl+V. Либо выберите файл кнопкой загрузки из файла. - На следующем шаге сопоставьте колонки: укажите, в какой колонке наименование, в какой артикул, единица, ставка НДС.
- 1С покажет, какие строки найдены в базе, а какие будут созданы. Проверьте этот список внимательно.
- Нажмите кнопку завершения загрузки и откройте пару созданных элементов — все ли реквизиты заполнились.
Так же работает загрузка контрагентов: ключом поиска лучше сделать ИНН, а не наименование. «ООО Ромашка» и «Ромашка ООО» для 1С — разные строки.
Загрузка в табличную часть документа
Типичный случай — поставщик прислал накладную на 300 позиций в Excel.
- Создайте документ поступления, заполните шапку: контрагент, договор, склад.
- Над табличной частью «Товары» нажмите
Загрузить(или найдите команду в менюЕщётабличной части). - Вставьте строки из Excel, сопоставьте колонки: номенклатура, количество, цена, сумма, ставка НДС.
- Строки, для которых 1С не нашла номенклатуру, будут отмечены. Сопоставьте их вручную или разрешите создать новые элементы.
- После загрузки сверьте итоговую сумму документа с итогом накладной.
Если в накладной поставщика названия товаров отличаются от ваших, не создавайте новые элементы автоматически. Иначе через месяц в справочнике будет «Бумага А4 Снегурочка» и «Бумага офисная А4 Снегурочка 500л» с разными остатками.
Универсальная обработка загрузки из табличного документа
Если встроенной кнопки нет — например, нужно загрузить данные в регистр сведений или в справочник отраслевой конфигурации, — используют внешнюю обработку загрузки из табличного документа. Её распространяют для управляемых форм 8.3 вместе с материалами методической поддержки.
Как запустить
Откройте файл обработки через Файл → Открыть (в меню с тремя полосками). Для этого нужны права на открытие внешних обработок; у обычного пользователя их часто нет. Безопасный вариант — администратор добавляет обработку в Администрирование → Печатные формы, отчёты и обработки → Дополнительные отчёты и обработки.
Как настроить
- Выберите режим: в справочник, в табличную часть или в регистр сведений.
- Укажите объект — например, справочник «Контрагенты».
- Обработка покажет список реквизитов объекта. Для каждого нужного реквизита задайте номер колонки в таблице.
- Отметьте реквизит, по которому искать существующие элементы.
- Для реквизитов, которых нет в файле, можно задать значение по умолчанию: например, вид контрагента «Юридическое лицо».
- Вставьте данные на закладку с табличным документом или прочитайте файл.
- Запустите контроль заполнения, исправьте ошибки и только потом загружайте.
💡 Сохраните настройку в файл. При следующей загрузке того же формата не придётся заново расставлять колонки.
Универсальный обмен данными XML: перенос между базами 1С
Когда данные надо загрузить из одной базы 1С в другую с иной структурой — скажем, из старой самописной конфигурации в Бухгалтерию 3.0, — используют связку из двух частей:
- 📄 Правила обмена — XML-файл, в котором описано, какой объект источника во что превращается в приёмнике. Правила разрабатывают в конфигурации «Конвертация данных » редакции 2.
- ⚙️ Обработка «Универсальный обмен данными в формате XML» — выполняет выгрузку по этим правилам и загрузку в приёмник. В конфигурациях на БСП она обычно доступна через
Все функции → Обработки. МенюВсе функциивключается в параметрах программы.
Порядок переноса
- В базе-источнике откройте обработку, на закладке выгрузки укажите файл правил и файл данных.
- Задайте период и отметьте нужные правила выгрузки: справочники, остатки, документы.
- Выполните выгрузку. Получится XML-файл с данными.
- В базе-приёмнике откройте ту же обработку, закладку загрузки, укажите файл данных.
- Запустите загрузку. Документы по умолчанию приходят непроведёнными — проведите их отдельно, когда проверите.
- Просмотрите протокол обмена: в нём перечислены объекты, которые не удалось записать.
Для переноса между двумя типовыми конфигурациями (например, из УТ в Бухгалтерию) сначала посмотрите встроенную синхронизацию в Администрирование → Синхронизация данных. Она работает через формат EnterpriseData, а правила уже готовы. Писать свои правила под такую задачу — лишняя работа.
Если обе базы на одной и той же конфигурации и одной версии, правила не нужны: подойдёт выгрузка-загрузка данных XML. Эта обработка переносит объекты «как есть», вместе с внутренними идентификаторами. Работает она грубо: при совпадении идентификатора объект в приёмнике перезаписывается. Пробный прогон на копии здесь обязателен.
Как 1С ищет и обновляет объекты при загрузке
Главный вопрос любой загрузки: что делать, если такой объект в базе уже есть. Ответ задают правила поиска.
Варианты поиска
| Ключ поиска | Где уместен | Чем опасен |
|---|---|---|
| Уникальный идентификатор | Перенос между базами, где объекты созданы обменом | В чужой базе совпадений нет — всё создастся заново |
| Код | Справочники с ручной нумерацией | Коды в разных базах часто пересекаются |
| ИНН + КПП | Контрагенты | У ИП и обособленных подразделений свои нюансы |
| Артикул | Номенклатура | Пустой артикул у части позиций |
| Наименование | Последний вариант | Пробел, кавычки, регистр — и это уже другой элемент |
В правилах конвертации можно задать цепочку: сначала искать по идентификатору, не нашли — по ИНН, затем по наименованию. Это сильно снижает число дублей.
Что делать с найденным объектом
Для каждого правила решают отдельно:
- ✏️ Обновлять реквизиты найденного объекта значениями из файла. Подходит для цен и описаний.
- 🔒 Не замещать существующий объект. Подходит, когда в приёмнике данные уже поправлены вручную и их жалко.
- 🚫 Не создавать, если не найден. Подходит для загрузки строк документа: лишняя номенклатура в справочнике не нужна.
Режим «обновлять всё» на рабочей базе — частая причина затёртых реквизитов. Например, загрузили прайс, а вместе с ценой обнулилась ставка НДС, потому что колонка в файле была пустой.
Загрузка данных в 1С из XML и JSON программно
Когда данные приходят регулярно — заказы с сайта, остатки с маркетплейса, ответы API, — ручной импорт не годится. Пишут обработку или регламентное задание на встроенном языке.
Чтение JSON
Объект ЧтениеJSON появился в платформе 8.3.6. Пример — прочитать файл с товарами и создать недостающие элементы:
Чтение = Новый ЧтениеJSON;
Чтение.ОткрытьФайл("C:\import\goods.json");
Данные = ПрочитатьJSON(Чтение, Истина); // Истина — читать в Соответствие
Чтение.Закрыть();
Для Каждого Строка Из Данные.Получить("items") Цикл
Артикул = Строка.Получить("sku");
Ссылка = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Артикул);
Если Ссылка.Пустая() Тогда
Объект = Справочники.Номенклатура.СоздатьЭлемент();
Объект.Артикул = Артикул;
Объект.Наименование = Строка.Получить("name");
Объект.Записать();
КонецЕсли;
КонецЦикла;
Это скелет. В рабочем коде добавляют транзакцию, обработку исключений, заполнение обязательных реквизитов (вид номенклатуры, единица) и журнал загрузки.
Чтение XML
Для XML есть три уровня:
ЧтениеXML— потоковое чтение узел за узлом. Подходит для больших файлов, расходует мало памяти.ЧтениеDOMиПостроительDOM— загрузить документ целиком и ходить по дереву. Удобно для небольших файлов сложной структуры.ФабрикаXDTO— чтение по XSD-схеме. Подходит для формализованных форматов, где схема известна заранее.
Пример потокового чтения:
Чтение = Новый ЧтениеXML;
Чтение.ОткрытьФайл("C:\import\orders.xml");
Пока Чтение.Прочитать() Цикл
Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента
И Чтение.Имя = "order" Тогда
Номер = Чтение.ПолучитьАтрибут("number");
// создание или поиск документа по номеру
КонецЕсли;
КонецЦикла;
Чтение.Закрыть();
💡 Не трогайте код типовой конфигурации ради загрузки. Внешняя обработка или расширение не ломается при обновлении релиза.
Ошибки при загрузке данных в 1С и как их устранить
Как не создать проблем на ровном месте
- 🧪 Грузите сначала 10–20 строк, а не весь файл. Проверили — загружайте остальное.
- 📆 Не загружайте документы в закрытый период: даты запрета изменения не пропустят запись, а снятие запрета ради импорта ломает сданную отчётность.
- 🧾 Остатки на начало работы вводите документами ввода остатков на дату перед началом учёта, а не поступлениями.
- 🗑️ Неудачную загрузку убирайте пометкой на удаление и
Администрирование → Обслуживание → Удаление помеченных объектов. Удаление помеченных лучше запускать, когда в базе нет пользователей.
Частые вопросы
Как загрузить в 1С базу целиком из файла .dt?
Администрирование → Загрузить информационную базу и укажите файл. Текущие данные базы будут полностью заменены, поэтому загружайте .dt в новую пустую базу или после резервной копии.