Загрузка файлов в 1С 8.3 — от кнопки «Загрузить» до HTTP-сервиса

· 10 мин

Содержание

Отправить файл в 1С можно шестью путями. Разовую таблицу Excel загружают кнопкой Загрузить в списке или табличной части документа. Банковскую выписку — через Банк и касса → Банковские выписки. Регулярные файлы от поставщика разбирает внешняя обработка, обмен с другой базой идёт через XML. Если файлы шлёт сайт или сторонняя программа, нужен HTTP-сервис, OData или COM-соединение.

Выбор зависит от трёх вещей: кто отправляет файл (человек или программа), как часто и в каком формате. Человеку с одной таблицей в месяц API не нужен. Интернет-магазину с сотней заказов в день не подойдёт ручная загрузка.

Какой способ передачи файла в 1С выбрать

Сначала определите сценарий, потом инструмент. Сводная таблица:

СпособКогда подходитКто запускаетЧто нужно
Кнопка Загрузить в формеРазовый список товаров, контрагентов, строк документаПользовательНичего, есть в типовых конфигурациях
Обмен с банкомВыписки из клиент-банкаБухгалтерФайл в формате 1CClientBankExchange
Внешняя обработкаРегулярные файлы одного форматаПользователь или регламентное заданиеФайл .epf, права на дополнительные обработки
XML / EnterpriseDataПеренос данных между базами 1СПользователь или расписаниеНастроенная синхронизация или правила обмена
HTTP-сервис, OData, SOAPФайлы от сайта, CRM, мобильного приложенияВнешняя программаПубликация базы на веб-сервере
COM-соединениеСкрипт на той же Windows-машинеВнешняя программаЗарегистрированный comcntr.dll

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

Какой у вас файл и кто его отправляет?

Загрузка файла в 1С вручную через интерфейс

Таблица Excel в справочник или документ

В БП 3.0, УТ 11 и других типовых конфигурациях на базе БСП есть встроенный загрузчик табличных данных. Он работает так:

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

Самая частая беда — дубли номенклатуры. Если в файле «Бумага А4» без артикула, а в базе «Бумага офисная А4», загрузчик создаст новую позицию. Сопоставляйте по артикулу или коду, а не по наименованию.

Форматы: .xlsx, .xls, .csv, а также табличный документ 1С .mxl. Первая строка с заголовками колонок облегчает сопоставление.

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

Клиент-банк выгружает текстовый файл (часто он называется kl_to_1c.txt). Внутри — формат 1CClientBankExchange, его понимают все бухгалтерские программы на 1С.

  1. Откройте Банк и касса → Банковские выписки.
  2. Нажмите Загрузить и укажите файл.
  3. Программа покажет список платежей и подберёт контрагентов по ИНН.
  4. Строки, где контрагент или договор не найден, выделяются — заполните их вручную.
  5. Нажмите Загрузить в форме обработки.

Если банк поддерживает прямой обмен (DirectBank), файл вообще не нужен: выписки приходят в 1С по кнопке.

Вложение к документу или справочнику

Скан, PDF, фото прикрепляют через кнопку со скрепкой («Присоединённые файлы») в форме документа. Файл можно перетащить мышью прямо в список вложений.

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

Регулярная загрузка через внешнюю обработку

Когда файл приходит каждую неделю в одном формате (прайс поставщика, заказы маркетплейса, отчёт склада), ручное сопоставление колонок утомляет. Здесь выручает внешняя обработка — файл .epf с кодом под конкретный формат.

Как подключить обработку

  1. Откройте Администрирование → Печатные формы, отчеты и обработки.
  2. Включите флажок дополнительных отчётов и обработок и перейдите в их список.
  3. Нажмите Добавить из файла и выберите .epf.
  4. Укажите, в каких разделах обработка видна, и каким пользователям доступна.
  5. Запишите карточку.

Теперь обработка открывается из раздела, а не через Файл → Открыть. Плюс: её можно поставить на расписание, если разработчик предусмотрел запуск как регламентного задания.

