|
1С:Предприятие
:: 1С:Предприятие 8 общая
|
|
| ||
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 | |||
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 | |||
Mauser 39 - 25.09.16 - 20:09 | |||
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 | |||
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с клиента с указанием внешней обработки, которая дергает нужный код. Всем большое спасибо за участие! |
|
Список тем форума
|