Утилита для открытия файлов в 1С (v7 и v8)

Опубликовал Алексей (ADirks) в раздел Администрирование - Сервисные утилиты

Утилита для открытия файлов в 1С
Выложено по мотивам http://www.infostart.ru/projects/1558. Сделано без .NET, исходники прилагаются. См. также http://openconf.1cpp.ru/ (сайт проекта OpenConf) и http://1c.alterplast.ru/files/ocs/ (ежедневная сборка репозитария скриптов для OpenConf).


Утилита OpenIn1C.exe служит для открытия файлов и форм некоторых внутренних объектов в 1С.
Принцип действия - имитация действий пользователя при открытии файла или обработки.
При старте утилита ищет все запущенные экземпляры 1С, и если их больше 1, то выдаётся список
для выбора нужного экземпляра. Если экземпляр 1С всего один, то объект откроется в нём без
вопросов. Если утилита запускается из конфигуратора, то в первую очередь анализируются
дочерние процессы (т.е. 1С в режиме предприятия, запущеная по F11).

Если нет ни одного запущенного экземпляра 1С, то утилита сканирует ветку реестра
[HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\Titles], и выводит список всех баз, которые существуют
на диске (проверяется наличие файла 1cv7.md в каталоге). После выбора базы запускается 1С
с указанной базой, и в этом экземпляре открывается объект. Для запуска 1С используются настройки,
хранящиеся в реестре [HKEY_CURRENT_USER\Software\OpenIn1C]. Значение "1CExecutable" - полный путь
к исполняемому файлу 1С (по умолчанию "C:\Program Files\1Cv77\Bin\1cv7.exe"),
"ExecParameters" - дополнительные параметры для запуска (по умолчанию "config")


Утилита может принимать 3 параметра командной строки. Параметры позиционные
1) имя объекта, который нужно открыть - обязательный аргумент
2) тип объекта:
-r - отчёт
-p - обработка
-s - справочник
-j - журнал
любое другое значение - внешний отчёт
*примечание* эта опция предназначена только для режима предприятия, в конфигураторе можно открывать только внешние файлы.
3) время паузы после открытия основного окна (если 1С только что запущена). В миллисекундах.


Примеры:

1) Открываем внешний отчёт
OpenIn1C.exe "c:\1C Bases\Инструменты\admin_service.ert"


2) Открываем встроенную обработку. В качестве имени объекта при этом передаётся представление объекта,
как оно отображается в меню "Операции/Обработка...".
OpenIn1C.exe "Обработка документов" -p


Для удобства использования утилиту можно ассоциировать с расширениями .ert и .mxl - тогда эти файлы можно
будет открывать прямо из проводника. Можно сделать это вручную, а можно воспользоваться скриптом
Register_OpenIn1C.vbs.


В среде OpenConf также существует скрипт для запуска отчётов/обработок прямо из конфигуратора.
Называется ОткрытьВПредприятии.vbs (см. http://openconf.1cpp.ru/ а также http://kuntashov.narod.ru/openconf-installer.html)


11.02.2008: Изменения от artbear - версия утилиты с возможностью открывать внешние файлы в 1С v8 (OpenIn1Cv8.exe).

14.04.2008: Более интеллектуальный поиск 1cv7(8).exe с использованием информации из реестра.

Скачать файлы

Наименование Файл Версия Размер
OpenIn1C.zip
.1199521091 37,76Kb
25.09.09
467
.1199521091 37,76Kb 467 Бесплатно

См. также

Добавить вознаграждение
Комментарии
1. Tarasenkov (tarasenkov) 06.01.08 02:20 Сейчас в теме
Спасибо за ссылки...особенно за ссылку на OpenConf PowerPack!

покопавшись на набрел на страничку с юмором:
OFF: Как вы относитесь к "лицензионному" и "пиратскому" ПО?
http://forum.script-coding.info/viewtopic.php?pid=1050#p1050
2. Алексей (ADirks) 177 08.01.08 08:32 Сейчас в теме
По просьбам трудящихся добавлена возможность запуска 1С, если ничего ещё не запущено.
3. Артур Аюханов (artbear) 847 10.01.08 19:35 Сейчас в теме
Полезнейшая штуковина, очень-очень всем рекомендую :)
ЗЫ юзаю ее с первых альфа-версий :)
ЗЗЫ еще бы для восьмерки ее доработать, никак времени не найду :)
4. Доржи Цыденов (support) 4386 10.01.08 20:38 Сейчас в теме
при запуске ругнулась на то, что не найдено C:\Program Files\1Cv77\Bin\1cv7.exe,
, когда исправил в реестре путь на C:\Program Files\1Cv77\Bin\1cv7s.exe,
выскочило заголовок окошка, было непонятно, что его надо растянуть вниз.
после выбора базы, ничего не произошло.
5. Алексей (ADirks) 177 11.01.08 07:40 Сейчас в теме
> ...выскочило заголовок окошка, было непонятно, что его надо растянуть вниз.
Вообще то размер окошка автоматически подстраивается как по ширине, так и по высоте. Но есть одна странность - при первом запуске в виндовозном сеансе список баз формируется довольно долго. У меня в реестре штук 40 баз, первый запуск 4-5 сек. До этого окошко остаётся в первоначальном состоянии.
На всякий случай всё же спрошу: какой виндовоз? и есть ли возможность собрать утилитку из исходников именно под этим виндовозом?

