Загрузка таблицы Excel в 1С 8.3: от подготовки файла до автоматического импорта
Содержание
Перенести Excel в 1С 8.3 проще всего встроенной командой Загрузить в списке справочника или в табличной части документа: в Бухгалтерии 3.0 и Управлении торговлей 11 она открывает форму, куда вставляется таблица из Excel, после чего программа сопоставляет колонки и создаёт или обновляет элементы. Для нетиповых объектов используют внешнюю обработку
загрузки из табличного документа, для больших и регулярных переносов — обмен через XML или свою обработку с регламентным заданием.
Типичная ситуация: поставщик прислал прайс на 800 позиций, а накладная пришла в xlsx на 120 строк. Вбивать вручную — день работы и гарантированные опечатки. Импорт данных из Excel в 1С занимает 10–20 минут, если файл подготовлен правильно. Именно подготовка решает, загрузится таблица с первого раза или придётся чистить дубли.
Какой способ импорта выбрать
Способов загрузить Excel в 1С пять. Они различаются тем, куда идут данные и как часто нужен перенос.
| Способ | Когда подходит | Риски |
|---|---|---|
1. Команда Загрузить в списке справочника | Номенклатура, контрагенты, разовая загрузка | Дубли, если не настроен поиск по коду или артикулу |
| 2. Загрузка в табличную часть документа | Накладная, заказ, инвентаризация из xlsx | Строки без найденной номенклатуры пропускаются или создают новые элементы |
| 3. Внешняя обработка загрузки из табличного документа | Любые справочники, документы, регистры сведений | Нужны права на внешние обработки, легко перезаписать реквизиты |
| 4. Универсальный обмен данными в формате XML | Перенос между базами 1С по правилам | Нужны правила конвертации, Excel напрямую не читает |
| 5. Своя обработка + регламентное задание | Ежедневный прайс, выгрузка из сайта или склада | Требует программиста и сопровождения |
Для разовой загрузки номенклатуры или накладной в типовой конфигурации хватает первых двух способов. Внешняя обработка нужна, когда встроенной команды у объекта нет.
Как подготовить файл Excel к загрузке в 1С
Девять из десяти неудачных загрузок связаны с файлом, а не с 1С. Перед переносом приведите таблицу к «плоскому» виду.
Структура листа:
- 📄 Одна строка заголовков, данные начинаются сразу под ней. Шапку документа, логотип и подписи удалите.
- 🧱 Никаких объединённых ячеек. Выделите лист и снимите объединение.
- ➖ Без пустых строк внутри таблицы и без строк «Итого» — 1С примет их за позиции.
- 🔢 Одна колонка — один реквизит: артикул отдельно, наименование отдельно, единица отдельно.
Значения в ячейках:
- 🔤 ИНН, КПП, артикулы и штрихкоды храните как текст. Иначе Excel срежет ведущий ноль у ИНН
0274...или превратит штрихкод в4,6E+12. - 💰 Цены и количества — числа, без пробелов-разделителей и без «руб.» в ячейке. Разделитель дробной части должен совпадать с региональными настройками.
- 📅 Даты — в формате даты, а не текстом «12 марта».
- ✂️ Лишние пробелы уберите формулой
=СЖПРОБЕЛЫ(A2), затем скопируйте колонку и вставьте как значения. - 🧮 Формулы замените значениями: выделите таблицу,
Копировать,Специальная вставка → Значения.
Ключ поиска. Решите заранее, по какому полю 1С будет искать существующие элементы: артикул, код, ИНН или штрихкод. Колонка ключа должна быть заполнена у всех строк и не содержать повторов. Проверить повторы можно условным форматированием «Повторяющиеся значения».
Сохраните файл в .xlsx. Формат .xls 1С тоже читает, но в старом формате чаще встречаются проблемы с кодировкой и длинными строками.
Загрузка данных из Excel в справочники и документы 1С штатными средствами
В актуальных релизах Бухгалтерии 3.0, Управления торговлей 11 и других конфигураций на Библиотеке стандартных подсистем есть встроенный механизм загрузки из файла. Отдельная обработка не нужна.
Загрузка в справочник (номенклатура, контрагенты)
- Откройте список справочника, например
Справочники → Товары и услуги → Номенклатурав Бухгалтерии 3.0. - В командной панели нажмите
Загрузить. Если кнопки не видно, проверьте менюЕщё. - В открывшейся форме будет пустая таблица-шаблон. Скопируйте данные из Excel вместе с заголовками и вставьте в неё (
Ctrl+V). Можно и выбрать файл кнопкой загрузки из файла. - Нажмите
Далее. Программа покажет, какие колонки она узнала, и предложит сопоставить остальные. - На шаге сопоставления проверьте строки со статусом «новый» и «не сопоставлено» — это кандидаты на дубли.
- Нажмите кнопку загрузки и дождитесь отчёта о результате.
Загрузка в табличную часть документа
- Создайте документ, например
Покупки → Поступление (акты, накладные, УПД), заполните шапку: контрагента, договор, склад. - Над табличной частью
Товарынайдите кнопкуЗагрузить(в некоторых релизах она в менюЕщё). - Вставьте строки из Excel: номенклатура, количество, цена, сумма, ставка НДС.
- Сопоставьте номенклатуру. Строки, для которых товар не найден, программа предложит создать или пропустить.
- Проверьте итоговую сумму документа с суммой в файле поставщика и только потом проводите.
Если в файле поставщика наименования отличаются от ваших («Бумага А4 Снегурочка 500л» против «Бумага офисная А4»), автоматическое сопоставление по наименованию создаст новые карточки. Сопоставляйте по артикулу или штрихкоду, а остальное правьте вручную на шаге сопоставления.
Внешняя обработка «Загрузка данных из табличного документа»
Когда у объекта нет встроенной команды загрузки (нетиповой справочник, регистр сведений
, табличная часть доработанного документа), используют универсальную внешнюю обработку. Её файл с расширением .epf распространяется для пользователей с сопровождением 1С, есть версии для обычных и управляемых форм. Для интерфейса «Такси» нужна версия под управляемые формы.
Как открыть обработку:
- Разово: главное меню
Файл → Открыть, выберите файл.epf. Нужны права на интерактивное открытие внешних обработок; в типовых конфигурациях оно по умолчанию разрешено только администратору. - Постоянно:
Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки, кнопкаДобавить из файла. Так обработку можно выдать нужным пользователям без расширения прав.
Порядок работы:
- Выберите режим загрузки: в справочник, в табличную часть или в регистр сведений.
- Укажите вид объекта, например справочник «Номенклатура».
- На закладке табличного документа откройте файл Excel или вставьте данные из буфера.
- На закладке настроек задайте для каждого реквизита номер колонки или фиксированное значение. Например, «Вид номенклатуры» = «Товар» для всех строк.
- Отметьте реквизит, по которому искать существующие элементы, и флажок «Не создавать новых», если нужно только обновить.
- Нажмите
Контроль заполнения: обработка подсветит строки, где значения не найдены. - Сохраните настройки в файл, чтобы при следующей загрузке не настраивать колонки заново.
- Нажмите
Загрузить.
Перед загрузкой в рабочую базу сделайте резервную копию: внешняя обработка пишет прямо в объекты и может перезаписать заполненные реквизиты пустыми значениями из файла. Выгрузите базу в .dt через Конфигуратор или скопируйте каталог файловой базы, когда в ней никто не работает
.
Сопоставление колонок Excel и реквизитов 1С
Сопоставление — шаг, на котором решается качество импорта. Проверяйте три вещи.
Ссылочные реквизиты. Колонки «Единица», «Ставка НДС», «Группа», «Страна» в 1С — ссылки на другие справочники или перечисления. Текст из Excel должен совпадать с наименованием в 1С: «шт» найдётся, «шт.» с точкой — может не найтись. Ставку НДС пишите так, как она называется в программе, например «20%».
Ключ поиска. Для номенклатуры надёжнее артикул или код, для контрагентов — ИНН. Поиск по наименованию оставляйте на крайний случай.
Пустые колонки. Не сопоставляйте колонку, которую не хотите менять. Иначе пустые ячейки затрут реквизит у существующих элементов.
Пример сопоставления прайса поставщика:
Прогоните загрузку на 10–20 строках, проверьте 2–3 созданные карточки и только потом грузите весь файл. Ошибку в сопоставлении проще увидеть на десятке элементов, чем на восьмистах.
Перенос через «Универсальный обмен данными в формате XML»
Обработка «Универсальный обмен данными в формате XML» переносит данные между базами 1С по правилам обмена. Правила готовят в конфигурации «Конвертация данных». Сам Excel эта обработка не читает, поэтому прямой загрузки xlsx через неё нет.
Когда этот путь оправдан:
- 🔁 данные из Excel уже однажды загружены в одну базу и их надо разнести ещё по нескольким;
- 🏢 переносите справочники при переходе со старой конфигурации на новую, а часть данных хранится в таблицах;
- 📦 нужен перенос со связанными объектами: номенклатура вместе с единицами, видами и ценами.
Схема работы:
- Загрузите Excel в базу-источник способами 1–3 выше (подойдёт и копия базы).
- В базе-источнике откройте обработку универсального обмена, на закладке выгрузки укажите файл правил и файл данных
.xml, отметьте нужные правила выгрузки и запустите. - В базе-приёмнике откройте ту же обработку, на закладке загрузки выберите полученный
.xmlи загрузите. - Проверьте протокол обмена: в нём видно, какие объекты созданы, а какие не найдены.
Для одного справочника из одного файла этот путь избыточен. Он нужен, когда важна целостность связей, а не скорость.
Если данные из Excel не загрузились в 1С
Если ни одна подсказка не подошла, сохраните лист Excel как .csv или вставьте данные через буфер обмена прямо в форму загрузки. Так отсекается проблема формата файла: остаётся только сопоставление колонок.
Автоматизация регулярной загрузки и выгрузки
Если прайс поставщика или выгрузка из склада приходит каждый день, ручная загрузка превращается в рутину. Её автоматизируют своей обработкой.
Основа — чтение файла средствами платформы. Начиная с версии 8.3.6 объект ТабличныйДокумент умеет читать .xlsx методом Прочитать(). Excel на сервере для этого не нужен, в отличие от старого способа через COM-объект Excel.Application.
Пример чтения файла и обхода строк:
ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать(ПутьКФайлу, СпособЧтенияЗначенийТабличногоДокумента.Значение);
// Строка 1 — заголовки, данные со второй строки
Для НомерСтроки = 2 По ТабДок.ВысотаТаблицы Цикл
Артикул = СокрЛП(ТабДок.Область(НомерСтроки, 1).Текст);
Наименование = СокрЛП(ТабДок.Область(НомерСтроки, 2).Текст);
Цена = ТабДок.Область(НомерСтроки, 3).Значение;
Если ПустаяСтрока(Артикул) Тогда
Продолжить;
КонецЕсли;
// Здесь поиск номенклатуры по артикулу
// и запись цены или создание элемента
КонецЦикла;
Дальше логика зависит от задачи: найти номенклатуру по артикулу, записать цены документом установки цен, создать заказ.
Как запускать по расписанию:
- ⏰ Регламентное задание в доработанной конфигурации или в расширении. Расширения конфигурации доступны с версии 8.3.6 и не снимают базу с поддержки.
- 📂 Файл кладут в общую папку, к которой есть доступ у пользователя, от имени которого работает сервер 1С. Для файловой базы задание выполняется, только пока открыт хотя бы один сеанс или запущен сервис регламентных заданий.
- 🧾 Обработка пишет протокол: сколько строк загружено, какие пропущены и почему. Без протокола ошибки в данных незаметно накапливаются.
Обратная задача — выгрузка из 1С в Excel. Любой отчёт или список сохраняется в xlsx через Файл → Сохранить как или кнопку сохранения в форме отчёта. Программно табличный документ записывается методом Записать() с типом файла ТипФайлаТабличногоДокумента.XLSX.
Автоматическая загрузка, которая меняет цены или остатки, должна запускаться в нерабочее время или блокировать только свои данные. Иначе пользователи увидят ошибки записи при параллельной работе с теми же элементами.