![]() |
![]() |
![]() |
|
Подключение OLE в регламентном задании на 64 битном сервере | ☑ | ||
---|---|---|---|---|
0
Xershi
09.04.15
✎
12:31
|
Читал:
v8: Подключение OLE в регламентном задании Но так и не смог у себя настроить выполнение регламентного задания. Есть сервер1 вин2012 р2 64 бита на нем крутится 1с 8.3 на SQL, также поставили платформу 1с 7.7. Есть сервер2 вин2003 на нем крутится 1c 7.7 на SQL. Решал проблему вот тут http://forum.infostart.ru/forum26/topic121228/ Но результат пока не получил. И так задача: 1. Сделать файл в 1с 8.3 (не важно на каком сервере) 2. Открыть по ОЛЕ 1с 7.7 и загрузить файл 1. Уже решен, а вот с 2 пунктом проблема. Какие действия дальше? Есть ли решение для 64 битного сервера? |
|||
1
Torquader
09.04.15
✎
12:41
|
1С 7.7 как известно 32-битный.
Соответственно, у вас будет STUB в 64-битном процессе для вызова 32-битного локального OLE-сервера - а есть ли она ? Можно решить по-другому, если написать сценарий VbScript, например, который будет в 32-битном процессе, и запускать его через командную строку с параметрами, а уже этот сценарий пусть "кормит" семёрку файлами. |
|||
2
Ёпрст
гуру
09.04.15
✎
12:46
|
(0) не в фоновом задании, п.2 работает, это для начала ?
|
|||
3
Xershi
09.04.15
✎
13:33
|
(2) да. Я открыл 1с8 на сервере1 и запустил обработку, которая выполнил код, который в регламентном задании. Все работает.
Сама 1с7 запускается нормально на сервере1. Как базу созданную локально на сервере1 так и по сети базу на сервере2. |
|||
4
Xershi
09.04.15
✎
13:35
|
(1) получается когда я запускаю 1с8 в режиме предприятия, то у меня процесс 32-битный, а вот когда сервер запускает регламентное задание, то процесс 64-битный?
Решить то можно создав на сервере2 в планировщике запуск 1с7 под юзером и выполнением нужных инструкций. Вопрос в другом можно ли победить используя ОЛЕ в 64 битном сервере 1с8? |
|||
5
Xershi
09.04.15
✎
13:52
|
Вот здесь по идее решили вопрос:
http://forum.infostart.ru/forum16/topic77413/ Но не до конца понятно удалось ли на вин2012 это сделать автору. Есть идеи? |
|||
6
Ёпрст
гуру
09.04.15
✎
13:58
|
(5) Есть, дать права юзверю, под которым запущена служба агента сервера на комкомпоненты в диспетчере служб компонентов. Наслаждаться, кушать печенки.
|
|||
7
Xershi
09.04.15
✎
14:05
|
(6) речь идет о V77.GeneralPropPage?
Можно подробнее какие комкомпоненты в диспетчере служб компонентов? |
|||
8
Ёпрст
гуру
09.04.15
✎
14:12
|
(7) вот эти:
http://pics.rsh.ru/img/123_sr6v8lua.jpg Но, там может быть не М, а другие, в зависимости от версии 7.7 |
|||
9
Xershi
09.04.15
✎
14:19
|
(8) у меня только один дком объект
http://forum.infostart.ru/forum26/topic121228/message1334804/?result=reply#message1334804 |
|||
10
Xershi
09.04.15
✎
14:20
|
Может проблема в этом?
|
|||
11
Ёпрст
гуру
09.04.15
✎
14:21
|
(10) запусти это:
Прописать v77.Application в реестре |
|||
12
Ёпрст
гуру
09.04.15
✎
14:22
|
+ запусти остнастку от 32
|
|||
13
Ёпрст
гуру
09.04.15
✎
14:24
|
хотя не, в mmc /32 её не должно быть
|
|||
14
Xershi
09.04.15
✎
14:31
|
(11) запись в реестре есть, а в ДКОМ нету.
От юзера же работает ОЛЕ или для чего это? |
|||
15
Xershi
09.04.15
✎
14:32
|
Заходил через пуск-выполнить (вин+К)
прописывал: DCOMCNFG |
|||
16
Ёпрст
гуру
09.04.15
✎
14:33
|
(14) у тебя запуск фонового задания идёт от учетной записи пользователя, от которго служба агент сервера запущена (если , конечно, у тебя не файловая)
|
|||
17
Xershi
09.04.15
✎
14:36
|
(16) да служба агент сервера запущена от учетной записи: "Администратор".
База на SQL. Так v77.Application должно быть в ДКОМ объектах? В реестре у меня есть такая запись! |
|||
18
Torquader
09.04.15
✎
14:37
|
(16) А под пользователем, под которым работает сервер, вообще семёрку открыть можно ? Есть мнение, что пользователь должен иметь определённые ветки в реестре и разрешения на папку семёрки.
|
|||
19
Ёпрст
гуру
09.04.15
✎
14:37
|
(17) да, должна быть
|
|||
20
Torquader
09.04.15
✎
14:37
|
(17) Зайди под администратором и сделай так, чтобы можно было запускать 1С 7.7
|
|||
21
Torquader
09.04.15
✎
14:40
|
||||
22
Ёпрст
гуру
09.04.15
✎
14:40
|
(17) Зайди в 1с-ину 1 раз под админом (локальным) и потом попробуй рестартануть сервер
|
|||
23
Xershi
09.04.15
✎
14:41
|
(22) попробую.
(18) да код работает и база вручную тоже открывается. Почитай тему на инфостаре там я подробно это написал. |
|||
24
Torquader
09.04.15
✎
14:54
|
(23) Так если там вход в 7.7 под специальным пользователем - то зачем вообще нужно OLE - просто в восьмёрке пишется ЗапуститьПриложение где запускается 7.7 под нужным пользователем, а у этого пользователя при входе выполняется обработка, которая загружает файл и после этого завершает 1С.
Просто, через OLE в границе процессов будет медленно, а использовать OLE только для запуска семёрки - особого смысла нет. |
|||
25
Torquader
09.04.15
✎
14:57
|
У семёрки, есть ключи запуска:
/nИмяПользователя /uКаталогПользователя /pПарольПользователя /dКаталогБазы /tКаталогВременныхФайлов |
|||
26
Xershi
09.04.15
✎
15:26
|
(24) в принципе это мне и нужно. Не знал что это тоже самое.
Можно пример кода для запуска в студию. По поводу (22) зашел под локальным админом, затем доменным в 1с7 с параметром как администратор. Затем поставил на процесс агента сервера доменного админа. Перезапустил сервер в ДКОМ не появилось v77.Application. Регламентное задание в ошибке как и писал раньше: Error calling context method (Initialize) reason: Unknown error |
|||
27
Ёпрст
гуру
09.04.15
✎
15:39
|
(26) а строка подключения какая ? с V1СEnterprise.Application пробовал ?
|
|||
28
Ёпрст
гуру
09.04.15
✎
15:45
|
если запускаешь 32-х битную остнастку, тоже не видно v7 application ?
comexp.msc /32 |
|||
29
Xershi
09.04.15
✎
16:10
|
(28) в comexp.msc /32 ДКОМ v77.Application тоже нет.
Сейчас тестирую СтрокаКоманды = "C:\Program Files (x86)\1Cv77\BIN\1cv7s.exe enterprise /D"+КаталогБазыОЛе+" /N"+ПользовательОле+" /P"+ПарольОле; ТекущийКаталог = "C:\Program Files (x86)\1Cv77\BIN"; ДождатьсяЗавершения = Ложь; КодВозврата = ""; ЗапуститьПриложение(СтрокаКоманды,ТекущийКаталог,ДождатьсяЗавершения,КодВозврата); |
|||
30
Xershi
09.04.15
✎
16:34
|
ЗапуститьПриложение(СтрокаКоманды,ТекущийКаталог,ДождатьсяЗавершения,КодВозврата);
Запускает, но код в 1с7 не отрабатывает в регламентном задании. Если запустить через обработку все ок. Не знаю даже куда копать. |
|||
31
Torquader
09.04.15
✎
16:41
|
(29) Во-первых, кавычки правильно расставить.
Во-вторых, у пользователя, под которым запускается задание в ПриНачалеРаботы должна открываться обработка. В-третьих, если сеанс сервера консольный, то семёрка выжрет все ресурсы и не сможет стартануть - это лечится правкой ресурсов для сеанса или запуском в интерактивной сессии. |
|||
32
Xershi
09.04.15
✎
16:45
|
(31) с кавычками проблем нет.
Я уже написал что этот код все делает, но в регламентном не работает. Семерка стартует под юзером процесса агент сервера 1с8. Она на секунду запускается и пропадает. Так чем лечить? |
|||
33
Torquader
09.04.15
✎
16:49
|
(32) Под пользователем агента из командной строки стартует ?
Также смотрим директорию временных файлов (через ключ /t и чтобы в ней пробелов не было) Ну и ключи в реестре можно проверить - просто ключ с базами из текущего пользователя выгрузить в пользователю агента загрузить. Внешних компонент не стартует при запуске ? |
|||
34
Xershi
09.04.15
✎
17:05
|
(33) я же написал 1с7 стартует на сервере1 под юзером "АдминДомена" в регламентном задании.
Все ВК уже прописаны. Если сам "АдминДомена" залогинится и откроет обработку с кодом (29), то запустится 1с7 отработает код написанный в ней и она закроется. Та же проблема как и с ОЛЕ подключением. Вопрос в том почему ЗапуститьПриложение в обработке работает, а в регламентном нет. По поводу временных файлов, то как они вяжутся с выше изложенным? |
|||
35
Torquader
09.04.15
✎
17:09
|
(34) у консольного процесса мало GDI-ресурсов, а семёрка создаёт все свои окна со всеми там вытекающими - GDI-память кончается, и она валится с ошибкой.
Можно попробовать в реестре увеличить GDI-память для семёрки. Можно службе сервера 1С поставить флаг INTERACTIVE, чтобы использовала ресурсы текущей консольной сессии и зайти в неё - если отработает - то проблема в памяти. |
|||
36
Xershi
09.04.15
✎
17:14
|
(35) как это сделать?
|
|||
37
Torquader
09.04.15
✎
17:20
|
Вот здесь описано как увеличить кучу для неинтерактивного сеанса - можно попробовать поставить значение равное значению для интерактивного - если поможет, то это как раз именно оно.
http://www.techarp.com/showarticle.aspx?artno=238&pgno=1 |
|||
38
Torquader
09.04.15
✎
17:21
|
Если не помогает, то пробовать запускать семёрку через планировщик под отдельным пользователем, для неё созданным - ему дадут новый Desktop и там ресурсов должно хватить.
|
|||
39
Xershi
10.04.15
✎
09:27
|
(28) у меня кстати и на сервере2 где крутится 1с7 нет в дком объектах его. Только V77.GeneralPropPage.
|
|||
40
ЧеловекДуши
10.04.15
✎
09:34
|
(0) Зачем ОЛЕ на регламентном?
Используй файловый вариант обмена :) |
|||
41
ЧеловекДуши
10.04.15
✎
09:36
|
(3) Ты обработку напиши так, что бы она запускала ОЛЕ на стороне сервера.
Вот так и поймешь, где и что не так :) |
|||
42
ЧеловекДуши
10.04.15
✎
09:38
|
Кстати, никто не задался вопросом, под каким режимом он запускает обработку :)
Думается все это делается под Толстым клиентом. :) |
|||
43
Xershi
10.04.15
✎
09:42
|
(42) обычное приложение всегда в толстом клиенте.
Добавить препроцессор сервер? |
|||
44
Xershi
10.04.15
✎
14:50
|
Победил!!
Регламентное задание на 64 битном сервере будет работать! Не хватало: Оказалось этого ДКОМ объекта достаточно, причина крылась в нехватке памяти для открытия окон 1С 7.7 в "[B]не интерактивном[/B]" режиме (т.е. в регламентном задании) для этого в реестре добавили памяти сеансу подробно расписано тут: http://www.techarp.com/showarticle.aspx?artno=238&pgno=1 HKEY_LOCAL_MACHINE>SYSTEM>CurrentControlSet>Control>Session Manager>SubSystems Там Windows открыть и изменить строку: %SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,3072,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=Off MaxRequestThreads=16 SharedSection=1024,3072,512 вот здесь редактируем 3 значение мы поставили 5 мб (было 512 кб). Важно чтобы 2 и 3 значение не превысило 48 мб. ОЛЕ заработало! (37) Спасибо!! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |