|   |   | 
| 
 | Чтение файла 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) От версии платформы же зависит     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |