Как передать файлы через WEB-сервис с учетом ограничений в 1С?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как передать файлы через WEB-сервис с учетом ограничений в 1С?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #33342
      Телеграм группа https://t.me/odineskiOdineski
      Участник

        передача файлов чрез WEB-сервис

      • #33343
        bot_avaOdin — Одинэсник
        Участник

          Передача файлов через WEB-сервис в 1С:Предприятии обычно реализуется с учетом ограничений веб-сервера и платформы на максимальный размер передаваемых данных. Основные подходы и рекомендации:

          1. **Ограничения веб-сервера**
          — IIS по умолчанию ограничивает размер входящего сообщения примерно 30 МБ.
          — Apache — около 16 МБ (зависит от настроек).
          При превышении этих лимитов сервер откажется принимать запрос.

          2. **Увеличение лимитов веб-сервера (быстрое решение)**
          — Для IIS можно увеличить параметр `maxAllowedContentLength` в файле `web.config` или через командную строку:

          xml
               
                 
                   
                     
                   
                 
               
               

          — Однако это решение подходит только для умеренного увеличения размера.

          3. **Передача файла по частям (рекомендуемый способ)**
          — Файл разбивается на части (например, по 5 МБ).
          — Каждая часть передается отдельным вызовом метода веб-сервиса с указанием:
          — Идентификатора файла (GUID) для связывания частей.
          — Номера части.
          — Данных части (обычно в виде двоичных данных или base64).
          — Общее количество частей.
          — На сервере части сохраняются во временном хранилище (например, в регистре сведений).
          — После получения всех частей сервер собирает файл обратно.

          4. **Пример обработки части файла на сервере (1С):**

          1C
             Функция executeMethod(MessagePart)
                 Ответ = ФабрикаXDTO.Создать(...);
                 Попытка
                     РегистрыСведений.ПринятыеЧастиПакета.ЗафиксироватьПриемЧастиПакета(
                         Новый УникальныйИдентификатор(MessagePart.MessageId),
                         MessagePart.PartNumber,
                         MessagePart.PartData,
                         MessagePart.CountOfParts,
                         MessagePart.MessageName,
                         MessagePart.FileExtention,
                         MessagePart.FileName,
                         MessagePart.Size
                     );
                     Ответ.Success = Истина;
                 Исключение
                     Ответ.Success = Ложь;
                 КонецПопытки;
                 Возврат Ответ;
             КонецФункции
             

          5. **Отправка файла с клиента**
          — Файл читается и разбивается на части.
          — Каждая часть отправляется через вызов веб-сервиса.
          — При необходимости реализуется логика повторной отправки при ошибках.

          6. **Использование временного хранилища**
          — Для передачи больших файлов можно использовать временное хранилище 1С, где файл помещается на стороне клиента, а затем передается на сервер по частям.
          — Ограничение: максимальный размер файла во временном хранилище — 4 ГБ.

          7. **Альтернативные методы**
          — Использование HTTP-сервисов с передачей данных в base64 или JSON.
          — Использование специализированных библиотек (например, подсистема «Передача данных» из БСП), которые оптимизируют передачу больших объемов.

          **Итог:**
          Передача файлов через WEB-сервис в 1С реализуется либо увеличением лимитов веб-сервера (для небольшого увеличения размера), либо (что предпочтительнее) — разбивкой файла на части с последовательной отправкой и последующей сборкой на сервере. Это обеспечивает стабильность, масштабируемость и позволяет обходить ограничения по размеру сообщений.

          Рекомендую посмотреть здесь:
          https://infostart.ru/1c/articles/427026/
          https://infostart.ru/1c/articles/582886/
          https://infostart.ru/1c/articles/1111349/

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С