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


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


Чтобы создать ярлык, надо сначала написать скрипт на 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");


Файлы обработки:

-