Импорт таблицы из CSV в 1С 8.3: от подготовки файла до загрузки по расписанию

· 11 мин

Содержание

Загрузить CSV файл в 1С 8.3 можно без программиста: в типовых конфигурациях на БСП (Бухгалтерия 3.0, УТ 11, ЗУП 3.1) у списков справочников и у табличных частей документов есть команда Загрузить, а она принимает и .csv, и .xlsx. Если такой команды нет, файл грузят универсальной внешней обработкой или своим кодом на ЧтениеТекста.

Частое заблуждение — что CSV «плохой» формат и его надо сначала гнать через Excel. На деле почти все сбои при загрузке дают три вещи: кодировка, разделитель и формат чисел. Поправьте их до загрузки — и файл пройдёт с первого раза.

Что проверить в CSV до загрузки в 1С

CSV — это обычный текст, где колонки разделены символом, а строки — переводом строки. Программа 1С не угадывает ваш замысел, поэтому файл должен быть предсказуемым.

Откройте его не в Excel, а в текстовом редакторе (Блокнот, Notepad++). Excel молча меняет данные при открытии, и вы не увидите, что лежит в файле на самом деле.

Проверьте по списку:

  • 🔤 Кодировка. В Notepad++ она видна в строке состояния: UTF-8, UTF-8-BOM или Windows-1251 (ANSI).
  • ➗ Разделитель. Русский Excel сохраняет CSV через точку с запятой ;, выгрузки из зарубежных сервисов — через запятую ,, иногда через табуляцию.
  • 🔢 Числа. Дробная часть — запятая (1250,50), без пробелов между разрядами. Неразрывный пробел в 12 500 ломает распознавание числа.
  • 📅 Даты. Формат ДД.ММ.ГГГГ. Американские 10/07/2026 превратятся в путаницу дня и месяца.
  • 0️⃣ Ведущие нули. ИНН, КПП, артикулы и штрихкоды должны остаться текстом. Если файл хоть раз открывали и сохраняли в Excel, ИНН 0274... мог потерять первый ноль.
  • 🧾 Первая строка. Заголовки колонок — одной строкой, без объединённых ячеек и пустых строк сверху.
  • 🔁 Дубли. Одна и та же позиция дважды в файле даст два элемента справочника или сложится в документе.

Если в одной колонке встречается разделитель (например, ООО "Ромашка; филиал"), значение должно стоять в двойных кавычках. Правильный CSV так и делает, а самописные выгрузки часто нет — тогда строка «разъезжается» на лишние колонки.

Перед массовой загрузкой справочников сделайте резервную копию базы : Администрирование → Обслуживание → Резервное копирование и восстановление или выгрузку .dt из Конфигуратора. Откатить тысячу криво созданных элементов вручную намного дольше, чем восстановить копию.

Загрузка CSV в 1С встроенной командой «Загрузить»

Это основной способ для Бухгалтерии 3.0 и других конфигураций на Библиотеке стандартных подсистем. Он работает с номенклатурой, контрагентами, ценами и строками документов.

Справочник: номенклатура, контрагенты

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

Табличная часть документа

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

  1. Создайте документ и заполните шапку: контрагент, склад, договор.
  2. Над табличной частью «Товары» нажмите Загрузить (или найдите её в Ещё).
  3. Вставьте или загрузите CSV, сопоставьте колонки, нажмите Загрузить.
  4. Проверьте итоговую сумму документа с итогом файла.

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

Если команды «Загрузить» нет

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

Как 1С сопоставляет колонки CSV с реквизитами

Сопоставление — главный шаг. Ошибка здесь не выдаёт сообщения, а тихо создаёт дубли.

Колонки. В шаблоне загрузки колонки фиксированы: наименование, артикул, единица, цена и т. д. Порядок колонок в вашем CSV должен совпасть с шаблоном, иначе цены попадут в артикулы. Проще всего переставить колонки в файле заранее, а лишние удалить.

Строки. Программа ищет существующий элемент по ключевому полю. Для номенклатуры это обычно артикул, штрихкод или наименование, для контрагентов — ИНН. Поиск по наименованию самый ненадёжный: Болт М8х40 и Болт М8 х 40 для 1С — разные товары.

Типы данных. Каждая колонка превращается в значение определённого типа:

Тип реквизитаЧто должно быть в CSVЧто ломается
Число (цена, количество)1250,50 или 1250.50пробелы между разрядами, знак ₽, текст шт
Дата07.10.202610/07/2026, дата с временем в другой колонке
Строка (ИНН, артикул)0274123456потерянные ведущие нули, формат 2,74E+09
Ссылка (единица, ставка НДС)текст, как в справочнике: шт, 20%штук, 20 без знака процента
БулевоДа/Нет или 1/0пустые ячейки вместо Нет

Ссылочные колонки 1С ищет по представлению. Если в базе единица называется шт, а в файле штука, строка не сопоставится. Лучше привести такие значения к виду из справочника ещё в файле.

