Данная проблема давно бередит умы одинэсников, и уже есть несколько очень неплохих разработок на эту тему. Из встреченных мной:
//infostart.ru/public/14459/
//infostart.ru/public/69202/
//infostart.ru/public/70304/
Однако во всех этих разработках есть одна общая деталь: исходный файл нужно специально кодировать, преобразовывать, и т.п., чтобы потом его можно было засунуть в лист Moxcel. Потом, после того, как извлекли новую сущность из листа Moxcel, производится обратное преобразование, и вуаля — перед нами исходный файл! Это, конечно, весьма интересный подход, но у меня, почему-то, возникло желание чего-то более простого и юзабельного, желательно, чтобы вот прямо в 1С, штатно, щёлкнул на файл, и чтобы он тут же в лист Moxcel и просочился, безо всяких хитромудрых упаковок в картинку и т.п.
И что вы думаете, я нашёл такую фичу! В контексте редактируемого листа Moxcel, в меню ТаблицаВставить рисунокОбъект я нашёл весьма любопытную возможность: опция «Создать из файла», где и можно, совершенно штатно, прямо из 1С, указав любой файл, поместить его в контейнер на листе. Тут же есть и мини-редактор этого контейнера (Объект: ПакетИзменить пакет), где можно изменить имя вложенного файла (ПравкаМетка), извлечь файл (ФайлСохранение содержимого), перезалить в пакет другой файл (ФайлИмпорт), и кое-что ещё, по мелочам.
Однако, довольно быстро пришло разочарование, ведь 1С не предоставляет этот замечательный контейнер в виде объекта, и в Таб.ТекущийОбъект — шиш с маслом. Но мы не сдадимся так просто, ведь правда?
Посмотрев в содержимое файла .ert, я увидел — ну вот же оно, содержимое моего файла, нужно только его ДОСТАТЬ. А достать, надо сказать, оказалось непросто: ведь содержимое файла вложено в Ole10Native, Ole10Native — в Compound, Compound — в объект 1С Moxcel, Moxcel — в, опять-таки, Compound. Но разве мифические трудности остановят настоящего программера? Вооружившись Гуглем, Конфигуратором, своей обработкой по низкоуровневому чтению Compound-файлов ( //infostart.ru/public/115207/ ), и напильником, я приступил к поиску и извлечению этой Кащеевой иглы. И вы знаете, не безуспешно! Результат своих изысканий и предоставляю на суд общественности.
Почему то не срабатывает приложение: ЗапуститьПриложение(«»»»+ПапкаИзвлечения+»7z.exe»» e -y «»-o»+ПапкаИзвлечения+»»» «»»+ПапкаИзвлечения+»gpl3.7z»» gpl3.txt»);
Может не те ключи?
7z.exe-есть, Gpl3.7z- тоже выгружен. Командной строкой тоже не получается.
(1) ключи точно те, проверено.
а что пишет, если набирать из командной строки? может, антивирус блокирует?
и что, если из командной строки перейти в темп-папку, куда были извлечены файлы, и просто набрать 7z.exe? выводится информация о ключах и опциях запуска, или нет?
Посмотрел я на тот код, что в модуле демо-обработке прописан, и почему-от подумалось мне, что через эмуляцию картинки гораздо проже и понятней.
И без каких-то не понятно из чего высосаных ограничений.
Одним словом: Хотели как лучше, а получилось — как всегда!
От оценки воздержусь.
(2)
1) 7z.exe ? дает сообщение:
7-Zip 9.20 Copyringht <c> 1999-2010 Igor Pavlov 2010-11-18
Error:
Incorrect command line
2) 7z.exe? дает сообщение:
«7z.exe?» не является внутренней или внешней командой, исполняемой или покетной
(4) а если перед
ЗапуститьПриложение()
вставить строчку: Сообщить(«<«+ПапкаИзвлечения+»>»);
что выводится в строке сообщений? (желательно скопипастить сюда, может, дело в наименовании темп-папки)
или ещё так можно попробовать:
СтрокаЗапуска=»»»»+ПапкаИзвлечения+»7z.exe»» e -y «»-o»+ПапкаИзвлечения+»»» «»»+ПапкаИзвлечения+»gpl3.7z»» gpl3.txt»;
Сообщить(«<«+СтрокаЗапуска+»>»);
ЗапуститьПриложение(СтрокаЗапуска);
желательно тоже скопипастить текст из окна сообщений
(3)
«через эмуляцию картинки гораздо проже и понятней» проще? ну да. при той реализации, как там — конечно проще. поиск нужной строки-метки по тексту «в лоб», я тоже мог бы сделать поиск потоков ole10native так, уместилось бы всё про всё в 200 строк, но специально не стал так делать. потому как неправильно это. это называется «алгоритм, неустойчивый ко входным данным»
«И без каких-то не понятно из чего высосаных ограничений. » это про что? не совсем понял
«Одним словом: Хотели как лучше, а получилось — как всегда!» — ну, вы имеете право на своё мнение
На самом деле весьма оригинально!
(6) «И без каких-то не понятно из чего высосаных ограничений. » — это я про надпись перед скачиванием:
Ограничения на использование материалов для пользователей
1. Пользователь получает право использовать материалы, к которым ему был предоставлен фактический доступ, исключительно в личных информационно-ознакомительных целях.
2. Пользователь не вправе воспроизводить и распространять материалы каким либо образом. Данное требование не распространяется на передачу материалов сотрудникам пользователя для использования их в связи с исполнением ими своих служебных обязанностей.
3. При возникновении необходимости иного использования полученных материалов Пользователь обязан обратиться к Правообладателю для заключения договора на передачу имущественных прав на использование материалов.
В случае обнаружения нарушения, пользователь будет незамедлительно заблокирован.
(6) а п. №2 этого ограничения меня ва-а-ще в ступор вводит. Получается я сам не могу все это использовать, при изготовлении каких-либо отчетов-обработок для обслуживаемых мной клиентов, но вот если для этого найму батраков, то они смогут этм воспользоваться. Но при условии, что получат эти материалы от меня, а не (Боже упаси) проявят инициативу и скачают их с сайта. Только вот факт передачи надо ли будет заверять нотариально или моего честного слова для Вас будет достаточно?
(8) ну, так это не ко мне вопрос. я не являюсь ни автором этих надписей, ни хозяином этого ресурса.
моя мини-лицензия помещена в двух строчках внутри обработки
ну вот и пришла пора вирусов в 1с
(11) я бы сказал, что эта пора уже давно, как ушла. тема не взлетела. а метод инкапсуляции бинарных файлов в макеты имеет другое, довольно прикладное значение — файл с данными (например, классификатор), нужная для функционирования обработки dll-ка, и т.п.
Интересная вешь, +