gifts2017

Утилита для открытия файлов в 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
455
.1199521091 37,76Kb 455 Бесплатно

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Tarasenkov (tarasenkov) 06.01.08 02:20
Спасибо за ссылки...особенно за ссылку на OpenConf PowerPack!

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

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

(10, 11) Постараюсь. Неприятность однако в том, что ветка с exe-шником может по разному называться (у меня это "1С:Предприятие для SQL", но может ведь быть ещё как минимум 2 варианта. А для 8.хх я вообще не имею информации.)
P.S. блин, как тяжко на чистом WinAPI то программировать, после всяких фрэймворков :)
13. Артур Аюханов (artbear) 14.04.08 10:48
(12) Леха, ты сам такой вариант вроде выбрал, я про чистое ВинАПИ :)
Кстати, а какие причины ты учитывал, когда выбирал этот вариант? Размер или еще что?
14. Артур Аюханов (artbear) 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) 14.04.08 10:53
(13) Ну, понятно что сам.
Во первых - да, размер. Кто в наше время может похвастаться размером exe-шника в 17к?! А я могу :))
Во вторых, я ведь не планировал столько функционала туда запихивать! А вот поди-ж ты...
В третьих, полезно иногда спускаться на нижние этажи, а то и в подвалы, дабы не расслабляться (дыры в абстракциях там, и всё такое ;)).
16. Аркадий Кучер (Abadonna) 14.04.08 12:13
>P.S. блин, как тяжко на чистом WinAPI то программировать, после всяких фрэймворков :)
Чистый WinAPI - rules and cool :))))
17. Аркадий Кучер (Abadonna) 14.04.08 12:14
(14) Я потому и добавил (11), что после (10) увидал где путь прописан ;)
Но это не есть совсем гуд, т.к. узнать куда заинсталлирована 1С - никаких проблем! 3 минуты кодинга
18. Алексей (ADirks) 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) 15.04.08 07:51
Блин, с тегами как-то всё неблагополучно... Слэш не тот, и GUID сожрало :)

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

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

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

(32) Сергей, пришли мне свои исходники, если они еще остались :)
38. Сергей Старых (tormozit) 29.10.15 16:33
39. Алексей (ADirks) 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) 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) 30.10.15 11:59
(40) artbear, упс, все удалось, как обычно, нужно было делать простой checkout
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа