Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Проблема с запуском регламентированного задания, в котором используется COM компонент

Проблема с запуском регламентированного задания, в котором используется COM компонент
Я
   jetzack
 
25.09.16 - 19:15
Добрый вечер!

Уже как неделю бьюсь над следующей проблемой-
1с 8.2 серверная, Windows Server 2008 R2. Есть обработка, которую должно запускать регламентное задание. Эта обработка создает компонент COM и далее использует его для определенной задачи.

Если открывать обработку интерактивно под обычным пользователем, то все ок - создается компонент COM и далее работает как часы.
Но вот запуск от рег задания не работает - ком компонент как будто бы создается, но при попытки обратиться к любому методу или полю этого компонента возникает "Неизвестная ошибка".

Сначала думали, что дело в безопасности - дали пользователю под которым запускаются рег задания 1CSrv82 (как-то так) полные права на нужные каталоги, которые использует компонента. Дали права на саму компоненту (в dcomcnfg на вкладке безопасность). Но ничего не изменилось - так же неизвестная ошибка.

Далее в качестве эксперимента, указали в ком объекта в dcomcnfg на вкладке удостоверение запуск от текущего пользователя - когда стартует рег задание компонента запускается от имени и в сессии текущего залогиненного на сервере пользователя - все работает!

Далее была мысль - а вдруг, компонента не умеет работать без визуальной сессии. Создали скрипт на vbs, которые создает так же ком компоненту и делает с ней что-то. Этот скрипт запускали в планировщике задач от пользователя 1CSRV82 и отключались от сервера - все работает!!!

При этом сама компонента не успевает сгенерировать ни логов ни ошибок. Есть только записи в журнале регистрации событий Windows.
Но там тоже ошибка достаточно общая 0xc0000005

Также запуск компоненты через скрипт или само приложение от имени 1CSRV82 - успешно.
А вот запуск в рег задании - падает с неизвестной ошибкой при попытки обращения к полю или методу ком компонента.

Ребят, подскажите что-нибудь пожалуйста, а то уже мысли кончились куда смотреть.
 
 
   Mauser
 
1 - 25.09.16 - 19:26
Никогда и не кому не рассказывай, что это за компонентии что она делает. Это резко повысит шансы на получение ответа.
   jetzack
 
2 - 25.09.16 - 19:28
(1) Компонента от криптопровайдера для ЮЗЭДО. Но суть то в том, что дело не в ней - еще раз повторюсь - vbs от имени пользователя, от которого запускаются рег задания работает.
   Torquader
 
3 - 25.09.16 - 19:29
А что будет, если из регламентного задания запустить сценарий на VbScript, в котором работать с компонентой ?
И, если оно так работает, то почему бы так всё и не оставить ?
   breezee
 
4 - 25.09.16 - 19:30
(2) На стророне криптоправадера то права есть на чтение компоненты?
   Mauser
 
5 - 25.09.16 - 19:30
(2) Ну ок, используйте vbs
   Torquader
 
6 - 25.09.16 - 19:30
Запускать нужно не из планировщика, а от созданного от имени пользователя процесса.
   shuhard
 
7 - 25.09.16 - 19:31
(0) запускай обработку на клиенте через epf + виндовый шедулер


+ мы не услышали ни слова про разрядность сервера 1С, не 64 ли он ?
   breezee
 
8 - 25.09.16 - 19:31
(4) Ну в смысле на объект, который в com содержится
   jetzack
 
9 - 25.09.16 - 19:31
(6) Все так, так делали. Тот же результат
   jetzack
 
10 - 25.09.16 - 19:31
(7) Да, 64
 
 Рекламное место пустует
   jetzack
 
11 - 25.09.16 - 19:31
(5) Ваш ответ понятен, но не приемлем
   shuhard
 
12 - 25.09.16 - 19:32
(10) раз 64 - бегом читать про тонкости запуска
   Torquader
 
