Утилита OpenIn1C.exe служит для открытия файлов и форм некоторых внутренних объектов в 1С.
Принцип действия — имитация действий пользователя при открытии файла или обработки.
При старте утилита ищет все запущенные экземпляры 1С, и если их больше 1, то выдаётся список
для выбора нужного экземпляра. Если экземпляр 1С всего один, то объект откроется в нём без
вопросов. Если утилита запускается из конфигуратора, то в первую очередь анализируются
дочерние процессы (т.е. 1С в режиме предприятия, запущеная по F11).
Если нет ни одного запущенного экземпляра 1С, то утилита сканирует ветку реестра
[HKEY_CURRENT_USERSoftware1C1Cv77.7Titles], и выводит список всех баз, которые существуют
на диске (проверяется наличие файла 1cv7.md в каталоге). После выбора базы запускается 1С
с указанной базой, и в этом экземпляре открывается объект. Для запуска 1С используются настройки,
хранящиеся в реестре [HKEY_CURRENT_USERSoftwareOpenIn1C]. Значение «1CExecutable» — полный путь
к исполняемому файлу 1С (по умолчанию «C:Program Files1Cv77Bin1cv7.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 с использованием информации из реестра.
Спасибо за ссылки…особенно за ссылку на OpenConf PowerPack!
покопавшись на набрел на страничку с юмором:
http://forum.script-coding.info/viewtopic.php?pid=1050#p1050
OFF: Как вы относитесь к «лицензионному» и «пиратскому» ПО?
По просьбам трудящихся добавлена возможность запуска 1С, если ничего ещё не запущено.
Полезнейшая штуковина, очень-очень всем рекомендую 🙂
ЗЫ юзаю ее с первых альфа-версий 🙂
ЗЗЫ еще бы для восьмерки ее доработать, никак времени не найду 🙂
при запуске ругнулась на то, что не найдено C:Program Files1Cv77Bin1cv7.exe,
, когда исправил в реестре путь на C:Program Files1Cv77Bin1cv7s.exe,
выскочило заголовок окошка, было непонятно, что его надо растянуть вниз.
после выбора базы, ничего не произошло.
> …выскочило заголовок окошка, было непонятно, что его надо растянуть вниз.
Вообще то размер окошка автоматически подстраивается как по ширине, так и по высоте. Но есть одна странность — при первом запуске в виндовозном сеансе список баз формируется довольно долго. У меня в реестре штук 40 баз, первый запуск 4-5 сек. До этого окошко остаётся в первоначальном состоянии.
На всякий случай всё же спрошу: какой виндовоз? и есть ли возможность собрать утилитку из исходников именно под этим виндовозом?
>после выбора базы, ничего не произошло.
Исправлено. Это на мышку такая реакция была, а я мышкой не пользуюсь 🙂
(ADirks) Алексей, я доработал проект для возможности открытия внешних файлов в среде 1С версии 8 -Конфигураторе/Предприятии.
.
Положил в репозитарий как исходники, так и сам бинарный файл.
.
Алексей, прошу выложить сюда сам бинарник OpenIn1Cv8.exe как второй вариант + написать, что он для работы с v8
.
PS нужно же как-то и восьмерку к красотам приобщать 🙂
Алексей, как-то обозначь через категорию факт работы с восьмеркой, тогда пользователей и плюсов больше будет 🙂
Категория — это ты имеешь в виду «Администрирование 1С (сервисные утилиты)»? Так ведь других подходящих в списке нету. А галку в разделе «для» я поставил.
Пробую на 8.1.
Не работает. При перетаскивании любой epf-ки на OpenIn1C или OpenIn1Cv8 ничего не происходит, кроме 100% загрузки проца этим процессом. Приходится его убивать.
Потестил, есть глючок:
Файл «c:Program Files1Cv77BIN1cv7.exe» не найден!
А бывают еще экзюки с буковкой s — c:Program Files1Cv77BIN1cv7s.exe
При запущенных базах — все ОК
Да и вообще лучше проверить прогой, где лежит экзюк, он и не на С может быть
+(10) Все таки сделай проверку инсталлированных прог [SOFTWAREMicrosoftWindowsCurrentVersionUninstall], а то ж лениво реестр править, да и не всем там положено бывать 😉
(9) Извиняюсь за задержку с ответом. Замотался что-то… К сожалению, у меня нет 8.хх вообще, так что проверить не могу. Попробую Артуру сказать, может он разберётся. И ещё есть вариант — собрать из исходников отладочный вариант, и посмотреть чего там происходит.
(10, 11) Постараюсь. Неприятность однако в том, что ветка с exe-шником может по разному называться (у меня это «1С:Предприятие для SQL», но может ведь быть ещё как минимум 2 варианта. А для 8.хх я вообще не имею информации.)
P.S. блин, как тяжко на чистом WinAPI то программировать, после всяких фрэймворков 🙂
(12) Леха, ты сам такой вариант вроде выбрал, я про чистое ВинАПИ 🙂
Кстати, а какие причины ты учитывал, когда выбирал этот вариант? Размер или еще что?
(10) Желательно бы все-таки изучить доку 🙂 и один раз выполнить необходимую настройку проги
Для запуска 1С используются настройки,
хранящиеся в реестре [HKEY_CURRENT_USERSoftwareOpenIn1C]. Значение «1CExecutable» — полный путь
к исполняемому файлу 1С (по умолчанию «C:Program Files1Cv77Bin1cv7.exe»),
«ExecParameters» — дополнительные параметры для запуска (по умолчанию «config»)
(13) Ну, понятно что сам.
Во первых — да, размер. Кто в наше время может похвастаться размером exe-шника в 17к?! А я могу :))
Во вторых, я ведь не планировал столько функционала туда запихивать! А вот поди-ж ты…
В третьих, полезно иногда спускаться на нижние этажи, а то и в подвалы, дабы не расслабляться (дыры в абстракциях там, и всё такое ;)).
>P.S. блин, как тяжко на чистом WinAPI то программировать, после всяких фрэймворков 🙂
Чистый WinAPI — rules and cool :))))
(14) Я потому и добавил (11), что после (10) увидал где путь прописан 😉
Но это не есть совсем гуд, т.к. узнать куда заинсталлирована 1С — никаких проблем! 3 минуты кодинга
(17) Ну, за три минуты кодинга можно сделать пргу, которая узнает где находится 1С [b]на моём компе[]. А нехило бы, чтобы она на всех работала.
Покопался вчера в реестре, и думаю вот что: надо анализаровать ветки с записями о COM-серверах, которые живут в 1cv7.exe. Уж эти то точно будут на своих местах.
Для семёрки анализирую v77.Application: SOFTWARE\Classes\CLSID\{63112D80-94F0-11D2-9F39-008048DA120F}\LocalServer32 в HKCU и HKLM. А чего для восьмёрки анализировать?
Блин, с тегами как-то всё неблагополучно… Слэш не тот, и GUID сожрало 🙂
v77.Application: SOFTWARE\Classes\CLSID\63112D80-94F0-11D2-9F39-008048DA120F\LocalServer32
GUID на самом деле в фигурных скобках
(18,19) UKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersion Uninstall
параметр DisplayIcon, там как раз полное имя лежит: C:Program Files1Cv77BIN1cv7s.exe (у меня)
(20) Ветку Uninstall использовать не совсем корректно. Потому что этой ветки может вообще не быть, если я тупо скопировал файлы, ничего не устанавливая. И пути там запросто могут быть кривыми, если инсталляцию перенесли в другой каталог. А вот COM-объекты будут по любому, после первого запуска 1С, и с правильными путями.
CLSID
Для 8
[HKEY_CLASSES_ROOTV8.ApplicationCLSID]
@=»{FB17AD3E-5F20-453A-AE83-2711006155CF}»
Для 8.1
[HKEY_CLASSES_ROOTV81.ApplicationCLSID]
@=»{b3a7d9db-3cba-47f4-b80a-5dda79d8925a}»
CLSID
Для 8
[HKEY_CLASSES_ROOTV8.ApplicationCLSID]
@=»FB17AD3E-5F20-453A-AE83-2711006155CF»
Для 8.1
[HKEY_CLASSES_ROOTV81.ApplicationCLSID]
@=»b3a7d9db-3cba-47f4-b80a-5dda79d8925a»
Гуид в фигурных скобках !
Новости на 14.04.2008: Более интеллектуальный поиск 1cv7(8).exe с использованием информации из реестра.
.
ЗЫ Лех, «интеллетуальный» поправь 🙂
Не открывает сама конфигуратор, если он не запущен.
8.1.10.50.
(25) Для восьмерочного варианта это штатное поведение, другого не делал 🙁
В терминале (Windows 2003 Server) очень долго происходит поиск процесса (запущено много процессов 1с8 от разных пользователей) — до минуты. И хотя если даже находится только один процесс, то автоматически он не выбирается и появляется окно для выбора из одной строки.
Прошу дать мне исходники утилиты для 8-ки. Очень надо исправить тормоза в работе под терминалом.
Все исходники — в архиве. Для восьмёрки надо просто собирать конфигурацию «OpenIn1Cv8». Либо где-нибудь задефайнить _VERSION_FOR_1CV8
Какие средства разработки мне потребуется установить?
Проект сделан на MS Visual C++ 6.0. Но собирается и GNU C++, там даже makefile лежит :). Думаю, что он соберётся любым компилятором, который имеет библиотеки для доступа к WIN API, только проект придётся заново сделать.
В общем, если совсем уж ничего под руками нет, то проще всего будет найти любую MS Visual Studio.
Закомментировал вызов WaitForOpen1C. Теперь вместо 2-х минут открывается 1 сек. То, что мне это не нужно я уже понял, но все равно интересно, зачем нужен такой хитрый цикл ожидания?
Это когда из конфигуратора по хоткею открываешь чего-то, а 1С ещё не запущена. Процесс-то быстро появляется, а главное окно не очень — и получается облом. Правда, и с таким хитрым циклом тоже иногда облом получается, но всё-таки реже 🙂
А можно ли каким либо образом прикрутить эту штуку к одной базе? То есть мне не надо чтобы внешний отчет запускался в каком то имеющемся экземпляре 1С. А именно в нужной базе. Если она запущена, то внешний отчет запускается в ней, если нет, то сначала нужная база открывается.
Други, подскажите, а нельзя ли еще и Параметры передать в запускаемую обработку? вообще цены бы не было…
А эта программа вообще не запускается на тех компах где нет установленных 1С-ок???
Просто я правлю нужные файлы у себя на компе и потом несу к бухам. И по описанию программка как-раз для меня.
Может подскажите как запустить ее без предустановленной 1с ?
(0) Алексей, новые доработки есть?
И напомни, пожалуйста, адрес репозитария утилиты.
Хочу из cvs в гит все переложить
(32) Сергей, пришли мне свои исходники, если они еще остались 🙂
(37) Прислал в личку
(37) всё что было переложил наhttp://sourceforge.net/projects/openconf-scripts/
в самой открывалке вроде ничего не делал, немного правок в скриптах было.
забирать так:
svn co svn://anonymous@svn.code.sf.net/p/openconf-scripts/code
(39) не удается сделать импорт в tortoisesvn
Authorization failed
(40) artbear, упс, все удалось, как обычно, нужно было делать простой checkout
Так долго искал Вашу разработку!!! Пол инфостарта скачал пока нашёл! Супер!