>после выбора базы, ничего не произошло.
Исправлено. Это на мышку такая реакция была, а я мышкой не пользуюсь :)
6. Артур Аюханов (artbear) 847 11.02.08 09:30 Сейчас в теме
(ADirks) Алексей, я доработал проект для возможности открытия внешних файлов в среде 1С версии 8 -Конфигураторе/Предприятии.
.
Положил в репозитарий как исходники, так и сам бинарный файл.
.
Алексей, прошу выложить сюда сам бинарник OpenIn1Cv8.exe как второй вариант + написать, что он для работы с v8
.
PS нужно же как-то и восьмерку к красотам приобщать :)
7. Артур Аюханов (artbear) 847 11.02.08 17:28 Сейчас в теме
Алексей, как-то обозначь через категорию факт работы с восьмеркой, тогда пользователей и плюсов больше будет :)
8. Алексей (ADirks) 177 12.02.08 07:22 Сейчас в теме
Категория - это ты имеешь в виду "Администрирование 1С (сервисные утилиты)"? Так ведь других подходящих в списке нету. А галку в разделе "для" я поставил.
9. Сергей Старых (tormozit) 4109 28.03.08 10:43 Сейчас в теме
Пробую на 8.1.
Не работает. При перетаскивании любой epf-ки на OpenIn1C или OpenIn1Cv8 ничего не происходит, кроме 100% загрузки проца этим процессом. Приходится его убивать.
10. Аркадий Кучер (Abadonna) 3653 13.04.08 13:56 Сейчас в теме
Потестил, есть глючок:
Файл "c:\Program Files\1Cv77\BIN\1cv7.exe" не найден!
А бывают еще экзюки с буковкой s - c:\Program Files\1Cv77\BIN\1cv7s.exe
При запущенных базах - все ОК
Да и вообще лучше проверить прогой, где лежит экзюк, он и не на С может быть
11. Аркадий Кучер (Abadonna) 3653 13.04.08 16:37 Сейчас в теме
+(10) Все таки сделай проверку инсталлированных прог [SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall], а то ж лениво реестр править, да и не всем там положено бывать ;)
12. Алексей (ADirks) 177 14.04.08 10:09 Сейчас в теме
(9) Извиняюсь за задержку с ответом. Замотался что-то... К сожалению, у меня нет 8.хх вообще, так что проверить не могу. Попробую Артуру сказать, может он разберётся. И ещё есть вариант - собрать из исходников отладочный вариант, и посмотреть чего там происходит.

(10, 11) Постараюсь. Неприятность однако в том, что ветка с exe-шником может по разному называться (у меня это "1С:Предприятие для SQL", но может ведь быть ещё как минимум 2 варианта. А для 8.хх я вообще не имею информации.)
P.S. блин, как тяжко на чистом WinAPI то программировать, после всяких фрэймворков :)
13. Артур Аюханов (artbear) 847 14.04.08 10:48 Сейчас в теме
(12) Леха, ты сам такой вариант вроде выбрал, я про чистое ВинАПИ :)
Кстати, а какие причины ты учитывал, когда выбирал этот вариант? Размер или еще что?
14. Артур Аюханов (artbear) 847 14.04.08 10:51 Сейчас в теме
(10) Желательно бы все-таки изучить доку :) и один раз выполнить необходимую настройку проги
Для запуска 1С используются настройки,
хранящиеся в реестре [HKEY_CURRENT_USER\Software\OpenIn1C]. Значение "1CExecutable" - полный путь
к исполняемому файлу 1С (по умолчанию "C:\Program Files\1Cv77\Bin\1cv7.exe"),
"ExecParameters" - дополнительные параметры для запуска (по умолчанию "config")
15. Алексей (ADirks) 177 14.04.08 10:53 Сейчас в теме
(13) Ну, понятно что сам.
Во первых - да, размер. Кто в наше время может похвастаться размером exe-шника в 17к?! А я могу :))
Во вторых, я ведь не планировал столько функционала туда запихивать! А вот поди-ж ты...
В третьих, полезно иногда спускаться на нижние этажи, а то и в подвалы, дабы не расслабляться (дыры в абстракциях там, и всё такое ;)).
16. Аркадий Кучер (Abadonna) 3653 14.04.08 12:13 Сейчас в теме
>P.S. блин, как тяжко на чистом WinAPI то программировать, после всяких фрэймворков :)
Чистый WinAPI - rules and cool :))))
17. Аркадий Кучер (Abadonna) 3653 14.04.08 12:14 Сейчас в теме
(14) Я потому и добавил (11), что после (10) увидал где путь прописан ;)
Но это не есть совсем гуд, т.к. узнать куда заинсталлирована 1С - никаких проблем! 3 минуты кодинга
18. Алексей (ADirks) 177 15.04.08 07:41 Сейчас в теме
(17) Ну, за три минуты кодинга можно сделать пргу, которая узнает где находится 1С [b]на моём компе[\b]. А нехило бы, чтобы она на всех работала.
Покопался вчера в реестре, и думаю вот что: надо анализаровать ветки с записями о COM-серверах, которые живут в 1cv7.exe. Уж эти то точно будут на своих местах.
Для семёрки анализирую v77.Application: SOFTWARE\\Classes\\CLSID\\{63112D80-94F0-11D2-9F39-008048DA120F}\\LocalServer32 в HKCU и HKLM. А чего для восьмёрки анализировать?
19. Алексей (ADirks) 177 15.04.08 07:51 Сейчас в теме
Блин, с тегами как-то всё неблагополучно... Слэш не тот, и GUID сожрало :)

v77.Application: SOFTWARE\\Classes\\CLSID\\63112D80-94F0-11D2-9F39-008048DA120F\\LocalServer32

GUID на самом деле в фигурных скобках
20. Аркадий Кучер (Abadonna) 3653 15.04.08 08:17 Сейчас в теме
(18,19) UKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion­\Uninstall
параметр DisplayIcon, там как раз полное имя лежит: C:\Program Files\1Cv77\BIN\1cv7s.exe (у меня)
21. Алексей (ADirks) 177 15.04.08 09:28 Сейчас в теме
(20) Ветку Uninstall использовать не совсем корректно. Потому что этой ветки может вообще не быть, если я тупо скопировал файлы, ничего не устанавливая. И пути там запросто могут быть кривыми, если инсталляцию перенесли в другой каталог. А вот COM-объекты будут по любому, после первого запуска 1С, и с правильными путями.
22. Артур Аюханов (artbear) 847 15.04.08 10:46 Сейчас в теме
CLSID
Для 8
[HKEY_CLASSES_ROOT\V8.Application\CLSID]
@="{FB17AD3E-5F20-453A-AE83-2711006155CF}"

Для 8.1
[HKEY_CLASSES_ROOT\V81.Application\CLSID]
@="{b3a7d9db-3cba-47f4-b80a-5dda79d8925a}"
23. Артур Аюханов (artbear) 847 15.04.08 10:47 Сейчас в теме
CLSID
Для 8
[HKEY_CLASSES_ROOT\V8.Application\CLSID]
@="FB17AD3E-5F20-453A-AE83-2711006155CF"

Для 8.1
[HKEY_CLASSES_ROOT\V81.Application\CLSID]
@="b3a7d9db-3cba-47f4-b80a-5dda79d8925a"

Гуид в фигурных скобках !
24. Артур Аюханов (artbear) 847 16.04.08 13:40 Сейчас в теме
Новости на 14.04.2008: Более интеллектуальный поиск 1cv7(8).exe с использованием информации из реестра.
.
ЗЫ Лех, "интеллетуальный" поправь :)
25. Сергей Старых (tormozit) 4109 26.04.08 13:30 Сейчас в теме
Не открывает сама конфигуратор, если он не запущен.
8.1.10.50.
26. Артур Аюханов (artbear) 847 28.04.08 09:18 Сейчас в теме
(25) Для восьмерочного варианта это штатное поведение, другого не делал :(
27. Сергей Старых (tormozit) 4109 08.05.08 07:17 Сейчас в теме
В терминале (Windows 2003 Server) очень долго происходит поиск процесса (запущено много процессов 1с8 от разных пользователей) - до минуты. И хотя если даже находится только один процесс, то автоматически он не выбирается и появляется окно для выбора из одной строки.
28. Сергей Старых (tormozit) 4109 26.05.08 10:17 Сейчас в теме
Прошу дать мне исходники утилиты для 8-ки. Очень надо исправить тормоза в работе под терминалом.
29. Алексей (ADirks) 177 26.05.08 10:39 Сейчас в теме
Все исходники - в архиве. Для восьмёрки надо просто собирать конфигурацию "OpenIn1Cv8". Либо где-нибудь задефайнить _VERSION_FOR_1CV8
30. Сергей Старых (tormozit) 4109 26.05.08 11:01 Сейчас в теме
Какие средства разработки мне потребуется установить?
31. Алексей (ADirks) 177 26.05.08 11:36 Сейчас в теме
Проект сделан на MS Visual C++ 6.0. Но собирается и GNU C++, там даже makefile лежит :). Думаю, что он соберётся любым компилятором, который имеет библиотеки для доступа к WIN API, только проект придётся заново сделать.
В общем, если совсем уж ничего под руками нет, то проще всего будет найти любую MS Visual Studio.
32. Сергей Старых (tormozit) 4109 26.05.08 18:34 Сейчас в теме
Закомментировал вызов WaitForOpen1C. Теперь вместо 2-х минут открывается 1 сек. То, что мне это не нужно я уже понял, но все равно интересно, зачем нужен такой хитрый цикл ожидания?
33. Алексей (ADirks) 177 27.05.08 07:35 Сейчас в теме
Это когда из конфигуратора по хоткею открываешь чего-то, а 1С ещё не запущена. Процесс-то быстро появляется, а главное окно не очень - и получается облом. Правда, и с таким хитрым циклом тоже иногда облом получается, но всё-таки реже :)
34. Bosma Иванов (Bosma) 68 10.11.11 10:15 Сейчас в теме
А можно ли каким либо образом прикрутить эту штуку к одной базе? То есть мне не надо чтобы внешний отчет запускался в каком то имеющемся экземпляре 1С. А именно в нужной базе. Если она запущена, то внешний отчет запускается в ней, если нет, то сначала нужная база открывается.
35. Андрей Никитин (courageous) 30 27.03.12 15:19 Сейчас в теме
Други, подскажите, а нельзя ли еще и Параметры передать в запускаемую обработку? вообще цены бы не было...
36. Алексей Литвинов (semyfelx) 26.05.12 07:16 Сейчас в теме
А эта программа вообще не запускается на тех компах где нет установленных 1С-ок???
Просто я правлю нужные файлы у себя на компе и потом несу к бухам. И по описанию программка как-раз для меня.
Может подскажите как запустить ее без предустановленной 1с ?
37. Артур Аюханов (artbear) 847 29.10.15 12:57 Сейчас в теме
(0) Алексей, новые доработки есть?
И напомни, пожалуйста, адрес репозитария утилиты.

Хочу из cvs в гит все переложить

(32) Сергей, пришли мне свои исходники, если они еще остались :)
38. Сергей Старых (tormozit) 4109 29.10.15 16:33 Сейчас в теме
39. Алексей (ADirks) 177 30.10.15 07:29 Сейчас в теме
(37) всё что было переложил на http://sourceforge.net/projects/openconf-scripts/
в самой открывалке вроде ничего не делал, немного правок в скриптах было.

забирать так:
svn co svn://anonymous@svn.code.sf.net/p/openconf-scripts/code
40. Артур Аюханов (artbear) 847 30.10.15 11:58 Сейчас в теме
(39) ADirks, не удается сделать импорт в tortoisesvn
Import T:\Projects\svn\openconf-scripts to svn://anonymous@svn.code.sf.net/p/openconf-scripts/code, Ignored items included
Authorization failed
41. Артур Аюханов (artbear) 847 30.10.15 11:59 Сейчас в теме
(40) artbear, упс, все удалось, как обычно, нужно было делать простой checkout
42. Артур Коржан (1v7) 197 06.01.17 23:05 Сейчас в теме
Так долго искал Вашу разработку!!! Пол инфостарта скачал пока нашёл! Супер!