13 - 25.09.16 - 19:32
Если 64, то как раз vbs будет запускаться в 64-битах, если не запускать специально 32.
   jetzack
 
14 - 25.09.16 - 19:32
(4) не совсем понимаю
   jetzack
 
15 - 25.09.16 - 19:34
(13) Я не думаю, что дело в разрядности, так как интерактивно обработка запускается и работает.
Обращаю внимание на то, что если у кома задать удостоверение текущий пользователь и залогиниться, то рег задание запускает com от имени залогиненного пользователя - и все работает.
   Torquader
 
16 - 25.09.16 - 19:35
(15) На клиенте (интерактивно) вы в 32-битах, а на сервере - в 64.
   shuhard
 
17 - 25.09.16 - 19:35
(15)[Я не думаю, что дело в разрядности]
твоё мнение мало что решает
   jetzack
 
18 - 25.09.16 - 19:41
(16) На клиенте (интерактивно) вы в 32-битах, а на сервере - в 64.

Я не понимаю! 1с 64 бита, сервер 64 бита. Откуда 32бита то появляется?
   Serginio1
 
19 - 25.09.16 - 19:43
(18) Потому что 64 виндовый клиент только в 8.3.9
   Mauser
 
20 - 25.09.16 - 19:45
(11) Извините, Саманта Пауэр!

(18) Потому что клиентская часть 1С предприятия 32 битная.
   Serginio1
 
21 - 25.09.16 - 19:45
19+ Но вот .Net компоненты в отличие от  нативных компонент может выполняться как в 32 так и 64 разрядных процессах
   Serginio1
 
22 - 25.09.16 - 19:46
(20) Окромя линукса и 8.3.9
   jetzack
 
23 - 25.09.16 - 19:48
Так, ок. Клиент 32 бита. Выше писалось, что vbs поумолчанию запускается в 64 битном режиме. Клиент и vbs  с компонентой работают. Как-то не очень проясняется.
   Mauser
 
24 - 25.09.16 - 19:48
(21) Вот, держи салфетку, у тебя с монитора что-то капает.
   Torquader
 
25 - 25.09.16 - 19:49
(23) Если из задания на сервере запустить VbScript, который у тебя работает - компонента тоже работает ?
Если да, то зачем насиловать 1С и можно остаться на VbScript.
   jetzack
 
26 - 25.09.16 - 19:52
(25) Нет спасибо, по мне глупо имея 1С и готовый модуль работы с криптопровадером идти лесом и писать все на VBS.
   infosoft-v
 
27 - 25.09.16 - 19:53
Добрый день всем.
Предполагаю, что внешняя обработка запускается рег.заданием в безопасном режиме работы. В этом режиме есть ограничения по работе с com. Вот фрагмент из доки.

Запрещены операции, приводящие к использованию внешних средств по отношению к платформе «1С:Предприятие»:
? Механизмы COM:
? COMОбъект(),
   Mauser
 
28 - 25.09.16 - 19:53
(26) Готовый модуль имеет своего разработчика?
   jetzack
 
29 - 25.09.16 - 19:54
(28) Имеет, но компания-криптопровайдер разводит руками и ссылается на настройку сервера
   Mauser
 
30 - 25.09.16 - 19:55
(29) На какую именно?
   Serginio1
 
31 - 25.09.16 - 19:55
(24) Не у меня ничего не капает. А что должно капать? У тебя какие то фантазии. Поговорим о твоих фантазиях?
   jetzack
 
32 - 25.09.16 - 19:56
(27) Нет, Это не так
   Serginio1
 
33 - 25.09.16 - 19:58
 
 
   jetzack
 
34 - 25.09.16 - 19:59
(33) рекламма?
   Mauser
 
35 - 25.09.16 - 19:59
(31) Ты гляди, у него еще один интерес кроме дотнета есть! Он про чужие фантазии, оказывается любит!
   infosoft-v
 
36 - 25.09.16 - 20:02
А кто пользователь рег.задания в 1С?
   infosoft-v
 
