Внимание! Вышла новая версия утилиты на обновленном движке.
Конфигурации 1c и обновления к ним распространяются, в большинстве случаев, в виде самораспаковывающегося архива RAR или архива ZIP, распаковав который мы можем наблюдать примерно следующую структуру файлов:
В файле с расширением efd как раз и содержится самое интересное, что и будет скопировано в профиль пользователя при выполнении программы "setup". Но не всегда нам нужны все те данные, что содержатся в текущем "архиве", да и систему захламлять не хочется.
Представляю вашему вниманию обработку "EFD Extractor" для выборочного извлечения нужных файлов из сжатых "архивов" EFD. Движок обработки написан исключительно на "1с" без использования внешних компонент и сторонних удаленных сервисов.
Можно выделить нужные файлы и/или папки и извлечь в заданную директорию. Требуется платформа 8.3.9+ и включенный режим использования синхронных вызовов расширений платформы и внешних компонент.
Также была разработана консольная утилита в помощь админам для автоматизации действий по извлечению данных из EFD-файлов. Данная утилита написана на C# и прекрасно работает и в Windows,
и в unix-подобных системах с использованием "mono"
Требуется платформа .Net 4.0, утилита работает только на 64-разрядных операционных системах. В пике использует удвоенное значение памяти по отношению к исходному размеру EFD-файла.
У 1с-ной обработки и у консольной утилиты v.1.1 есть ограничение на размер EFD файла - примерно около 3 Гб. Чтобы обрабатывать файлы любого размера, используйте консольную утилиту v.2.0
В 2025-м году вышла новая версия консольной утилиты 2.0 (на платформе .NET Framework 4.8.1), которая не требовательна к памяти (в пике потребляет около 20 Мб, и то на нужды платформы .NET). Поддерживает EFD-файлы практически неограниченного размера и может извлекать из них вложенные файлы размером до 4 Гб (!) (это физическое ограничение формата).
Теперь утилита называется efdex для более быстрого использования при работе.
Ключи командной строки:
-i Путь к исходному EFD-файлу
-l Вывод списка всех файлов "архива" с полным внутренним путем с указанием размеров (исключает извлечение данных)
-t Вывод дерева всех файлов "архива" с указанием размеров (исключает извлечение данных)
-d Директория для распаковки (по умолчанию: текущая директория)
-f Список файлов и/или папок с указанием их полного внутреннего пути, разделенные символом пробела
-s Отключение вывода сообщений (кроме показа списка и дерева файлов)
-h Вывод справки
Тестировал на архиве с ERP v2 размером 3 Гб: полное извлечение заняло менее 20 сек (всё упирается в диск)
efdex.zip SHA256: bf1d637fa36c7a28f77bca2984a07a73114ee36615c7b3b45ff831637e3d450f
Update 07.06.2025
Обновлена консольная утилита до версии 2.0 (минимальное потребление памяти, поддержка больших файлов, увеличенная скорость работы)
Update 06.02.2018
Обновлена консольная утилита до версии 1.1 (исправлена ошибка неправильного анализа входных параметров)
Проверено на следующих конфигурациях и релизах:
- 1С:Библиотека стандартных подсистем, редакция 3.1, релизы 3.1.11.189
- 1С:ERP Управление предприятием 2, релизы 2.5.22.63