Администрирование · 11 мин
Как загрузить ZIP в 1С: пошаговые способы и типичные ошибки
Практические способы загрузить ZIP-архив в 1С: через диалог выбора файла, программно с помощью ЧтениеZipФайла, при обновлении конфигурации и загрузке данных.
Задача загрузить ZIP-архив в 1С возникает в нескольких ситуациях: при установке обновления конфигурации из файла, при загрузке классификаторов (банков, адресов, курсов валют), при обмене данными между базами и при разработке собственных обработок, принимающих архивы от пользователей. В каждом случае механика своя, и путать их нельзя: обновление конфигурации загружается через конфигуратор, данные — через типовые обработки, а произвольные архивы — программно через объект ЧтениеZipФайла.
Важно понимать ограничение платформы: 1С не умеет «открыть» ZIP как документ. Архив всегда либо распаковывается во временный каталог, либо читается потоково, либо передаётся стороннему механизму (например, загрузчику классификаторов). Поэтому правильный сценарий выбирается по цели: что именно находится внутри архива и какой объект конфигурации должен его принять.
Определите, что находится внутри архива
Прежде чем искать кнопку «Загрузить», откройте ZIP обычным архиватором и посмотрите состав. От этого зависит весь дальнейший сценарий. Файл обновления конфигурации содержит 1cv8.cfu или 1cv8.cf — его загружают через конфигуратор. Классификаторы (ОКВЭД, ФИАС/ГАР, банки) обычно содержат XML или DBF — их принимают специальные разделы в пользовательском режиме. Архивы обмена между базами содержат XML выгрузки и загружаются через «Синхронизацию данных» или универсальную обработку обмена.
Если внутри архива произвольные файлы — например, комплект электронных документов от контрагента или выгрузка из сторонней системы — потребуется либо типовая обработка «Загрузка данных из файла» (для табличных данных), либо программная распаковка. Универсальной кнопки «загрузить любой ZIP» в платформе нет.
Как выбрать способ загрузки
Загрузка обновления конфигурации из ZIP
Самый частый бытовой сценарий — файл обновления, скачанный с портала 1С, приходит в виде ZIP. Платформа не принимает архив напрямую: сначала распакуйте его средствами Windows (правый клик → «Извлечь все») или архиватором в отдельную папку. Внутри будет установочный комплект либо сам файл .cfu.
Дальше порядок такой: откройте базу в конфигураторе под пользователем с полными правами, создайте резервную копию (Администрирование → Выгрузить информационную базу), затем выберите «Конфигурация → Поддержка → Обновить конфигурацию». Укажите «Выбор файла обновления» и путь к распакованному .cfu. После сравнения и объединения примите изменения и выполните «Обновить конфигурацию базы данных» (F7). Завершите обновление в пользовательском режиме — типовые конфигурации запускают отложенные обработчики при первом входе.
Загрузка классификаторов и справочных данных из архива
Типовые конфигурации умеют принимать ZIP с классификаторами без конфигуратора. Например, курсы валют загружаются в справочнике «Валюты» кнопкой «Загрузить курсы валют», банковский классификатор — в справочнике «Банки» через «Загрузить классификатор». Адресный классификатор (ГАР/ФИАС) загружается в разделе «Администрирование → Интернет-поддержка и сервисы → Адресный классификатор», где можно указать в том числе локальный файл, если сервис недоступен.
Общий признак таких механизмов: обработка сама умеет распаковать архив, поэтому ZIP передаётся «как есть», без предварительной распаковки. Если же обработка просит конкретный файл (например, XML), архив придётся сначала распаковать и указать нужный файл внутри. Точное поведение зависит от конфигурации и её версии, поэтому ориентируйтесь на подсказки в форме загрузки.
Программная загрузка ZIP через ЧтениеZipФайла
Для собственных обработок и расширений платформа предоставляет объект ЧтениеZipФайла. Типовой сценарий: поместить файл во временное хранилище на клиенте, передать на сервер, распаковать во временный каталог и обработать содержимое. Минимальный каркас кода выглядит так:
// На клиенте: помещаем файл в хранилище
НачатьПомещениеФайла(
Новый ОписаниеОповещения("ПослеПомещения", ЭтотОбъект),
, , Истина, УникальныйИдентификатор);
// На сервере: распаковка
Двоичные = ПолучитьИзВременногоХранилища(АдресХранилища);
ИмяАрхива = ПолучитьИмяВременногоФайла("zip");
Двоичные.Записать(ИмяАрхива);
КаталогРаспаковки = ПолучитьИмяВременногоФайла() + "\";
СоздатьКаталог(КаталогРаспаковки);
Чтение = Новый ЧтениеZipФайла(ИмяАрхива);
Чтение.ИзвлечьВсе(КаталогРаспаковки,
РежимВосстановленияПутейФайловZIP.Восстанавливать);
Чтение.Закрыть();
Ключевые моменты: работа с файлом выполняется на сервере, поэтому путь с клиентской машины на сервере недоступен — передавайте данные через временное хранилище. Параметр РежимВосстановленияПутейФайловZIP определяет, сохранится ли структура папок архива. После обработки временные файлы стоит удалять, чтобы не засорять каталог сервера.
Чтение = Новый ЧтениеZipФайла(ИмяАрхива);
Для Каждого Элемент Из Чтение.Элементы Цикл
Сообщить(Элемент.Имя);
КонецЦикла;
Чтение.Закрыть();Если нужно не распаковывать всё, а прочитать конкретный элемент, используйте перебор Чтение.Элементы и извлечение только нужных файлов через Чтение.Извлечь(). Это заметно быстрее на больших архивах и безопаснее: вы контролируете, какие именно файлы попадают на диск сервера.
Загрузка ZIP в файловом и клиент-серверном варианте: отличия
В файловой базе код выполняется там же, где находится файл пользователя, поэтому иногда можно обойтись прямым чтением по локальному пути. В клиент-серверном варианте сервер 1С — отдельная машина со своей файловой системой: путь вида C:\Документы\archive.zip для него бессмыслен. Передача через ПоместитьВоВременноеХранилище / НачатьПомещениеФайла — обязательный шаг.
Учитывайте и права: у служебной учётной записи агента сервера 1С должен быть доступ на запись в каталог временных файлов. Если распаковка «молча» не срабатывает именно на сервере, первым делом проверяйте права и свободное место. В веб-клиенте дополнительно действуют ограничения браузера на размер передаваемого файла и работу с файловой системой — для больших архивов тонкий клиент надёжнее.
Сравнение способов загрузки
Подходит только для обновлений и загрузки конфигурации. Требует монопольного доступа и полных прав, не работает в пользовательском режиме.
Самый безопасный путь для классификаторов и обменов. Ограничение: принимают только предусмотренные форматы.
Универсальный вариант для любых архивов. Требует разработки или готовой внешней обработки и аккуратной работы с серверным контекстом.
Проверка результата и типичные ошибки
После загрузки всегда подтверждайте результат объективными признаками, а не отсутствием сообщения об ошибке. Для обновления конфигурации — номер версии в разделе «О программе» должен совпасть с целевым, отложенные обработчики — завершиться без ошибок. Для классификаторов — проверьте количество загруженных записей и дату актуальности в справочнике. Для программной распаковки — убедитесь, что все ожидаемые файлы реально появились в целевом каталоге и открываются.
Как проверить результат
Номер версии соответствует установленному релизу
Версия не изменилась или база не открывается в пользовательском режиме
Появились новые записи, протокол загрузки без ошибок
Количество записей не изменилось, в протоколе ошибки формата
Все файлы из архива на месте, размеры ненулевые
Часть файлов отсутствует или имеет нулевой размер
Из практики чаще всего встречаются четыре проблемы. Первая — попытка скормить конфигуратору сам ZIP вместо распакованного .cfu: файл просто не находится в диалоге выбора. Вторая — кириллица в именах внутри архива: старые архиваторы пишут имена не в UTF-8, и после распаковки получаются нечитаемые имена; лечится перепаковкой архива или чтением элементов с явным указанием кодировки. Третья — загрузка на сервере по клиентскому пути. Четвёртая — забытые временные файлы, которые со временем забивают диск сервера.
Если архив приходит регулярно (например, выгрузка от филиала раз в день), оформите загрузку регламентным заданием с чтением из сетевой папки. Это исключает ручные ошибки с путями и даёт журнал ошибок в стандартном механизме регламентных заданий.
Частые вопросы
Можно ли загрузить ZIP в 1С, не распаковывая его?
Зависит от приёмника. Типовые обработки загрузки классификаторов часто принимают архив целиком и распаковывают его сами. Конфигуратор — нет: файл обновления нужно извлечь заранее. В программном сценарии распаковка выполняется средствами ЧтениеZipФайла, при этом можно читать отдельные элементы без полного извлечения на диск.
Конфигуратор не видит файл обновления в папке. Что не так?
Скорее всего, вы указываете на ZIP-архив, а диалог выбора фильтрует только файлы .cfu и .cf. Распакуйте архив и повторите выбор. Также проверьте, что обновление предназначено именно для вашей конфигурации и текущего релиза — несовместимый файл может не предлагаться к установке.
После распаковки имена файлов превратились в нечитаемые символы. Как исправить?
Причина — несовпадение кодировки имён внутри архива. Перепакуйте архив современным архиватором с сохранением имён в UTF-8 либо в программном сценарии обрабатывайте элементы по содержимому, а не по имени, сохраняя их под нормализованными именами.
Как загрузить большой архив через веб-клиент?
Веб-клиент ограничен возможностями браузера по передаче файлов, и очень большие архивы могут не передаваться. Надёжнее использовать тонкий клиент либо положить архив в сетевую папку, доступную серверу 1С, и загружать его оттуда обработкой или регламентным заданием.
Безопасно ли распаковывать архивы, полученные извне?
Нет, без проверки — опасно. Архив может содержать исполняемые файлы или пути с выходом за пределы целевого каталога. Распаковывайте только в изолированный временный каталог, проверяйте список элементов до извлечения и не запускайте извлечённые файлы. Для регулярных загрузок ограничивайте допустимые расширения.
Что важно запомнить
Способ загрузки ZIP в 1С определяется содержимым архива: обновления — через конфигуратор после распаковки, классификаторы — через типовые обработки, произвольные файлы — программно через ЧтениеZipФайла с передачей на сервер через временное хранилище. Перед обновлением всегда делайте резервную копию, после любой загрузки проверяйте результат по протоколу и фактическим данным.