Чтение Excel в регламентном задании УТ 11 клиент-сервер #704333


#0 by PitNN
Добрый день, коллеги. Решил автоматизировать загрузку данных от клиентов. Многие высылают в экселе, соответственно нужно читать и анализировать её. Чтобы менеджеры не заморачивались с этим, чтение экселя решил вынести в регламентное задание. Но тут возникла проблема с созданием ком-объекта Excel.Application. Почитал статьи, рекомендуют вынести вызов ком-объекта на клиент, но при выполнении регламентного задания нет никакого клиента, все выполняется сервером. Как быть? Посоветуйте
#1 by SUA
в регламентном без вариантов только сервер или прайсы в csv перекидывать сначала и затем скармливать как текст если эксель тупить будет
#2 by ДенисЧ
"Почитал статьи, рекомендуют вынести вызов ком-объекта на клиент" Выкинь эти статьи.
#3 by х86
ексель на сервере установлен? )
#4 by PitNN
Хороший совет, но а делать-то чего? ))
#5 by ДенисЧ
а в чём конкретно проблема?
#6 by PitNN
Да, установлен
#7 by lex-kex
На серваке EXCEL установи
#8 by lex-kex
Тогда должно все работать
#9 by PitNN
создание ком объекта вызывает исключение
#10 by PitNN
Сервер работает как служба. Может в этом проблема?
#11 by lex-kex
Скинь код как ты его вызываешь?
#12 by mdocs
может как xml читать.
#13 by PitNN
Вот код:     Исключение         СообщениеОбОшибке = НСтр("ru = 'Не удалось прочитать Excel. Убедитесь, что на компьютере установлена программа Microsoft Excel. Подробности: '")
#14 by PitNN
Покажи пример, пожалуйста
#15 by SUA
и какое исключение? может файла нет? доступа к папке откуда его тянуть? или дальше гадать?
#16 by beholder
права на папку? Что за ошибка? Не рекомендуют на сервере наверное из-за того что по сети файл взад-назад тягать не комильфо.
#17 by Heckfy
Сдается мне, что нет прав у пользователя, под которым сервер 1С работает....
#18 by beholder
на инфостарте есть примеры как парсить XSLX но могут возникнуть проблемы если сторонняя прога сохраняет в этот формат.
#19 by PitNN
Вот такое исключение: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft Office Excel): Невозможно получить свойство Open класса Workbooks Файл есть. Он лежит локально на сервере. Доступ к папке есть для всех.
#20 by PitNN
Тот же самый код, запущенный на клиенте выполняется без проблем.
#21 by Tateossian
Значение имени файла в студию.
#22 by PitNN
D:1CInomarka_ElDocNaklInae@autoeuro.ruСФ №00021194 от 21-03-14.XLS
#23 by alexei366
попробуй путь с именем только из латиницы пока что
#24 by alexei366
Если не получиться то мож чо ещё расскажу
#25 by alexei366
И Для интереса, попробуй заместо Open использовать Add
#26 by PitNN
Ни то, ни другое не помогло
#27 by alexei366
а просто Add без имени файла, пустой новый док добавить, и если получитьсязаписать его
#28 by PitNN
Метод Add прошел, но при попытке сохранить документ опять исключение: Ошибка при вызове метода контекста (SaveAs): Произошла исключительная ситуация (Microsoft Office Excel): Метод SaveAs из класса Workbook завершен неверно Файл не сохранен!
#29 by PitNN
Не помог и привелигированый режим
#30 by alexei366
А есть папка C:UsersDefaultDesktop ?
#31 by alexei366
когда оффис исполняется на сервере от службы, то он вроде использует эту папку для вр файлов
#32 by PitNN
Скорее всего тут суть в том, что на сервере, на уровне платформы, запрещены файловые операции
#33 by alexei366
чувак у меня так везде работает, и с вордом и с экселем, попробуй
#34 by Denyk
ADO не рассматривали?
#35 by alexei366
Ну если ток для чтения то покатит наверно, я просто для чтения, изменения и записи юзаю, так что мне COM нужен был
#36 by PitNN
Да, папка такая есть на сервере
#37 by alexei366
а сервер 1С скольки битный
#38 by PitNN
Да, пробовал. Текст исключения: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (ADODB.Connection): Не удается найти указанный поставщик. Вероятно, он установлен неправильно.
#39 by PitNN
Сервер x64
#40 by alexei366
ОООООООО, а попробу C:UsersDefaultDesktop64 создать
#41 by alexei366
И по ADO
#42 by PitNN
Не помогло Там и брал строку соединения
#43 by alexei366
А может C:UsersDefault64Desktop
#44 by alexei366
Или тогда от кого служба 1С запущена?
#45 by PitNN
От пользователя домена
#46 by alexei366
И если зайти от него то все в интерактиве получается?
#47 by alexei366
я имею ввиду на серваке
#48 by PitNN
Нет возможности сейчас проверить.
#49 by PitNN
Если код открытия вызывать на стороне клиента, то все работает.
#50 by etc
а если так?:
#51 by alexei366
Как так, ты же смотрел наличие папки, создавал новую на серваке, почему проверить не можешь?
#52 by alexei366
На стороне клиента на сервере?
#53 by alexei366
Всмсле запущеного экземпляра предпрития на сервере?
#54 by PitNN
Чтобы проверить, нужно авторизоваться под пользователем от которого запущен сервер 1С. Я не могу под ним авторизоваться в силу отсутствия пароля Запускаю экземпляр приложения, вызываю внешнюю обработку и там прописываю процедуру открытия с ключом &НаКлиенте
#55 by alexei366
ООООООООО, я походу тебя обманывал и сам забыл
#56 by alexei366
Попробуй эти создать)))) C:WindowsSystem32ConfigSystemprofile C:WindowsSysWOW64ConfigSystemprofile
#57 by alexei366
Всмысле в этих папках папку Desktop
#58 by alexei366
И вроде нужно только там какой битности оффис, пофиг на 1С
#59 by PitNN
Вот ты добрый человек! Гений, по другому и не сказать )))
#60 by alexei366
Да блин ты меня заставил на сервак зайти и вспомнить чо да как))))
#61 by PitNN
Единственное что осталось, это команда не завершает процесс. Экселька продолжает висеть в диспетчере задач на сервере. В чем может быть дело, подскажи пожалуйста
#62 by PitNN
За твои заслуги готов поддержать тебя материально. Переводом либо на телефон
#63 by alexei366
У тя исключение не выскакиевает при закрытии?
#64 by Torquader
Так сначала нужно закрыть все документы, так как иначе мы видим вопрос о необходимости что-то сохранить, только, на самом деле, мы его не видим, так как рабочий стол записи SYSTEM невидим, но, если очень хочется, там окно можно найти и даже нажать кнопку "Нет".
#65 by PitNN
Нет, код исполняется без исключений
#66 by alexei366
Ну в теории не должно ругаться если ты в доке ничо не менял (типа букву в ячейке добавил). Ну чтобы на точняк, погугли на msdn там или используешь метод Close у WorkSheet или Эксель.Application.Quit (или просто Эксель.Quit). Нули как разтаки определяют закрытие документа или приложения без лишних проверок. Я конеш хз у себя сразу писал с нулями, а вот помню когда один из первых разов таким образом с Word работал, то он у меня с исключением вылетал (я имею ввиду на сервере)
#67 by ProProg
УУУ. В сказку попал человек. Обратись ко мне. Есть решение. Я уже все грабли протоптал с этим делом. Есть у нас решение. Можешь даже не парится. У нас компонента чтения эксель, нативная. Работает во всех режимах серверных на любых осях.
#68 by ProProg
Гарантируем поддержку. Да и собственно задачу импорта решена целой подсистемой.
#69 by PitNN
спасибо, попробую, сейчас пока некогда
#70 by PitNN
Есть где почитать о решении?
#71 by ProProg
Лови Будут вопросы - там есть мой скайп
#72 by PitNN
хорошо, спасибо
#73 by PitNN
Сделал вот так и все нормально стало:
#74 by Lama12
Объясните про эти папки. Не понял :)
#75 by alexei366
Когда приложение оффиса (Word, Exel) запускается от сервиса винды, коем в частности является служба 1С сервера, то для временных файлов используются данные каталоги взавизимости от разрядности оффиса.
#76 by alexei366
а зачем Эксель.DisplayAlerts = 1? это свойство вообще задавай после создания кома
#77 by Torquader
Если его не поставить, то в следующий раз, когда Excel откроется, сообщения не будут появляться.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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