Импорт таблицы из CSV в 1С 8.3: от подготовки файла до загрузки по расписанию
Содержание
Загрузить 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 и других конфигураций на Библиотеке стандартных подсистем. Он работает с номенклатурой, контрагентами, ценами и строками документов.
Справочник: номенклатура, контрагенты
- Откройте список справочника, например
Справочники → Товары и услуги → Номенклатура. - Нажмите кнопку Загрузить в командной панели списка. Если кнопки не видно, найдите её в меню Ещё.
- Откроется форма-шаблон с колонками справочника. Вставьте данные из буфера или нажмите команду загрузки из файла и выберите ваш
.csv. - Нажмите Далее. Программа сопоставит строки с уже существующими элементами.
- Проверьте результат сопоставления и решите, что делать с новыми строками: создавать элементы или пропустить.
- Завершите загрузку и откройте пару созданных элементов — проверьте единицу измерения, ставку НДС и вид номенклатуры.
Табличная часть документа
Строки поступления товаров, реализации, инвентаризации грузятся так же, только команда стоит над табличной частью документа:
- Создайте документ и заполните шапку: контрагент, склад, договор.
- Над табличной частью «Товары» нажмите Загрузить (или найдите её в Ещё).
- Вставьте или загрузите CSV, сопоставьте колонки, нажмите Загрузить.
- Проверьте итоговую сумму документа с итогом файла.
Загрузка в документ добавляет строки к уже имеющимся. Если загружаете повторно после ошибки — сначала очистите табличную часть, иначе количество удвоится.
Если команды «Загрузить» нет
Значит, у объекта не включена загрузка из файла или конфигурация старая/доработанная. Варианты: загрузить внешней обработкой (раздел ниже) или попросить программиста подключить объект к подсистеме загрузки данных из файла.
Как 1С сопоставляет колонки CSV с реквизитами
Сопоставление — главный шаг. Ошибка здесь не выдаёт сообщения, а тихо создаёт дубли.
Колонки. В шаблоне загрузки колонки фиксированы: наименование, артикул, единица, цена и т. д. Порядок колонок в вашем CSV должен совпасть с шаблоном, иначе цены попадут в артикулы. Проще всего переставить колонки в файле заранее, а лишние удалить.
Строки. Программа ищет существующий элемент по ключевому полю. Для номенклатуры это обычно артикул, штрихкод или наименование, для контрагентов — ИНН. Поиск по наименованию самый ненадёжный: Болт М8х40 и Болт М8 х 40 для 1С — разные товары.
Типы данных. Каждая колонка превращается в значение определённого типа:
| Тип реквизита | Что должно быть в CSV | Что ломается |
|---|---|---|
| Число (цена, количество) | 1250,50 или 1250.50 | пробелы между разрядами, знак ₽, текст шт |
| Дата | 07.10.2026 | 10/07/2026, дата с временем в другой колонке |
| Строка (ИНН, артикул) | 0274123456 | потерянные ведущие нули, формат 2,74E+09 |
| Ссылка (единица, ставка НДС) | текст, как в справочнике: шт, 20% | штук, 20 без знака процента |
| Булево | Да/Нет или 1/0 | пустые ячейки вместо Нет |
Ссылочные колонки 1С ищет по представлению. Если в базе единица называется шт, а в файле штука, строка не сопоставится. Лучше привести такие значения к виду из справочника ещё в файле.
Кракозябры и «всё в одной колонке»: кодировка и разделители
Две самые частые жалобы при импорте 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 через мастер импорта, а затем скопировать диапазон и вставить в табличное поле обработки.
Порядок работы:
Файл → Открыть(меню с тремя полосками в левом верхнем углу), выберите.epf. Если файл не открывается, у пользователя нет права на интерактивное открытие внешних обработок — это настраивает администратор.- Укажите, куда грузить: справочник, табличную часть документа или регистр сведений .
- На закладке настройки отметьте реквизиты, которые грузите, и номер колонки для каждого.
- Для ссылочных реквизитов задайте, по какому полю искать: по коду, наименованию, ИНН.
- Вставьте данные, нажмите Контроль заполнения, исправьте красные ячейки, затем Загрузить.
Настройку сопоставления можно сохранить в файл. Для регулярной загрузки одного и того же прайса это экономит десяток кликов каждый раз.
Своя обработка на встроенном языке
Если формат файла постоянный, проще написать короткую обработку. Чтение 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 тысяч строк или грузите серверной обработкой, а не через форму.