Visual Studio 2005 + 1C OLE = проблема
07.03.2006
00:05
#1
Столкнулся с проблемой при работе с 1С в качестве OLE сервера.
Ситуация:
В VisualStudio 2005 на Бэйсике пишу простейшую программу (как в примере из помощи):
Dim v7 As Object
Dim result As Boolean
v7 = CreateObject("V77.Application")
Try
result = v7.Initialize(v7.RMTrade, "/DC:\V7\DB /M", ")
Catch
End Try
1C пытается инициализироваться (появляются окна заставки, выбора пользователя, процесс виден в списке процессов Диспетчера Задач), а потом вылетает
Операционная система Win XP, установлены Visual Studio 2005, NET Framework 2.0.
Проводил опыт и с VBA от Excel на той же системе, и с VB 6.0 на Win2000 и NET Framework 2.0 - та же ситуация.
Где может прорыться проблема?
Ситуация:
В VisualStudio 2005 на Бэйсике пишу простейшую программу (как в примере из помощи):
Dim v7 As Object
Dim result As Boolean
v7 = CreateObject("V77.Application")
Try
result = v7.Initialize(v7.RMTrade, "/DC:\V7\DB /M", ")
Catch
End Try
1C пытается инициализироваться (появляются окна заставки, выбора пользователя, процесс виден в списке процессов Диспетчера Задач), а потом вылетает
Операционная система Win XP, установлены Visual Studio 2005, NET Framework 2.0.
Проводил опыт и с VBA от Excel на той же системе, и с VB 6.0 на Win2000 и NET Framework 2.0 - та же ситуация.
Где может прорыться проблема?
07.03.2006
11:52
#2
А что дальше делаешь с объектом V7?
Если ничего, то по окончании модуля объект V7 уничтожается, что и приводит к закрытию программы.
Надо чего нибудь использовать из V7 чтобы результаты увидеть.
Вот например, написано VBScript (Текст сохраняешь в файл например test1c.vbs)
и запускаешь cscript test1c.vbs в окне dos. Результат - на экране список пользователей.
в виде код:[Наименование]
Если же просто запустишь test1c.vbs То для каждого пользователя будет окошечко выскакивать...
set v7 = CreateObject("V77.Application")
result = v7.Initialize(v7.RMTrade, "/M /DD:\BASE\DB", ")
if result<>0 then
set spr = v7.CreateObject("Справочник.Пользователи")
spr.SelectItems()
Do while spr.GetItem()=1
sName = " & Spr.GetAttrib("Наименование")
sCode = " & Spr.GetAttrib("Код")
WScript.Echo sCode & ":[" & sName & "]"
Loop
end if
Если ничего, то по окончании модуля объект V7 уничтожается, что и приводит к закрытию программы.
Надо чего нибудь использовать из V7 чтобы результаты увидеть.
Вот например, написано VBScript (Текст сохраняешь в файл например test1c.vbs)
и запускаешь cscript test1c.vbs в окне dos. Результат - на экране список пользователей.
в виде код:[Наименование]
Если же просто запустишь test1c.vbs То для каждого пользователя будет окошечко выскакивать...
set v7 = CreateObject("V77.Application")
result = v7.Initialize(v7.RMTrade, "/M /DD:\BASE\DB", ")
if result<>0 then
set spr = v7.CreateObject("Справочник.Пользователи")
spr.SelectItems()
Do while spr.GetItem()=1
sName = " & Spr.GetAttrib("Наименование")
sCode = " & Spr.GetAttrib("Код")
WScript.Echo sCode & ":[" & sName & "]"
Loop
end if
07.03.2006
12:53
#3
У тебя подразумевается, что v7.Initialize(v7.RMTrade, "/M /DD:\BASE\DB", ") отработан корректно и result<>0 (False)
У меня же result = 0 (False), то есть инициализация не прошла
У меня же result = 0 (False), то есть инициализация не прошла
09.03.2006
12:23
#4
А пользователю, под которым в 1С заходишь, какие права даны?
По крайней мере нужно чтобы было разрешено использовать 1С в качесте OLE сервера.
И еще, в базе то никто не работает?
Ключик у тебя стоит на монопольный запуск /M, может из-за этого...
По крайней мере нужно чтобы было разрешено использовать 1С в качесте OLE сервера.
И еще, в базе то никто не работает?
09.03.2006
12:28
#5
> И еще, в базе то никто не работает?
Ключик у тебя стоит на монопольный запуск /M, может >из-за этого...
Нет..В базу пытается войти только один пользовател...Дело происходит локально
Ткни носом туда, где задается: "А пользователю, под которым в 1С заходишь, какие права даны?
По крайней мере нужно чтобы было разрешено использовать 1С в качесте OLE сервера."
Нет..В базу пытается войти только один пользовател...Дело происходит локально
Ткни носом туда, где задается: "А пользователю, под которым в 1С заходишь, какие права даны?
По крайней мере нужно чтобы было разрешено использовать 1С в качесте OLE сервера."
10.03.2006
09:27
#6
В конфигураторе, открываешь конфигурацию, закладка Права.
Открываешь набор прав используемый твоим пользователем.
Открываешь свойства элемента прав на самый верхний объект-название конфигурации...
Там среди всего есть пункт Использование в качестве OLE Automation сервера.
Открываешь набор прав используемый твоим пользователем.
Открываешь свойства элемента прав на самый верхний объект-название конфигурации...
Там среди всего есть пункт Использование в качестве OLE Automation сервера.
10.03.2006
11:02
#7
> В конфигураторе, открываешь конфигурацию, закладка Права.
> Открываешь набор прав используемый твоим пользователем.
> Открываешь свойства элемента прав на самый верхний объект-название конфигурации...
> Там среди всего есть пункт Использование в качестве OLE Automation сервера.
Есть такое...Нужный флажок стоит - результат тот же, то есть отрицательный...
> Открываешь набор прав используемый твоим пользователем.
> Открываешь свойства элемента прав на самый верхний объект-название конфигурации...
> Там среди всего есть пункт Использование в качестве OLE Automation сервера.
Есть такое...Нужный флажок стоит - результат тот же, то есть отрицательный...
Читают тему
(гостей: 1)