Упаковщик двоичных файлов os7764

18.04.10

Разработка - Инструментарий разработчика

Помещает любые файлы (драйвера, внешние компоненты, видеоролики) в конфигурацию или внешнюю обработку и обеспечивает их распаковку.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Бесплатно
Упаковщик двоичных файлов os7764
.ert 300,00Kb
177
177 Скачать бесплатно
Демо с упакованными файлами (ВНИМАНИЕ: размер 8 МБ)
.ert 8,21Mb
52
52 Скачать бесплатно

Работает так:

1. Открываете обработку

2. Указываете нужные файлы

3. Жмете "Упаковать"

4. Сформированный текст копируете в нужный модуль конфигурации или внешней обработки

ВСЕ!

5. Для распаковки необходимо вставить в модуль один вызов функции распаковки, описание функции включается в текст модуля (п. 4) автоматически.

 

Это дает удобство как разработчику, так и пользователю.

Например, в обработку импорта КЛАДР можно вложить сам классификатор. В обработку обслуживания сканера штрихкода - компоненту для работы с этим сканером. Тогда при начале работы можно проверить наличие этой компоненты в системе, и если ее нет - автоматически установить.

Это облегчает распространение программ через сеть Интернет, да и внутри локальной сети за одним файлом всегда проще уследить, чем за несколькими. Если упакованные файлы можно помещены в один из модулей конфигурации, то они будут доступны в том числе и после выгрузки-конфигурации стандартными средствами и загрузки ее на другом компьютере.

Отличительные особенности:

1. Очень просто работает, никаких лишних действий разработчика.

2. Можно упаковывать большие файлы и распаковывать их за разумное время (на Athlon64 2ГГц файл kladr.zip (12Мб) извлекается за 16 секунд).

3. Автоматически распознается наличие v7plus.dll и соответственно используются объект из этой компоненты (AddIn.V7TextFile, для больших файлов предпочтительно) или стандартный "Текст".

4. Может самостоятельно устанавливать v7plus.dll  - просто добавьте ее в таблицу файлов.

Принцип работы

Очень простой - двоичные файлы кодируются по алгоритму base64. Получается текст, который и вставляется непосредственно в любой модуль. Распаковка - наоборот, преобразует этот текст в исходный файл.

К сожалению, мне не удалось добиться от 1С понимания символа с кодом 0, поэтому пришлось использовать сторонние средства: Windows Scripting Host (WSH - встроен в Windows) и программа base64.exe (встроена в обработку) (автором разрешено использование программы в любых целях). То есть кроме ert файла с обработкой ничего дополнительно инсталлировать не надо.

Использование упакованных файлов

Эта же обработка является примером использования упакованных файлов - она содержит точно такой же модуль распаковки и если Вы вставите данные в нее - она покажет список файлов и даст возможность их распаковать. В списке доступных для загрузки файлов есть демо-обработка, содержащая некоторое количество упакованных файлов.

Вся подробная информация по использованию есть в справке к обработке.

См. также

Инструментарий разработчика Системный администратор Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Консоль запросов к базе SQL, не требующая внешних компонент

10 стартмани

29.04.2015    22311    57    Gvozdod    8    

16

Инструментарий разработчика Системный администратор Программист Платформа 1С v7.7 Платформа 1С v8.3 Абонемент ($m)

Очередная редакция альтернативного стартера, являющегося продолжением StartManager 1.3. Спасибо всем, кто присылал свои замечания и пожелания, и тем, кто перечислял финансы на поддержку проекта. С учетом накопленного опыта, стартер был достаточно сильно переработан в плане архитектуры. В основном сделан упор на масштабируемость, для способности программы быстро адаптироваться к расширению предъявляемых требований (т.к. довольно часто просят добавить ту или иную хотелку). Было пересмотрено внешнее оформление, переработан существующий и добавлен новый функционал. В общем можно сказать, что стартер эволюционировал, по сравнению с предыдущей редакцией. Однако пока не всё реализовано, что планировалось, поэтому еще есть куда развиваться в плане функциональности.

