Имя: Пароль:
1C
1С v8
1С и Excel... опять
0 Garry1010
 
22.08.17
11:06
Такой смешной, но обидный прикол...
Открываю из 1С файл таблицы Excel. Естественно, что хочу видеть ход дела - пишу:

Excel = Новый COMObject("Excel.Application");
Excel.Visible = 1;
Книга = Excel.Workbooks.Open(файл);
Лист = Книга.WorkSheets(1);

, но... окно Excel не проявляется (хотя раньше - в других местах - всегда срабатывало на ура). Соответственно, потом вылезает ошибка класса Range и т.п..

Это всё на Сервере 2012... Никто не сталкивался с таким приколом? Может, я чего-то не установил (я делал выборочную установку)? Но ведь сам COMObject создаётся - значит этот кусок взаимодействия фурычит. Может, всё же из-за версии Винды глюк?
1 1dvd
 
22.08.17
11:07
в диспетчере задач поубивай всем ексели
2 Garry1010
 
22.08.17
11:10
(1) Это - первым делом. Не первый раз, чать.;)
3 1dvd
 
22.08.17
11:10
(2) ок, идём дальше. Где этот код выполняется?
4 Garry1010
 
22.08.17
11:11
Емнип, тогда всё равно окно должно открываться, а проблемы быть с открытием файла - а тут файл-то открывается, а вот окно - нет.
5 Garry1010
 
22.08.17
11:12
(3) Ну, &НаСервере, ясно дело.
6 1dvd
 
22.08.17
11:12
(5) ну и чего ты хотел тогда? :)
7 r_i_n_i_k
 
22.08.17
11:13
(5) а на сервере эксель то стоит? Вообще в БСП вся работа с экселем уже прописана, то что если конфа БСП-шная то не надо изобретать велосипед
8 1dvd
 
22.08.17
11:15
Он окно показывает, но не тебе, а учётке под которой запущен rphost
9 Garry1010
 
22.08.17
11:18
Блин, а как создался бы COMObject, если Excel бы не стоял?
(6) Не понял... А что, работа с ним допустима только на клиенте?ОО_ОО (Просто в УФ ещё с ним не общался - до этого только в обычном приложении...) А как же мне перегонять данные в документ 1С? Собрать 100500 структур данных, а потом запихивать их на стороне сервера?
10 Garry1010
 
22.08.17
11:19
(8) Раньше прекрасно показывал именно мне! Или это в 8.3 такую шнягу залепили на Селезнёвской?О_О
11 1dvd
 
22.08.17
11:19
(9) на сервере работать с екселем можно, но показывать 1с его не будет
12 1dvd
 
22.08.17
11:20
(10) в клиентсерверном? серверным кодом показывал ексель? Сказки не рассказывай
13 Numerus Mikhail
 
22.08.17
11:21
(9) Как ты предполагаешь увидеть эксель, если открываешь его на сервере?
Или не открывай, или открывай на клиенте
14 Numerus Mikhail
 
22.08.17
11:21
(10) вероятнее всего были обычные формы?
15 Garry1010
 
22.08.17
11:25
Так тогда исходный вопрос: а как данные на сервер передать - только после обработки всего листа книги, собрав все данные в г..кучу?
16 Numerus Mikhail
 
22.08.17
11:27
(15) А зачем передавать данные на сервер?
Опиши примерно что хочешь сделать?
17 1dvd
 
22.08.17
11:28
(15) получай данные на стороне клиента, без обращения к данным БД. Аккуратно собери их и передай на сервер. Там обрабатывай.
18 1dvd
 
22.08.17
11:28
и объясни, для чего тебе вообще показывать морду ексель
19 Garry1010
 
22.08.17
11:30
Ну и опять же... Раз Excel открылся, хоть мне и не показывается, то почему не работают строки вида

Лист.Cells(н, 1).Select();
Лист.Cells(н, 1).Activate();
? Ведь само окно открыто, значит и выделение по ячейкам должно бегать.
(16)Что, что... Как обычно: взять данные и загнать в документ.
(17)Я о том и спрашиваю - то есть собирать их в массивы/структуры, а потом всей шоблой загонять на сторону сервера? Блин...
(18)Ну, люблю я так - привык видеть, что там делается.
20 1dvd
 
22.08.17
11:32
посмотри как штатная загрузка из ексель работает и не городи огород
21 fedoss
 
22.08.17
11:34
(19) да не открылся он там. Там и сеанса нормального нет.
Есть COM-объект, окна нет. Либо заполни его там, сохрани и открой файл на клиенте, дибо собери данные на сервере, пригони на клиента и у него заполняй.
22 vde69
 
22.08.17
11:52
для сабжа нужно

1. пользователю службы 1с дать право на работу с DCOM (не путать с COM)
2. пользователю службы 1с дать право на ВСЕ каталоги которые использует ексель (их дофига)
23 vde69
 
22.08.17
11:53
(22)+ и еще, нужно включить в ПРОФИЛЬ БЕЗОПАСНОСТИ 1с
24 Garry1010
 
22.08.17
21:00
Спасибо советам!
Перенёс работу на клиента, собрал данные в структуру/массив структур, потом передал на сервер... Но бли-и-ин, сколько же неудобств с их попыткой соответствовать чистому ООП.:((
25 Sserj
 
23.08.17
02:43
(24) Это не "чистый ООП" а "чистый клиент-сервер".
Зато может теперь радоваться, что твой клиент не будет падать с ошибками если вдруг будет запущен под линусом или на макоси :)
26 Garykom
 
гуру
23.08.17
02:57
(0) Объясни нафуя тебе нужен COMObject("Excel.Application") ?
Почему нельзя другими способами более дешевыми пусть и не такими привычными?
27 rphosts
 
23.08.17
03:43
(5) вот зачем серверу смотреть на твой эксель?
28 Garry1010
 
24.08.17
21:54
(26) Не понял... О чём речь? Исходный файл XLS - как ещё предлагаете его прочитать?О_О
(27) Да блин, с чего-то решил, что сие чЮдо работает только &на сервере... Ну, и хотелось по привычке сразу по прочтении из файла запихать данные в документ.
(25) А по принципу работы ООП и клиент-сервер разве не один хрен? Просто во втором случае обычно предполагается, что процессы ещё и на разных компах. Короче, разделение на разные процессы или отсутствие оного, имхо, непринципиально.
29 Garykom
 
гуру
24.08.17
23:05
(28) > Не понял... О чём речь? Исходный файл XLS - как ещё предлагаете его прочитать?О_О

http://catalog.mista.ru/public/341855/
http://catalog.mista.ru/public/225624/
Независимо от того, куда вы едете — это в гору и против ветра!