Загрузка данных из файлов в 1С:Предприятие 8.3 — от кнопки до HTTP-сервиса

· 10 мин

Содержание

Загрузить файл в 1С проще всего штатной командой: в типовых конфигурациях на базе БСП (Бухгалтерия 3.0, УТ 11, ЗУП 3.1) у многих списков и табличных частей есть команда «Загрузить» из Excel или CSV. Банковскую выписку загружают через Банк и касса → Банковские выписки → Загрузить. Если штатной команды нет, берут универсальную обработку, а для регулярной загрузки из других систем — внешние источники данных или HTTP-сервис.

Выбор способа зависит от двух вещей: что за файл и как часто его грузить. Разовый прайс на 300 строк и ежечасная выгрузка заказов с сайта решаются по-разному.

Подготовка файла: формат, кодировка, структура

Половина проблем с загрузкой возникает ещё до открытия 1С. Файл надо привести к виду, который программа поймёт однозначно.

ФорматГде встречаетсяЧем загружать
📊 XLSX, XLS, ODSПрайсы, остатки, списки контрагентовКоманда «Загрузить», обработка загрузки из табличного документа
📄 CSV, TXTВыгрузки из других программ, клиент-банкШтатная загрузка выписок, своя обработка
🧾 XMLОбмены между базами 1С, электронные документыПравила обмена, обработка выгрузки-загрузки XML
🔗 JSONСайты, маркетплейсы, CRMHTTP-сервис или своя обработка
📎 PDF, сканы, фотоДоговоры, акты, счетаПрисоединённые файлы к документу

Перед загрузкой табличного файла проверьте:

  1. Одна строка — одна запись. Объединённые ячейки, промежуточные итоги и пустые строки в середине удалите.
  2. Первая строка — заголовки колонок, без переносов внутри ячейки.
  3. Числа хранятся как числа. Сумма «1 234,56» с неразрывным пробелом часто читается как текст.
  4. Даты в одном формате: ДД.ММ.ГГГГ.
  5. ИНН, КПП, артикулы с ведущими нулями хранятся как текст. Иначе Excel превратит 0274012345 в 274012345.
  6. У каждой строки есть поле для поиска: артикул, ИНН, код. По нему 1С поймёт, создать новый элемент или обновить существующий.

CSV из сторонних программ часто приходит в кодировке Windows-1251, а 1С ждёт UTF-8, или наоборот. Если после загрузки вместо букв «кракозябры» — пересохраните файл в нужной кодировке через любой текстовый редактор, который это умеет.

Перед первой загрузкой в рабочую базу сделайте резервную копию или проверьте загрузку на копии базы. Откатить 500 криво созданных элементов справочника вручную — долго.

Как загрузить файлы в 1С штатными командами

Штатные команды надёжнее всего: их поддерживает разработчик конфигурации, они знают структуру справочников и не требуют прав на внешние обработки.

Excel в справочник

В Бухгалтерии 3.0 откройте Справочники → Товары и услуги → Номенклатура. В командной панели списка есть кнопка «Загрузить» (в некоторых релизах она в меню «Ещё»). Порядок такой:

  1. Нажмите «Загрузить» и выберите файл, либо вставьте данные из Excel через буфер обмена в открывшуюся таблицу.
  2. Сопоставьте колонки файла с реквизитами справочника.
  3. Укажите, по какому реквизиту искать существующие элементы: артикул, наименование или штрихкод.
  4. Посмотрите результат сопоставления: какие строки создадут новые элементы, какие обновят старые, какие не распознаны.
  5. Подтвердите загрузку.

Тот же механизм работает в справочнике контрагентов и в ряде других списков. Если кнопки в списке нет, значит, для этого объекта в конфигурации загрузка не предусмотрена.

Excel в табличную часть документа

В документах с товарами (поступление, реализация, заказы) загрузка встроена в табличную часть. Ищите команду загрузки в командной панели над таблицей «Товары». Дальше всё как со справочником: файл, сопоставление колонок, проверка, перенос строк в документ.

Номенклатура, которой ещё нет в базе, не создастся сама: такие строки останутся несопоставленными. Сначала загрузите номенклатуру, потом документ.

Банковская выписка

Выписка из клиент-банка приходит текстовым файлом формата 1CClientBankExchange, по умолчанию он называется kl_to_1c.txt.

  1. Откройте Банк и касса → Банковские выписки.
  2. Нажмите «Загрузить».
  3. Укажите банковский счёт организации и путь к файлу.
  4. Проверьте список операций и загрузите. Программа создаст документы списания и поступления на расчётный счёт.

Если банк подключён через DirectBank, файл не нужен: выписка запрашивается напрямую из той же формы.

Сканы и документы к объекту

Договор в PDF или фото накладной прикрепляют к документу или карточке через значок скрепки в форме объекта. Это «Присоединённые файлы». Файл можно перетащить мышью или выбрать на диске.

По умолчанию файлы хранятся внутри информационной базы. Если сканов много, база быстро растёт. В настройках администрирования есть вариант хранения файлов в томах на диске — тогда база остаётся компактной, а сами файлы лежат в папке на сервере.

Универсальные обработки загрузки данных

Когда штатной команды нет, используют внешние обработки. Их открывают через главное меню Файл → Открыть либо подключают в Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки.

ОбработкаЧто умеетКогда брать
Загрузка данных из табличного документаСправочники, табличные части, регистры сведений из ExcelРазовые загрузки нестандартных данных
Универсальный обмен данными в формате XMLПеренос по правилам обмена между разными конфигурациямиПереход с одной конфигурации на другую
Выгрузка и загрузка данных XMLПеренос объектов между базами с одинаковой структуройКопирование справочников между двумя одинаковыми базами

Обработки распространяются на диске ИТС, их версия должна подходить к вашей платформе и к виду интерфейса.

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

  1. Выберите режим: загрузка в справочник, в табличную часть или в регистр сведений .
  2. Укажите объект: например, справочник «Контрагенты».
  3. В списке реквизитов отметьте те, что будете загружать, и проставьте номера колонок.
  4. Отметьте поле поиска, например ИНН. Без него каждая загрузка создаст дубли.
  5. На вкладке с табличным документом вставьте данные из Excel или откройте файл.
  6. Запустите контроль заполнения, исправьте ошибки и только потом загрузку.

Обработка XML-выгрузки пишет данные в обход бизнес-логики формы: документы могут загрузиться без проверок, которые выполняет форма при записи. После загрузки документов перепроведите их и проверьте отчёты.

Для открытия внешней обработки пользователю нужно право на интерактивное открытие внешних обработок. Без него пункт Файл → Открыть не откроет файл .epf. При первом открытии платформа показывает предупреждение о безопасности — это нормально для файлов из надёжного источника.

Загрузка через внешние источники данных

Если данные лежат не в файле, а в другой базе — SQL Server, PostgreSQL, Access, — их можно читать напрямую, без промежуточного экспорта. Для этого в 1С есть объект метаданных «Внешние источники данных».

Как устроено:

  1. В конфигураторе в ветке Общие → Внешние источники данных создают источник и описывают таблицы: имена полей, типы, ключевое поле.
  2. Подключение идёт через ODBC: на сервере 1С (или на клиенте, в файловом варианте) должен стоять драйвер нужной СУБД.
  3. Строку соединения задают в режиме 1С:Предприятие: через Все функции → Стандартные → Управление внешними источниками данных или программно.
  4. Таблицы внешнего источника читают запросом, как обычные таблицы 1С, и переносят нужные данные в справочники и документы регламентным заданием.

Программная установка параметров выглядит так:

Параметры = Новый ОписаниеПараметровСоединенияСВнешнимИсточникомДанных;
Параметры.СтрокаСоединения = "Driver={PostgreSQL Unicode};Server=10.0.0.5;Port=5432;Database=shop;";
Параметры.ИмяПользователя = "reader";
Параметры.Пароль = ПарольИзБезопасногоХранилища;
ВнешниеИсточникиДанных.Магазин.УстановитьОбщиеПараметрыСоединения(Параметры);
ВнешниеИсточникиДанных.Магазин.УстановитьСоединение();

В типовую конфигурацию внешний источник лучше добавлять через расширение, а не снимая конфигурацию с поддержки. Тогда обновления релизов ставятся без ручного объединения.

Учётной записи во внешней базе давайте права только на чтение нужных таблиц. 1С здесь потребитель данных, писать во внешнюю систему ей не нужно.

Автоматическая загрузка через HTTP-сервис

Сайт, CRM или мобильное приложение могут сами отправлять файлы в 1С. Для этого в конфигурации создают HTTP-сервис и публикуют базу на веб-сервере (Apache или IIS) через конфигуратор: Администрирование → Публикация на веб-сервере.

Порядок настройки:

  1. В расширении создайте HTTP-сервис, например с корневым URL files.
  2. Добавьте шаблон URL /upload/{name} и метод POST.
  3. Напишите обработчик метода.
  4. Опубликуйте базу с флажком публикации HTTP-сервисов.
  5. Создайте в 1С отдельного пользователя для интеграции с правами только на этот сервис и нужные объекты.

Пример обработчика, который принимает файл и сохраняет его во временную папку сервера для дальнейшей обработки:

Функция ЗагрузитьФайлPOST(Запрос)

	ИмяФайла = Запрос.ПараметрыURL.Получить("name");
	Данные = Запрос.ПолучитьТелоКакДвоичныеДанные();

	Если Данные = Неопределено Или Данные.Размер() = 0 Тогда
		Ответ = Новый HTTPСервисОтвет(400);
		Ответ.УстановитьТелоИзСтроки("Пустое тело запроса");
		Возврат Ответ;
	КонецЕсли;

	ПолноеИмя = КаталогВременныхФайлов() + ИмяФайла;
	Данные.Записать(ПолноеИмя);

	ЗаписьЖурналаРегистрации("Интеграция.ЗагрузкаФайла",
		УровеньЖурналаРегистрации.Информация, , ,
		"Получен файл " + ИмяФайла + ", байт: " + Формат(Данные.Размер(), "ЧГ=0"));

	Ответ = Новый HTTPСервисОтвет(200);
	Ответ.УстановитьТелоИзСтроки("OK");
	Возврат Ответ;