Что должна уметь хорошая обработка загрузки

  • 📄 читать файл в той кодировке, в которой его шлют (UTF-8 или Windows-1251);
  • 🔎 искать элементы по коду, артикулу или ИНН, а не по названию;
  • 🧪 показывать предпросмотр перед записью;
  • 📝 писать протокол: что создано, что пропущено и почему;
  • ♻️ не задваивать данные при повторной загрузке того же файла.

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

Файлы XML и JSON: обмен между базами и чтение кодом

Обмен между базами 1С

Для переноса данных между типовыми конфигурациями используют формат EnterpriseData. Настройка — в Администрирование → Синхронизация данных. Там выбирают программу-приёмник и транспорт: общий каталог, FTP, электронная почта или интернет.

Для конфигураций без синхронизации есть обработка «Универсальный обмен данными в формате XML». Она загружает файл, выгруженный по правилам обмена из «Конвертации данных». Без правил она не работает .

Обработка «Выгрузка и загрузка данных XML» переносит объекты один к одному между базами с одинаковой конфигурацией. Для разных конфигураций она не годится — ссылки на объекты не совпадут.

Чтение JSON во встроенном языке

Если сторонняя программа кладёт JSON-файл, его разбирают штатными объектами платформы. Пример файла:

{"orders": [
  {"number": "A-101", "client": "7701234567", "sum": 15400.50},
  {"number": "A-102", "client": "5009876543", "sum": 3200}
]}

Код, который читает его и выводит номера и суммы:

Чтение = Новый ЧтениеJSON;
Чтение.ОткрытьФайл("C:\Exchange\orders.json");
Данные = ПрочитатьJSON(Чтение);
Чтение.Закрыть();

Для Каждого Заказ Из Данные.orders Цикл
    Сообщить(СтрШаблон("Заказ %1, ИНН %2, сумма %3",
        Заказ.number, Заказ.client, Формат(Заказ.sum, "ЧДЦ=2; ЧГ=0")));
КонецЦикла;

ПрочитатьJSON возвращает структуру, массивы становятся массивами. ИНН в файле стоит держать строкой: числом он потеряет ведущий ноль.

XML читают объектом ЧтениеXML или через ФабрикаXDTO, если есть XSD-схема. Для простых файлов хватает последовательного чтения узлов.

Отправить файл в 1С по API: HTTP-сервис, OData, SOAP

Когда файлы шлёт сайт, CRM или телефон, база публикуется на веб-сервере (IIS или Apache) через утилиту публикации из Конфигуратора. После этого у неё появляется адрес, на который внешняя программа делает запросы.

МеханизмЧто умеетНужен ли программист 1С
Стандартный интерфейс ODataЧитать и записывать объекты базы по RESTНет, настраивается в типовой конфигурации
HTTP-сервисЛюбая логика: принять файл, разобрать, создать документДа, пишется в расширении
Веб-сервис SOAPТо же, но по строгой WSDL-схемеДа

OData

В типовых конфигурациях стандартный интерфейс OData включают в разделе Администрирование → Синхронизация данных: там же выбирают, какие объекты доступны. Адрес выглядит так: https://server/base/odata/standard.odata/.

OData удобен для структурированных данных, но не для самих файлов. Загрузить через него PDF как вложение неудобно.

HTTP-сервис для приёма файлов

Для приёма файла пишут HTTP-сервис в расширении конфигурации — типовая остаётся на поддержке. Обработчик метода POST сохраняет тело запроса:

