![]() |
![]() |
![]() |
|
Соединение с Axapta по COM в фоновом задании | ☑ | ||
---|---|---|---|---|
0
111222333444
07.06.13
✎
10:41
|
Всем трям.
Имеется: 1. 1С 8.2 УПП 1.3.39.1, платформа 8.2.18.82. 2. Аксапта 4.0 Задача: В фоновом задании подключиться из 1С к Аксапте, выполнить определенные процедуры. Реализация: В общем неглобальном модуле (стоят галки "Сервер", "Внешнее соединение", "Клиент(обычное приложение)", "Вызов сервера") создана экспортная процедура, которая благополучно назначена регламентному заданию Axapta = Новый COMObject("AxaptaComConnector.Axapta3"); Axapta.Logon("", "", "", ""); //тут идут определенные процедуры Axapta.Logoff(); Проблема: Метод Logon отрабатывает с ошибкой "Ошибка при вызове метода контекста (Logon)". Дополнительные замечания: При запуске вышеозначенного кода на клиенте (вариант запуска "А") - всё отрабатывает как и задумано - логинится, выполняются процедуры, логофается. При запуске же как фонового задания (вариант запуска "Б") - болт. В обоих случаях запуск происходит физически на одном и том же компе, который является собственно сервером приложений. Служба сервера приложений запущена под тем же доменным пользователем, под которым производится запуск по варианту "А". В аксапте заведен этот же пользователь с доменной авторизацией. Поиск по мисте юзал, поиск по forum.mazzy.ru юзал. Вопрос: кто-то сталкивался с подобной проблемой? как решали? |
|||
1
бомболюк
07.06.13
✎
10:50
|
Что то было: на сервере например, не получалось создать КОМ объект, оформленный как *.ocx, то есть визуальный компонент, писалось что то типа "Интерфейс не поддерживается", хотя на клиенте все работало. КОМ объект, оформленный по другому, нормально создавался и работал на сервере. Может и тут что то типа этого.
|
|||
2
111222333444
07.06.13
✎
10:53
|
так ком объект-то создается. валится при выполнении метода Logon
|
|||
3
бомболюк
07.06.13
✎
10:58
|
а при выполнении метода вывод каких нить форм предусмотрен?
|
|||
4
111222333444
07.06.13
✎
11:00
|
(3) нет
|
|||
5
бомболюк
07.06.13
✎
11:03
|
а точно после вызова
|
|||
6
бомболюк
07.06.13
✎
11:03
|
Axapta = Новый COMObject("AxaptaComConnector.Axapta3");
Axapta определено? |
|||
7
111222333444
07.06.13
✎
11:07
|
(6) да. как ком-объект
|
|||
8
бомболюк
07.06.13
✎
11:11
|
может можно до Logon еще какой нить метод вызвать или свойство, чисто для проверки? Если будет работать - тогда скорее всего дело в кишках КОМ объекта, я так понимаю, на которые повлиять нельзя.
|
|||
9
111222333444
07.06.13
✎
11:48
|
(8) Axapta.Refresh(); отрабатывает без ошибок
|
|||
10
Галахад
гуру
07.06.13
✎
11:51
|
Может, ну его, фоновое? Стартовать клиента из планировщика и не париться.
|
|||
11
111222333444
07.06.13
✎
11:55
|
(10) вариант, но чесгря не очень нравится. да и дело принципа уже забороть эту тему
|
|||
12
111222333444
07.06.13
✎
11:55
|
(8) а вот Axapta.Session() не вызывается. говорит метод объекта не обнаружен
|
|||
13
бомболюк
07.06.13
✎
12:09
|
ну значит КОМ объект создается, откликается, а проблемы связаны с реализацией отдельных его методов. Если конечно есть время, желание и навыки владения каким нить нормальным языком, поддерживающим разработку КОМ объектов, можно изучить проблему более детально, только зачем? Присоединяюсь к (10).
|
|||
14
alexhtn
07.06.13
✎
12:32
|
(0) Проблема может быть в правах доступа к ком объектам.
Для проверки можно сделать запуск службы 1С от имени администратора |
|||
15
111222333444
07.06.13
✎
12:40
|
(14) пользователь, под которым запущена служба имеет админские права
|
|||
16
111222333444
07.06.13
✎
15:13
|
апну разок
|
|||
17
111222333444
07.06.13
✎
17:21
|
и еще ап
|
|||
18
Serginio1
07.06.13
✎
17:37
|
(17) У тебя сервер 1C 64 разрядный?
|
|||
19
acsent
07.06.13
✎
17:40
|
(15) попробуй запустить службу 1с от своего имени
|
|||
20
Serginio1
07.06.13
✎
17:42
|
Там могут быть варианты когда внутри акзапты лезут куда то
v8: Зависает при создании COMОбъекта на стороне сервера v8: регламентное задание и Ексель |
|||
21
111222333444
10.06.13
✎
09:29
|
(18) хз, вроде 32
а как определить наверняка? |
|||
22
Serginio1
10.06.13
✎
10:51
|
(21) Посмотри в сервисах какой у тебя 1C:Enterprise 8.2 Server Agent
|
|||
23
111222333444
10.06.13
✎
11:19
|
(22) 64 там нигде не мелькает. значит 32-битный. это хорошо или плохо?
|
|||
24
Господин ПЖ
10.06.13
✎
11:21
|
(23) это значит что нет нужды создавать обертку для com
|
|||
25
Serginio1
10.06.13
✎
11:23
|
(23) Это хорошо. Значит скорее всего у тебя проблемы с правами. Смотри 20
|
|||
26
Serginio1
10.06.13
✎
11:23
|
С правами DCOM
|
|||
27
111222333444
10.06.13
✎
12:14
|
(24) ага, понятно. но всё равно создал. хуже-то не будет?
(26) добавил пользователя, под которым запускается служба сервера в группу distributed com users. ничего не поменялось. или это не то? |
|||
28
Serginio1
10.06.13
✎
12:36
|
Из v8: регламентное задание и Ексель
Подсказали решение на SQL.ru На сервере необходимо было еще установить в локальных политиках право на запуск DCOM для конкретных пользователей. и, о чудо, все заработало :-) |
|||
29
111222333444
10.06.13
✎
14:44
|
(28) а чем это отличается от (27)
|
|||
30
Serginio1
10.06.13
✎
14:56
|
(29) Читай ссылки v8: регламентное задание и Ексель
37 (33) кроме того в (10) вообще ничего не сказано про то что 1С запускает DCOM без пользователя. я внимательно прочитал то что Вы советовали, и в результате добавил пользоваля сервера 1С в группу Пользовтелей DCOM - только это не решило проблемы из-за некорректной работы 1С с DCOM на сервере (17). К сожалению я не настолько глубоко разбираюсь в администировании win server, что б по термину 'DCOM' понять все возможные проблемы и где их искать, в противном случае этот вопрос не выносился бы на обсуждение в текущем форуме. |
|||
31
Serginio1
10.06.13
✎
14:57
|
Там же 31
я подозреваю что проблема все таки остается в том что DCOM запускается с пустым пользователем, но не знаю как можно это поправить Я сделал следующее в настройках DCOM: Администирование-СлужбыКопонентов-Компютеры-МойКомпютер-настройка DCOM-Microsoft Excel application- Свойства-Удостоверение: Указанный пользователь - выбрал администратора сервера и ввел его пароль |
|||
32
Serginio1
10.06.13
✎
15:01
|
Раз ты сделал обертку для СОM+ то вместо Microsoft Excel application впиши название твоей обертки, что бы она запускалась под юзером с нужными правами
|
|||
33
111222333444
10.06.13
✎
15:14
|
(32) туда нельзя ничего вписывать, нет такого пункта меню
|
|||
34
111222333444
10.06.13
✎
15:16
|
(30) чем отличается "добавил пользователя, под которым запускается служба сервера в группу distributed com users" от
"На сервере необходимо было еще установить в локальных политиках право на запуск DCOM для конкретных пользователей." ? |
|||
35
Serginio1
10.06.13
✎
15:37
|
(34) Прошу прощения. Давно правами не занимался.Скорее всего речь идет об правах на запуск конкретного приложения.
Если ты описал её как COM+ http://www.steeltrace.ru/details/articleid/22/регистрация-1с-com-компонента-для-работы-с-64-битными-приложениями.aspx или она уже есть в Приложения COM+, то у неё есть свойства и безопасность Чтобы установить разрешения на доступ в масштабах компьютера Откройте оснастку «Службы компонентов». В оснастке «Службы компонентов» щелкните правой кнопкой мыши компьютер, для которого хотите изменить разрешения на доступ в масштабах компьютера, а затем щелкните Свойства. Откройте вкладку Безопасность COM. В разделе Права доступа щелкните Изменить ограничения или Изменить умолчания в зависимости от того, требуется ли изменить политику ограничений в масштабах компьютера или только параметры по умолчанию в масштабах компьютера. Откроется диалоговое окно Права доступа. Для удаления учетной записи пользователя или группы выберите пользователя или группу в списке Группы или пользователи и нажмите кнопку Удалить. Выбранная учетная запись или группа больше не будет отображаться в списке. Чтобы добавить нового пользователя или группу, нажмите кнопку Добавить. В диалоговом окне Выбор пользователей, компьютеров или групп введите полное имя добавляемого пользователя или группы. Если имя пользователя или группы не известно, нажмите кнопку Дополнительно, а затем щелкните Начать поиск, чтобы просмотреть список пользователей и групп в выбранном домене. Выберите пользователя или группу и нажмите кнопку ОК. Добавленный пользователь или добавленная группа появится в списке Группы или пользователи. В списке Группы или пользователи выберите группу или пользователя, чье разрешение на доступ в масштабах компьютера хотите изменить. В списке Разрешения установите флажок Разрешить или Запретить, чтобы разрешить или запретить разрешение на локальный доступ и разрешение на удаленный доступ для выбранного имени группы или пользователя. Нажмите кнопку ОК, чтобы вернуться на вкладку Безопасность COM. Нажмите кнопку ОК. Новые разрешения на доступ в масштабах компьютера будут применены при следующем запуске приложения на компьютере. Сделанные настройки не действуют в отношении приложений, выполняющихся в текущий момент, до тех пор, пока они не будут перезапущены. Дополнительная информация Оснастка «Службы компонентов» больше не входит в группу «Администрирование». Чтобы открыть оснастку «Службы компонентов», нажмите кнопку Пуск. В текстовом поле введите команду dcomcnfg и нажмите клавишу ВВОД. |
|||
36
Serginio1
10.06.13
✎
15:44
|
Посмотри там же настройки DCOM для акзапты
|
|||
37
Serginio1
10.06.13
✎
15:45
|
Там явно проблема с правами, раз локально работает, а под сервисом не хочет.
|
|||
38
111222333444
10.06.13
✎
15:54
|
(35) это я сделал
(36) настроек там же DCOM для аксапты нету =)) |
|||
39
Serginio1
10.06.13
✎
16:15
|
Можешь попробовать засунуть DLL акзапты в Приложение COM+ указать от кого должна запускаться итд. По аналогии http://www.steeltrace.ru/details/articleid/22/регистрация-1с-com-компонента-для-работы-с-64-битными-приложениями.aspx
|
|||
40
111222333444
10.06.13
✎
17:06
|
(39) та же песня
|
|||
41
Serginio1
10.06.13
✎
17:07
|
Пиши в поддержку акзапты. Здесь не проблема 1С.
|
|||
42
Serginio1
10.06.13
✎
17:11
|
||||
43
Serginio1
10.06.13
✎
17:22
|
||||
44
111222333444
10.06.13
✎
17:28
|
спасибо за участие!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |