Как перенести реквизиты контрагентов и номенклатуры из Excel, CSV и XML в справочники 1С

· 10 мин

Содержание

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

Типичная ситуация: поставщик прислал прайс на 800 позиций с артикулами, а отдел продаж — таблицу из 300 контрагентов с ИНН, КПП и адресами из старой CRM. Руками это два-три рабочих дня. С подготовленным файлом и правильно выбранным ключом поиска — около часа, включая проверку.

Какие реквизиты и куда загружаются из файла

Из файла в 1С попадают не «реквизиты вообще», а значения конкретных полей конкретных объектов. Выбор инструмента зависит от того, куда идут данные.

Что загружаемКудаЧем удобнее
Наименование, артикул, единица, ставка НДССправочник «Номенклатура»Встроенная команда Загрузить в списке (БП 3.0)
ИНН, КПП, наименование, адрес контрагентаСправочник «Контрагенты»Заполнение по ИНН из сервиса или внешняя обработка
БИК, корр. счёт, название банкаСправочник «Банки»Классификатор банков, а не ручной файл
Расчётные счета контрагентовСправочник «Банковские счета»Внешняя обработка или код
Строки товаров с количеством и ценойТабличная часть документаКоманда Загрузить над табличной частью
Цены, штрихкоды, дополнительные свойстваРегистры сведенийВнешняя обработка в режиме регистра

💡 Банковские реквизиты не везите из таблиц. БИК, корреспондентский счёт и название банка 1С берёт из классификатора банков, который обновляется через Администрирование → Интернет-поддержка и сервисы. Из файла нужен только номер расчётного счёта и БИК, по которому программа сама найдёт банк.

Есть и реквизиты, которые лучше не загружать вовсе: остатки по счетам, взаиморасчёты, начисления. Это не справочные данные, а движения. Их вводят документами ввода остатков, иначе вы получите элементы без истории и расхождения в отчётах.

Подготовка файла с реквизитами: Excel, CSV, XML

Большинство сбоев при загрузке закладывается ещё в файле. Требования простые, но их легко пропустить.

Excel (xlsx, xls)

  • 📌 Первая строка — заголовки колонок, одна строка на один объект.
  • 📌 Без объединённых ячеек, итоговых строк, пустых строк в середине и картинок.
  • 📌 Данные на первом листе. Скрытые строки и столбцы удалите, а не прячьте.
  • 📌 Колонки ИНН, КПП, артикул, штрихкод, расчётный счёт — в текстовом формате.

Последний пункт критичен. Excel считает ИНН числом и молча отрезает ведущий ноль: 0105012345 превращается в 105012345. Штрихкод из 13 цифр он показывает как 4,60123E+12, а 20-значный расчётный счёт вообще округляет, теряя последние цифры.

Формат «Текстовый» нужно ставить ДО ввода или вставки данных. Если число уже испорчено, смена формата ячейки его не вернёт: восстанавливайте значения из исходника.

CSV и TXT

CSV — это текст, где поля разделены точкой с запятой или запятой. Он хорош для выгрузок из CRM и сайтов. Проверьте три вещи:

  1. Кодировку: UTF-8 или Windows-1251. Если в 1С вместо кириллицы видны «кракозябры», кодировка выбрана не та.
  2. Разделитель. Русский Excel сохраняет CSV через ;, многие выгрузки с сайтов — через ,.
  3. Кавычки. Наименование вида ООО "Ромашка", филиал должно быть взято в кавычки целиком, иначе запятая разрежет его на два поля.

XML

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

Файл готов к загрузке
Выполнено: 0 / 6

Встроенная загрузка реквизитов в 1С:Бухгалтерии 3.0

В актуальных релизах БП 3.0 загружать номенклатуру и строки документов можно без внешних обработок.

Номенклатура из Excel

  1. Откройте Справочники → Товары и услуги → Номенклатура.
  2. Встаньте в нужную группу, чтобы новые позиции попали туда.
  3. Нажмите Загрузить в командной панели списка. Если кнопки не видно, она в меню Ещё.
  4. Выберите файл. Программа покажет таблицу с данными.
  5. Над каждой колонкой выберите, какому реквизиту она соответствует: наименование, артикул, единица, ставка НДС, цена.
  6. Колонки, которые не нужны, оставьте без сопоставления — они пропускаются.
  7. Нажмите Далее и проверьте отчёт: какие позиции будут созданы, какие найдены как существующие.
  8. Подтвердите загрузку.

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

Строки документа из файла

Над табличной частью «Товары» в поступлении, реализации и счёте есть та же команда Загрузить. Она нужна, когда поставщик прислал накладную в Excel, а набивать 150 строк вручную нет смысла. Номенклатура ищется по артикулу или наименованию; не найденные позиции можно создать прямо из мастера загрузки.

Контрагенты: реквизиты по ИНН

Для контрагента файл часто не нужен вовсе. Введите в новой карточке ИНН и нажмите Заполнить: наименование, КПП, ОГРН и юридический адрес подтянутся из ЕГРЮЛ/ЕГРИП. Работает при подключённой интернет-поддержке и действующей подписке на сервис проверки контрагентов.

Для списка из 300 ИНН это всё равно 300 карточек. Тогда загружают ИНН внешней обработкой или кодом, а затем запускают обновление реквизитов по ИНН для созданных элементов.

Внешняя обработка «Загрузка данных из табличного документа»

Это универсальный инструмент, который годами раздаётся с дисков ИТС. Он грузит данные в любой справочник, табличную часть документа или регистр сведений . Для 8.3 с интерфейсом «Такси» нужна версия обработки под управляемые формы.

Как открыть

  • В файловой базе или при полных правах: главное меню → Файл → Открыть, выбрать .epf.
  • Штатно в БП 3.0: Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки, добавить обработку из файла.

Платформа при открытии внешней обработки показывает предупреждение о защите от опасных действий. Это нормально для обработки из проверенного источника.

Порядок работы

  1. Выберите режим: загрузка в справочник, в табличную часть или в регистр сведений.
  2. Укажите объект, например справочник «Контрагенты».
  3. Вставьте данные из Excel в табличное поле обработки или откройте файл.
  4. На вкладке настроек отметьте реквизиты, которые загружаете, и номера колонок для каждого.
  5. Поставьте флажок поиска у ключевого реквизита. Для контрагентов это ИНН, для номенклатуры — артикул.
  6. Укажите номер первой строки с данными, чтобы не загрузить заголовки.
  7. Запустите контроль заполнения. Обработка покажет ячейки, для которых не нашлось значения.
  8. Только после чистого контроля нажмите загрузку.

💡 Для ссылочных реквизитов (единица измерения, вид номенклатуры, страна) обработка ищет элемент по тексту ячейки. «шт» и «шт.» — разные строки. Приведите написание к тому, что стоит в справочнике, до загрузки.

Программная загрузка реквизитов из файла: пример для разработчика

Когда загрузка повторяется или требует логики (взять ИНН, проверить КПП, дописать банковский счёт), пишут свою обработку. Два приёма, без которых она не заработает в клиент-серверной базе:

  • 🔹 Файл передаётся на сервер. Путь C:\Загрузка\kontragenty.csv есть на компьютере пользователя, но не на сервере 1С. Помещайте файл во временное хранилище (ПоместитьФайл или НачатьПомещениеФайла), а на сервере получайте его через ПолучитьИзВременногоХранилища и записывайте во временный файл.
  • 🔹 Поиск до создания. Каждая строка сначала ищется по ключу, и только если не найдена, создаётся новый элемент. Иначе повторный запуск удвоит справочник.

Пример серверной процедуры для CSV с колонками ИНН; КПП; Наименование:

&НаСервереБезКонтекста
Процедура ЗагрузитьКонтрагентовИзCSV(ИмяФайла)

    Чтение = Новый ЧтениеТекста(ИмяФайла, КодировкаТекста.UTF8);
    Строка = Чтение.ПрочитатьСтроку(); // пропускаем заголовок
    Строка = Чтение.ПрочитатьСтроку();

    Пока Строка <> Неопределено Цикл

        Поля = СтрРазделить(Строка, ";", Истина);
        Если Поля.Количество() < 3 Тогда
            Строка = Чтение.ПрочитатьСтроку();
            Продолжить;
        КонецЕсли;

        ИНН = СокрЛП(Поля[0]);
        Ссылка = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", ИНН);

        Если Ссылка.Пустая() Тогда
            Объект = Справочники.Контрагенты.СоздатьЭлемент();
            Объект.ИНН = ИНН;
        Иначе
            Объект = Ссылка.ПолучитьОбъект();
        КонецЕсли;

        Объект.КПП = СокрЛП(Поля[1]);
        Объект.Наименование = СокрЛП(Поля[2]);

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

        Строка = Чтение.ПрочитатьСтроку();

    КонецЦикла;

    Чтение.Закрыть();

