Ярлык на chdbfl на каждый рабочий стол в сети РИБ
В сети РИБ из 40 баз нужно было на каждом компьютере сделать ярлык для тестирования файловой БД с помощью chdbfl. Как я это сделал автоматически.
- Описание
- Подробнее
Описание
У меня был клиент с 40 файловыми базами-узлами РИБ. Раз в 2 дня требовалось запускать chdbfl.
Когда мне надоело по телефону рассказывать сотрудникам, как запускать эту программу (где ее найти, как выбрать каталог базы, поставить галочку исправлять), я решил создать каждому пользователю ярлык на эту программу.
Известно, что программ chdbfl не управляется через командную строку, но добрый программист coder1cv8 написал утилиту, которая позволяет запустить chdbfl автоматически, параметры передаются в командной строке.
Осталось только создать ярлык к этой программе Check1CD.exe.
Чтобы не мучаться с каждой базой отдельно – подключаться, настраивать ярлык и т.п., я написал скрипт на языке 1С. В этой системе уже существовала система удаленного запуска скриптов по расписанию, скрипт запускался раз в день и создавал ярлык.
В результате получался ярлык вида:

При запуске выглядит так:

Вот текст скрипта:
//Источник вдохновения: http://www.askit.ru/custom/progr_admin/m10/10_shortcuts.htm
ИмяИсполнимогоФайла = «Check1CD.exe»; //Имя стартера программы chdbfl
ИмяИсполнимогоФайла = «chdbfl.exe»; //Можно использовать другое имя файла, если есть ограничения на запуск
//Получаем каталог базы
СтрокаСоединения = СтрокаСоединенияИнформационнойБазы();//File=»C:\1cv8\Base».
СтрокаСоединения = СтрЗаменить(СтрокаСоединения, «File=», «»);
СтрокаСоединения = СтрЗаменить(СтрокаСоединения, «;», «»);
СтрокаСоединения = СокрЛП(СтрокаСоединения);
Если Лев(СтрокаСоединения, 1) = «»»» Тогда
СтрокаСоединения = Сред(СтрокаСоединения, 2);
КонецЕсли;
Если Прав(СтрокаСоединения, 1) = «»»» Тогда
СтрокаСоединения = Сред(СтрокаСоединения, 1, СтрДлина(СтрокаСоединения) — 1);
КонецЕсли;
//Получаем короткий путь
СтрокаСоединения = СокрЛП(СтрокаСоединения);
Сообщить(СтрокаСоединения);
fso = Новый ComObject («scripting.filesystemobject»);
ОбъектФайл = fso.GetFolder(СтрокаСоединения);
СтрокаСоединения = ОбъектФайл.ShortPath;
Сообщить(СтрокаСоединения);
oShell = Новый ComObject («WScript.Shell»);
ПапкаМоиДокументы = oShell.RegRead(«HKCU\software\microsoft\windows\currentversion\explorer\shell folders\personal»);
ПапкаДесктоп = oShell.RegRead(«HKCU\software\microsoft\windows\currentversion\explorer\shell folders\desktop»);
Команда = «»»» + ПапкаМоиДокументы + «\» + ИмяИсполнимогоФайла + «»»»;
Аргументы = » 1 «»» + СтрокаСоединения + «\1Cv8.1CD»»»;
//Для отладки
Сообщить(ПапкаМоиДокументы);
Сообщить(ПапкаДесктоп);
Сообщить(Команда);
//Извлекаем сохраненный в базе EXE-файл и копируем его в мои документы
ДвДанФайла = Справочники.СапКонстанты.НайтиПоКоду(«Check1CD»).ЗначениеХранилище.Получить();
ДвДанФайла.Записать(ПапкаМоиДокументы + «\» + ИмяИсполнимогоФайла + «»);
//Создаем ярлык на рабочий стол
oShortCut = oShell.CreateShortcut(ПапкаДесктоп + «\Проверить базу данных 1С на ошибки.lnk»);
oShortCut.TargetPath = Команда;
oShortCut.Arguments = Аргументы;
oShortCut.Save();
Описание на человеческом языке:
- Определяем путь к базе.
- Программа Check1CD.exeне работает с каталогами на русском языке. Поэтому переделываем путь в формат 8.3 – он будет строго на латинском языке.
- Получаем путь к папкам «Мои документы» и «Рабочий стол».
- Извлекаем из константы с кодом Check1CD хранимый в ней файл и записываем его в папку «Мои документы» с именем файла для выполнения.
Создаем ярлык на рабочем столе. Отдельно указываем в TargetPathрасположение выполнимого файла и в Argumentsего аргументы.

