Как перенести реквизиты контрагентов и номенклатуры из Excel, CSV и XML в справочники 1С
Содержание
Загрузить реквизиты в 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 и сайтов. Проверьте три вещи:
- Кодировку: UTF-8 или Windows-1251. Если в 1С вместо кириллицы видны «кракозябры», кодировка выбрана не та.
- Разделитель. Русский Excel сохраняет CSV через
;, многие выгрузки с сайтов — через,. - Кавычки. Наименование вида
ООО "Ромашка", филиалдолжно быть взято в кавычки целиком, иначе запятая разрежет его на два поля.
XML
XML приходит из других программ и обменов. Его не грузят «колонками»: нужна обработка или правила, которые знают структуру файла. Если вам прислали XML в формате обмена EnterpriseData, его загружают через синхронизацию данных, а не через табличный загрузчик.
Встроенная загрузка реквизитов в 1С:Бухгалтерии 3.0
В актуальных релизах БП 3.0 загружать номенклатуру и строки документов можно без внешних обработок.
Номенклатура из Excel
- Откройте
Справочники → Товары и услуги → Номенклатура. - Встаньте в нужную группу, чтобы новые позиции попали туда.
- Нажмите
Загрузитьв командной панели списка. Если кнопки не видно, она в менюЕщё. - Выберите файл. Программа покажет таблицу с данными.
- Над каждой колонкой выберите, какому реквизиту она соответствует: наименование, артикул, единица, ставка НДС, цена.
- Колонки, которые не нужны, оставьте без сопоставления — они пропускаются.
- Нажмите
Далееи проверьте отчёт: какие позиции будут созданы, какие найдены как существующие. - Подтвердите загрузку.
Существующие элементы программа ищет по артикулу или наименованию. Поэтому одинаковые наименования у разных товаров — прямой путь к тому, что цена одной позиции попадёт в другую.
Строки документа из файла
Над табличной частью «Товары» в поступлении, реализации и счёте есть та же команда Загрузить. Она нужна, когда поставщик прислал накладную в Excel, а набивать 150 строк вручную нет смысла. Номенклатура ищется по артикулу или наименованию; не найденные позиции можно создать прямо из мастера загрузки.
Контрагенты: реквизиты по ИНН
Для контрагента файл часто не нужен вовсе. Введите в новой карточке ИНН и нажмите Заполнить: наименование, КПП, ОГРН и юридический адрес подтянутся из ЕГРЮЛ/ЕГРИП. Работает при подключённой интернет-поддержке и действующей подписке на сервис проверки контрагентов.
Для списка из 300 ИНН это всё равно 300 карточек. Тогда загружают ИНН внешней обработкой или кодом, а затем запускают обновление реквизитов по ИНН для созданных элементов.
Внешняя обработка «Загрузка данных из табличного документа»
Это универсальный инструмент, который годами раздаётся с дисков ИТС. Он грузит данные в любой справочник, табличную часть документа или регистр сведений . Для 8.3 с интерфейсом «Такси» нужна версия обработки под управляемые формы.
Как открыть
- В файловой базе или при полных правах: главное меню →
Файл → Открыть, выбрать.epf. - Штатно в БП 3.0:
Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки, добавить обработку из файла.
Платформа при открытии внешней обработки показывает предупреждение о защите от опасных действий. Это нормально для обработки из проверенного источника.
Порядок работы
- Выберите режим: загрузка в справочник, в табличную часть или в регистр сведений.
- Укажите объект, например справочник «Контрагенты».
- Вставьте данные из Excel в табличное поле обработки или откройте файл.
- На вкладке настроек отметьте реквизиты, которые загружаете, и номера колонок для каждого.
- Поставьте флажок поиска у ключевого реквизита. Для контрагентов это ИНН, для номенклатуры — артикул.
- Укажите номер первой строки с данными, чтобы не загрузить заголовки.
- Запустите контроль заполнения. Обработка покажет ячейки, для которых не нашлось значения.
- Только после чистого контроля нажмите загрузку.
💡 Для ссылочных реквизитов (единица измерения, вид номенклатуры, страна) обработка ищет элемент по тексту ячейки. «шт» и «шт.» — разные строки. Приведите написание к тому, что стоит в справочнике, до загрузки.
Программная загрузка реквизитов из файла: пример для разработчика
Когда загрузка повторяется или требует логики (взять ИНН, проверить КПП, дописать банковский счёт), пишут свою обработку. Два приёма, без которых она не заработает в клиент-серверной базе:
- 🔹 Файл передаётся на сервер. Путь
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 случайных элементов и отчёт, где эти данные участвуют.
- 🛡 Внешние обработки берите только из проверенных источников. Обработка выполняет любой код с вашими правами, в том числе удаление данных .
- 🛡 Права на открытие внешних обработок давайте не всем. Хватит одного-двух ответственных.
- 🛡 Файлы с данными физических лиц (ИП, сотрудники, паспортные данные) — это персональные данные. Не пересылайте их через личные мессенджеры и не оставляйте в общих папках после загрузки.
Ошибки при загрузке реквизитов из файла
Частые вопросы
Можно ли загрузить реквизиты контрагентов только по списку ИНН?
Как обновить цены у существующей номенклатуры, не создавая новые позиции?
Почему загрузка в файловой базе работает, а в серверной — нет?
Сколько строк можно загрузить за один раз?
Нужно ли блокировать работу пользователей на время загрузки?
Источники
- Федеральный закон от 27.07.2006 № 152-ФЗ «О персональных данных»