37 - 25.09.16 - 20:06
И еще, что бы разделить проблемы, можно обращение к com объекту, для теста перенесим из внешней обработки в общий модуль, который вызывает рег.задание?
   Serginio1
 
38 - 25.09.16 - 20:08
(35) Я не люблю, просто стараюсь помочь людям.
(34) Реклама как настроить DCOM.
   Mauser
 
39 - 25.09.16 - 20:09
(34) О боже, нет, как ты мог подумать!

Слышь, Serginio1, вот тебе мнение чистого, незамутненного разума с сегодняшней регистраций =)
   infosoft-v
 
40 - 25.09.16 - 20:15
(33) вы уверены что dcom решит проблему получения com объекта в случае,когда внешняя обработка вызвана рег.заданием?
   Serginio1
 
41 - 25.09.16 - 20:19
(40) Если он говорит что 
// Так, ок. Клиент 32 бита. Выше писалось, что vbs поумолчанию запускается в 64 битном режиме. Клиент и vbs  с компонентой работают. Как-то не очень проясняется.


 То проблемы с регламеннтнвым заданием который запускается как сервис аналогичны как и при запуске Exel. Нужны определенные права в DCOM. Пройдись по ссылкам в 33

(39) И тебе пройдись по ссылкам в 33. Многое для себя узнаешь.
   infosoft-v
 
42 - 25.09.16 - 20:19
(36) может права этого пользователя? Фаргмент из доки

Регламентные задания всегда выполняются от имени определенного пользователя. Если пользователь регламентного задания не указан, то выполнение происходит с правами, которые определяются набором ролей, указанных в свойстве конфигурации ОсновныеРоли. В том случае, если в этом свойстве не указано ни одной роли, выполнение происходит без ограничения прав доступа.
   infosoft-v
 
43 - 25.09.16 - 20:22
(41) насколько я понял, коллега на win сервере разлулил проблему с доступом к com. Он про это в первом сообщении написал.
   Mauser
 
44 - 25.09.16 - 20:24
(42) Это касается пользователей 1С, и не имеет никакого отношения к пользователям ОС
   Serginio1
 
45 - 25.09.16 - 20:29
41 То есть его компонента это внешний (exe) Сервер автоматизации аналогично как описанный по ссылке Excel

 Хотя может и как сервис. В любом случае нужно прописывать права DCOM
   Mauser
 
46 - 25.09.16 - 20:29
(41) Смилуйся, о великий носитель сакральных знаний! Твоя поэзия хуже воганской.
   infosoft-v
 
47 - 25.09.16 - 20:31
(44) не спорю, предположил что у пользователя в правах может быть установка на выполнение внешних обработок в защищенном режиме.
   Serginio1
 
48 - 25.09.16 - 20:31
(43) Он в топике написал, что он сделал. Еще раз рекламирую проблема с DCOM. Читайте внимательнее. Хотя word x64 ошибка на клиент сервере здесь не вышло

Пройдитесь по ссылкам. Там многие варианты рассмотрены.
   Serginio1
 
49 - 25.09.16 - 20:32
Прошу прощения не ту ссылку дал
v8: Excel.Application на сервере x64
 
 Рекламное место пустует
   Mauser
 
50 - 25.09.16 - 20:36
(47) Нарушение прав 1С вызвало бы явное исключение 1С со вменяемым описанием и записью в журнале регистрации. Тут все кухня уровнем ниже.
   Torquader
 
51 - 25.09.16 - 20:45
(49) Так сразу и скажи - "хотел познакомить пользователя с .NET", а знакомство не состоялось по причине его неспособности "вкурить" его смысл в данной задаче.
   Serginio1
 
52 - 25.09.16 - 20:47
(49) Просто не ту ссылку word x64 ошибка на клиент сервере отсюда скопировал. Бывает.
Я же сразу сказал про DCOM.
   infosoft-v
 
53 - 25.09.16 - 21:40
(0) про настройку прав на DCOM в Win сервере, коллега обратил внимание на:

(только эти права (при изменении) вступают в силу после перезагрузки сервера)

может в этом дело?

это из темы, на которую указал (49)
   Serginio1
 
54 - 25.09.16 - 22:14
(53) Там еще по ссылкам
Подсказали решение на SQL.ru 
На сервере необходимо было еще установить в локальных политиках право на запуск DCOM для конкретных пользователей.
и, о чудо, все заработало :-)


пользователь под которым запущена служба 1с должен иметь права на DCOM в целом и на ексель в частности

На самом деле проблема была в пользователе DCOM, хотя сервер и работает под пользователем винды, в DCOM он почему то пустой, пришлось принудительно установить все запуски DCOM под определенным пользователем и все заработало.
   jetzack
 
55 - 26.09.16 - 08:31
Доброе утро!

За неделю времени я предлагаемые ссылки по поводу решения вопроса с Excel прошерстил. В dcomcfg на вкладке безопасность даны права на запуск конкретно пользователю винды, от которого запускается регламентное задание. Сервер 1С перегружали после этих действий.

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

Что я упускаю?
   Mauser
 
56 - 26.09.16 - 09:20
Interact witch desktop?
   Mauser
 
57 - 26.09.16 - 09:21
*with
   infosoft-v
 
58 - 26.09.16 - 09:28
(55) Виталий, простите за занудство, перегружали сервер 1С (программу) или сервер где стоит 1С (машину)
   Serginio1
 
59 - 26.09.16 - 09:47
(55) 54 Читал?

На сервере необходимо было еще установить в локальных политиках право на запуск DCOM для конкретных пользователей.
и, о чудо, все заработало :-)
   Serginio1
 
60 - 26.09.16 - 09:47
пользователь под которым запущена служба 1с должен иметь права на DCOM в целом и на ексель в частности
   Serginio1
 
61 - 26.09.16 - 09:58
   jetzack
 
62 - 26.09.16 - 10:03
(58) 1с сервер службу
   jetzack
 
63 - 26.09.16 - 10:04
(59) Пользователь в политике безопасности имеет эти права.
   infosoft-v
 
64 - 26.09.16 - 10:25
(62) Есть возможность перестартануть сервер - машину?
   infosoft-v
 
65 - 26.09.16 - 10:33
Возможно дело в разрядности Com объекта. Попробуйте:

Вызов 32-битных COM-объектов на стороне 64-битного сервера 1С
Книга знаний: Вызов 32-битных COM-объектов на стороне 64-битного сервера 1С
   jetzack
 
66 - 26.09.16 - 10:39
(64) Сегодня ночью попробуем перегрузить сам физический сервер
   jetzack
 
67 - 26.09.16 - 10:41
(65) Попробуем
   jetzack
 
68 - 26.09.16 - 13:26
(65) При попытке создать обертку над компонентой происходит краш. С0000005 код ошибки - точно такая же ошибка при попытке взаимодействия с компонентой в рамках рег задания
   infosoft-v
 
69 - 26.09.16 - 13:58
(68) понятно, спасибо за информацию
   Serginio1
 
70 - 26.09.16 - 14:24
(68) Сама компонента экзешник? Или это сервис? или DLL?
   jetzack
 
71 - 26.09.16 - 14:37
(70) exe
   Serginio1
 
72 - 26.09.16 - 15:05
(71) Тогда читай 49 и все ссылки и шапку. Проблема с DCOM однозначно.
   Serginio1
 
73 - 26.09.16 - 15:17
С криптографией еще есть проблема из под сервисов с поиском в хранилище сертификатов . Уже не помню

Посмотри

Криптография, как подписывать XML ?
ЭЦП, Сертификат, Подпись. Продолжение.

Но это уже к создателям этой компоненты
   infosoft-v
 
74 - 26.09.16 - 15:30
(0) еще вопрос, обычное или управляемое приложение?
   jetzack
 
75 - 26.09.16 - 15:58
(74) Обычное
   Serginio1
 
