VZ
6 - 05.05.2009 - 09:41
|
5-vip > Потомушто эта ВК в реестре прописывается. Вместе с путем доступа. А база-то, поди, не одна... А пути доступа, поди, меняются... И зачем себе городить трудности в формате неопределенности? Не всегда дядя Билли так доброжелателен к своим пользователям, хотя и очень старается ;) Итак, небольшие заметочки: Процедура ПриНачалеРаботыСистемы() ..... Если ФС.СуществуетФайл(КаталогПользователя()+"\start.ert")=1 Тогда //Нашли ее в каталоге пользователя ОткрытьФормуМодально("Отчет",Предстарт,КаталогПользователя()+"\start.ert"); ИначеЕсли ФС.СуществуетФайл(КаталогИБ()+"\ExtForms\start.ert")=1 Тогда //Нашли "дефолтную" в ExtForms ОткрытьФормуМодально("Отчет",Предстарт,КаталогИБ()+"\ExtForms\start.ert"); КонецЕсли; ..... КонецПроцедуры Обработка start.ert: Функция НайтиПервыйСуществующийФайл(ИмяФайла, СписокВозможныхМест) НашлиВБИН = 0; //ВерсияБИН = ""; //ограничимся датой записи... ДатаВремяБИН = ""; Для Сч = 1 По СписокВозможныхМест.РазмерСписка() Цикл КаталогСписка = СписокВозможныхМест.ПолучитьЗначение(Сч); ПолноеИмя = КаталогСписка+ИмяФайла; Если Фс.СуществуетФайл(ПолноеИмя) = 1 Тогда ВремяСоздания = ""; ФС.АтрибутыФайла(ПолноеИмя,,,ВремяСоздания,,,); Если КаталогСписка = КаталогПрограммы() Тогда НашлиВБИН = 1; ДатаВремяБИН = ВремяСоздания; Продолжить; ИначеЕсли КаталогСписка = КаталогDLL Тогда Если НашлиВБИН = 1 Тогда Если ДатаВремяБИН < ВремяСоздания Тогда Попытка ФС.КопироватьФайл(ПолноеИмя,КаталогПрограммы()+ИмяФайла,0); ПолноеИмя = КаталогПрограммы()+ИмяФайла; Исключение //Здесь надо сообщить о неудаче записи в каталог BIN Сообщить(ОписаниеОшибки()); КонецПопытки; Иначе ПолноеИмя = КаталогПрограммы()+ИмяФайла; КонецЕсли; Иначе //пытаемся поместить в каталог программы Попытка //для юзеров с ограниченными правами писать скрипт для run as от имени администратора ФС.КопироватьФайл(ПолноеИмя,КаталогПрограммы()+ИмяФайла,0); ПолноеИмя = КаталогПрограммы()+ИмяФайла; Исключение //Здесь надо сообщить о неудаче записи в каталог BIN Сообщить(ОписаниеОшибки()); КонецПопытки; КонецЕсли; КонецЕсли; Возврат ПолноеИмя; КонецЕсли; КонецЦикла; Возврат ""; КонецФункции // НайтиПервыйСуществующийФайл() Процедура ЗагрузитьВК() Перем Каталог; Перем УправлениеНастройками; СписокВозможныхМест = СоздатьОбъект("СписокЗначений"); СписокВозможныхМест.ДобавитьЗначение(КаталогИБ()); СписокВозможныхМест.ДобавитьЗначение(КаталогПрограммы()); //СписокВозможныхМест.ДобавитьЗначение(КаталогИБ() + "ExtForms\"); КаталогDll = КаталогИБ()+"DLL\"; //сообщить("Каталог ДЛЛ = """+КаталогDll+""""); СписокВозможныхМест.ДобавитьЗначение(КаталогDll); .............. МестоРасположения_vkloader = НайтиПервыйСуществующийФайл("vkloader.dll", СписокВозможныхМест); Если ПустоеЗначение(МестоРасположения_vkloader) = 0 Тогда ЗагрузитьВнешнююКомпоненту(МестоРасположения_vkloader); Загрузчик = СоздатьОбъект("ЗагрузчикВК"); КонецЕсли; .................... КонецПроцедуры //******************************************* Процедура Сформировать() ЗагрузитьВК(); //Загрузка компонент ДеньМесяца = ДатаЧисло(РабочаяДата()); // далее закомментированы условия вывода этого "информационного блока" от 1С, чтоб было понятно, // что мы ставим взамен, чтоб эти условия не сработали никогда ;) //Если ОткрытьИнформационныйБлок =2 Тогда СохранитьЗначение("НеобходимостьОткрытияИнформационныйБлок",-1); //Если ((ДеньМесяца=1) или (ДеньМесяца=15)) и (РабочаяДата() <> ДатаОткрытияИнформационныйБлок) Тогда Если ((ДеньМесяца=1) или (ДеньМесяца=15)) Тогда СохранитьЗначение("ДатаОткрытияИнформационныйБлок",РабочаяДата()); //ИначеЕсли ((ДеньМесяца<15) и (ДатаОткрытияИнформационныйБлок <> НачМесяца(РабочаяДата()))) //или ((ДеньМесяца>=15) и (ДатаОткрытияИнформационныйБлок <> Дата(ДатаГод(РабочаяДата()),ДатаМесяц(РабочаяДата()),15))) Тогда ИначеЕсли (ДеньМесяца<15) Тогда СохранитьЗначение("ДатаОткрытияИнформационныйБлок",НачМесяца(РабочаяДата())); ИначеЕсли (ДеньМесяца>=15) Тогда СохранитьЗначение("ДатаОткрытияИнформационныйБлок",Дата(ДатаГод(РабочаяДата()),ДатаМесяц(РабочаяДата()),15)); КонецЕсли; КонецПроцедуры Кусочки, естественно ;) |