Сопоставление полей
Артикул→Номенклатура.Артикул (ключ поиска)
Наименование→Номенклатура.Наименование
Ед. изм.→Справочник «Единицы измерения» по наименованию
Ставка НДС→Ставка НДС по представлению (20%, 10%, Без НДС)
Количество→Число, дробная часть через запятую
Цена→Число, без пробелов и знака валюты

Кракозябры и «всё в одной колонке»: кодировка и разделители

Две самые частые жалобы при импорте CSV в 1С выглядят так: вместо русских букв Товар или Òîâàð, либо вся строка целиком легла в первую колонку.

Кодировка

  • Товар — файл в UTF-8, а прочитан как Windows-1251.
  • Òîâàð или знаки вопроса — обратная ситуация: файл в Windows-1251, а читают как UTF-8.

Надёжнее всего пересохранить файл в UTF-8 с BOM. Метка BOM в начале файла однозначно говорит программе, что это UTF-8. В Notepad++: меню Кодировки → Преобразовать в UTF-8-BOM, затем сохранить. В Excel: Файл → Сохранить как → CSV UTF-8 (разделитель — запятая).

В Notepad++ не путайте «Кодировать в…» и «Преобразовать в…». Первое меняет только толкование уже открытого текста, второе — перекодирует файл. Для исправления нужно «Преобразовать».

Разделитель

Если всё легло в одну колонку, разделитель в файле не тот, что ожидает загрузка. Самое простое — заменить его. В Notepad++ через Ctrl+H замените , на ;, но только если в данных нет дробных чисел с запятой. Иначе сначала смените дробный разделитель или откройте файл через мастер импорта Excel (Данные → Из текстового/CSV-файла): там разделитель и кодировка выбираются явно, а колонки ИНН и артикулов можно сразу пометить как текст.

Обходной путь через XLSX

Если CSV упорно не читается, откройте его мастером импорта Excel или LibreOffice Calc с явной кодировкой, проверьте колонки и сохраните как .xlsx. Команда Загрузить и универсальные обработки принимают Excel без вопросов о кодировке.

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

Внешняя обработка для загрузки CSV

Когда встроенной команды нет или нужно грузить в регистр, в документы целиком, в старую конфигурацию — используют внешнюю обработку .epf.

Универсальная загрузка из табличного документа

Это давняя обработка «Загрузка данных из табличного документа». Она работает с табличным документом 1С, поэтому CSV удобнее сначала открыть в Excel через мастер импорта, а затем скопировать диапазон и вставить в табличное поле обработки.

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

  1. Файл → Открыть (меню с тремя полосками в левом верхнем углу), выберите .epf. Если файл не открывается, у пользователя нет права на интерактивное открытие внешних обработок — это настраивает администратор.
  2. Укажите, куда грузить: справочник, табличную часть документа или регистр сведений .
  3. На закладке настройки отметьте реквизиты, которые грузите, и номер колонки для каждого.
  4. Для ссылочных реквизитов задайте, по какому полю искать: по коду, наименованию, ИНН.
  5. Вставьте данные, нажмите Контроль заполнения, исправьте красные ячейки, затем Загрузить.

Настройку сопоставления можно сохранить в файл. Для регулярной загрузки одного и того же прайса это экономит десяток кликов каждый раз.

Своя обработка на встроенном языке

Если формат файла постоянный, проще написать короткую обработку. Чтение CSV — пара десятков строк. Пример загружает цены по артикулу из файла вида Артикул;Цена:

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

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

    Пока Строка <> Неопределено Цикл
        НомерСтроки = НомерСтроки + 1;
        Поля = СтрРазделить(Строка, ";", Истина);

        Если Поля.Количество() < 2 Тогда
            Сообщить(СтрШаблон("Строка %1: мало колонок", Формат(НомерСтроки, "ЧГ=0")));
        Иначе
            Артикул = СокрЛП(Поля[0]);
            ТекстЦены = СтрЗаменить(СокрЛП(Поля[1]), " ", "");
            ТекстЦены = СтрЗаменить(ТекстЦены, ".", ",");
            Цена = Число(ТекстЦены);

            Ссылка = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Артикул);
            Если Ссылка.Пустая() Тогда
                Сообщить(СтрШаблон("Строка %1: не найден артикул %2",
                    Формат(НомерСтроки, "ЧГ=0"), Артикул));
            Иначе
                // здесь записываем цену: документ установки цен или регистр — по вашей конфигурации
            КонецЕсли;
        КонецЕсли;

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

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

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

Что важно в этом коде:

  • КодировкаТекста.UTF8 — для UTF-8, для Windows-1251 укажите КодировкаТекста.ANSI.
  • СтрРазделить есть в платформе 8.3.6 и новее. Он не понимает кавычки: если в полях бывают разделители внутри кавычек, нужен разбор посимвольно.
  • Число() выбросит исключение на нечисловом тексте. Для грязных файлов оберните его в Попытка … Исключение и пишите номер строки в сообщение.
  • Код выполняется на сервере, поэтому файл должен быть доступен серверу 1С: в клиент-серверном варианте путь вида C:\Users\... на компьютере пользователя сервер не увидит. Передайте файл через временное хранилище или положите в общую сетевую папку.

Автоматическая загрузка CSV по расписанию

Если CSV приходит каждый день (прайс поставщика, остатки маркетплейса, выгрузка из сайта), ручную загрузку стоит убрать.

СпособКогда подходитО чём помнить
Дополнительная обработка с расписаниемТиповая конфигурация на БСП, клиент-серверная базаОбработка должна поддерживать вызов серверного метода по расписанию
Регламентное задание в расширенииНужна надёжная серверная загрузка без изменения типовой конфигурацииНужен программист; расширение переживает обновления лучше доработок
Запуск 1cv8 из Планировщика WindowsФайловая база, простой сценарийНужен отдельный пользователь 1С, пароль хранится в задании

Дополнительная обработка. Подключается в Администрирование → Печатные формы, отчёты и обработки → Дополнительные отчёты и обработки. Если обработка написана как назначаемая с серверной командой, в её карточке у команды задаётся расписание. Тогда 1С сама забирает файл из папки обмена в нужное время.

Регламентное задание. В клиент-серверной базе выполняется на сервере без участия пользователей. В файловой базе регламентные задания работают, только пока открыт хотя бы один сеанс, — для ночной загрузки это неудобно.

Командная строка. Планировщик Windows запускает клиент 1С с параметром /Execute, который открывает внешнюю обработку. Номер версии в пути замените на установленный у вас:

"C:\Program Files\1cv8\8.3.25.1374\bin\1cv8.exe" ENTERPRISE /F "D:\Bases\Trade" /N "Загрузка" /P "пароль" /Execute "D:\Scripts\load_prices.epf"

Обработка при открытии сама читает файл, грузит и закрывает программу. Для этого заведите отдельного пользователя с минимальными правами: пароль в задании Планировщика лежит открытым текстом.

Чтобы автоматическая загрузка не ломалась:

  • 📂 Забирайте файлы из одной папки и после успешной загрузки переносите их в архив — так один файл не загрузится дважды.
  • 📝 Пишите журнал: имя файла, число строк, число ошибок. Удобно в журнал регистрации через ЗаписьЖурналаРегистрации.
  • 🚦 Если ошибок больше порога (скажем, 5% строк), не загружайте файл вовсе, а сообщите ответственному.
  • 🔒 Договоритесь с источником о неизменном формате: порядок колонок, кодировка, разделитель. Любая правка на их стороне ломает загрузку.

Особые случаи: банк, маркетплейсы, старые базы

Банковская выписка в CSV. Обработка Банк и касса → Банковские выписки → Загрузить ждёт файл обмена формата 1CClientBankExchange (обычно kl_to_1c.txt), а не CSV. Выгрузите из интернет-банка именно формат «для 1С». CSV-выписку загрузить можно только своей обработкой, и смысла в этом мало.

Отчёты маркетплейсов. Отчёты комиссионера приходят в CSV или XLSX с десятками колонок. Удалите лишние колонки, оставьте артикул, количество, сумму, и грузите в табличную часть отчёта комиссионера командой Загрузить. Артикулы маркетплейса часто не совпадают с вашими — заранее заполните их в карточках номенклатуры.

Большие файлы. На десятках тысяч строк форма загрузки работает медленно. Разбейте файл на части по 5–10 тысяч строк или грузите серверной обработкой, а не через форму.

Можно ли загрузить CSV в 1С без внешних обработок?
Да. В конфигурациях на БСП (Бухгалтерия 3.0, УТ 11, ЗУП 3.1) у справочников и табличных частей документов есть команда «Загрузить», она принимает CSV и Excel.
Какую кодировку выбрать для CSV, чтобы 1С прочитала русские буквы?
Надёжнее всего UTF-8 с BOM. Если источник отдаёт только Windows-1251, в своей обработке укажите КодировкаТекста.ANSI.
Почему после загрузки появились дубли номенклатуры?
Строки сопоставлялись по наименованию, а оно в файле написано иначе, чем в базе. Сопоставляйте по артикулу или штрихкоду, а дубли объедините через поиск и удаление дублей.
Как загрузить CSV в 1С через веб-клиент?
Команда «Загрузить» работает и в веб-клиенте: файл передаётся с компьютера пользователя на сервер. Внешнюю обработку в веб-клиенте открыть сложнее — её лучше подключить как дополнительную.
Можно ли отменить неудачную загрузку?
Кнопки отмены нет. Созданные элементы помечают на удаление и удаляют, строки документа очищают. При массовой ошибке быстрее восстановить резервную копию, сделанную перед загрузкой.