76 - 26.09.16 - 16:31
http://ts-soft.ru/blog/wcf-authentication

По умолчанию Visual Studio использует IIS Express. Если при просмотре страницы сервиса возникает ошибка «Набор ключей не существует», то либо ваш сертификат не имеет закрытого ключа, либо учётная запись, от которой запущен IIS Express не имеет прав доступа к закрытому ключу для этого сертификата. Для сертификатов ГОСТ, если закрытый ключ хранится в реестре, права доступа можно настроить в ветке реестра HKEY_LOCAL_MACHINESOFTWAREWow6432NodeCrypto ProSettingsKeys или HKEY_LOCAL_MACHINESOFTWARECrypto ProSettingsKeys для 32-разрядной версии Windows. Кликните правой кнопкой мыши по необходимому ключу и выберите пункт Разрешения… Далее необходимо дать права учётной записи, от которой запускается IIS Express. Также, если вы разворачиваете свой сервис, например, на локальном IIS, то аналогично нужно дать права доступа к закрытому ключу учётной записи, от которой запущен пул приложений, на котором развёрнут ваш веб-сервис.
   jetzack
 
77 - 27.09.16 - 08:25
(65) Перегрузили сервер - не помогло
   infosoft-v
 
78 - 28.09.16 - 11:08
информация от разработчиков 1С Предприятия:

====================
Выполнение кода встроенного языка на сервере 1С:Предприятия отличается от выполнения кода на клиенте:

- другим пользователем, от которого запущено приложение 1С:Предприятия 8.2 (usr1cv82 вместо интерактивного пользователя);

- другой разрядностью приложения 1С:Предприятия 8.2 (64 вместо 32);

- другой потоковой моделью доступа к COM объекту в приложении 1С:Предприятия 8.2 (multithreaded apartment вместо main single-threaded apartment).
====================

Первый и второй пункт разобрали.
Может влияние третьего пункта?
   Torquader
 
79 - 28.09.16 - 11:38
А чем вам третье-то помешало.
Если заявлено многопоточное окружение, то это влияет только на локальные COM-сервера - если у вас exe-файл, то к нему всё равно идёт маршалинг и одновременного доступа быть не может.
   Serginio1
 
80 - 28.09.16 - 12:01
(78) Потоковая модель имеет значение для внутренних серверов.
Для внешних никакого отношения не имеет.
Пусть проверят у себя при запуске из под сервиса. Проблема скорее всего у них внутри.
   infosoft-v
 
81 - 28.09.16 - 12:07
в (78) разработчик платформы привёл отличия исполнения кода в клиенте и на сервере 1С Предприятия. У jetzack код под клиентом корректно работает с exe com объектом а при запуске регламентного задания на сервере 1С Предприятие не работает.

так как пункты 2 и 3 с подозрения сняты, получается, остается только пункт 1
   jetzack
 
82 - 28.09.16 - 15:05
Попробовали на тестовом сервере - все работает =( 
То есть дело в безопасности.

В dcomcnfg на вкладке безопасность запускающий пользователь указан.

В (49) указано, что на Server 2008 недостаточно указать этих настроек, но и еще 
"На сервере необходимо было еще установить в локальных политиках право на запуск DCOM для конкретных пользователей." 

Но в локальных политиках безопасности как-то не очевидно, где спрятаны эти настройки.
   jetzack
 
83 - 29.09.16 - 16:17
Проблему решить не удалось.
Смущает тот момент, что обертка в 2008 сервере не создается и ошибка с0000005 - точно такая, как при работе в рег задании.

При этом на сервере 2003 и рег задание корректно работает и обертка создается.

Все-таки безопасность тут не причем, а собака зарыта где-то между запуском 1с рег заданий и взаимодействия с 32-ух битными компонентами exe  и самой компонентой.

Вышли из ситуации - запуск в планировщике Windows 1с клиента с указанием внешней обработки, которая дергает нужный код.

Всем большое спасибо за участие!


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует