Работая с 1С через веб-сервер Apache, вы можете столкнуться с неприятной ситуацией: при попытке прикрепить к элементу справочника (например, к договору) небольшой файл всё проходит успешно, но при добавлении файлов размером более нескольких мегабайт клиент зависает на несколько минут и завершается с ошибкой потери соединения. Давайте разберемся, почему это происходит и как устранить данную проблему совместными усилиями.
В большинстве случаев проблема кроется не в самой платформе 1С:Предприятие, а в ограничениях конфигурации самого веб-сервера. Когда вы загружаете файл через тонкий клиент, 1С передает данные по протоколу HTTP. Веб-сервер Apache по умолчанию имеет жесткие лимиты на размер тела запроса (POST-запроса), через который передается содержимое файла. Если размер вашего файла превышает установленный лимит, сервер просто сбрасывает соединение, что и приводит к вылету клиента.
Мы выделили основные факторы, которые необходимо проверить:
LimitRequestBody: Это самый частый виновник. В стандартной конфигурации Apache может быть установлено ограничение в 2 Мб.Timeout): Если файл передается медленно из-за особенностей сети, сервер может посчитать процесс «зависшим» и разорвать соединение по истечении времени ожидания.PHP (если используется): Если в составе веб-сервера задействованы модули PHP, параметры upload_max_filesize и post_max_size могут ограничивать передачу данных.Apache, должна иметь полные права на запись в папку временных файлов системы.Первым делом нам необходимо увеличить лимит на размер тела запроса. Для этого откройте конфигурационный файл httpd.conf вашего веб-сервера Apache.
Найдите директиву LimitRequestBody. Если её нет, вы можете добавить её самостоятельно. Значение задается в байтах. Чтобы полностью снять ограничение, установите значение 0, однако в целях безопасности лучше ограничить его разумным пределом, например, 100 Мб:
# Установка лимита в 100 Мб
LimitRequestBody 104857600
После внесения изменений обязательно сохраните файл и выполните перезапуск службы Apache, чтобы настройки вступили в силу.
Если после увеличения лимита ошибка всё еще возникает, возможно, процесс передачи файла занимает больше времени, чем разрешено настройками сервера. Найдите параметр Timeout в том же файле httpd.conf.
По умолчанию он может быть равен 60 секундам. Увеличьте это значение, например, до 300 секунд (5 минут), чтобы дать серверу достаточно времени для обработки «тяжелых» файлов:
Timeout 300
Важно понимать, где именно в 1С хранятся ваши файлы. Существует два основных способа: в информационной базе (внутри БД) и во внешнем хранилище (на диске сервера). Если файлы хранятся во внешних томах, проверьте следующие моменты:
Apache (обычно это LocalSystem или специализированная учетная запись), имеет права на чтение и запись в каталог тома.Если проблема сохраняется, не гадайте — загляните в логи. Это самый верный способ узнать причину. В каталоге установки Apache есть папка logs, а в ней файл error.log. Именно там будут записаны ошибки вида request body exceeds ... или ошибки, связанные с таймаутом. Изучив этот файл сразу после вылета клиента, вы точно увидите, на каком этапе происходит разрыв соединения.
Мы рекомендуем при настройке веб-сервера под 1С всегда отдавать предпочтение актуальным версиям Apache (например, 2.4 и выше), так как они лучше оптимизированы для обработки потоковых данных и работы с большими объектами через протоколы 1С.
Следуя этим шагам, вы сможете устранить зависания и обеспечить корректную загрузку файлов в вашу информационную систему!