Имя: Пароль:
1C
1С v8
ПолучитьCOMОбъект
0 Марина Викторовна
 
01.09.11
11:14
При выполнении строчки кода
Ком = ПолучитьCOMОбъект(Путь)
отладка нещадно зависает на клиент-серверной базе, а в файловой все нормально работает. Есть ли какие-то особенности использования на клиент-сервере?
1 Wobland
 
01.09.11
11:18
а что за Путь?
2 Марина Викторовна
 
01.09.11
11:43
D:\реализации.xls
3 Wobland
 
01.09.11
11:49
эксперимент прошёл удачно
4 Марина Викторовна
 
01.09.11
11:54
Wobland, не поняла?
5 Wobland
 
01.09.11
11:56
ком=ПолучитьCOMОбъект("d:\88.xls");
   й=0;

ставлю точку на й=0; - всё работает без тормозов и там и там
6 Wobland
 
01.09.11
11:56
+(5) ну как без тормозов. на серверной чуть быстрее
7 Марина Викторовна
 
01.09.11
12:17
У меня 64битная винда и 2010 офис, может это как-то влияет?
8 qwerty09
 
01.09.11
12:55
(0) на клиенте COMObject создавай
9 qwerty09
 
01.09.11
12:56
(7) нет
10 Марина Викторовна
 
01.09.11
13:38
(8) - это как?
ексель =  Новый COMObject("Excel.Application")  ?
11 qwerty09
 
01.09.11
13:43
(10) та не. Создавай как и раньше просто &НаКлиенте, если речь идет об УФ, если же обычные формы, то удостоверься что у win пользователя, под которым агент сервера крутится есть права на запуск экселя и права на твою папку
12 Марина Викторовна
 
01.09.11
15:47
Да, УФ, но на клиенте та же реакция  - зависает и ни на что не реагирует, работаю под админом на сервере
13 qwerty09
 
01.09.11
16:20
(12) эм, ты ставишь брейкпоинт после инициализации com-объекта->до точки доходит нормально->когда пытаешся лезть отладчиком внутрь com-объекта (посмотреть его атрибуты например), тогда зависает?
14 Марина Викторовна
 
01.09.11
16:48
Попытка
. Ком = ПолучитьCOMОбъект(Путь);
Исключение Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = ""+ ОписаниеОшибки()+"";
КонецПопытки;

До точки нормально, т.е. до кома, на строчке кома подвисает причем никаких сообщений не выдает, окно активно для изменения в конфигураторе(можно написать ченить в коде), но в предприятии наглухо завис, завершается только через диспетчер
15 qwerty09
 
01.09.11
17:15
(14) виснет предприятие, а отладка то продолжается? желтенькая стрелочка-курсор есть в конфигураторе или пропадает? F5 жать пробовала?
p.s.
Сообщение.Текст = ""+ ОписаниеОшибки()+""; //здесь кавычки ни к чему
16 Wobland
 
01.09.11
18:56
а что, по варианту (10) ещё не пробовала?
17 smaharbA
 
01.09.11
19:03
может попытаться создать и открыть ?
18 Марина Викторовна
 
02.09.11
11:59
Пишу
ексель =  Новый COMObject("Excel.Application") ;
      бук = ексель.workbooks.open("D:Взаиморасчеты.xls");

Ком объект получает, а потом выдает:
Ошибка при вызове метода контекста (Open)
      бук = ексель.workbooks.open("D:Взаиморасчеты.xls");
по причине:
Произошла исключительная ситуация (Microsoft Office Excel): Нет доступа к файлу 'D:\Взаиморасчеты.xls'. Это может быть вызвано одной из следующих причин.

• Имени файла или пути не существует.
• Файл используется другой программой.
• Имя книги, которую вы пытаетесь сохранить,
19 Марина Викторовна
 
02.09.11
12:09
Если пытаюсь подцепить открытый документ
Ком = ПолучитьCOMОбъект(,"Excel.Application");
то
Ошибка при вызове метода контекста (ПолучитьCOMОбъект)
           Ком = ПолучитьCOMОбъект(,"Excel.Application");
по причине:
Ошибка получения объекта COM: Операция недоступна
20 hhhh
 
02.09.11
12:19
может доступа нет к диску D: сервера для этого пользователя?
21 qwerty09
 
02.09.11
12:21
(18) бук = ексель.workbooks.open("D:Взаиморасчеты.xls") //в пути слеша не хватает

ты (11) проверила? то что ты под аодмином работаешь пофик, важно под каким юзером сервер 1с крутится
22 Марина Викторовна
 
02.09.11
12:37
(21) Агент сервера 1с  - написано вход от имени .\admin
или что-то еще смотреть надо?

(20) ну просто так же я могу зайти на Д и открыть файл ручками
23 Wobland
 
02.09.11
12:38
узнай, кто занял. возможно, в памяти висят ексельные процессы
24 Марина Викторовна
 
02.09.11
12:40
А если я работаю не в терминале на сервере, а на клиентском компе, о выдает те же самые ошибки
25 Марина Викторовна
 
02.09.11
12:41
все ексельные процессы подчищаю, та же фигня
26 qwerty09
 
02.09.11
13:05
(22) не, этого достаточно.

Пробуй вот так:

Файл = Новый Файл("D:\Взаиморасчеты.xls'");
Если Файл.Существует()
  Сообщить("Прочитали файл, все норм...");
Иначе
  Сообщить("Не можем прочитать файл :'( Наверное придется все таки фотку в профиль на мисте добавить, иначе ж не помогут гады...");
КонецЕсли;

Что тебе 1С скажет?
27 Марина Викторовна
 
02.09.11
13:06
(22) про фотку лол)))
28 Wobland
 
02.09.11
13:06
(26) Ожидается ключевое слово 'Тогда' + скобки не хватает в конце ;)
29 Wobland
 
02.09.11
13:07
(27) такая смешная?
30 Марина Викторовна
 
02.09.11
13:07
я специально не вставляю, а то все испугаются и разбегутся.. ))
31 Wobland
 
02.09.11
13:09
(30) тогда подсласти нижним бельём
32 qeos
 
02.09.11
13:10
а экзель вообще стоит?

// а фотка нужна
33 Wobland
 
02.09.11
13:12
(32) она ж его ручками открывает
// народ на фотку подтягивается ;)
34 Марина Викторовна
 
02.09.11
13:13
стоит) получилось подцепить файл на клиенте по (11) после полного перезапуска всего =)
осталось тока подумать как с ним работать, если он на клиенте =\
а фотку да, ловите
35 qeos
 
02.09.11
13:18
(34) ну все, я разбегаюсь
36 Марина Викторовна
 
02.09.11
13:23
(35) так и знала))
37 Wobland
 
02.09.11
13:29
ещё не ходил смотреть, но пойду-ка я, пожалуй, тоже.

что-то я всё пропустил про клиент и сервер, пересмотр ветки не помог. в чём беда осталась?
38 Марина Викторовна
 
02.09.11
13:32
Всем большое спасибо за помощь =)
39 Марина Викторовна
 
02.09.11
13:33
Беда осталась в том что файл у меня на ктиенте, а работать с ним надо на сервере
40 Wobland
 
02.09.11
13:34
(39) ну это уже проектировать надо правильно
41 qeos
 
02.09.11
13:40
(39) грузи его на клиенте в конфу в хранилищщеЗначений, а на сервере сохраняй в темп и открывайц..
42 EvgeniuXP
 
02.09.11
13:42
(39) шагом марш мультики смотреть!
43 Марина Викторовна
 
02.09.11
13:50
(42) мультики??
(41) к сожалению не знаю как это сделать(
44 Wobland
 
02.09.11
14:09
(43) заводишь реквизит типа Хранилище, клиент туда пишет файл, сервер оттуда достаёт, сохраняет временно куда-нибудь и обрабатывает. как-то так
45 Wobland
 
02.09.11
14:10
а про мультики неудачная попытка комплимента в сторону молодости, красоты и обаяния ;)
46 Марина Викторовна
 
02.09.11
14:46
(44) я вроде с передачей параметрами на сервер слепила...
Документ = документы.РеализацияТоваровУслуг.НайтиПоНомеру(номер,дата(2010,01,01));  //пока тот же документ
               ДокументОбъект = документ.ПолучитьОбъект();
где я пишу неправильно?? что то не могу понять, ругается на
Ошибка при вызове метода контекста (ПолучитьОбъект)
               ДокументОбъект = документ.ПолучитьОбъект();        
по причине:
Элемент не выбран!

а про мультики - счас только работу доработаю и пойду смотреть, да =)))
47 Wobland
 
02.09.11
14:51
(46) а найден ли мальчик? ;) дату константой имхо так удобней: '20100101'
48 Марина Викторовна
 
02.09.11
14:58
найден, при остановке, если залезть туда, то показывает документ
49 vmv
 
02.09.11
15:05
зазипуй
50 Марина Викторовна
 
02.09.11
15:07
(49) это что за ругательство?))
(46) так не берет-пробовала, только если писать дата(...)
номер неправльно брал, поправила - все нашел =) спасибо =)
51 Wobland
 
02.09.11
15:12
(50) заархивируй, он имеет в виду
плохая, негодная девочка, обманываешь старших. всё он берёт: док=Документы.РасходныйКассовыйОрдер.НайтиПоНомеру("00000001", '20110101');
52 Марина Викторовна
 
02.09.11
15:18
(51) странно, на отладке проверяла счас shift+f9
документы.РеализацияТоваровУслуг.НайтиПоНомеру(Номердок,дата(2010,01,01) - значение показывает документа,
убираю дату, пишу 20100101 - показывает пустое значение
53 Марина Викторовна
 
02.09.11
15:26
хотя слушай, я наверн забыла кавычки поставить, пардоньте))
54 EvgeniuXP
 
02.09.11
17:23
(45) "мультики" - это бесплатные туториалы 1С 8.х.