gifts2017

Создать ярлык для базы 1С - просто!... Но не тривиально.

Опубликовал Влад Косилов (kosilov) в раздел Программирование - Практика программирования

Спросил меня пользователь: "можно сделать ярлык на рабочий стол, чтобы не выбирать каждый раз базу, имя пользователя и пароль?". "Конечно можно"- ответил я.
Пользователь в другом городе. Начал я ему рассказывать, как  надо задать строку параметров, спрашивая, где лежит у него база  и т.д. Пользователь не чайник, но создать ярлык и задать корректно параметры ему так и не удалось.
"Нет проблем"- сказал я. Добавлю прямо в конфигурацию опцию "Создать ярлык".
Но тут оказалось, что из командной строки создать ярлык нельзя!?
Пришлось погуглить и вот что получилось.


Чтобы создать ярлык, надо сначала написать скрипт на VBS (один из вариантов и скорее всего самый простой), а потом запустить этот скрипт и он создаст ярлык. :)
В общем, простая на вид задача отняла у меня часа 4. Чтобы вы не повторяли мою потерю времени воспользуйтесь нижесдедующим кодом.
Пример работы в обработке.

 

 

Скрипт = "set WshShell = WScript.CreateObject(""WScript.Shell"" )
|strDesktop = WshShell.SpecialFolders(""AllUsersDesktop"" )
|set oShellLink = WshShell.CreateShortcut(strDesktop & ""\{[ShName]}.lnk"" )
|oShellLink.TargetPath = ""{[TargetPath]}""
|oShellLink.WindowStyle = 1
|oShellLink.IconLocation = ""{[IconPath]}""
|oShellLink.Arguments = ""{[Args]}""
|oShellLink.Description = ""{[Description]}""
|oShellLink.WorkingDirectory = ""{[WorkingDirectory]}""
|oShellLink.Save";
User = ?(ЗначениеЗаполнено(Пользователь), " /N""""" + Пользователь + """"" /P"""""+ Пароль + """""", "");
СтрокаСоединения = СтрЗаменить(СтрокаСоединенияИнформационнойБазы(),"File=","/F");
СтрокаСоединения = СтрЗаменить(СтрокаСоединения,";"," ");
СтрокаСоединения = СтрЗаменить(СтрокаСоединения,"""","""""");
Скрипт = СтрЗаменить(Скрипт,"{[TargetPath]}",КаталогПрограммы()+"1cv8.exe");
Скрипт = СтрЗаменить(Скрипт,"{[Args]}", "ENTERPRISE " + СтрокаСоединения + User);
Скрипт = СтрЗаменить(Скрипт,"{[IconPath]}",ЭлементыФормы.ПутьКИконке.Значение );
Скрипт = СтрЗаменить(Скрипт,"{[WorkingDirectory]}",КаталогПрограммы());
Скрипт = СтрЗаменить(Скрипт,"{[ShName]}",ИмяЯрлыка);
Скрипт = СтрЗаменить(Скрипт,"{[Description]}",ОписаниеЯрлыка);
Файл = новый ЗаписьТекста(КаталогВременныхФайлов()+"CreateShC.vbs", КодировкаТекста.ANSI);
Файл.ЗаписатьСтроку(Скрипт);
Файл.Закрыть();
КомандаСистемы("CreateShC.vbs", КаталогВременныхФайлов());
УдалитьФайлы(КаталогВременныхФайлов()+"CreateShC.vbs");


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

Наименование Файл Версия Размер Кол. Скачив.
СоздаемЯрлык.epf
.epf 7,78Kb
20.05.10
255
.epf 7,78Kb 255 Скачать

См. также

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

Комментарии

1. Артем Гусаров (Flashback1979SE) 20.05.10 03:03
Есть обработка "Конструктор командной строки". Она и ярлык создает и vbs скрипты, в том числе и зашифрованные. Вот ссылка http://infostart.ru/public/15782/
kosilov; gutentag; +2 Ответить 1
2. Алексей Константинов (alexk-is) 20.05.10 09:45
(0) Ярлык для пользователя с паролем пользователя лучше делать на рабочий стол пользователя, а не на общий. Сам ярлык можно создать так.
WScript = Новый COMОбъект("WScript.Shell");
ИмяФайлаСсылки = WScript.SpecialFolders.item("Desktop") + "\1cv8.exe.lnk";
ИмяИсполняемогоФайла = КаталогПрограммы() + "1cv8.exe";
ФайлСсылки = WScript.CreateShortcut(ИмяФайлаСсылки);
ФайлСсылки.IconLocation = ИмяИсполняемогоФайла ;
ФайлСсылки.TargetPath = ИмяИсполняемогоФайла ;
ФайлСсылки.Arguments = "ENTERPRISE " + СтрокаСоединения;
ФайлСсылки.Save();
...Показать Скрыть
Но будет виден пароль пользователя. Как спрятать пароль можно подглядеть тут http://www.infostart.ru/public/19363/
3. Влад Косилов (kosilov) 20.05.10 10:45
(2) Да так лучше, так как не будет выскакивать окно коммандной строки при создании ярлыка. К сожалению, я не нашел этого кода когда мне надо было.
4. Алексей Константинов (alexk-is) 20.05.10 11:17
5. Влад Косилов (kosilov) 20.05.10 11:29
(1) Да, я видел эту обработку, но меня смутило, что она платная. Я скачал главный файл, а там только параметры. Только сейчас заметил, что сама обработка выложена дополнительным файлом уже бесплатно.
6. Алексей Константинов (alexk-is) 20.05.10 14:46
Во вложении вариант попроще, но с поддержкой SQL :)
Прикрепленные файлы:
СозданиеНаРабочийСтолЯрлычкаЗапускаИБ.epf
orehova123; nosoftyes; +2 Ответить 2
7. Александр (D9ID9I_SaIIIa) 20.05.10 16:09
:D работает!
раньше не требовалось,но сейчас буду использовать.спасибо
8. Александр (dobraleks) 20.05.10 17:28
(0) что-то я не понял как для 77 сделать ярлык, пожна по подробнее.
9. Александр (D9ID9I_SaIIIa) 21.05.10 11:31
10. Forward Fader (Performer) 21.05.10 16:52
А скрипты только на VBS можно писать? Или 1С: 8.1 поддерживает другие языки программирования? Совместима с Deiphi, C#?
11. Аркадий Кучер (Abadonna) 21.05.10 17:52
А скрипты только на VBS можно писать

А как ты себе скрипт на Дельфи представляешь? ;) Если это не скриптовый язык
12. Валерий (aka AMIGO) 22.05.10 08:34
скачал, запускаю в 8.1, чтобы поучиться уму-разуму - "Ошибка доступа к файлу".
так и задумано?
13. Алексей Константинов (alexk-is) 22.05.10 09:08
(12) Посмотри пост (6). Там всё работает, а в свете http://www.infostart.ru/public/70593/ , то такой вариант (без хранения пароля) будет правильнее.
14. Влад Косилов (kosilov) 22.05.10 23:16
(12) Можно поподробнее? Протрейсь и посмотри кто и когда ругается.
Я код выкусил из своей конфы и добавил только обвеску. Изначальный код работал на XP и Vista в 8.1
Обработка проверялась на XP. Если запускал не под админ правами, то надо изучать что, да как.
Если не идет так, попробуй с помощью ком объекта, как предложил кажется alexk-is ниже в комментах.
15. Влад Косилов (kosilov) 22.05.10 23:19
(6) Дык, уже б доделал, чтобы с паролем и картинкой. :)
16. Влад Косилов (kosilov) 22.05.10 23:21
А что касается безопасности, то не всегда есть что скрывать и от кого.
Если в базе государственные тайны, то будь бодр набери пароль и имя пользователя.
А еще сетчатка глаза и отпечатки левой ступни ноги. :)
17. Алексей Константинов (alexk-is) 24.05.10 06:37
(15) Это ведь не моя тема. Я сделал так, как мне нужно. У меня SQL.
Да, и картинка там есть - типовая.

Если есть желание доделать, то не вижу проблем добавить ещё одно поле ввода и собрать строку параметров.
18. Валерий (aka AMIGO) 24.05.10 14:00
(13) спасибо!

(14) да при открытии в конфигураторе 8.1 (УПП) :(
ладно, дружище, не парься.. есть более насущные дела, чем заниматься моими проблемами :)
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа