|
Чтение файла Excel на сервере | ☑ | ||
---|---|---|---|---|
0
catzilla codzilkin
17.01.25
✎
10:04
|
Всем здравствуйте.
Не знаете что могло сломаться при обновлении комплексной или иной конфигурации? Или это платформа? Выдает такую ошибку "Недопустимая строка с указанием класса 0x800401F3" при создании СОМОбъект("Excel.Application") в новом году. До этого говорят работало. Лист = Новый СОМОбъект("Excel.Application"); Знаю что надо делать через копирование из буфера в Моксель 1С. Но пока вот так... |
|||
1
Волшебник
17.01.25
✎
10:05
|
Переустановите Excel на сервере
|
|||
2
craxx
17.01.25
✎
10:20
|
(0) где этот вызов происходит? на сервере? на клиенте?
в толстом или тонком? или в веб, упаси Господь. |
|||
3
Волшебник
17.01.25
✎
10:26
|
(2) на Linux-сервере :)
|
|||
4
craxx
17.01.25
✎
12:24
|
(3) а, да, точно, забыл же..
|
|||
5
catzilla codzilkin
19.01.25
✎
09:40
|
(2) на сервере
|
|||
6
Волшебник
19.01.25
✎
09:42
|
(5) Вы переустановили Excel на сервере? Он вообще там стоял?
|
|||
7
catzilla codzilkin
19.01.25
✎
09:44
|
(6) наш сисадмин ставил... утверждает что его до этого там не было судя по логам...
|
|||
8
catzilla codzilkin
19.01.25
✎
09:45
|
* вместе с сисадмином клиента
|
|||
9
Волшебник
19.01.25
✎
09:53
|
Проблема решена?
|
|||
10
catzilla codzilkin
20.01.25
✎
06:21
|
Нет. Переустановили и зарегистрировали всё что можно и нельзя. Схема работы такая... По кнопке берется файл экселевский с клиента и переносится на сервер 1с функцией платформенной. И меняется реквизит по которому к файлу нужно обращаться. С "путь" на "адрес". Даже если и исправить этот момент на сервере этот файл найти не может функция в дальнейшем. Ошибка на ошибке, сомневаюсь почему-то что у них это работало до обновления.
1. У себя на рабочем компьютере который и сервер и клиент расширение на создание СОМ-объекта не ругается. Но выдает ошибку описанную выше. 2. Восстановили архивную базу до обновления релиза у клиента. Ошибка та же. Дело не в обновлении конфигурации, как утверждает клиент. Архивная база дает ту же ошибку. |
|||
11
Мимохожий Однако
20.01.25
✎
07:43
|
(10) Код переноса файла на сервер в студию
|
|||
12
catzilla codzilkin
20.01.25
✎
08:29
|
&НаКлиенте
Процедура Префикс_ЗаполнитьСуммыИзЭксельВместо(Команда) Оповещение = Новый ОписаниеОповещения("ЗаполнитьСуммыПоФайлу", ЭтотОбъект); ОткрытьФорму("ОбщаяФорма.Префикс_ВыборФайла",, ЭтотОбъект,,,, Оповещение, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); КонецПроцедуры |
|||
13
catzilla codzilkin
20.01.25
✎
08:29
|
Это вызывается по кнопке
|
|||
14
catzilla codzilkin
20.01.25
✎
08:32
|
&НаКлиенте
Процедура Выбрать(Команда) Если ЗначениеЗаполнено(Путь) Тогда ОписаниеОповещения = Новый ОписаниеОповещения("ПослеПомещенияФайлаНаСервер", ЭтотОбъект); НачатьПомещениеФайлаНаСервер(ОписаниеОповещения,,,,Путь, УникальныйИдентификатор); Иначе Сообщить("Файл не выбран!"); КонецЕсли; КонецПроцедуры |
|||
15
catzilla codzilkin
20.01.25
✎
08:32
|
Это по кнопке Ок в общей форме...
|
|||
16
catzilla codzilkin
20.01.25
✎
08:33
|
&НаКлиенте
Процедура ПослеПомещенияФайлаНаСервер(ОписаниеФайла, ДопПараметры) Экспорт Результат = Новый Структура; Результат.Вставить("Адрес", ОписаниеФайла.Адрес); Закрыть(Результат); КонецПроцедуры |
|||
17
Stepashkin
20.01.25
✎
08:34
|
(12) Информативно.
|
|||
18
catzilla codzilkin
20.01.25
✎
08:34
|
Это оповещалка
|
|||
19
catzilla codzilkin
20.01.25
✎
08:34
|
&НаКлиенте
Процедура ЗаполнитьСуммыПоФайлу(Результат, ДополнительныеПараметры) Экспорт Если Результат <> Неопределено Тогда Префикс_ЗаполнитьСуммыИзЭксельВместоНаСервере(Результат.Адрес); ОбновитьИтоги(ЭтаФорма); КонецЕсли; КонецПроцедуры |
|||
20
catzilla codzilkin
20.01.25
✎
08:36
|
&НаСервере
Процедура Префикс_ЗаполнитьСуммыИзЭксельВместоНаСервере(Путь) Сообщение = ""; Попытка Эксель = Новый COMОбъект("Excel.Application"); Эксель.DisplayAlerts = 0; Исключение Возврат; КонецПопытки; Книга = Эксель.Workbooks.Open(Путь); ТекЛист = Книга.WorkSheets(1); Данные = ТекЛист.UsedRange.Value; Колонки = Данные.Выгрузить(); КонечнаяСтрока = Колонки.Получить(0).Количество(); Х = 0; Для Каждого Стр Из Объект.Товары Цикл Стр.Сумма = Число(Колонки.Получить(0).Получить(Х)); Стр.Цена = Стр.Сумма/Стр.Количество; ОбработкаТабличныхЧастейКлиентСервер.РассчитатьСуммуНДСТабЧасти(Стр, Объект.СуммаВключаетНДС); Стр.Всего = Стр.Сумма + ?(Объект.СуммаВключаетНДС, 0, Стр.СуммаНДС); Х = Х + 1; КонецЦикла; Эксель.Workbooks.Close(); Эксель.Application.Quit(); Эксель.Quit(); Эксель = 0; Сообщение = "Суммы перезаполнены"; Сообщить(Сообщение); ЭтаФорма.Модифицированность = Истина; КонецПроцедуры |
|||
21
catzilla codzilkin
20.01.25
✎
08:39
|
Здесь
Книга = Эксель.Workbooks.Open(Путь); выдает такую ошибку Ошибка при вызове метода контекста (Open) {Расширение_Префикс1 Документ.РеализацияТоваровУслуг.Форма.ФормаДокументаТовары.Форма(134)}:Книга = Эксель.Workbooks.Open(Путь); {Расширение_Префикс1 Документ.РеализацияТоваровУслуг.Форма.ФормаДокументаТовары.Форма(172)}:Префикс_ЗаполнитьСуммыИзЭксельВместоНаСервере(Результат.Адрес); {Расширение_Префикс1 ОбщаяФорма.Префикс_ВыборФайла.Форма(38)}:Закрыть(Результат); [ОшибкаВоВремяВыполненияВстроенногоЯзыка] по причине: Произошла исключительная ситуация (Microsoft Excel): К сожалению, нам не удалось найти файл e1cib/tempstorage/16bbd0c1-4d16-4a96-b8e4-a6385f126973?seanceId=OWJkMDUxNzYtMjU4YS00MjM4LWI2NDYtYjZiZmRlY2YwZTE54mOp_BuFnkKi7uIkl56BJAAAAAA.xlsx. Возможно, он был перемещен, переименован или удален? [ОшибкаИспользованияВстроенногоЯзыка] |
|||
22
catzilla codzilkin
20.01.25
✎
08:46
|
Мне вот это непонятно...
"Данные = ТекЛист.UsedRange.Value;" это возвращает ячейки что выделенные мышкой? Или вообще весь лист? от крайней верхней левой заполненной ячейки до правой нижней даже если есть пустые строки и колонки посередине... |
|||
23
catzilla codzilkin
20.01.25
✎
08:49
|
Потому что клиент пытался прочитать суммы из печформы УПД...
А в ней кроме строк с суммами разрывы страниц и итоги на каждой странице... А судя по коду тут даже нет сверки для той ли номенклатуры происходит проставляется сумма... |
|||
24
catzilla codzilkin
20.01.25
✎
08:50
|
* номенклатуры проставляется
|
|||
25
Волшебник
20.01.25
✎
09:12
|
Ну то есть ошибка уже другая. Проблема в сабже решена (пере)установкой Excel на сервере.
|
|||
26
catzilla codzilkin
20.01.25
✎
09:15
|
(25) Ну да... а можно тему переименовать? Или новую создавать?
|
|||
27
Волшебник
20.01.25
✎
09:17
|
(26) Ладно, пиши здесь. Настрочил уже...
|
|||
28
catzilla codzilkin
20.01.25
✎
09:23
|
(27) Спасибо!
|
|||
29
catzilla codzilkin
20.01.25
✎
09:24
|
Вопрос: как побороть ошибку?
[ОшибкаВоВремяВыполненияВстроенногоЯзыка] по причине: Произошла исключительная ситуация (Microsoft Excel): К сожалению, нам не удалось найти файл e1cib/tempstorage/16bbd0c1-4d16-4a96-b8e4-a6385f126973?seanceId=OWJkMDUxNzYtMjU4YS00MjM4LWI2NDYtYjZiZmRlY2YwZTE54mOp_BuFnkKi7uIkl56BJAAAAAA.xlsx. Возможно, он был перемещен, переименован или удален? [ОшибкаИспользованияВстроенногоЯзыка] |
|||
30
Мимохожий Однако
20.01.25
✎
10:00
|
Попробуй прочитать файл из объекта ТабличныйДокумент
|
|||
31
LLeonidov
20.01.25
✎
15:27
|
(29) попробуй вначале файл сохранить во временный и получить путь к нему. И конечно используй пункт (30) ком для чтения экселя из 1с в 2025 не нужен.
&НаСервере Процедура Префикс_ЗаполнитьСуммыИзЭксельВместоНаСервере(АдресФайлаВоВременномХранилище) ПутьКФайлу = ПолучитьВременныйФайл(АдресФайлаВоВременномХранилище, "xlsx"); КонецПроцедуры &НаСервере Функция ПолучитьВременныйФайл(Адрес, Тип) ПутьКФайлу = ПолучитьИмяВременногоФайла(Тип); ДанныеИзХранилища = ПолучитьИзВременногоХранилища(Адрес); ДанныеИзХранилища.Записать(ПутьКФайлу); Возврат ПутьКФайлу; КонецФункции |
|||
32
Dzenn
20.01.25
✎
15:00
|
А зачем читать через КОМ объект, если 1С-ка давно умеет читать Эксель в табличный документ нативно?
|
|||
33
nAPACEHAK
20.01.25
✎
17:23
|
а это как?
с клиента в параметрах адрес Префикс_ЗаполнитьСуммыИзЭксельВместоНаСервере(Результат.Адрес); а на сервере он уже путь Книга = Эксель.Workbooks.Open(Путь); смешались в кучу люди, кони... ? Ошибка при вызове метода контекста (Open) а есть такой файл разве, по такому пути e1cib/tempstorage/блаблабла.xlsx |
|||
34
nAPACEHAK
20.01.25
✎
17:28
|
(32) да вдруг там заголовки кривые, или 7 листов, а тут хоба, и Данные = ТекЛист.UsedRange.Value; - только диапазон по ВелхЛево-НизПраво заполненному диапазону тек.листа
|
|||
35
Гений 1С
20.01.25
✎
19:23
|
еще есть джуны, что читают не через ТабличныйДокумент? Непуганые..
|
|||
36
vis
21.01.25
✎
08:40
|
(35) От версии платформы же зависит
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |