ActiveX екселя внутри 1С #563322


#0 by AdApter
Подскажите как отобразить окно Excel на форме 1С8, чтобы пользователь мог ввести данные в лист? Наверное надо какой-то ActiveX использовать. Пробовал OWC SpreadSheet, но он не поддерживает многих функций большого экселя. Например переносы в строках. Хорошо было бы использовать Internet Explorer, но в нем при открытии xls вопрос выскакивает "открыть или сохранить". Как бы обойти это окошко через DOM браузера например?
#1 by AdApter
Up
#2 by crazy_killer
может через active document как-нибудь, там вроде полноценный эксель выскакивает
#3 by AdApter
active document не дает пользователю возможность интерактивной работы с excel, можно менять только программно
#4 by AdApter
В браузере можно открыть xls и этой воможности вполне достаточно для интерактивной работы пользователя (т.е. IE использует какой то ActiveX Excel) Rак сделать html, чтобы при открытии он сам загружал и показывал xls?
#5 by AdApter
up
#6 by Asmody
Реквизит1="<html><body style=""margin:0;padding:0;""><iframe width=100% height=100% src=""file:///c:doc.doc"">Нет фреймам!</iframe></body></html>";
#7 by vde69
зачем? ну открыл что-то сделал и дальше чего с файлом делаешь?
#8 by AdApter
открылся пустой фрейм. Можешь htm на мыло сбросить ? ну дальше уже для вопроса не важно, есть механизм который обрабатывает данные этих файлов. Надо чтобы пользователь внес туда цифры, а потом сохранил файл кнопкой на форме 1С.
#9 by Asmody
весь html в
#10 by vde69
[1c] Процедура ПередЗакрытиемДокументаWord(Документ, Отмена)        Документ.Save;     КонецПроцедуры Процедура ВыходИзWord        ВременноеХранилище = Новый ХранилищеЗначения(Новый ДвоичныеДанные(ИмяВременногоФайла));        // удалим временный файл    ИмяКаталога = ""; ИмяФайла = "";    РаботаСФайлами.ПолучитьКаталогИИмяФайла(ИмяВременногоФайла, ИмяКаталога, ИмяФайла);    УдалитьФайлы(ИмяКаталога, ИмяФайла);        ИмяВременногоФайла = "";    Модифицированность = Истина;     КонецПроцедуры ...... ...... ......        ИмяВременногоФайла = ПолучитьИмяВременногоФайла("doc");        Если ВременноеХранилище <> Неопределено Тогда            Doc = ВременноеХранилище.Получить;        ИначеЕсли ЗначениеЗаполнено(Хранилище) тогда            Doc = Хранилище.Шаблон.Получить;        Иначе            Doc = Неопределено;        КонецЕсли;                Word = Новый COMОбъект("Word.Application");        Word.Visible = Ложь;        Попытка                        Если Doc <> Неопределено Тогда                Doc.Записать(ИмяВременногоФайла);                Word.Documents.Open(ИмяВременногоФайла,,,,,,,,,,,Ложь);                 //Function Open ( _ //    1 FileName As Object, _ //    2 ConfirmConversions As Object, _ //    3 ReadOnly As Object, _ //    4 AddToRecentFiles As Object, _ //    5 PasswordDocument As Object, _ //    6 PasswordTemplate As Object, _ //    7 Revert As Object, _ //    8 WritePasswordDocument As Object, _ //    9 WritePasswordTemplate As Object, _ //    10 Format As Object, _ //    11 Encoding As Object, _ //    12 Visible As Object, _ //    13 OpenAndRepair As Object, _ //    14 DocumentDirection As Object, _ //    15 NoEncodingDialog As Object, _ //    15 XMLTransform As Object _ //) As Document                                            Иначе                Word.Documents.Add;                Word.Documents.SaveAs(ИмяВременногоФайла);            КонецЕсли;                        Document = Word.Documents;            Document.Activate;            Selection = Word.Selection;            Word.Visible = Истина;                        Если не ТолькоЧтение Тогда                ДобавитьОбработчик Word.DocumentBeforeClose, ПередЗакрытиемДокументаWord;                ДобавитьОбработчик Word.Quit, ВыходИзWord;            Иначе                // если ворд открыт на чтение, то имя файла нигде не нужно                ИмяВременногоФайла = "";            КонецЕсли;                    Исключение            Word.Visible = Истина;        КонецПопытки; [1c] поставь отладчик в первые 2 процедуры и будешь удивлен :)
#11 by AdApter
О, ДобавитьОбработчик. Классная штука! попробую через нее. Конечно не очень юзабельно что будет открываться второе окно, за пределами окна 1С, но лучше чем ничего
#12 by AdApter
при этом придется заморачиваться с защитой листа, ячеек, убирать программно панели редактирования Ексель. и все равно остаются еще дырки для изменения структуры таблички, шрифтов, форматирования и пр.
#13 by AdApter
to vde69 - но у меня почему-то пустой фрейм, док в нем не загружается, ошибок не выдает. а у тебя как?
#14 by vde69
к сожалению работает только на толстом клиенте
#15 by vde69
100% рабочий код, использую больше года
#16 by AdApter
да, стало открывать! проблема была в русских буквах и пробелах в пути к файлу. только все равно выдает запрос "открыть сохранить". (А мне толстый клиент и нужен)
#17 by AdApter
как сделать чтобы открывалось без запроса?
#18 by AdApter
up2
#19 by vde69
код показывай что-бы не было вопросов используй DisplayAlerts = 0 только используй ОСТОРОЖНО, вещь опасная :)
#20 by AdApter
в окне вопроса есть галочка "больше не спрашивать". Видимо у тебя установлена, поэтому не выскакивает. А мне под каждого пользователя руками ее ставить?
#21 by vde69
тагды в хелп екселя, ищи параметры запуска, там вроде было что-то подобное
#22 by AdApter
есть!. Чтобы в браузере запрос не выскакивал надо поправить реестр [HKEY_CLASSES_ROOTExcel.Sheet.8] "EditFlags"=dword:00010000 Всем спасибо!
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С