Каталог решений - Ярлык на chdbfl на каждый рабочий стол в сети РИБ

Ярлык на chdbfl на каждый рабочий стол в сети РИБ

Ярлык на chdbfl на каждый рабочий стол в сети РИБ

В наличии

В сети РИБ из 40 баз нужно было на каждом компьютере сделать ярлык для тестирования файловой БД с помощью chdbfl. Как я это сделал автоматически.

Категория:

Описание

В файловых базах данных постоянно что-то случается и требуется запускать тестирование и исправление базы с помощью 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();

 

Описание на человеческом языке:

  1. Определяем путь к базе.
  2. Программа Check1CD.exeне работает с каталогами на русском языке. Поэтому переделываем путь в формат 8.3 – он будет строго на латинском языке.
  3. Получаем путь к папкам «Мои документы» и «Рабочий стол».
  4. Извлекаем из константы с кодом Check1CD хранимый в ней файл и записываем его в папку «Мои документы» с именем файла для выполнения.

Создаем ярлык на рабочем столе. Отдельно указываем в TargetPathрасположение выполнимого файла и в Argumentsего аргументы.

 

has been added to your cart:
Оформление заказа