Функция ЗагрузкаФайлаPOST(Запрос)
    ДвоичныеДанные = Запрос.ПолучитьТелоКакДвоичныеДанные();
    ИмяФайла = Запрос.ПараметрыURL.Получить("name");
    Если ИмяФайла = Неопределено Тогда
        Возврат Новый HTTPСервисОтвет(400);
    КонецЕсли;
    ДвоичныеДанные.Записать("D:\Inbox\" + ИмяФайла);
    Возврат Новый HTTPСервисОтвет(200);
КонецФункции

Шаблон URL сервиса задаётся вида /upload/{name}. Внешняя система отправляет файл так:

curl -X POST -u integr:пароль --data-binary @order.xml \
  "https://server/base/hs/files/upload/order.xml"

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

SOAP

Веб-сервисы выбирают, когда партнёр требует WSDL или уже работает по SOAP. Файл передают в теле сообщения в Base64 — это раздувает размер примерно на треть.

COM-соединение: скрипт на Windows передаёт данные в базу

COM подходит, если внешняя программа работает на той же Windows-машине или в той же сети и умеет вызывать COM-объекты: Python, PowerShell, VBScript, Delphi.

  1. Зарегистрируйте компоненту: из папки bin установленной платформы выполните regsvr32 comcntr.dll от имени администратора.
  2. Разрядность компоненты должна совпадать с разрядностью программы-клиента: 64-битному Python нужна 64-битная платформа.
  3. Подключитесь к базе и вызывайте её объекты.

Пример на Python (пакет pywin32):

import win32com.client

connector = win32com.client.Dispatch("V83.COMConnector")
base = connector.Connect('File="C:\\Bases\\Buh";Usr="Интеграция";Pwd="***";')
print(base.Метаданные.Имя)

Для серверной базы строка другая: Srvr="server";Ref="buh";.

COM-соединение занимает лицензию, как обычный сеанс. Не держите его открытым часами: подключились, передали данные, освободили объект.

Обмен через общую папку для распределённых баз

В распределённой информационной базе (РИБ) и в синхронизации данных самый простой транспорт — общий каталог. Узлы кладут туда файлы сообщений и забирают ответные.

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

  • 📁 одна сетевая папка, к которой есть доступ у обеих баз;
  • 🔄 каждая база выгружает свои изменения в файл и читает файл от соседа;
  • ⏰ выгрузку и загрузку ставят на расписание в настройках синхронизации;
  • ✅ после загрузки база подтверждает приём, и в следующем сообщении изменения не дублируются.

Для удалённых филиалов вместо сетевой папки берут FTP-каталог — механизм тот же.

В клиент-серверном варианте файлы читает не ваш компьютер, а сервер 1С. Папка должна быть доступна учётной записи, под которой запущена служба сервера (по умолчанию USR1CV8), а путь — указан в формате UNC: \\fileserver\exchange\, а не Z:\.

Ошибки при загрузке файлов и защита обмена

Частые сбои

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

Безопасность

  • 🔐 Для внешних программ заведите отдельного пользователя 1С с минимальными правами — только на нужные объекты. Не давайте интеграции роль полных прав.
  • 🌐 HTTP-сервисы и OData публикуйте по HTTPS. Логин и пароль в обычном HTTP передаются почти открыто.
  • 🧾 Пароль не храните в тексте скрипта — используйте переменные окружения или хранилище учётных данных Windows.
  • 🛡️ Внешние обработки .epf исполняют код. Подключайте только те, источник которых знаете. Защита от опасных действий в свойствах пользователя предупредит перед открытием непроверенного файла — не отключайте её без необходимости.
  • 🗂️ Папку обмена закройте от посторонних: в ней лежат данные контрагентов и суммы.

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

Какой максимальный размер файла можно загрузить в 1С?
Жёсткого предела для загрузки нет, ограничивают память клиента и веб-сервер. Для вложений администратор может задать лимит размера в настройках работы с файлами.
Можно ли загрузить файл в 1С с телефона?
Да, если база опубликована в интернете: через веб-клиент или мобильный клиент файл прикрепляют к документу так же, как с компьютера.
Нужен ли программист, чтобы загружать Excel?
Нет. В типовых конфигурациях загрузка из таблицы встроена. Программист нужен, когда формат файла сложный или загрузку надо запускать по расписанию.
Чем OData отличается от HTTP-сервиса?
OData — готовый интерфейс к объектам базы без программирования. HTTP-сервис пишут сами, и в нём можно сделать любую обработку принятого файла.
Работает ли COM-соединение в Linux?
Нет, COM — технология Windows. На Linux-сервере используйте HTTP-сервисы или обмен через каталог.