КонецПроцедуры

Для Excel вместо ЧтениеТекста используют табличный документ: ТабДок = Новый ТабличныйДокумент; ТабДок.Прочитать(ИмяФайла);, а затем перебирают строки от 2 до ТабДок.ВысотаТаблицы и берут текст ячеек через ТабДок.Область("R" + Формат(НомерСтроки, "ЧГ=0") + "C1").Текст. Для XML — объект ЧтениеXML или XDTO, если есть схема.

Пример пишет только три реквизита. В типовой конфигурации у контрагента есть обязательные поля (вид «юридическое/физическое лицо», полное наименование, страна регистрации). Заполните их в коде, иначе карточки будут неполными, а отчёты для налоговой — с пустыми полями.

Свою обработку лучше оформлять расширением конфигурации или внешней обработкой. Правка типовой конфигурации ради загрузки усложнит каждое обновление.

Загрузка реквизитов по расписанию и интеграции

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

СпособКогда подходитЧто нужно
Регламентное задание в расширенииФайл кладут в сетевую папку по расписаниюСерверная база или файловая с запуском заданий, доступ сервера к папке
Синхронизация данных (EnterpriseData)Обмен между типовыми конфигурациями 1СНастройка в разделе Администрирование → Синхронизация данных
HTTP-сервис или ODataСайт или CRM отправляет данные самиПубликация базы на веб-сервере, программист
COM-соединениеВнешний скрипт открывает базу и пишет данныеЗарегистрированный comcntr.dll, учётная запись с правами

В клиент-серверной базе регламентное задание выполняется от имени службы сервера 1С. Значит, у пользователя, под которым работает служба, должны быть права на чтение сетевой папки. Это самая частая причина, почему «вручную грузится, а по расписанию нет».

💡 После успешной загрузки задание должно переносить файл в архивную папку с датой в имени. Так один и тот же прайс не загрузится дважды, а у вас останется след, что и когда пришло.

Безопасность массовой загрузки

Загрузка из файла меняет сотни элементов за секунды. Откатить её одной кнопкой нельзя.

  • 🛡 Перед первой загрузкой в рабочую базу сделайте резервную копию: выгрузку .dt или копию каталога файловой базы.
  • 🛡 Первый прогон — на копии базы. Проверьте 10–20 случайных элементов и отчёт, где эти данные участвуют.
  • 🛡 Внешние обработки берите только из проверенных источников. Обработка выполняет любой код с вашими правами, в том числе удаление данных .
  • 🛡 Права на открытие внешних обработок давайте не всем. Хватит одного-двух ответственных.
  • 🛡 Файлы с данными физических лиц (ИП, сотрудники, паспортные данные) — это персональные данные. Не пересылайте их через личные мессенджеры и не оставляйте в общих папках после загрузки.

Ошибки при загрузке реквизитов из файла

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

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

Можно ли загрузить реквизиты контрагентов только по списку ИНН?
Да. Загрузите ИНН в справочник обработкой или кодом, а наименование, КПП и адрес заполните из ЕГРЮЛ через сервис проверки контрагентов по кнопке заполнения в карточке.
Как обновить цены у существующей номенклатуры, не создавая новые позиции?
Включите поиск по артикулу и запретите создание новых элементов в настройках загрузчика. Найденные позиции обновятся, ненайденные попадут в отчёт об ошибках.
Почему загрузка в файловой базе работает, а в серверной — нет?
Код читает путь к файлу на сервере, а файл лежит на компьютере пользователя. Передайте его через временное хранилище.
Сколько строк можно загрузить за один раз?
Жёсткого лимита нет, но файл на десятки тысяч строк удобнее делить на части по 5–10 тысяч: ошибку в одной части проще найти и повторить.
Нужно ли блокировать работу пользователей на время загрузки?
Монопольный режим не нужен. Но если загрузка меняет элементы, которые прямо сейчас открыты у коллег, их запись может завершиться ошибкой. Крупные загрузки лучше запускать вне рабочего времени.

Источники

  • Федеральный закон от 27.07.2006 № 152-ФЗ «О персональных данных»