1 стартмани

23.04.2014    168465    1885    Alexoniq    1596    

499

Инструментарий разработчика Программист Платформа 1С v7.7 Платформа 1С v8.3 Россия Абонемент ($m)

Согласитесь, что окно стандартное сообщений в 1С иногда приносит больше неудобств, чем пользы. И тем более разные "Предупредить"... Что с этим окном только не делают! Его отцепают от формы, делают маленьким, умудряются спрятать за границы экрана. А потом звонят программистам с претензией, что документ почему-то не проводится, отя ничего и не пишет. У вас такого не было? А вот у нас было и не раз )))

1 стартмани

04.09.2013    33423    61    O-Planet    78    

49

Инструментарий разработчика Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

На днях встретил вопрос на форуме про возможность внесения изменений в конфигурацию без долгого сохранения в рабочей базе большого объема. Вот решил поделиться опытом, как это делал я. База у нас была объемом порядка 120 Гб. К базе обращался сайт в режиме 24/7, поэтому важно было быстро сохранять изменения и желательно без последующего монопольного запуска для восстановления индексов и процедур и без отключения пользователей от базы. Это первая часть статьи и посвящена она справочникам. С одной стороны - это самый простой объект, с другой стороны, именно про справочник спрашивалось на форуме. Если статья будет востребована, то я напишу аналогичные про документы, регистры и может еще что.

1 стартмани

13.08.2013    21834    Reptile    5    

35

Инструментарий разработчика Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Встала недавно задача для одной организации, которая все еще на 1С 7.7 немного автоматизировать работу отдела продаж. А именно уйти от ручного заполнения договоров, сделанных юристами в MS Word. Договора от разных фирм и разного назначения отличались. Переводить их в таблицы 1С очень не хотелось и нашел способ прямо в файлах Word сделать небольшие дополнения, чтобы можно было печатать, используя именно эти заготовки юристов.

1 стартмани

14.07.2013    27670    56    adamx    11    

14

Инструментарий разработчика Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Давным давно, когда я еще плотно писал на 7.7 работа с формами была мучительной и неудобной. Приходилось каждый элемент выкладывать, выравнивать на форме ручками, прописывать код в модуле. Иногда при разработке очередной формы приходила в голову мысль: "а где-то я уже похожее делал..." и начинался мучительный поиск подходящего кода в своих запасах........

1 стартмани

21.02.2013    18362    36    MarSeN    14    

17

