К статье
Практический материал

Администрирование · 11 мин

Как загрузить ZIP в 1С: пошаговые способы и типичные ошибки

Практические способы загрузить ZIP-архив в 1С: через диалог выбора файла, программно с помощью ЧтениеZipФайла, при обновлении конфигурации и загрузке данных.

Задача загрузить ZIP-архив в 1С возникает в нескольких ситуациях: при установке обновления конфигурации из файла, при загрузке классификаторов (банков, адресов, курсов валют), при обмене данными между базами и при разработке собственных обработок, принимающих архивы от пользователей. В каждом случае механика своя, и путать их нельзя: обновление конфигурации загружается через конфигуратор, данные — через типовые обработки, а произвольные архивы — программно через объект ЧтениеZipФайла.

Важно понимать ограничение платформы: 1С не умеет «открыть» ZIP как документ. Архив всегда либо распаковывается во временный каталог, либо читается потоково, либо передаётся стороннему механизму (например, загрузчику классификаторов). Поэтому правильный сценарий выбирается по цели: что именно находится внутри архива и какой объект конфигурации должен его принять.

Определите, что находится внутри архива

Прежде чем искать кнопку «Загрузить», откройте ZIP обычным архиватором и посмотрите состав. От этого зависит весь дальнейший сценарий. Файл обновления конфигурации содержит 1cv8.cfu или 1cv8.cf — его загружают через конфигуратор. Классификаторы (ОКВЭД, ФИАС/ГАР, банки) обычно содержат XML или DBF — их принимают специальные разделы в пользовательском режиме. Архивы обмена между базами содержат XML выгрузки и загружаются через «Синхронизацию данных» или универсальную обработку обмена.

Если внутри архива произвольные файлы — например, комплект электронных документов от контрагента или выгрузка из сторонней системы — потребуется либо типовая обработка «Загрузка данных из файла» (для табличных данных), либо программная распаковка. Универсальной кнопки «загрузить любой ZIP» в платформе нет.

Маршрут решения

Как выбрать способ загрузки

Внутри архива файл 1cv8.cfu или 1cv8.cfРаспакуйте архив и загружайте обновление через конфигуратор: Конфигурация → Поддержка → Обновить конфигурацию
Внутри классификатор (банки, валюты, адреса)Используйте типовую загрузку в разделе Администрирование или в карточке соответствующего справочника
Внутри XML обмена между базамиЗагружайте через Синхронизацию данных или обработку Универсальный обмен данными в формате XML
Внутри произвольные файлы для своей логикиИспользуйте программную распаковку через ЧтениеZipФайла или внешнюю обработку

Загрузка обновления конфигурации из ZIP

Самый частый бытовой сценарий — файл обновления, скачанный с портала 1С, приходит в виде ZIP. Платформа не принимает архив напрямую: сначала распакуйте его средствами Windows (правый клик → «Извлечь все») или архиватором в отдельную папку. Внутри будет установочный комплект либо сам файл .cfu.

Дальше порядок такой: откройте базу в конфигураторе под пользователем с полными правами, создайте резервную копию (Администрирование → Выгрузить информационную базу), затем выберите «Конфигурация → Поддержка → Обновить конфигурацию». Укажите «Выбор файла обновления» и путь к распакованному .cfu. После сравнения и объединения примите изменения и выполните «Обновить конфигурацию базы данных» (F7). Завершите обновление в пользовательском режиме — типовые конфигурации запускают отложенные обработчики при первом входе.

Загрузка классификаторов и справочных данных из архива

Типовые конфигурации умеют принимать ZIP с классификаторами без конфигуратора. Например, курсы валют загружаются в справочнике «Валюты» кнопкой «Загрузить курсы валют», банковский классификатор — в справочнике «Банки» через «Загрузить классификатор». Адресный классификатор (ГАР/ФИАС) загружается в разделе «Администрирование → Интернет-поддержка и сервисы → Адресный классификатор», где можно указать в том числе локальный файл, если сервис недоступен.

