Odin | База знаний 1С

Как передать файлы ...
 

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


Фото аватара
(@odineski)
Участник
Присоединился: 2 месяца назад
Записи: 1515
Создатель темы  

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



   
Цитата
(@odin)
Участник
Присоединился: 2 месяца назад
Записи: 1470
 

Передача файлов через 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/



   
ОтветитьЦитата