Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Загрузка EXEL c сервера через COM          
burza Подменю пользователя
сообщение 21.03.24, 10:43
Сообщение #1

Оратор
*****
Группа: Пользователи
Сообщений: 324
Спасибо сказали: 1 раз
Рейтинг: 1

На клиенте данные загружает, когда процедуру переношу на сервер, ругается на МассивКолонок = arr.Выгрузить(); именно Выгрузить, что нужно сделать?)

я знаю что есть код для сервера другой я и сам им удачно пользуюсь, но нужен именно этот по причинам.

        
Попытка    
        Excel = Новый COMОбъект("Excel.Application");
        WB   =  Excel.Workbooks.Open(файл);
        WS = WB.Worksheets(1);
        arr = WS.UsedRange.Value;
        WB.Close(0);
        
        Исключение    
        КонецПопытки;
        
        МассивКолонок = arr.Выгрузить();
        ВсегоСтрок = (МассивКолонок.Получить(0).Количество()) - 1;

Slon747 Подменю пользователя
сообщение 21.03.24, 10:49
Сообщение #2

Говорящий
***
Группа: Пользователи
Сообщений: 85
Спасибо сказали: 5 раз
Рейтинг: 5

burza @ Сегодня, 10:43 * ,
А какой тип данных у arr и какая ошибка?

burza Подменю пользователя
сообщение 21.03.24, 11:10
Сообщение #3

Оратор
*****
Группа: Пользователи
Сообщений: 324
Спасибо сказали: 1 раз
Рейтинг: 1

Slon747 @ Сегодня, 10:49 * ,
Значение не является значением объектного типа (Выгрузить)

burza @ Сегодня, 10:53 * ,
Обычный старый код чтения xls ))
     файл = "D:\1C\Mail\bas\123.csv";
        
        Попытка    
        Excel = Новый COMОбъект("Excel.Application");
        WB   =  Excel.Workbooks.Open(файл);
        WS = WB.Worksheets(1);
        arr = WS.UsedRange.Value;
        WB.Close(0);        
        Исключение    
        КонецПопытки;
        
        
        МассивКолонок = arr.Выгрузить();
        ВсегоСтрок = (МассивКолонок.Получить(0).Количество()) - 1;
    

          Для СтрокаТП = 59 По ВсегоСтрок Цикл        
        Стр = Таб.Добавить();        
        Стр.Наименование = СокрЛП(МассивКолонок.Получить(0).Получить(СтрокаТП));
        Стр.Производитель = СокрЛП(МассивКолонок.Получить(1).Получить(СтрокаТП));
        Стр.Артикул = СокрЛП(МассивКолонок.Получить(3).Получить(СтрокаТП));
        Стр.Цена = СокрЛП(МассивКолонок.Получить(5).Получить(СтрокаТП));
        Стр.НаличиеОдесса = СокрЛП(МассивКолонок.Получить(6).Получить(СтрокаТП));
        Стр.Наличиефилиалы = СокрЛП(МассивКолонок.Получить(7).Получить(СтрокаТП));
        Стр.Спецпредложение = СокрЛП(МассивКолонок.Получить(8).Получить(СтрокаТП));
        Стр.Полтава = СокрЛП(МассивКолонок.Получить(9).Получить(СтрокаТП));
        Стр.Черкассы = СокрЛП(МассивКолонок.Получить(10).Получить(СтрокаТП));
        Стр.Днепр = СокрЛП(МассивКолонок.Получить(11).Получить(СтрокаТП));
        Стр.Львов = СокрЛП(МассивКолонок.Получить(12).Получить(СтрокаТП));
        Стр.ИваноФранковс = СокрЛП(МассивКолонок.Получить(13).Получить(СтрокаТП));
        Стр.Харьков = СокрЛП(МассивКолонок.Получить(14).Получить(СтрокаТП));
        Стр.Винница = СокрЛП(МассивКолонок.Получить(15).Получить(СтрокаТП));
        Стр.Тернополь = СокрЛП(МассивКолонок.Получить(16).Получить(СтрокаТП));
        Стр.Николаев = СокрЛП(МассивКолонок.Получить(17).Получить(СтрокаТП));
        Стр.Херсон = СокрЛП(МассивКолонок.Получить(18).Получить(СтрокаТП));
        Стр.Кропивницкий = СокрЛП(МассивКолонок.Получить(19).Получить(СтрокаТП));
        Стр.Запорожье = СокрЛП(МассивКолонок.Получить(20).Получить(СтрокаТП));
        Стр.Киев = СокрЛП(МассивКолонок.Получить(21).Получить(СтрокаТП));
        Стр.Черновцы = СокрЛП(МассивКолонок.Получить(22).Получить(СтрокаТП));                
        КонецЦикла;


Сообщение отредактировал Vofka - 21.03.24, 11:28

Slon747 Подменю пользователя
сообщение 21.03.24, 11:17
Сообщение #4

Говорящий
***
Группа: Пользователи
Сообщений: 85
Спасибо сказали: 5 раз
Рейтинг: 5

burza @ Сегодня, 11:10 * ,
У вас код выполняется &НаКлиенте, а Выгрузить() не работает на тонком клиенте.

burza Подменю пользователя
сообщение 21.03.24, 11:19
Сообщение #5

Оратор
*****
Группа: Пользователи
Сообщений: 324
Спасибо сказали: 1 раз
Рейтинг: 1

Slon747 @ Сегодня, 11:17 * ,
код в общем модуле лежит, по регламенту нужно делать
Функция Bastion() Экспорт
    
    Таб = Новый ТаблицаЗначений;
    Таб.Колонки.Добавить("Наименование");
    Таб.Колонки.Добавить("Производитель");
    Таб.Колонки.Добавить("Артикул");
    Таб.Колонки.Добавить("Цена");
    Таб.Колонки.Добавить("НаличиеОдесса");
    Таб.Колонки.Добавить("Наличиефилиалы");
    Таб.Колонки.Добавить("Спецпредложение");
    Таб.Колонки.Добавить("Полтава");
    Таб.Колонки.Добавить("Черкассы");
    Таб.Колонки.Добавить("Днепр");
    Таб.Колонки.Добавить("Львов");
    Таб.Колонки.Добавить("ИваноФранковс");
    Таб.Колонки.Добавить("Харьков");
    Таб.Колонки.Добавить("Винница");
    Таб.Колонки.Добавить("Тернополь");
    Таб.Колонки.Добавить("Николаев");
    Таб.Колонки.Добавить("Херсон");
    Таб.Колонки.Добавить("Кропивницкий");
    Таб.Колонки.Добавить("Запорожье");
    Таб.Колонки.Добавить("Киев");
    Таб.Колонки.Добавить("Черновцы");
    
    
         файл = "D:\1C\Mail\bas\bastion.csv";
        
        Попытка    
        Excel = Новый COMОбъект("Excel.Application");
        WB   =  Excel.Workbooks.Open(файл);
        WS = WB.Worksheets(1);
        arr = WS.UsedRange.Value;
        WB.Close(0);        
        Исключение    
        КонецПопытки;
        
        
        МассивКолонок = arr.Выгрузить();
        ВсегоСтрок = (МассивКолонок.Получить(0).Количество()) - 1;
    

          Для СтрокаТП = 59 По ВсегоСтрок Цикл        
        Стр = Таб.Добавить();        
        Стр.Наименование = СокрЛП(МассивКолонок.Получить(0).Получить(СтрокаТП));
        Стр.Производитель = СокрЛП(МассивКолонок.Получить(1).Получить(СтрокаТП));
        Стр.Артикул = СокрЛП(МассивКолонок.Получить(3).Получить(СтрокаТП));
        Стр.Цена = СокрЛП(МассивКолонок.Получить(5).Получить(СтрокаТП));
        Стр.НаличиеОдесса = СокрЛП(МассивКолонок.Получить(6).Получить(СтрокаТП));
        Стр.Наличиефилиалы = СокрЛП(МассивКолонок.Получить(7).Получить(СтрокаТП));
        Стр.Спецпредложение = СокрЛП(МассивКолонок.Получить(8).Получить(СтрокаТП));
        Стр.Полтава = СокрЛП(МассивКолонок.Получить(9).Получить(СтрокаТП));
        Стр.Черкассы = СокрЛП(МассивКолонок.Получить(10).Получить(СтрокаТП));
        Стр.Днепр = СокрЛП(МассивКолонок.Получить(11).Получить(СтрокаТП));
        Стр.Львов = СокрЛП(МассивКолонок.Получить(12).Получить(СтрокаТП));
        Стр.ИваноФранковс = СокрЛП(МассивКолонок.Получить(13).Получить(СтрокаТП));
        Стр.Харьков = СокрЛП(МассивКолонок.Получить(14).Получить(СтрокаТП));
        Стр.Винница = СокрЛП(МассивКолонок.Получить(15).Получить(СтрокаТП));
        Стр.Тернополь = СокрЛП(МассивКолонок.Получить(16).Получить(СтрокаТП));
        Стр.Николаев = СокрЛП(МассивКолонок.Получить(17).Получить(СтрокаТП));
        Стр.Херсон = СокрЛП(МассивКолонок.Получить(18).Получить(СтрокаТП));
        Стр.Кропивницкий = СокрЛП(МассивКолонок.Получить(19).Получить(СтрокаТП));
        Стр.Запорожье = СокрЛП(МассивКолонок.Получить(20).Получить(СтрокаТП));
        Стр.Киев = СокрЛП(МассивКолонок.Получить(21).Получить(СтрокаТП));
        Стр.Черновцы = СокрЛП(МассивКолонок.Получить(22).Получить(СтрокаТП));                
        КонецЦикла;
КонецФункции

Slon747 Подменю пользователя
сообщение 21.03.24, 11:41
Сообщение #6

Говорящий
***
Группа: Пользователи
Сообщений: 85
Спасибо сказали: 5 раз
Рейтинг: 5

А если вы уберете обработку исключительной ситуации, то выяснится, что ошибка возникает гораздо раньше.
Не так ли?

burza Подменю пользователя
сообщение 21.03.24, 11:43
Сообщение #7

Оратор
*****
Группа: Пользователи
Сообщений: 324
Спасибо сказали: 1 раз
Рейтинг: 1

Slon747 @ Сегодня, 11:41 * ,
туплю, вы правы! Приложению Microsoft Excel не удается получить доступ к файлу. куда копать?

Slon747 Подменю пользователя
сообщение 21.03.24, 11:46
Сообщение #8

Говорящий
***
Группа: Пользователи
Сообщений: 85
Спасибо сказали: 5 раз
Рейтинг: 5

А файл физически не на сервере?

burza Подменю пользователя
сообщение 21.03.24, 11:52
Сообщение #9

Оратор
*****
Группа: Пользователи
Сообщений: 324
Спасибо сказали: 1 раз
Рейтинг: 1

Slon747 @ Сегодня, 11:46 * ,
на сервере,там где скул и 1С.учетка кластера админ

Slon747 Подменю пользователя
сообщение 21.03.24, 11:58
Сообщение #10

Говорящий
***
Группа: Пользователи
Сообщений: 85
Спасибо сказали: 5 раз
Рейтинг: 5

А юзеру USR1CV8 доступен данный файл?

burza Подменю пользователя
сообщение 21.03.24, 12:35
Сообщение #11

Оратор
*****
Группа: Пользователи
Сообщений: 324
Спасибо сказали: 1 раз
Рейтинг: 1

Slon747 @ Сегодня, 11:58 * ,
он стоит как администратор. то думаю да.

burza @ Сегодня, 12:16 * ,
[необходимо зарегистрироваться для просмотра ссылки]

Спасибо кто на мысль натолкнул)

Slon747 Подменю пользователя
сообщение 21.03.24, 13:41
Сообщение #12

Говорящий
***
Группа: Пользователи
Сообщений: 85
Спасибо сказали: 5 раз
Рейтинг: 5

Еще можно без екселя работать, а просто загрузить в ТабличныйДокумент и уже с него считывать данные.

xlmel Подменю пользователя
сообщение 09.04.24, 10:25
Сообщение #13

Молчаливый
*
Группа: Пользователи
Сообщений: 1
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(burza @ 21.03.24, 11:43) *
На клиенте данные загружает, когда процедуру переношу на сервер, ругается на МассивКолонок = arr.Выгрузить(); именно Выгрузить, что нужно сделать?)

я знаю что есть код для сервера другой я и сам им удачно пользуюсь, но нужен именно этот по причинам.

        
Попытка    
        Excel = Новый COMОбъект("Excel.Application");
        WB   =  Excel.Workbooks.Open(файл);
        WS = WB.Worksheets(1);
        arr = WS.UsedRange.Value;
        WB.Close(0);
        
        Исключение    
        КонецПопытки;
        
        МассивКолонок = arr.Выгрузить();
        ВсегоСтрок = (МассивКолонок.Получить(0).Количество()) - 1;


А Вы Windows настроили, чтобы Excel через COM работал?

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 01.11.24, 2:58
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!