1 (изменено: lamer19, 2013-03-01 16:35:33)

Тема: OFF: Проблема с работой с реестром из 1С

Пытаюсь работать с реестром из 1С. Ветка

    Попытка
        ScrptCtrl=СоздатьОбъект("MSScriptControl.ScriptControl");
        ScrptCtrl.Language="vbscript";
        ScrptCtrl.AddCode("
        |Function Get1CV77Titles()
        |    const HKEY_CURRENT_USER = &H80000001
        |    Set oReg=GetObject(""winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv"")
        |    strKeyPath = """+Ключ+"""
        |    oReg.EnumValues HKEY_CURRENT_USER, strKeyPath, arrValues
        |    strInfo=vbNullString
        |    For i = LBound(arrValues) To UBound(arrValues)
        |        call oReg.GetStringValue(HKEY_CURRENT_USER,strKeyPath,arrValues(i),Value)
        |        strInfo=strInfo & arrValues(i) & vbTab & Value & vbCrLf
        |    Next
        |    Get1CV77Titles = strInfo
        |End Function
        |");
        Текст=СокрЛП(ScrptCtrl.Run("Get1CV77Titles"));
    Исключение
        Сообщить(ОписаниеОшибки());
        Возврат;
    КонецПопытки;

Понятно как выбрать значения вложенные в ключ, но пока не понятно как перебрать ключи вложенные в ключ

2

Re: OFF: Проблема с работой с реестром из 1С

Если просто перечислить:

Const HKEY_LOCAL_MACHINE = &H80000002

strComputer = "."
 
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _ 
    strComputer & "\root\default:StdRegProv")
 
strKeyPath = "SYSTEM\CurrentControlSet\Services"
oReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys
 
For Each subkey In arrSubKeys
    Wscript.Echo subkey
Next

Вообще — рекурсией.

Вы не пишите, какова Ваша глобальная цель.

3

Re: OFF: Проблема с работой с реестром из 1С

alexii пишет:

Если просто перечислить:
Вообще — рекурсией.

Вы не пишите, какова Ваша глобальная цель.

Моя цель проста. Перебрать некие ключи которые входят в ключ с именем базы 1С. Каждый ключ это пользователь базы. Он может быть, а может и не быть в реестре. Не быть если под ним не заходили в базу.

4

Re: OFF: Проблема с работой с реестром из 1С

Пример для перебора подразделов приведён в моём предыдущем сообщении.

5 (изменено: chessman, 2013-03-06 10:08:06)

Re: OFF: Проблема с работой с реестром из 1С

alexii пишет:

Пример для перебора подразделов приведён в моём предыдущем сообщении.

В 1С++ есть же механизмы работы с реестром.
Если хочешь перебирать именно через объект MSScriptControl.ScriptControl, то могу предложить код. В этом случае потребуется установить DynamicWrapperX.
А вообще, что предполагается с пользователями делать, поскольку можно напрямую их достать из 1С(Опять же потребуется DynamicWrapperX).

6

Re: OFF: Проблема с работой с реестром из 1С

alexii пишет:

Пример для перебора подразделов приведён в моём предыдущем сообщении.

Спасибо огромное Вам. Меня интересует ещё вот такой вопрос. Не знаю возможно ли.
Хотелось бы проверять наличие ветки с указанным путем в реестре. То есть родитель есть, а ребенка может не быть. Понятно что в 1С всегда есть
HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\Titles
А что нибудь вроде
Software\1C\1Cv7\7.7\Titles\Информационная база #7\Config\Recent File List
Не всегда

Есть ли способы проверить есть ли данная ветка в реестре
Опрос ветки которой нет возвращает ОписаниеОшибки, но поскольку это не единственная возможная причина ошибки, то хотелось бы по возможности проверить.

7

Re: OFF: Проблема с работой с реестром из 1С

chessman пишет:
alexii пишет:

Пример для перебора подразделов приведён в моём предыдущем сообщении.

В 1С++ есть же механизмы работы с реестром.
Если хочешь перебирать именно через объект MSScriptControl.ScriptControl, то могу предложить код. В этом случае потребуется установить DynamicWrapperX.
А вообще, что предполагается с пользователями делать, поскольку можно напрямую их достать из 1С(Опять же потребуется DynamicWrapperX).

Об 1С++ я знаю, но хочется штатными средствами системы. Секрета никакого большого в том что я делаю нет. Я пытаюсь работать с историей открытия файлов из 1С овской обработки без создания и привлечения дополнительных внешних компонент. MSScriptControl.ScriptControl устраивает
Единственное что осталось понять или придумать как проверить наличие ветки.

8

Re: OFF: Проблема с работой с реестром из 1С

lamer19, путь только один: перебирать подразделы, сравнивать построчно.

9 (изменено: lamer19, 2013-03-06 16:38:55)

Re: OFF: Проблема с работой с реестром из 1С

Не до конца как хотел (Вместо проверки ключа перебираю) но все работает. Спасибо.

10

Re: OFF: Проблема с работой с реестром из 1С

Выложил обработку. Не было такого и вот опять. Теперь навалилась напасть в лице пожеланий пользователей распробовавших обработку. Они хотят сохранения и восстановления параметров пользователей на случай переустановки Windows. Тут я вижу два пути. Экспортировать ветку средствами Windows. Формировать Reg файл средствами обработки. Как вариант восстанавливать настроки средствами обработки. Мне правда кажется лучше задействовать по максимуму Windows

11

Re: OFF: Проблема с работой с реестром из 1С

Разве там есть что-то особенно ценное?

12

Re: OFF: Проблема с работой с реестром из 1С

alexii пишет:

Разве там есть что-то особенно ценное?

История обработок, параметры печати. Бывают же млин такие истеричные пользователи

13

Re: OFF: Проблема с работой с реестром из 1С

Ясно.

OFF: В домене проще всего иметь перемещаемые профили.

14 (изменено: lamer19, 2013-03-11 09:05:33)

Re: OFF: Проблема с работой с реестром из 1С

alexii пишет:

Ясно.

OFF: В домене проще всего иметь перемещаемые профили.

Два вопроса у меня. Один по теме обработки которую я с помощью вашего форума написал, а один по администрированию.
По Обработке: Как скриптом каким-нибудь открыть папку проводника и спозиционироваться на файле. Такая же опцию у браузеров "Показать в папке"
По администрированию. У нас админ настроил так что при входе в терминал спрашивается что запускать, при чем несколько раз. Соответственно родилась идея написать маленькую прожку для админа/админов, но тут важный момент: можно ли и как в скрипте исполнить прогу и получить код возврата.
Ещё интересна возможность создавать ключи для сохранения настроек своей обработки.

15

Re: OFF: Проблема с работой с реестром из 1С

Как скриптом каким-нибудь открыть папку проводника и спозиционироваться на файле.

Так.

можно ли и как в скрипте исполнить прогу и получить код возврата.

ErrCode = CreateObject("Wscript.Shell").Run(…, …, True)

Ещё интересна возможность создавать ключи для сохранения настроек своей обработки.

Тот же реестр.

16 (изменено: lamer19, 2013-03-11 11:32:23)

Re: OFF: Проблема с работой с реестром из 1С

Не получается выбрать объект. Пишет в принципе по русски, что не является каталогом, но что делать далее не понятно. Имею путь к обработке. Пробовал так
explorer.exe /n"ПутьКПапке" /select"ИмяФайла"
и так
explorer.exe /select"Путь+ИмяФайла"
так
explorer.exe "ПутьКПапке" открывает но при попытки добавить /select Интерпретирует имя файл и ключ как продолжение имени папки
OS Windows XP
А насчет реестра тут так. Вы научили читать оттуда, но пока не научили писать туда

17

Re: OFF: Проблема с работой с реестром из 1С

explorer.exe /n,/select,c:\boot.ini

Кавычки не нужны.

18

Re: OFF: Проблема с работой с реестром из 1С

lamer19 пишет:

А насчет реестра тут так. Вы научили читать оттуда, но пока не научили писать туда

MSDN и, конечно, Рецепты WMI: работа с реестром Windows.

К сожалению, TechNet Script Center Sample Scripts приказал долго жить, недоступна и прямая ссылка.

19

Re: OFF: Проблема с работой с реестром из 1С

alexii пишет:
lamer19 пишет:

А насчет реестра тут так. Вы научили читать оттуда, но пока не научили писать туда

MSDN и, конечно, Рецепты WMI: работа с реестром Windows.

К сожалению, TechNet Script Center Sample Scripts приказал долго жить, недоступна и прямая ссылка.

Спасибо за наводки. Нашел вот такую ссыль на майкрософте
http://technet.microsoft.com/ru-RU/scriptcenter/default.aspx

20

Re: OFF: Проблема с работой с реестром из 1С

Да, онлайновый пока ещё доступен. И на том спасибо. Идёте оттуда в репозиторий: Powershell, VB Script, SQL и JavaScript - ИТ-специалисты TechNet и сотрудники группы Scripting Guys, выставляете фильтр по VBScript. Ну, а дальше поиском.

21 (изменено: lamer19, 2013-03-15 15:32:32)

Re: OFF: Проблема с работой с реестром из 1С

alexii пишет:
explorer.exe /n,/select,c:\boot.ini

Кавычки не нужны.

Спасибо большое! Все заработало как я хотел. У меня по сути остался сейчас один вопрос, но не совсем по скриптам. Есть ли какие то средства что бы выяснить методы неизвестного мне класса??? То есть класс я знаю конечно какой меня интересует, а методы его мне не известны. И ещё я так понимаю что в принципе из своей 1С я могу создать скрипт и в в нем описать методы некой dll как на VBA и её вызвать. И как создаваемые скрипты через компоненту можно отладить?

22

Re: OFF: Проблема с работой с реестром из 1С

Есть ли какие то средства что бы выяснить методы неизвестного мне класса??? То есть класс я знаю конечно какой меня интересует, а методы его мне не известны.

WSH: браузеры объектов автоматизации (OLE/COM/Automation) (Страница 1) — Windows Script Host, HTA (VBScript, JScript) — Серый форум

23

Re: OFF: Проблема с работой с реестром из 1С

А что делать если у меня есть приложение А которое обращается к интересующему меня классу Б и мне хочется отмониторить приложение А что бы понять какие параметры у класса Б?

24

Re: OFF: Проблема с работой с реестром из 1С

lamer19, на примере изложите.

25 (изменено: lamer19, 2013-03-29 13:33:50)

Re: OFF: Проблема с работой с реестром из 1С

Есть у 1С компонента V75.zlibEngine и меня интересует как 1С с ней работает каким методам какие аргументы 1С передает. Вот нашел пример на сишнике http://1c.alterplast.ru/1cv7md/zlibeng.html и теперь осталось разобраться и сделать на VBScript или самом языке 1С

26

Re: OFF: Проблема с работой с реестром из 1С

…и сделать на VBScript или самом языке 1С

Сомневаюсь, что такое возможно.

27

Re: OFF: Проблема с работой с реестром из 1С

Ну альтернатива переписывать на них же http://ru.wikipedia.org/wiki/Zlib