Как устроено получение файла в 1С
В 1С файл из интернета обычно получают через HTTP-соединение и HTTP-запрос. Соединение отвечает за обращение к серверу, а запрос содержит путь к нужному ресурсу и необходимые заголовки. После выполнения запроса программа получает ответ: в нём находятся состояние операции, служебные сведения и двоичные данные файла.
Не следует сразу считать любой ответ готовым документом. Вместо файла сервер может вернуть страницу с сообщением об ошибке, требование авторизации или уведомление о временной недоступности. Поэтому правильная последовательность такова: выполнить запрос, проверить результат, определить характер содержимого и лишь затем записать данные на диск либо поместить их во временное хранилище 1С.
Конкретный состав объектов и доступных методов зависит от версии платформы, режима приложения и места выполнения кода. Перед внедрением стоит сверить названия методов с синтакс-помощником именно вашей версии 1С. Это особенно важно для старых конфигураций, где отдельные возможности HTTP могут отсутствовать или использоваться иначе.
Где должен выполняться запрос
Сначала определите, откуда 1С будет выходить в интернет: с компьютера пользователя или с сервера предприятия. В клиент-серверной базе серверный код выполняется на сервере 1С, поэтому доступность адреса на телефоне или рабочем компьютере ещё не означает, что тот же адрес доступен серверу. В файловой базе поведение может быть другим.
Для общего модуля заранее задают подходящий контекст выполнения. Если файл нужен для дальнейшей серверной обработки, запрос логичнее выполнять на сервере. Если пользователь выбирает место сохранения на своём устройстве, сервер может получить данные, а клиент — принять их через предусмотренный конфигурацией механизм передачи или временное хранилище.
При ограничениях мобильного интернета это различие становится решающим. Рабочая станция может быть подключена через мобильную сеть, тогда как сервер находится в офисной сети с другим маршрутом. Возможна и обратная ситуация: интерфейс 1С уже открыт, но сервер приложения не может обратиться к внешнему ресурсу. Проверять нужно именно тот узел, где фактически исполняется запрос.
Последовательность HTTP-запроса
- Разберите адрес ресурса. Отдельно определите протокол, имя сервера и путь к файлу. Не подставляйте непроверенную строку целиком в разные параметры соединения.
- Создайте HTTP-соединение. Настройки защищённого соединения, порта и проверки сертификата выбирайте по документации вашей платформы и требованиям владельца ресурса.
- Сформируйте HTTP-запрос. Укажите путь к ресурсу. Заголовки авторизации добавляйте только тогда, когда они предусмотрены официальным интерфейсом сервиса.
- Выполните операцию получения. В терминах платформы для запроса используется операция «Получить». Не смешивайте её с отправкой данных или изменением удалённого ресурса.
- Проверьте ответ. Успешным следует считать только ожидаемое состояние, а не сам факт отсутствия исключения.
- Сохраните содержимое. Записывайте тело ответа как двоичные данные либо передавайте его в дальнейшую обработку, если физический файл не требуется.
Если адрес перенаправляет запрос на другой ресурс, поведение может различаться между версиями платформы и настройками сервера. Не предполагайте, что переход произойдёт автоматически: проверьте его на тестовом контуре и ограничьте число повторных обращений.
Как убедиться, что получен именно нужный файл
После ответа проверьте несколько признаков. Первый — состояние HTTP-операции. Второй — тип содержимого, если сервер его сообщает. Третий — разумный размер полученных данных. Четвёртый — ожидаемый формат: например, табличный документ, архив, изображение или файл обмена должен обрабатываться соответствующим средством 1С.
Имя файла лучше определять по доверенным данным вашей системы. Имя из адреса или заголовка ответа может отсутствовать, содержать неподходящие символы либо не соответствовать фактическому формату. Перед записью очистите имя по правилам используемой операционной системы и не позволяйте внешнему ответу самостоятельно выбирать произвольный каталог.
Если сервис вернул текст ошибки вместо двоичного документа, сохранение такого ответа с ожидаемым расширением только маскирует проблему. Зафиксируйте состояние ответа и краткое техническое описание в журнале регистрации, но не записывайте туда пароли, токены доступа, персональные сведения или полное содержимое конфиденциального документа.
Что делать при обрыве мобильного интернета
Запрос может прерваться до получения ответа или посреди загрузки. Обрабатывайте сетевые исключения отдельно от ошибок записи на диск и ошибок формата. Пользователю полезно сообщить, на каком этапе остановилась операция: соединение не установлено, сервер ответил ошибкой, данные пришли не полностью или файл не удалось сохранить.
Установите ограниченное время ожидания, подходящее вашему процессу. Универсального значения нет: оно зависит от размера документа, региона, оператора и условий работы сервиса. Бесконечное ожидание оставляет форму в неопределённом состоянии, а слишком короткое прерывает нормальную загрузку при медленной сети.
Повторять запрос автоматически стоит осторожно. Для обычного чтения файла допустимо небольшое ограниченное число повторов с паузой, если это согласуется с правилами внешнего сервиса. Цикл без предела создаёт нагрузку и не помогает при длительном отсутствии связи. Если соединение пропало после частичной загрузки, начинайте операцию заново, пока источник явно не поддерживает безопасное продолжение с нужной позиции.
Как подготовить решение к работе без устойчивой связи
Если один и тот же справочный файл нужен регулярно, предусмотрите контролируемую локальную копию. Пока интернет доступен, 1С может получить актуальную версию, проверить её и сохранить с датой обновления. При временной недоступности источника пользователь увидит последнюю успешно проверенную копию и предупреждение, что сведения могут быть неактуальны.
Не заменяйте старый файл сразу после начала загрузки. Сначала запишите новые данные во временное место, завершите проверку, а затем замените рабочую копию. Так обрыв сети не уничтожит исправный предыдущий вариант. Для важных файлов полезно хранить контрольные сведения: дату получения, адрес источника, размер и идентификатор версии, если его официально предоставляет сервер.
Перед использованием на мобильной сети испытайте три сценария: соединение отсутствует до запуска, связь пропадает во время запроса, а сервер возвращает текстовую ошибку вместо файла. Отдельно проверьте права каталога, нехватку места и повторное нажатие кнопки пользователем. Такая проверка показывает, действительно ли процедура умеет получить файл безопасно, а не работает только при идеальном интернете.