Размещение произвольных файлов с данными в файлах .mxl и .ert

База знаний
  1. 10 г. назад

    Добавляем произвольные файлы с данными (архивы, исполняемые файлы, dll, и прочее) прямо в нашу внешнюю обработку, по принципу "всё с собой", в итоге в передаваемом на сторону ert-файле с обработкой всё необходимое для её функционирования (например, архив с данными, или используемая внешняя dll-библиотека) уже есть внутри.

    Данная проблема давно бередит умы одинэсников, и уже есть несколько очень неплохих разработок на эту тему. Из встреченных мной:
    http://infostart.ru/public/14459/
    http://infostart.ru/public/69202/
    http://infostart.ru/public/70304/

    Однако во всех этих разработках есть одна общая деталь: исходный файл нужно специально кодировать, преобразовывать, и т.п., чтобы потом его можно было засунуть в лист Moxcel. Потом, после того, как извлекли новую сущность из листа Moxcel, производится обратное преобразование, и вуаля - перед нами исходный файл! Это, конечно, весьма интересный подход, но у меня, почему-то, возникло желание чего-то более простого и юзабельного, желательно, чтобы вот прямо в 1С, штатно, щёлкнул на файл, и чтобы он тут же в лист Moxcel и просочился, безо всяких хитромудрых упаковок в картинку и т.п.
    И что вы думаете, я нашёл такую фичу! В контексте редактируемого листа Moxcel, в меню Таблица\Вставить рисунок\Объект я нашёл весьма любопытную возможность: опция "Создать из файла", где и можно, совершенно штатно, прямо из 1С, указав любой файл, поместить его в контейнер на листе. Тут же есть и мини-редактор этого контейнера (Объект: Пакет\Изменить пакет), где можно изменить имя вложенного файла (Правка\Метка), извлечь файл (Файл\Сохранение содержимого), перезалить в пакет другой файл (Файл\Импорт), и кое-что ещё, по мелочам.
    Однако, довольно быстро пришло разочарование, ведь 1С не предоставляет этот замечательный контейнер в виде объекта, и в Таб.ТекущийОбъект - шиш с маслом. Но мы не сдадимся так просто, ведь правда?
    Посмотрев в содержимое файла .ert, я увидел - ну вот же оно, содержимое моего файла, нужно только его ДОСТАТЬ. А достать, надо сказать, оказалось непросто: ведь содержимое файла вложено в Ole10Native, Ole10Native - в Compound, Compound - в объект 1С Moxcel, Moxcel - в, опять-таки, Compound. Но разве мифические трудности остановят настоящего программера? Вооружившись Гуглем, Конфигуратором, своей обработкой по низкоуровневому чтению Compound-файлов ( http://infostart.ru/public/115207/ ), и напильником, я приступил к поиску и извлечению этой Кащеевой иглы. И вы знаете, не безуспешно! Результат своих изысканий и предоставляю на суд общественности.

    Скрин2.png
    Скрин3.png
    Скрин4.png

    Файлы:
    InstallEx.zip

или зарегистрируйтесь чтобы ответить!