Общий признак таких механизмов: обработка сама умеет распаковать архив, поэтому ZIP передаётся «как есть», без предварительной распаковки. Если же обработка просит конкретный файл (например, XML), архив придётся сначала распаковать и указать нужный файл внутри. Точное поведение зависит от конфигурации и её версии, поэтому ориентируйтесь на подсказки в форме загрузки.

Программная загрузка ZIP через ЧтениеZipФайла

Для собственных обработок и расширений платформа предоставляет объект ЧтениеZipФайла. Типовой сценарий: поместить файл во временное хранилище на клиенте, передать на сервер, распаковать во временный каталог и обработать содержимое. Минимальный каркас кода выглядит так:

// На клиенте: помещаем файл в хранилище

НачатьПомещениеФайла(

Новый ОписаниеОповещения("ПослеПомещения", ЭтотОбъект),

, , Истина, УникальныйИдентификатор);

// На сервере: распаковка

Двоичные = ПолучитьИзВременногоХранилища(АдресХранилища);

ИмяАрхива = ПолучитьИмяВременногоФайла("zip");

Двоичные.Записать(ИмяАрхива);

КаталогРаспаковки = ПолучитьИмяВременногоФайла() + "\";

СоздатьКаталог(КаталогРаспаковки);

Чтение = Новый ЧтениеZipФайла(ИмяАрхива);

Чтение.ИзвлечьВсе(КаталогРаспаковки,

РежимВосстановленияПутейФайловZIP.Восстанавливать);

Чтение.Закрыть();

Ключевые моменты: работа с файлом выполняется на сервере, поэтому путь с клиентской машины на сервере недоступен — передавайте данные через временное хранилище. Параметр РежимВосстановленияПутейФайловZIP определяет, сохранится ли структура папок архива. После обработки временные файлы стоит удалять, чтобы не засорять каталог сервера.

bsl
Чтение = Новый ЧтениеZipФайла(ИмяАрхива);
Для Каждого Элемент Из Чтение.Элементы Цикл
    Сообщить(Элемент.Имя);
КонецЦикла;
Чтение.Закрыть();

Если нужно не распаковывать всё, а прочитать конкретный элемент, используйте перебор Чтение.Элементы и извлечение только нужных файлов через Чтение.Извлечь(). Это заметно быстрее на больших архивах и безопаснее: вы контролируете, какие именно файлы попадают на диск сервера.

Загрузка ZIP в файловом и клиент-серверном варианте: отличия

В файловой базе код выполняется там же, где находится файл пользователя, поэтому иногда можно обойтись прямым чтением по локальному пути. В клиент-серверном варианте сервер 1С — отдельная машина со своей файловой системой: путь вида C:\Документы\archive.zip для него бессмыслен. Передача через ПоместитьВоВременноеХранилище / НачатьПомещениеФайла — обязательный шаг.

Учитывайте и права: у служебной учётной записи агента сервера 1С должен быть доступ на запись в каталог временных файлов. Если распаковка «молча» не срабатывает именно на сервере, первым делом проверяйте права и свободное место. В веб-клиенте дополнительно действуют ограничения браузера на размер передаваемого файла и работу с файловой системой — для больших архивов тонкий клиент надёжнее.

Сравнение способов загрузки

Конфигуратор

Подходит только для обновлений и загрузки конфигурации. Требует монопольного доступа и полных прав, не работает в пользовательском режиме.

Типовые обработки загрузки

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

ЧтениеZipФайла программно

Универсальный вариант для любых архивов. Требует разработки или готовой внешней обработки и аккуратной работы с серверным контекстом.

Проверка результата и типичные ошибки

После загрузки всегда подтверждайте результат объективными признаками, а не отсутствием сообщения об ошибке. Для обновления конфигурации — номер версии в разделе «О программе» должен совпасть с целевым, отложенные обработчики — завершиться без ошибок. Для классификаторов — проверьте количество загруженных записей и дату актуальности в справочнике. Для программной распаковки — убедитесь, что все ожидаемые файлы реально появились в целевом каталоге и открываются.

