1

Тема: 1Cv7.7: открытие MD-файла двойным щелчком из Проводника

По мотивам статьи Настройка контекстного меню Проводника.

Когда баз 1С v7.7 становится много, надоедает регистрировать их в диалоге "Запуск 1С Предприятия". В такой ситуации удобнее пользоваться любимым файловым менеджером, запуская 1С просто щелчком по файлу конфигурации .MD.

Для этого удобно зарегистрировать четыре команды контекстного меню Проводника Windows для MD-файлов: "Конфигуратор", "Монитор", "Предприятие" и "Предприятие монопольно", чтобы при этом команда "Конфигуратор" была командой по умолчанию, т.е. использовалась при двойном щелчке по файлу.

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.MD]
@="mdfile"

[HKEY_CLASSES_ROOT\mdfile]

[HKEY_CLASSES_ROOT\mdfile\shell]

[HKEY_CLASSES_ROOT\mdfile\shell\open]
@="Конфигуратор"

[HKEY_CLASSES_ROOT\mdfile\shell\open\command]
@="\"C:\\Program Files\\1Cv77\\BIN\\1cv7s.exe\" config /D\"%1\\..\""

[HKEY_CLASSES_ROOT\mdfile\shell\open2]
@="Монитор"

[HKEY_CLASSES_ROOT\mdfile\shell\open2\command]
@="\"C:\\Program Files\\1Cv77\\BIN\\1cv7s.exe\" monitor /D\"%1\\..\""

[HKEY_CLASSES_ROOT\mdfile\shell\open3]
@="Предприятие"

[HKEY_CLASSES_ROOT\mdfile\shell\open3\command]
@="\"C:\\Program Files\\1Cv77\\BIN\\1cv7s.exe\" enterprise /D\"%1\\..\""

[HKEY_CLASSES_ROOT\mdfile\shell\open4]
@="Предприятие монопольно"

[HKEY_CLASSES_ROOT\mdfile\shell\open4\command]
@="\"C:\\Program Files\\1Cv77\\BIN\\1cv7s.exe\" enterprise /m /D\"%1\\..\""

Использование: скопируйте вышеприведённый код в текстовый файл с расширением .reg и запустите этот файл двойным щелчком. После этого у вас должны появиться упомянутые команды в контекстном меню Проводника.

Примечание: если у вас 1С установлена не в C:\Program Files\1Cv77\ и/или исполняемый файл называется не 1cv7s.exe, исправьте код соответствующим образом перед запуском reg-файла.

Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

2

Re: 1Cv7.7: открытие MD-файла двойным щелчком из Проводника

Другой вариант решения проблемы (идею опубликовал tvm). Добавляем в контекстное меню Проводника для папок команду "Зарегистрировать базу 1С:Предприятия 7.7". Текст скрипта "register_base.vbs", регистрирующего базу:

Dim objArgs
Dim fso, result
Const HKEY_CURRENT_USER = &H80000001
' получим имя папки
Set objArgs = WScript.Arguments
' проверим есть ли в ней md
filespec = objArgs(0) & "\1cv7.md"
Set fso = CreateObject("Scripting.FileSystemObject")
If (fso.FileExists(filespec)) Then
    result = 1
Else
    result = 0
End If
'если есть md то получим пути всех баз и проверим не зарегена ли уже
If result = 1 Then
Set oRegProv = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
    strKeyPath = "Software\1C\1Cv7\7.7\Titles"
    iRes = oRegProv.EnumValues(HKEY_CURRENT_USER, strKeyPath, arrValues)
    strpath = join(arrValues,";")
    if instr(1,strPath,objArgs(0))<=0 Then ' если нет в списке то добавим
        name = InputBox("Укажите имя базы")
        'MsgBox name
        oRegProv.SetStringValue HKEY_CURRENT_USER,strKeyPath,objArgs(0)&"\",name
    Else 'если есть то спросим что делать
        If MsgBox("Эта база уже зарегистрирована." & VbCrLf & "Удалить из списка?",vbOKCancel)=1 Then
            oRegProv.DeleteValue HKEY_CURRENT_USER,strKeyPath,objArgs(0)&"\"
        End If
    end If
End If

Текст reg-файла, провешивающего команду контекстного меню:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\Register1CBase]
@="зарегить базу"

[HKEY_CLASSES_ROOT\Directory\shell\Register1CBase\command]
@="wscript.exe /nologo \"D:\\wsh\\register_base.vbs\" \"%1\""

Скрипт при запуске проверяет, есть ли в указанной папке md-файл. Если есть, то получает список зарегистрированных баз и смотрит, не прописана ли уже эта папка. Если не прописана, то добавляет, а если прописана, то предагает удалить.

Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.