Инструментарий разработчика Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Анализируем различные данные в 1С, используя OLAP-технологии со всеми прелестями. Т.е. наглядное отображение данных, быстрые расчеты, горизонтальные и вертикальные группировки любой вложенности, удобная фильтрация, Drag'n'Drop и ещё много приятных вещей от MS. Обработка на входе принимает практически любую таблицу значений (ТЗ в которой колонкам указаны типы значений, строка, число и т.п.), на выходе имеем на форме 1С сводную таблицу и график по этой ТЗ, с которой работаем, как и в Excel со сводной таблицей и диаграммой. Взял за основу разработку «OLAP Анализ счёта» ( http://infostart.ru/public/14964/ ) от JohnyDeath и переделал под любую ТЗ. Опционально используется «Прогресс бар для 1С 77» (http://infostart.ru/public/14061/ ) от Gmix.

1 стартмани

21.12.2012    36362    51    venger    7    

23
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. nafa 661 19.04.10 10:49 Сейчас в теме
(1) (2) Это вобще-то совершенно разные обработки. По ссылкам на проклуб - внешняя компонента для хранения двоичных данных в информационной базе. Назначение - хранение информации в существующей базе.
У меня - обычная обработка, не требующая никаких предустановленных ВК, и предназначенная для размещения файлов в конфигурацию или ert. Создаваемый модуль предназначен для работы в т.ч. когда есть только md файл и нет еще никакой информационной базы и нет никаких предустановленных ВК. (И в том числе позволяет эту ВК из MD файла сделать).
4. Ёпрст 1065 19.04.10 11:34 Сейчас в теме
(3) Да ё... Абрахамса код делает всё тоже что и у вас, лень искать.
Да и метода еще с 2000-х годов известна..
5. nafa 661 19.04.10 12:09 Сейчас в теме
(4) Я не совсем понимаю, что не так.
1. На проклубе программа лежит по назначению и порядку применения совершенно другая, даже скачал и специально проверил.
2. Сам алгоритм base64 действительно известен давно. А применяет его кто как считает нужным.
3. Для разработки был использован готовый алгоритм base64, а также утилита base64 все остальное разработано самостоятельно и ни у кого не заимствовано.
4. Наверное есть другие программы, выполняющие действительно аналогичную функцию, но не понимаю чем плохо что будет еще одна. Есть например Internet Explorer - ничего же плохого нет в том, что появляются Mozilla, Opera, Chrome и пр. Каждый выбирает то, что ему нравится.
oninfostart; support; +2 Ответить
6. Ёпрст 1065 19.04.10 14:07 Сейчас в теме
(5) Да всё так, просто ничего нового, имхо.
2. Ёпрст 1065 19.04.10 10:19 Сейчас в теме
+1 ну и Абрахамс кидался кодом кодирования-декодировани в base64, где-то валяется готовый код распаковки dll
7. script 128 19.04.10 15:54 Сейчас в теме
Зачем далеко ходить все уже давно есть на инфостарте
http://infostart.ru/public/14459/
Но с этой реализацией у меня были проблемы
При файле в 500 кб у меня 1С вообще виснет. Да и программная упаковка и распаковка нескольких файлов одновременно была бы тоже оч. полезной.
Ваша решает эти проблемы ?

а это уже мое
http://infostart.ru/public/64757/
8. nafa 661 19.04.10 17:15 Сейчас в теме
(7) Максимум, что тестировал - 70Мб. Файлов можно упаковывать сразу много, блок для вставки создается один на все файлы, и распаковывать также один/по списку/все за 1 вызов функции распаковки.
При работе с большими файлами желательно, чтобы у пользователя стояло v7plus. Если вы не уверены, что оно есть у пользователя - добавьте его в список упаковываемых файлов - тогда обработка при необходимости установит его сама (т.е. никаких дополнительных вызовов делать не надо).
Также обработка использует 2 метода для распаковки (один заточен под маленький объем (до 60К) другой - под большой. Выбирает сама исходя из размера файлов. Но если идет много вызовов и в каждом распаковка одного маленького файла, то рекомендую указать, что должен использоваться метод распаковки для больших объемов - отработает быстрее (в справке написано, как это сделать). Если одним вызовом распаковываются например 100 файлов по 20К, то ничего дополнительно делать не надо.
По-поводу http://infostart.ru/public/14459/ - она не виснет из-за объема (я пробовал ее на объеме в 10 раз больше - 6Мб - проблем нет), а просто WSH непредсказуемо выдает окно о длинном выполнении скрипта, которое оказывается под рабочим окном 1С. (на которое надо просто переключиться и закрыть - тоже столкнулся) При распаковке по сути она делает просто копирование части файла и тормозить тут нечему. Но она к сожалению, не поддерживает размещение данных в md (хотя принцип наверное можно было бы применить тот же, но я не уверен, что всегда будет работать (1С может в принципе выпустить какой-нибудь новый релиз и, например, начать сжимать bmp шки (тексты модулей же жмет))). Поэтому сделал свою.
9. nafa 661 19.04.10 17:26 Сейчас в теме
(7) я посмотрел - http://infostart.ru/public/64757/ - виснуть может еще из-за того, что:
Присваиваем ей имя "precomp"

Попробуйте дать идентификатор гарантированно уникальный, что-то вроде "precomp_gh4lms994mfirefe0w9f3f3fo3fj39" (т.к. слово precomp может в файле оказаться по другим причинам и в результате начало файла определиться неверно)
10. GOOD256 75 19.04.10 17:46 Сейчас в теме
11. Noy 1079 20.04.10 17:13 Сейчас в теме
Запаковать ничего не получилось:
При записи строки произошла ошибка : The file is open only for reading
os7764_Зт.ЗаписатьСтроку(os7764_сСтр);


Скачал "демо" - там распаковка работает, но медленно

По-поводу обработки Маляева (Размещение двоичных данных (обработок, документов, библиотек) в файле ERT) - она действительно очень медленная, но если ее чуть-чуть "допилить" то можно получить такие результаты:
Распаковка файла FormEx.dll (558'080 байт): 0.133 сек
Распаковка файла far.com.ua.xls (10'362'368 байт): 0.953 сек
Распаковка файла Snatch_Goblin.avi (47'741'596 байт): 9.149 сек

что гораздо лучше чем
kladr.zip (12Мб) извлекается за 16 секунд
12. Noy 1079 20.04.10 17:48 Сейчас в теме
(11)+ попробовал не сервере (Сата2 в Рейде10) - там вообще
Распаковка файла Snatch_Goblin.avi (47'741'596 байт): 3.892 сек


боюсь запускать на SSD :)
13. Ёпрст 1065 20.04.10 18:01 Сейчас в теме
(11) чем допиливал обработку Маляева?

14. Noy 1079 20.04.10 18:06 Сейчас в теме
(13) Просто читаю не по-байтно, а блоками по 4К
15. Ёпрст 1065 20.04.10 18:09 Сейчас в теме
(14) ну ясно...Мне Маляевская тоже больше радует..Ибо хранить текст в открытом виде не есть гуд, автор, например, чтоб ошибки не возникало, его на строки побил..
16. nafa 661 20.04.10 19:35 Сейчас в теме
(11) Я ошибки не нашел (именно в том файле, что на сайте), и даже искусственно именно такую ошибку вызвать не смог (попробовал отключил права на запись файлов в каталоге где создается временный файл с текстом - тогда файл конечно не создается, но и ошибка соответствующая вылезает).
17. Noy 1079 20.04.10 20:36 Сейчас в теме
(16) Отписал про ошибку в личку
18. nafa 661 21.04.10 11:26 Сейчас в теме
(11) С ошибкой (комментарий N 11) разобрался.
Оказывается, метод ОткрытьФайл объекта AddIn.V7TextFile в разных версиях v7plus.dll вызывается по-разному! И в результате вызов в версии 6, на которой проявляется ошибка дает результат прямо противоположный версии 11, которой я пользовался: файл вместо записи открывается на чтение.
Проверил на 8й версии v7plus - нормально работает. Т.е. изменение порядка вызова произошло в 7ой ли 8ой версии.
Вывод: для работы обработки используем v7plus версии не меньше 8. Если у Вас такой нет, можно ее просто отключить - работа с файлами будет идти через объект "Текст". (Но для файлов >1Мб ее все же лучше поставить - на таких файлах "Текст" тормозит).
19. Flyyy 22.04.10 16:55 Сейчас в теме
Добавил 1 файл в обработку(1с.txt). При запаковке выдает ошибку:
При открытии файла произошла ошибка : Файл "C:\1c.txt.b64" не найден.
Чт.Открыть(сИмяФайла);
{C:\OS7764.ERT(680)}: Неверное имя файла!
v7plus.dll - 11 версия. В чем может быть дело?
20. nafa 661 22.04.10 20:01 Сейчас в теме
(19) Я проверил именно с таким именем файла именно в каталоге c:\ - работает. Так что, вероятно - права на действия (создание файлов, запись, выполнение) в каталоге C:\
21. Tone2010 12 26.04.10 20:20 Сейчас в теме
Для base64 используйте .NET

Convert.FromBase64String();
Convert.ToBase64String();

Используя интерфейс IStorage, можно к любой ert-шке присобачить любые данные без конвертации в base64.
22. nafa 661 26.04.10 23:41 Сейчас в теме
(21) Идея хорошая, но .NET не у всех стоит. А в обработку его упаковывать накладно.
Base64 только для того, чтобы в 1С все работало штатными средствами, т.к. 1С не умеет обрабатывать символ с кодом 0 (может и еще какие, не проверял). Поэтому в 1С только те символы, с которыми она штатно работает, а декодирование приходится выполнять сторонними средствами.
23. bulpi 217 27.04.10 12:06 Сейчас в теме
Наконец-то добрался до внимательно посмотреть обработку. Если бы можно было, поставил 10 плюсов. Мало реализовать идею, она и раньше была. Человек потрудился, чтобы было удобно чайникам, вроде меня :D
24. MrDen 435 29.04.10 19:36 Сейчас в теме
(0) можно для распаковки попробовать также
Внешняя компонента для преобразования файлов из/в кодировку Base64 из встроенного языка 1С Предприятие
http://www.softmaker.kz/files.php?cat=8&id=24
25. wing 28 14.07.10 07:03 Сейчас в теме
(0) А чем можно открыть обработку? ни 1С, ни конфигуратор не могут ее открыть, ссылаясь на общую файловую ошибку доступа к основному потоку метаданных.

Видимо, был какой-то временный сбой - раза с 4 скачалось нормально.
26. nafa 661 14.07.10 09:57 Сейчас в теме
Наверное при скачивании файл попортился. Напишите мне в личном сообщении емейл, я пришлю в архиве.
27. BlueWind 09.03.23 04:10 Сейчас в теме
Отличная обработка! Интерфейс, описание - все прекрасно!

Обнаружена ошибка при упаковке/распаковке в случае, когда в путях запуска обработки или каталога распаковки файлов содержатся пробелы. (Win7x64):

Чт.Открыть(сИмяФайла);
{T:\TEMP\123 ЖДЛО\PUBID_69202-OS7764.ERT(680)}: Неверное имя файла!

Для исправления строку 791 модуля
КомандаСистемы(os7764_сИмяФайла + ".cmd");
заменить на
КомандаСистемы(""""+os7764_сИмяФайла + ".cmd"+"""");

Если эту же команду в таблице "ТекстМодуля" обработки заменить на
Состояние("Выполнение команды DOS. Ждите...");
WshShell = CreateObject("WScript.Shell");
WshShell.Run("%comspec% /c "+""""+os7764_сИмяФайла + ".cmd"+"""",0,-1);
то окно DOS при распаковке не будет появляться.
28. BlueWind 19.06.24 02:31 Сейчас в теме
(27) Дополнение. Если база размещена на сетевом ресурсе, то DOS-овское окно может не отрабатывать команду, и выводить ошибку насчет того, что CMD.EXE не поддерживает пути UNC

Для решения можно перед использованием обработки выполнить код (например, добавить в ПриНачалеРаботыСистемы()):

	//разрешить пути UNC для запуска командного процессора CMD.EXE (при архивировании файлов) 
	Если Лев(КаталогИБ(),1) = "\" Тогда //сетевая папка - CMD.EXE не поддерживает пути UNC в качестве текущей папки
		ЗапуститьПриложение("reg add ""HKCU\Software\Microsoft\Command Processor"" /v DisableUNCCheck /t REG_DWORD /d 1 /f");
	КонецЕсли;

29. CheBurator 2712 19.06.24 03:17 Сейчас в теме
Информационно:
Обработка-демо
если в качестве каталога распаковки выбрать корневой диск (например, E:\)- ругается
30. CheBurator 2712 19.06.24 15:05 Сейчас в теме
Автору спасибо.
Использую.
Оставьте свое сообщение