Гуглила, читала, пробовала применять
остановилась на этом
&НаКлиенте
Процедура Загрузить(Команда)
Файл = Новый ДвоичныеДанные(ОБъект.ИмяФайла);
Адрес = ПоместитьВоВременноеХранилище(Файл, ЭтаФорма.УникальныйИдентификатор);
//ОбработатьНаСервере(Адрес);
ЗагрузитьНаСервере(Адрес);
КонецПроцедуры
&НаСервере
Процедура ЗагрузитьНаСервере (ФайлВХранилище)
Попытка
ex = ПолучитьCOMобъект("","Excel.Application");
Исключение
Сообщить("Excel Application не создан!!");
Возврат;
КонецПопытки;
ДвоичныеДанные = ПолучитьИзВременногоХранилища(ФайлВХранилище);
тПуть = КаталогВременныхФайлов() + "123.xlsx"; //для примера...
ДвоичныеДанные.Записать(тПуть);
Попытка
ex.workbooks.open.Open(тПуть,,Истина,,,,,,,,Ложь);
Исключение
Сообщить("Файл перемещен или удален!");
Возврат;
КонецПопытки;
Показать
и ВСЕ РАВНО НЕ ПОЛУЧИЛОСЬ!
Помогите пожалуйста
Лучше всего - рабочей обработкой, читающей файл Эксель на сервере 1С на SQL
Управляемые формы. MS SQL. И база и эксель физически лежат на одной машине. Но эксель упорно не открывается, мол 1с не видит его. COMОбъект на клиенте вроде как нельзя создавать. Как боритесь с этой ситуевиной?
Так а проблема в чём? Вы открыли книгу Excel, а прочитать данные с листов в этой книге? На этом этапе Вы будто бы почистили картошку и удивляетесь, почему она ещё не пожарена. Очевидно, потому что её нужно ещё пожарить. :)
(1) Вот кусочек кода, где я забираю данные из одного листа Excel и кидаю на другой.
// Открываем временный файл КонтрольИсключений, копируем в нём лист с данными и вставляем эти данные в лист книги Excel приемника
КнигаКонтрольИсключений = ОткрытьExcelДокумент.WorkBooks.Open(ВременныйКаталог + "КонтрольИсключений.xlsx");
ЛистКонтрольИсключений = КнигаКонтрольИсключений.WorkSheets(1).Cells.Select();
НовыйЛистКонтрольИсключений = НоваяКнига.WorkSheets.Add();
НовыйЛистКонтрольИсключений.Name = "Контроль исключений";
ОткрытьExcelДокумент.Selection.Copy();
НовыйЛистКонтрольИсключений.Paste();
5.
vadim.semyonov.rzn
12.05.21 17:42 Сейчас в теме
(4) Согласен, "прочитать" гораздо универсальнее. Например, на сервере может не быть офиса. А помещать во временное хранилище лучше всего через НачатьПомещениеФайла (BeginPutFile). СП в помощь
(7) После чтения многостраничного документа в табличный документ у таб. дока появляются именованные области по названиям страниц Эксель. Потом получите нужную область.
(10) А на самом деле он есть? Что нам показывает проводник в этой папке? Используйте Файл.Существует() для проверки физического наличия файла на диске.
(11)
(12)
файл есть естественно, но толи прав USRV8 не хватает, толи сервер 1С запущен на другом (физически) сервере.
Это не мой сервер - не могу знать. в Файловой на том же вин-сервере работает.
(23) Файл = Новый ДвоичныеДанные(ОБъект.ИмяФайла);
Адрес = ПоместитьВоВременноеХранилище(Файл, ЭтаФорма.УникальныйИдентификатор);
//ОбработатьНаСервере(Адрес);
Сообщить(Файл.Существует());
Это на Клиенте
Метод объекта не обнаружен (Существует)
{ВнешняяОбработка.ЗагрузкаЛидов.Форма.Форма.Форма(17)}: Сообщить(Файл.Существует());
(18) Поверьте, так правильнее. Если у вас в организации все лицензированное, то хороший админ вам не скажет спасибо, если эксель будет установлен на сервере, ибо это в плане лицензирования ГОРАЗДО дороже.
(22) мне пофиг на этого админа, на этот сервер, мне надо выполнить разовую работу. по переносу данных из Экселя в справочник УНФ, мне надо из файла Эксель наСервере получить данные.
(24) Разовая работа.
Если вы не умеете переносить файл на сервер (нигде же примеров посмотреть нельзя, действительно), создайте на форме обработки табличный документ скопируйте в него данные из екселя вручную, обработайте этот табличный документ.
Дел на 5 минут.
(36) дело в том, что уже не первый раз возвращают по такой причине, прошлый раз человек сумел на сервере запуститься с консоли (не уверена, что верно пишу,) и обработка заработала.
(24) Если сервер чужой, есть явные проблемы с правами или еще чем-то, и эти проблемы на СЕРВЕРЕ не решаются, то единственное решение - сделать это на клиенте и передать на сервер данные для формирования справочника.
или вы хотите чтобы здесь нашли ответственного админа за сервер и сказали на что нужно дать права? Вам подсказывают реальные способы решения а вы не слышите
&НаКлиенте
Процедура Загрузить(Команда)
Файл = Новый Файл(ОБъект.ИмяФайла);
Если Не Файл.Существует() Тогда
Сообщить("ФАЙЛ НЕ СУЩЕСТВУЕТ");
Возврат;
КонецЕсли;
Попытка
ex = ПолучитьCOMобъект("","Excel.Application");
Исключение
Сообщить("Excel Application не создан!!");
Возврат;
КонецПопытки;
Попытка
ex.workbooks.open.Open(Файл.ПолноеИмя,,Истина,,,,,,,,Ложь);
Исключение
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
КонецПроцедуры
(37) что я буду делать на клиенет с файлом, предеавать на сервер строки?
вот так тоже не открыл
ДвоичныеДанные = ПолучитьИзВременногоХранилища(ФайлВХранилище);
тПуть = КаталогВременныхФайлов() + "123.xlsx"; //для примера...
ДвоичныеДанные.Записать(тПуть);
КаталогНаДиске = Новый Файл(тПуть);
Сообщить(КаталогНаДиске.Существует());
Сообщить( тПуть);
Попытка
ex.workbooks.open.Open(КаталогНаДиске,,Истина,,,,,,,,Ложь);
Исключение
Сообщить("Файл перемещен или удален!");
Возврат;
КонецПопытки;
(38) Ну, значит на сервер стоит не такой эксель. Или идите к админу, или работайте на клиенте (хоть с файлом, хоть с табдоком - вариантов уже накидали достаточно)
Кстати, а точно так нужно открывать файл экселя через ком объект? точно уже не помню, но мне кажется ошибка там не изза наличия или отсутствия файла.
Вот тут например совсем другой способ открытия листа экселя. Возможно ошибка у вас в исключении изза ошибки в ком объекте
Попытка
Excel = Новый COMОбъект("Excel.Application");
Excel.WorkBooks.Open(ИмяФайла);
Состояние("Обработка файла Microsoft Excel...");
Исключение
Сообщить("Ошибка при открытии файла с помощью Excel! Загрузка не будет произведена!");
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
Попытка
//Открываем необходимый лист
Excel.Sheets(1).Select();// лист 1, по умолчанию
Исключение
//Закрываем Excel
На клиенте прочиать файл в табличныйдокумент. далее табличный перефразировать в таблицу значений или таблица на форме. На сервере использовать данные из таблицы для создания файла.
П.с. что у вас выдает данные строки: ТабДок = Новый ТабличныйДокумент; ТабДок.Прочитать(ПутьКФайлу, СпособЧтения); Что в табдок или какая ошибка?
(45)