Подключение OLE в регламентном задании на 64 битном сервере #739499


#0 by Xershi
Читал: Но так и не смог у себя настроить выполнение регламентного задания. Есть сервер1 вин2012 р2 64 бита на нем крутится 1с 8.3 на SQL, также поставили платформу 1с 7.7. Есть сервер2 вин2003 на нем крутится 1c 7.7 на SQL. Решал проблему вот тут Но результат пока не получил. И так задача: 1. Сделать файл в 1с 8.3 (не важно на каком сервере) 2. Открыть по ОЛЕ 1с 7.7 и загрузить файл 1. Уже решен, а вот с 2 пунктом проблема. Какие действия дальше? Есть ли решение для 64 битного сервера?
#1 by Torquader
1С 7.7 как известно 32-битный. Соответственно, у вас будет STUB в 64-битном процессе для вызова 32-битного локального OLE-сервера - а есть ли она ? Можно решить по-другому, если написать сценарий VbScript, например, который будет в 32-битном процессе, и запускать его через командную строку с параметрами, а уже этот сценарий пусть "кормит" семёрку файлами.
#2 by Ёпрст
не в фоновом задании, п.2 работает, это для начала ?
#3 by Xershi
да. Я открыл 1с8 на сервере1 и запустил обработку, которая выполнил код, который в регламентном задании. Все работает. Сама 1с7 запускается нормально на сервере1. Как базу созданную локально на сервере1 так и по сети базу на сервере2.
#4 by Xershi
получается когда я запускаю 1с8 в режиме предприятия, то у меня процесс 32-битный, а вот когда сервер запускает регламентное задание, то процесс 64-битный? Решить то можно создав на сервере2 в планировщике запуск 1с7 под юзером и выполнением нужных инструкций. Вопрос в другом можно ли победить используя ОЛЕ в 64 битном сервере 1с8?
#5 by Xershi
Вот здесь по идее решили вопрос: Но не до конца понятно удалось ли на вин2012 это сделать автору. Есть идеи?
#6 by Ёпрст
Есть, дать права юзверю, под которым запущена служба агента сервера на комкомпоненты в диспетчере служб компонентов. Наслаждаться, кушать печенки.
#7 by Xershi
речь идет о V77.GeneralPropPage? Можно подробнее какие комкомпоненты в диспетчере служб компонентов?
#8 by Ёпрст
вот эти: Но, там может быть не М, а другие, в зависимости от версии 7.7
#9 by Xershi
у меня только один дком объект
#10 by Xershi
Может проблема в этом?
#11 by Ёпрст
запусти это:
#12 by Ёпрст
+ запусти остнастку от 32
#13 by Ёпрст
хотя не, в mmc /32 её не должно быть
#14 by Xershi
запись в реестре есть, а в ДКОМ нету. От юзера же работает ОЛЕ или для чего это?
#15 by Xershi
Заходил через пуск-выполнить (вин+К) прописывал: DCOMCNFG
#16 by Ёпрст
у тебя запуск фонового задания идёт от учетной записи пользователя, от которго служба агент сервера запущена (если , конечно, у тебя не файловая)
#17 by Xershi
да служба агент сервера запущена от учетной записи: "Администратор". База на SQL. Так v77.Application должно быть в ДКОМ объектах? В реестре у меня есть такая запись!
#18 by Torquader
А под пользователем, под которым работает сервер, вообще семёрку открыть можно ? Есть мнение, что пользователь должен иметь определённые ветки в реестре и разрешения на папку семёрки.
#19 by Ёпрст
да, должна быть
#20 by Torquader
Зайди под администратором и сделай так, чтобы можно было запускать 1С 7.7
#21 by Torquader
Можно ещё почитать про COM+:
#22 by Ёпрст
Зайди в 1с-ину 1 раз под админом (локальным) и потом попробуй рестартануть сервер
#23 by Xershi
попробую. да код работает и база вручную тоже открывается. Почитай тему на инфостаре там я подробно это написал.
#24 by Torquader
Так если там вход в 7.7 под специальным пользователем - то зачем вообще нужно OLE - просто в восьмёрке пишется ЗапуститьПриложение где запускается 7.7 под нужным пользователем, а у этого пользователя при входе выполняется обработка, которая загружает файл и после этого завершает 1С. Просто, через OLE в границе процессов будет медленно, а использовать OLE только для запуска семёрки - особого смысла нет.
#25 by Torquader
У семёрки, есть ключи запуска: /nИмяПользователя /uКаталогПользователя /pПарольПользователя /dКаталогБазы /tКаталогВременныхФайлов
#26 by Xershi
в принципе это мне и нужно. Не знал что это тоже самое. Можно пример кода для запуска в студию. По поводу зашел под локальным админом, затем доменным в 1с7 с параметром как администратор. Затем поставил на процесс агента сервера доменного админа. Перезапустил сервер в ДКОМ не появилось v77.Application. Регламентное задание в ошибке как и писал раньше: Error calling context method (Initialize) reason: Unknown error
#27 by Ёпрст
а строка подключения какая ? с V1СEnterprise.Application пробовал ?
#28 by Ёпрст
если запускаешь 32-х битную остнастку, тоже не видно v7 application ?
#29 by Xershi
в comexp.msc /32  ДКОМ v77.Application тоже нет. СтрокаКоманды = "C:Program Files (x86)1Cv77BIN1cv7s.exe enterprise /D"+КаталогБазыОЛе+" /N"+ПользовательОле+" /P"+ПарольОле;
#30 by Xershi
Запускает, но код в 1с7 не отрабатывает в регламентном задании. Если запустить через обработку все ок. Не знаю даже куда копать.
#31 by Torquader
Во-первых, кавычки правильно расставить. Во-вторых, у пользователя, под которым запускается задание в ПриНачалеРаботы должна открываться обработка. В-третьих, если сеанс сервера консольный, то семёрка выжрет все ресурсы и не сможет стартануть - это лечится правкой ресурсов для сеанса или запуском в интерактивной сессии.
#32 by Xershi
с кавычками проблем нет. Я уже написал что этот код все делает, но в регламентном не работает. Семерка стартует под юзером процесса агент сервера 1с8. Она на секунду запускается и пропадает. Так чем лечить?
#33 by Torquader
Под пользователем агента из командной строки стартует ? Также смотрим директорию временных файлов (через ключ /t и чтобы в ней пробелов не было) Ну и ключи в реестре можно проверить - просто ключ с базами из текущего пользователя выгрузить в пользователю агента загрузить. Внешних компонент не стартует при запуске ?
#34 by Xershi
я же написал 1с7 стартует на сервере1 под юзером "АдминДомена" в регламентном задании. Все ВК уже прописаны. Если сам "АдминДомена" залогинится и откроет обработку с кодом , то запустится 1с7 отработает код написанный в ней и она закроется. Та же проблема как и с ОЛЕ подключением. Вопрос в том почему ЗапуститьПриложение в обработке работает, а в регламентном нет. По поводу временных файлов, то как они вяжутся с выше изложенным?
#35 by Torquader
у консольного процесса мало GDI-ресурсов, а семёрка создаёт все свои окна со всеми там вытекающими - GDI-память кончается, и она валится с ошибкой. Можно попробовать в реестре увеличить GDI-память для семёрки. Можно службе сервера 1С поставить флаг INTERACTIVE, чтобы использовала ресурсы текущей консольной сессии и зайти в неё - если отработает - то проблема в памяти.
#36 by Xershi
как это сделать?
#37 by Torquader
Вот здесь описано как увеличить кучу для неинтерактивного сеанса - можно попробовать поставить значение равное значению для интерактивного - если поможет, то это как раз именно оно.
#38 by Torquader
Если не помогает, то пробовать запускать семёрку через планировщик под отдельным пользователем, для неё созданным - ему дадут новый Desktop и там ресурсов должно хватить.
#39 by Xershi
у меня кстати и на сервере2 где крутится 1с7 нет в дком объектах его. Только V77.GeneralPropPage.
#40 by ЧеловекДуши
Зачем ОЛЕ на регламентном? Используй файловый вариант обмена :)
#41 by ЧеловекДуши
Ты обработку напиши так, что бы она запускала ОЛЕ на стороне сервера. Вот так и поймешь, где и что не так :)
#42 by ЧеловекДуши
Кстати, никто не задался вопросом, под каким режимом он запускает обработку :) Думается все это делается под Толстым клиентом. :)
#43 by Xershi
обычное приложение всегда в толстом клиенте. Добавить препроцессор сервер?
#44 by Xershi
Победил!! Регламентное задание на 64 битном сервере будет работать! Не хватало: Оказалось этого ДКОМ объекта достаточно, причина крылась в нехватке памяти для открытия окон 1С 7.7 в "[B]не интерактивном[/B]" режиме (т.е. в регламентном задании) для этого в реестре добавили памяти сеансу подробно расписано тут: HKEY_LOCAL_MACHINE>SYSTEM>CurrentControlSet>Control>Session Manager>SubSystems Там Windows открыть и изменить строку: %SystemRoot%system32csrss.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 мб. Спасибо!!
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С