Как перенести таблицу Excel или CSV в 1С 8.3: форматы, обработки, скрипты
Содержание
Загрузить данные из Excel в 1С можно тремя путями: штатной обработкой «Загрузка данных из табличного документа», внешней обработкой под вашу задачу или собственным кодом, который читает файл и создаёт элементы справочников и документы. Для разовой загрузки номенклатуры или контрагентов хватает первого способа, для регулярных выгрузок от поставщиков нужен второй или третий.
Если вы ищете, как загружать эксель файлы в 1С без программиста, начните с подготовки таблицы. На ней ломается больше загрузок, чем на самой 1С. Ниже: требования к файлу, пошаговая загрузка из экселя в 1С, CSV, готовый код, типичные ошибки и автоматизация по расписанию.
Выберите способ загрузки
Сначала оцените задачу. Разное количество строк и разная частота требуют разных инструментов.
| Способ | Когда подходит | Минусы |
|---|---|---|
| Штатная обработка загрузки из табличного документа | Разовая загрузка справочников, до нескольких тысяч строк | Только справочники и простые сведения, документы не создаёт |
| Внешняя обработка (epf) | Нужны документы, особая логика, сопоставление по артикулу | Нужна обработка под вашу конфигурацию, её надо искать или заказывать |
| Свой код (COM или ТабличныйДокумент) | Регулярная загрузка, сложные правила | Нужен программист или навык разработки |
| Обмен через XML/EnterpriseData | Связь двух баз 1С | К Excel отношения не имеет |
Для одной загрузки на 300 позиций не нужен программист. Для прайса поставщика, который приходит каждую неделю, лучше сразу сделать нормальную обработку.
Подготовьте файл: на чём чаще всего ломается загрузка
Правила простые, но их нарушают постоянно.
- Одна таблица на листе. Шапка в первой строке, без объединённых ячеек.
- Один столбец — один вид данных. Не складывайте в «Наименование» ещё и артикул.
- Никаких итогов, пустых строк посреди таблицы и скрытых столбцов.
- Числа храните числами, а не текстом. Разделитель дробной части — один и тот же во всём столбце.
- Идентификаторы (ИНН, артикул, штрихкод) — текстом, иначе Excel отрежет ведущие нули и превратит длинное число в
1,23E+12. - Даты в одном формате, лучше
ДД.ММ.ГГГГ.
Что проверить перед стартом
- 🔹 ИНН: у юрлица 10 цифр, у ИП и физлица 12. Нулей в начале не потеряно.
- 🔹 Единицы измерения совпадают с теми, что уже есть в 1С (шт, кг, упак).
- 🔹 Нет дублей по ключевому полю (артикулу или ИНН).
- 🔹 Нет лишних пробелов в начале и в конце ячеек. Для этого есть функция
СЖПРОБЕЛЫ(в английском ExcelTRIM). - 🔹 Кодировка CSV известна: Windows-1251 или UTF-8.
Для CSV договоритесь о разделителе. В русской локали Excel сохраняет CSV с точкой с запятой, а не с запятой, и это обычная причина «всё склеилось в один столбец».
Стандартная обработка: загрузка из Excel в 1С по шагам
Рассмотрим номенклатуру. Принцип тот же для контрагентов и других справочников.
Шаг 1. Откройте обработку
В зависимости от конфигурации обработка живёт в разных местах. В Бухгалтерии 3.0 и ряде других типовых программ ищите кнопку загрузки в самом списке справочника (меню «Ещё» или пункт «Загрузить») либо в разделе Администрирование. Если не нашли, откройте форму поиска по командам интерфейса (Ctrl+F в разделе) и введите слово «загрузка».
В некоторых конфигурациях обработки нет. Тогда её подключают как внешнюю через Файл → Открыть и выбор .epf.
Шаг 2. Вставьте данные
- В Excel выделите нужные столбцы вместе со строками и скопируйте (
Ctrl+C). - В обработке откройте закладку с табличной частью, поставьте курсор в первую ячейку и вставьте (
Ctrl+V). - Либо откройте файл напрямую, если обработка это умеет: кнопка открытия файла, формат
.xlsx.
Шаг 3. Сопоставьте колонки
Для каждой колонки выберите, в какое поле 1С она пойдёт. Обработка предложит список реквизитов справочника. Лишние столбцы оставьте без сопоставления.
Шаг 4. Выберите режим сопоставления
Это главный выбор всей загрузки. Обработка спрашивает, как искать уже существующие записи:
- 🔸 только создавать новые (дубли возможны, если позиция уже есть);
- 🔸 искать по ключевому полю и обновлять найденные;
- 🔸 искать по ключевому полю, ненайденные создавать.
Для повторной загрузки прайса нужен третий вариант. Ключ выбирайте уникальный: артикул надёжнее наименования, потому что наименование у поставщика меняют.
Шаг 5. Проверьте и загрузите
Нажмите кнопку проверки (она показывает строки с проблемами). Исправьте найденное, затем запускайте загрузку. Результат смотрите в самом справочнике: отбор по группе или по дате создания.
Перед загрузкой сделайте копию информационной базы. Загрузка в рабочую базу без копии — это возможность массово создать мусор, который потом вручную не вычистишь.
Прогоните загрузку сначала на 5–10 строках. Если с ними всё хорошо, грузите остальное.
Загрузка CSV: когда нужен текстовый формат
CSV проще Excel: нет форматирования, формул и листов. Его хорошо читают и обработки, и скрипты. Подводные камни у него другие.
| Проблема | Как проявляется | Что делать |
|---|---|---|
| Кодировка | Вместо русских букв «кракозябры» | Пересохраните в UTF-8 или укажите кодировку при чтении |
| Разделитель | Все данные в одной колонке | Укажите ; или замените разделитель в файле |
| Кавычки внутри текста | Строка «ломается» на середине | Заключайте поля с кавычками в двойные кавычки |
| Числа с запятой | Цена 12,5 читается как текст | Заменить запятую на точку при разборе |
| Ведущие нули | ИНН 0012345678 стал 12345678 | Открывайте файл как текст, а не двойным кликом в Excel |
Двойной клик по CSV в Excel и пересохранение — самый частый способ испортить данные. Для проверки откройте файл в блокноте: то, что вы там видите, и получит 1С.
Чтение Excel и CSV своим кодом
Когда типовых средств мало, файл читает код на встроенном языке. Есть два основных приёма.
Вариант 1. ТабличныйДокумент (без Excel на сервере)
Современные релизы платформы 8.3 умеют читать .xlsx в табличный документ, и Excel для этого не нужен. Это удобно для серверных заданий.
Процедура ЗагрузитьИзФайла(ПутьКФайлу)
Таблица = Новый ТабличныйДокумент;
Таблица.Прочитать(ПутьКФайлу, СпособЧтенияЗначенийТабличногоДокумента.Значение);
Для НомерСтроки = 2 По Таблица.ВысотаТаблицы Цикл
Артикул = СокрЛП(Таблица.Область(НомерСтроки, 1).Текст);
Наименование = СокрЛП(Таблица.Область(НомерСтроки, 2).Текст);
Цена = Число(СтрЗаменить(Таблица.Область(НомерСтроки, 3).Текст, ",", "."));
Если ПустаяСтрока(Артикул) Тогда
Продолжить;
КонецЕсли;
// здесь поиск и создание элемента справочника
КонецЦикла;
КонецПроцедуры
Первая строка (2 в цикле) пропущена, потому что в ней шапка.
Вариант 2. COM-объект Excel (нужен установленный Excel)
Подходит для клиентских приложений на Windows. На сервере без Excel и в веб-клиенте не работает .
Excel = Новый COMОбъект("Excel.Application");
Excel.Workbooks.Open(ПутьКФайлу);
Лист = Excel.ActiveWorkbook.Sheets(1);
Последняя = Лист.UsedRange.Rows.Count;
Для Н = 2 По Последняя Цикл
Артикул = СокрЛП(Лист.Cells(Н, 1).Value);
КонецЦикла;
Excel.ActiveWorkbook.Close(0);
Excel.Quit();
COM-вариант медленный: каждое обращение к ячейке — отдельный вызов. На 20 тысячах строк это минуты. Читайте диапазон целиком в массив: Лист.Range("A1:C20000").Value.Выгрузить().
Вариант 3. CSV через ТекстовыйДокумент
Текст = Новый ТекстовыйДокумент;
Текст.Прочитать(ПутьКФайлу, КодировкаТекста.UTF8);
Для Н = 2 По Текст.КоличествоСтрок() Цикл
Части = СтрРазделить(Текст.ПолучитьСтроку(Н), ";", Истина);
Артикул = Части[0];
Наименование = Части[1];
КонецЦикла;
Если поля могут содержать ; внутри кавычек, простое разбиение не годится: нужен разбор с учётом кавычек.
Преобразование данных перед записью в базу
Между чтением файла и записью элемента всегда стоит этап приведения. Здесь решается, будет ли загрузка чистой.
- 🧹 Обрезать пробелы и невидимые символы (неразрывный пробел
Символ(160)из Excel не убирается обычнымСокрЛП). - 🔢 Привести числа: убрать пробелы-разделители тысяч, заменить запятую на точку.
- 📅 Привести даты: если в ячейке текст
05.10.2026, превратите его вДата(2026, 10, 5). - 🔗 Найти ссылки: единицу измерения, контрагента, группу номенклатуры нужно найти в справочнике, а не записывать строкой.
- 🚫 Решить судьбу ненайденного: создать, пропустить или записать в протокол ошибок.
Пример с неразрывным пробелом:
Значение = СтрЗаменить(Значение, Символ(160), "");
Значение = СокрЛП(Значение);
Протокол ошибок лучше вести всегда: номер строки файла и причина. Иначе после загрузки 3000 строк вы не узнаете, какие 40 не прошли.
Какие данные куда загружать
Не всё стоит грузить в одном формате. Ниже ориентир по типам данных.
Типичные ошибки и как их исправить
Симптом почти всегда указывает на причину. Пройдите по списку.
Автоматизация: загрузка по расписанию
Если файл приходит регулярно (прайс, выгрузка из кассы), ручная загрузка превращается в рутину. Автоматизация строится так:
- Файл попадает в одну и ту же сетевую папку (поставщик, почта, скрипт).
- Регламентное задание в 1С раз в сутки проверяет папку.
- Найденный файл читается через ТабличныйДокумент, данные пишутся в базу.
- Обработанный файл переносится в подпапку архива, чтобы не загрузиться дважды.
- Результат (сколько создано, сколько ошибок) уходит администратору на почту.
Расписание задаётся в разделе администрирования, где настраиваются регламентные и фоновые задания. Загрузку лучше ставить на ночь: на 10 тысячах записей база заметно притормаживает.
Шаг 4 про архив важен. Без него одно и то же вчерашнее вложение загрузится дважды, и документы задвоятся.
Безопасность и резервное копирование
Загрузка — это массовая запись в базу. Откатить её штатно нельзя, если вы не в режиме тестовой копии.
- 🛡 Копия базы перед каждой серьёзной загрузкой: выгрузка в
.dtчерез конфигуратор или копирование файла базы. - 🛡 Для проверки сначала загружайте в тестовую копию и смотрите результат.
- 🛡 Не берите «обработки с форума» без просмотра кода: внешняя обработка выполняется с правами вашего пользователя.
- 🛡 Ограничьте право запуска внешних обработок для обычных пользователей.
- 🛡 Файл с персональными данными (сотрудники, физлица) после загрузки удалите с общих папок.
Частые вопросы
Можно ли загрузить из Excel документы, а не только справочники?
Какой формат лучше: xls, xlsx или CSV?
.xlsx и CSV. Старый .xls читается хуже, пересохраните его в новый формат.