Как работает (кратко)
1. Откройте обработку 2. Вставьте в таблицу необходимые Вам файлы 3. Нажмите кнопку "Упаковать" 4. Сформированный обработкой текст скопируйте в нужный Вам модуль. ВСЕ! Для распаковки используйте функцию os7764__Распаковать(Путь_куда_распаковать) (описание функции включается в текст (п. 4) автоматически)
Таким образом, в модуль (т.е. фактически в конфигурацию либо внешнюю обработку) можно включить (и соответственно, программно извлечь) • обновленные конфигурации (md) • внешние справочники (КЛАДР) • видеоинструкции по использованию • внешние компоненты 1C, ActiveX компоненты • драйвера торгового оборудования • и т.п.
Для чего это нужно
Для того, чтобы передавать все необходимое в одном файле. Например, в обработку загрузки КЛАДРа можно поместить сам КЛАДР. А в обработку работы со сканером штрихкодов можно поместить внешнюю компоненту - драйвер этого сканера. При открытии обработка проверяет наличие драйвера в системе, и если его нет - автоматически инсталлирует. Это упрощает распространение программ через Интернет, а также перенос между рабочими станциями - за одним файлом всегда проще уследить, чем за несколькими. Кроме того, упакованные данные можно поместить в конфигурацию, это обеспечит доступность файлов после выгрузки конфигурации стандартными средствами 1С и загрузки на другом компьютере.
Особенности обработки
1. Простой и удобный интерфейс, никаких лишних действий со стороны пользователя. 2. Работает с файлами большого объема (несколько десятков MB). 3. Автоматически выбирает объект для работы с файлами ("Текст"/ "v7plus.dll: AddIn.V7TextFile") в зависимости от того, установлена v7plus.dll или нет. 4. Может автоматически устанавливать v7plus.dll - для этого достаточно добавить ее в список упаковываемых файлов. 5. Поддерживает 2 метода распаковки - с использованием WSH (Windows Scripting Host) либо приложения командной строки с автоматическим либо ручным выбором метода распаковки. 6. Все используемые процедуры, функции и переменные имеют уникальное имя, что позволяет избежать пересечения имен при вставке в существующие модули
Подробное описание
Обработка кодирует двоичные файлы по алгоритму base64. В результате образуется текст. состоящий из символов A-Z, a-z, 0-9, /, +, который и вставляется непосредственно в любой модуль. Соответственно, распаковка является обратным преобразованием этого текста в исходный файл. К сожалению, в 1С нет функций для работы с двоичными данными, поэтому собственно кодирование/раскодирование выполняется "внешними" средствами, каковыми является Windows Scripting Host (встроен в Windows) и бесплатная утилита base64 (встроена в обработку). То есть для работы ничего дополнительно к обработке ставить не надо.
Для упаковки файлов
1. Откройте обработку и вставьте необходимые файлы в таблицу в верхней части формы. Имена файлов должны быть уникальны. Как и принято в Windows верхний/нижний регистры не различаются. Если файлы большого размера (больше 10Мб) то лучше их зархивировать перед вставкой. Примечание: поскольку 1С сжимает файлы модулей, то на конечный размер md/ert предварительная влияет не сильно. Но размер самого модуля при предварительной архивации меньше, и такие модули 1С открывает быстрее.
2. Настройте опции упаковки: Создавать "полный текст модуля" - будет создан текст, включающий описания всех необходимых переменных, функций и процедур. Если Вы пользуетесь обработкой в первый раз, то используйте эту опцию. "только упакованные файлы" - создает только текст, содержащий упакованные данные. Используйте, если Вы что-то поменяли и хотите просто вставить измененный файлы.
Метод распаковки "Авто" - означает, что выбор метода распаковки будет произведен программой при формировании текста для вставки в модуль. Если общий объем файлов меньше 60К, то функция распаковки будет использовать только. Если объем больше 60К, то в текст модуля будет включена упакованная base64.exe. "WSH + base64.exe" - принудительной включение упакованной "base64.exe" в формируемый текст модуля независимо от размера упаковываемых файлов "Только WSH" принудительное отключение base64.exe
Символов в строке Количество символов в строке кодированного в base64 текста. Число, от 72 до 480. должно быть кратно 4. Влияет в основном на внешний вид. Но: чем символов в строке меньше, тем больше самих строк, а значит больше и "накладные расходы" на хранение текста, и тем дольше открывается модуль.
3. Нажмите кнопку "Упаковать". После завершения обработки: - если размер выходного файла менее 30 МБ, то сразу откроется окно с текстом для копирования. - если размер выходного файла больше 30 МБ, будет выдано сообщение о том, текст будет сохранен в файл. Вы можете попробовать открыть этот файл программно, но иногда это приводит к зависанию 1С. Более надежно открывать большие файлы непосредственно конфигуратором.
4. Скопируйте текст в модуль своей обработки. Копировать необходимо 2 блока отдельно: - описания переменных, функций и процедур вставляются в начало, после завершения описания переменных, но до начала описания функций и процедур, в т.ч. со словом "Далее". - остальной текст вставляйте куда хотите (удобнее всего - в конец модуля)
5. Все переменные, функции и процедуры имеют имя, начинающиеся с os7764. Однако, если у Вас уже используется такое - следует сделать замену по всему тексту.
6. После вставки Вам становятся доступны 2 функции
os7764__ТаблицаФайлов() - возвращает информацию об упакованных файлах в виде таблицы значений с колонками: ИмяФайла (Строка) Размер (Число, 15, 0)
os7764__Распаковать(Каталог, ИмяФайла, ПутьКBase64exe) - извлекает файл в указанный каталог. Параметры: Каталог (Строка) ИмяФайла (необязательно) (Строка с именем файла/СписокЗначений из строк с именами файлов которые надо извлечь. Если ИмяФайла не указано или "" (пустая строка), то распаковываются все файлы) ПутьКBase64exe (необязательно) (Строка с путем к файлу base64.exe - ниже описано, в каких случаях используется) Если все ОК, то возвращает "" (пустую строку), иначе строку с описанием ошибки
Как производится распаковка
Как уже было написано выше, обработка поддерживает 2 метода распаковки - WSH и base64.exe. Достоинство WSH в том, что он уже есть. Достоинство base64.exe в том, что она намного быстрее работает. Выбор осуществляется следующим образом: Если на диске в каталоге 1С77\Bin, каталоге с базой или указанному разработчиком пути существует файл base64.exe, то распаковка осуществляется с его помощь. Если такого файла нет, то в том случае, если общий объем распаковываемых файлов составляет более 60К и base64.exe присутствует в тексте модуля, то сначала c помощью WSH распаковывается base64.exe, а затем с использованием base64.exe распаковываются уже сами файлы.
В связи с вышеизложенным, обратите пожалуйста внимание: Если Вам надо упаковать и распаковать много мелких файлов, и упаковка/распаковка осуществляется маленькими порциями (меньше, чем по 60К), то необходимо: 1. Включить base64.exe в упаковываемый модуль 2. Перед распаковкой файлов, принудительно распаковать base64.exe в каталог программы или каталог ИБ. Можно использовать и любой другой каталог, но тогда при распаковке указывайте этот каталог третьим параметром функции os7764__Распаковать
Работа с упакованными файлами
Эта обработка содержит в своем модуле блоки, идентичные тем, что она формирует для распаковки. Таким образом, Вы можете подготовленный текст скопировать в эту же обработку (os7764.ert).
Внимание: в этом случае вставку текста необходимо производить с замещением еже имеющегося текста.
Для быстрого перехода к месту вставки откройте список функций и включите сортировку: 1. Если Вы хотите вставить весь модуль распаковки, то ищите функцию "A1_Модуль_распаковки_os7764"() 2. (Рекомендуется) Если Вы хотите вставить только данные, то ищите функцию "A2_Данные_втставлять_после_меня"()
После этого сохраните обработку и откройте ее снова в режиме предприятие. Если все сделано правильно, Вы увидите в таблице список файлов, рядом с каждым из них будет написано "Модуль".
Если Вы хотите быстро просмотреть какой-то файл, щелкните по нему 2 раза мышкой. Чтобы распаковать какие-то файлы, отметьте их, выберите каталог и нажмите "распаковать".
Обратите, пожалуйста, внимание
Обработка не имеет каких-либо ограничений на размеры вставляемых файлов, однако при вставке файлов более 100 МБайт открытие обработки может занять продолжительное время. Если такая необходимость все-таки существует, следует предварительно предупреждать пользователя об этом, иначе пользователь может решить, что 1С зависла и закрыть ее принудительно, не дожидаясь открытия файла с обработкой. |