КонецФункции

Отправить файл с другой машины можно так:

curl -X POST --data-binary @price.xlsx -u integration:Пароль \
  "https://srv.example.ru/buh/hs/files/upload/price.xlsx"

В рабочем варианте имя файла из запроса проверяют на недопустимые символы, а сам разбор файла выносят в фоновое задание. Тогда внешняя система быстро получает ответ и не ждёт, пока 1С создаст 5 000 строк.

Для простых сценариев есть и готовый путь: стандартный интерфейс OData. Он открывает REST-доступ к справочникам и документам без программирования HTTP-сервиса. Состав доступных объектов задаётся отдельно, по умолчанию он пустой.

Своя обработка: читаем Excel кодом

Если файл приходит регулярно в одном и том же формате, удобнее написать небольшую обработку. Табличный документ платформы 8.3 читает XLSX и ODS напрямую.

На клиенте файл помещают во временное хранилище (метод ПоместитьФайлНаСерверАсинх в актуальных версиях платформы или НачатьПомещениеФайлаНаСервер в более ранних). Дальше разбор идёт на сервере:

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

	ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xlsx");
	ПолучитьИзВременногоХранилища(АдресФайла).Записать(ИмяВременногоФайла);

	ТабДок = Новый ТабличныйДокумент;
	ТабДок.Прочитать(ИмяВременногоФайла, СпособЧтенияЗначенийТабличногоДокумента.Текст);
	УдалитьФайлы(ИмяВременногоФайла);

	Для НомерСтроки = 2 По ТабДок.ВысотаТаблицы Цикл

		Артикул = СокрЛП(ТабДок.Область(НомерСтроки, 1, НомерСтроки, 1).Текст);
		Наименование = СокрЛП(ТабДок.Область(НомерСтроки, 2, НомерСтроки, 2).Текст);

		Если ПустаяСтрока(Артикул) Тогда
			ЗаписьЖурналаРегистрации("Загрузка номенклатуры",
				УровеньЖурналаРегистрации.Предупреждение, , ,
				"Строка " + Формат(НомерСтроки, "ЧГ=0") + ": пустой артикул, пропущена");
			Продолжить;
		КонецЕсли;

		Ссылка = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Артикул);
		Если Ссылка.Пустая() Тогда
			Объект = Справочники.Номенклатура.СоздатьЭлемент();
		Иначе
			Объект = Ссылка.ПолучитьОбъект();
		КонецЕсли;

		Объект.Артикул = Артикул;
		Объект.Наименование = Наименование;
		Объект.Записать();

	КонецЦикла;

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

Цикл начинается со второй строки, потому что первая — заголовки. Перед записью нового элемента в реальной обработке заполняют обязательные реквизиты конфигурации: вид номенклатуры, единицу измерения, ставку НДС. Иначе запись упадёт на проверке или создаст неполную карточку.

Для CSV используют ТекстовыйДокумент или ЧтениеТекста с явной кодировкой, для JSON — объект ЧтениеJSON.

Ошибки при загрузке и журнал регистрации

Если загрузка прошла «молча», а данных нет или они кривые, первым делом откройте журнал регистрации: Администрирование → Обслуживание → Журнал регистрации. Отберите события по времени загрузки и уровню «Ошибка». Свои обработки должны писать туда понятные сообщения с номером строки, как в примере выше.

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

Ещё несколько правил, которые экономят время:

  • 🧪 Первую загрузку нового формата делайте на копии базы.
  • 🔢 Загружайте пачками по 500–1000 строк: при ошибке проще найти, на какой строке она случилась.
  • 🗂️ Храните исходный файл каждой загрузки рядом с датой. Если через месяц спросят, откуда взялись цены, ответ будет под рукой.
  • 👤 Для интеграций заводите отдельного пользователя. В журнале регистрации сразу видно, что изменения сделал обмен, а не бухгалтер.

Частые вопросы

Можно ли загрузить в 1С файл Excel без установленного Microsoft Office?
Да. Платформа 8.3 читает XLSX и ODS своими средствами, Excel на компьютере для этого не нужен.
Сколько строк можно загрузить за один раз?
Жёсткого ограничения нет, всё упирается в память и время. Файлы на десятки тысяч строк разумнее делить на части или грузить фоновым заданием.
Как загрузить файл в 1С через веб-клиент?
Так же, как в тонком клиенте: команда загрузки откроет окно выбора файла в браузере, файл передастся на сервер. Внешние обработки в веб-клиенте тоже открываются, если у пользователя есть права.
Можно ли загружать файлы в 1С по расписанию без участия человека?
Да. Регламентное задание может забирать файлы из папки на сервере или по FTP и разбирать их. В файловом варианте базы регламентные задания выполняются только при запущенном сеансе, поэтому для автоматики нужен клиент-серверный вариант.
Чем HTTP-сервис лучше обмена через папку с файлами?
Внешняя система сразу получает ответ: принят файл или нет и почему. При обмене через папку ошибки обнаруживают позже, когда кто-то заметит, что данных нет.