Контрольные точки

Как проверить результат

Версия конфигурации после обновления
Норма

Номер версии соответствует установленному релизу

Тревожный признак

Версия не изменилась или база не открывается в пользовательском режиме

Записи классификатора
Норма

Появились новые записи, протокол загрузки без ошибок

Тревожный признак

Количество записей не изменилось, в протоколе ошибки формата

Распакованные файлы
Норма

Все файлы из архива на месте, размеры ненулевые

Тревожный признак

Часть файлов отсутствует или имеет нулевой размер

Из практики чаще всего встречаются четыре проблемы. Первая — попытка скормить конфигуратору сам ZIP вместо распакованного .cfu: файл просто не находится в диалоге выбора. Вторая — кириллица в именах внутри архива: старые архиваторы пишут имена не в UTF-8, и после распаковки получаются нечитаемые имена; лечится перепаковкой архива или чтением элементов с явным указанием кодировки. Третья — загрузка на сервере по клиентскому пути. Четвёртая — забытые временные файлы, которые со временем забивают диск сервера.

Типичные ошибки
01
Указание ZIP в диалоге обновления конфигурации вместо распакованного .cfu — файл не выбирается, обновление не начинается
02
Обновление без резервной копии и через несовместимые релизы — риск получить неработоспособную базу
03
Использование клиентского пути к файлу в серверном коде — ошибка доступа или пустой файл на сервере
04
Игнорирование протокола загрузки классификатора — частично загруженные данные остаются незамеченными до сбоя в документах
Если архив приходит регулярно (например, выгрузка от филиала раз в день), оформите загрузку регламентным заданием с чтением из сетевой папки. Это исключает ручные ошибки с путями и даёт журнал ошибок в стандартном механизме регламентных заданий.
ПЗ
Практическое замечание

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

Можно ли загрузить ZIP в 1С, не распаковывая его?

Зависит от приёмника. Типовые обработки загрузки классификаторов часто принимают архив целиком и распаковывают его сами. Конфигуратор — нет: файл обновления нужно извлечь заранее. В программном сценарии распаковка выполняется средствами ЧтениеZipФайла, при этом можно читать отдельные элементы без полного извлечения на диск.

Конфигуратор не видит файл обновления в папке. Что не так?

Скорее всего, вы указываете на ZIP-архив, а диалог выбора фильтрует только файлы .cfu и .cf. Распакуйте архив и повторите выбор. Также проверьте, что обновление предназначено именно для вашей конфигурации и текущего релиза — несовместимый файл может не предлагаться к установке.

После распаковки имена файлов превратились в нечитаемые символы. Как исправить?

Причина — несовпадение кодировки имён внутри архива. Перепакуйте архив современным архиватором с сохранением имён в UTF-8 либо в программном сценарии обрабатывайте элементы по содержимому, а не по имени, сохраняя их под нормализованными именами.

Как загрузить большой архив через веб-клиент?

Веб-клиент ограничен возможностями браузера по передаче файлов, и очень большие архивы могут не передаваться. Надёжнее использовать тонкий клиент либо положить архив в сетевую папку, доступную серверу 1С, и загружать его оттуда обработкой или регламентным заданием.

Безопасно ли распаковывать архивы, полученные извне?

Нет, без проверки — опасно. Архив может содержать исполняемые файлы или пути с выходом за пределы целевого каталога. Распаковывайте только в изолированный временный каталог, проверяйте список элементов до извлечения и не запускайте извлечённые файлы. Для регулярных загрузок ограничивайте допустимые расширения.

Итог

Что важно запомнить

Способ загрузки ZIP в 1С определяется содержимым архива: обновления — через конфигуратор после распаковки, классификаторы — через типовые обработки, произвольные файлы — программно через ЧтениеZipФайла с передачей на сервер через временное хранилище. Перед обновлением всегда делайте резервную копию, после любой загрузки проверяйте результат по протоколу и фактическим данным.