|
выгрузить конфигурацию из под тонкого клиента | ☑ | ||
---|---|---|---|---|
0
1cnooob
06.04.12
✎
23:23
|
реально?
|
|||
1
IamAlexy
06.04.12
✎
23:26
|
да.
1. закрываем тонкий клиент 2. открываем конфигуратор 3. выгружаем |
|||
2
andrewks
06.04.12
✎
23:27
|
пятница
|
|||
3
1cnooob
06.04.12
✎
23:28
|
а не закрывая, обновлять же ведь можно, значит можно как то обратится к самой конф
|
|||
4
Seducer
06.04.12
✎
23:30
|
Эх...... где ж ты был в начале пятницы? :)
|
|||
5
1cnooob
06.04.12
✎
23:30
|
ясно
|
|||
6
Immortal
06.04.12
✎
23:31
|
куда выгружать то собрался?
|
|||
7
IamAlexy
06.04.12
✎
23:31
|
(6) решил выгрузить нахаляву себе все с http://demo-ma.1c.ru
|
|||
8
1cnooob
06.04.12
✎
23:31
|
ага
|
|||
9
andrewks
06.04.12
✎
23:32
|
(7) а там есть что-то ценное?
|
|||
10
1cnooob
06.04.12
✎
23:34
|
////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ - ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ЗаписьЖурналаРегистрации(ОбновлениеКонфигурации.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация,,, НСтр("ru = 'Открытие помощника обновления конфигурации...'")); ОбновлениеКонфигурации.ПрерватьВыполнениеЕслиАвторизованВнешнийПользователь(); // Установка признака выполнения обновления по завершении помощника. ВыполнитьОбновление = Ложь; // Если это первый запуск после обновления конфигурации, то запоминаем и сбрасываем статус. Объект.РезультатОбновления = ОбновлениеКонфигурации.ОбновлениеКонфигурацииУспешно(); Если Объект.РезультатОбновления <> Неопределено Тогда ОбновлениеКонфигурации.СброситьСтатусОбновленияКонфигурации(); КонецЕсли; // Проверяем каждый раз при открытии помощника. КонфигурацияИзменена = КонфигурацияИзменена(); КонецПроцедуры &НаКлиенте Процедура ПриОткрытии(Отказ) #Если ВебКлиент Тогда Отказ = Истина; ТекстСообщения = НСтр("ru = 'Обновление конфигурации информационной базы недоступно в веб-клиенте.'"); ОбщегоНазначенияКлиент.ДобавитьСообщениеДляЖурналаРегистрации(ОбновлениеКонфигурацииКлиент.СобытиеЖурналаРегистрации(),, ТекстСообщения,,Истина); Предупреждение(ТекстСообщения); Возврат; #КонецЕсли ВосстановитьНастройкиОбновленияКонфигурации(); Страницы = Элементы.СтраницыПомощника.ПодчиненныеЭлементы; ИмяСтраницы = Страницы.ДоброПожаловать.Имя; ДоступноеОбновление = ОбновлениеКонфигурацииКлиент.ПолучитьДоступноеОбновлениеКонфигурации(); // Если есть обновление в сети Интернет... Если ДоступноеОбновление.ИсточникОбновления = 0 И ДоступноеОбновление.ФлагАвтоПереходаНаСтраницуСОбновлением Тогда ВремяПолученияОбновления = ДоступноеОбновление.ВремяПолученияОбновления; Если ВремяПолученияОбновления <> Неопределено И ТекущаяДата() - ВремяПолученияОбновления < 30 Тогда ИмяСтраницы = ПолучитьФайлыОбновленияЧерезИнтернет(Истина); КонецЕсли; // Если конфигурация изменена, предложим применить ее к базе данных ИначеЕсли ДоступноеОбновление.ИсточникОбновления = 2 И ДоступноеОбновление.НуженФайлОбновления = 0 И ДоступноеОбновление.ФлагАвтоПереходаНаСтраницуСОбновлением Тогда ИмяСтраницы = Страницы.ФайлОбновления.Имя; КонецЕсли; Если Объект.КодЗадачиПланировщика <> 0 Тогда Если ПолучитьЗадачуПланировщика(Объект.КодЗадачиПланировщика) = Неопределено Тогда Объект.КодЗадачиПланировщика = 0; КонецЕсли; КонецЕсли; // Если форма открывается при запуске программы после обновления Если Объект.РезультатОбновления <> Неопределено Тогда ИмяФайлаПорядокОбновления = ПолучитьИмяЛокальногоФайлаПорядкаОбновления(); Если НЕ ФайлСуществуетНаКлиенте(ИмяФайлаПорядокОбновления) Тогда ИмяФайлаПорядокОбновления = ""; КонецЕсли; ИмяФайлаИнформацияОбОбновлении = ПолучитьИмяЛокальногоФайлаОписанияОбновления(); Если НЕ ФайлСуществуетНаКлиенте(ИмяФайлаИнформацияОбОбновлении) Тогда ИмяФайлаПорядокОбновления = ""; КонецЕсли; ИмяСтраницы = ? (Объект.РезультатОбновления, Страницы.УспешноеОбновление.Имя, Страницы.НеуспешноеОбновление.Имя); Объект.РезультатОбновления = Неопределено; Иначе Если НЕ ОбновлениеКонфигурацииКлиентПереопределяемый.ГотовностьКОбновлениюКонфигурации(Истина) Тогда ИмяСобытияЖурнала = ОбновлениеКонфигурацииКлиент.СобытиеЖурналаРегистрации(); ОбщегоНазначенияКлиент.ДобавитьСообщениеДляЖурналаРегистрации(ИмяСобытияЖурнала, "Информация", НСтр("ru = 'Конфигурация не может быть обновлена. Завершение проверки обновления.'")); Отказ = Истина; Возврат; КонецЕсли; Если Объект.КодЗадачиПланировщика <> 0 Тогда ПараметрОтказа = Ложь; // не используется в этом случае ИмяСтраницы = ВосстановитьРезультатыПредыдущегоЗапуска(ПараметрОтказа); ИначеЕсли КонфигурацияИзменена И Объект.ИсточникОбновления = 2 Тогда Объект.НуженФайлОбновления = 0; ИмяСтраницы = Страницы.ФайлОбновления.Имя; ИначеЕсли Объект.ПропускатьПриветствие = Истина И Объект.ИсточникОбновления = 0 Тогда ИмяСтраницы = ОбработатьСтраницуДоброПожаловать(Истина); КонецЕсли КонецЕсли; ПередОткрытиемСтраницы(Страницы[ИмяСтраницы]); Элементы.СтраницыПомощника.ТекущаяСтраница = Страницы[ИмяСтраницы]; КонецПроцедуры &НаКлиенте Процедура ПриЗакрытии() ДоступноеОбновление = ОбновлениеКонфигурацииКлиент.ПолучитьДоступноеОбновлениеКонфигурации(); Если ДоступноеОбновление.ИсточникОбновления <> -1 Тогда ДоступноеОбновление.ФлагАвтоПереходаНаСтраницуСОбновлением = Ложь; КонецЕсли; // Сохранение настроек обновления. СохранитьНастройкиОбновленияКонфигурации(); // Выполнение обновления конфигурации. Если ВыполнитьОбновление Тогда ВыполнитьОбновлениеКонфигурации(); КонецЕсли; // запись событий ЖР ОбщегоНазначения.ЗаписатьСобытияВЖурналРегистрации(СообщенияДляЖурналаРегистрации); КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// // ПРОЦЕДУРЫ - ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ФОРМЫ &НаКлиенте Процедура КнопкаНазадНажатие(Команда) Страницы = Элементы.СтраницыПомощника.ПодчиненныеЭлементы; ТекущаяСтраница = Элементы.СтраницыПомощника.ТекущаяСтраница; НоваяТекущаяСтраница = ТекущаяСтраница; Если ТекущаяСтраница = Страницы.ДоброПожаловать Тогда НоваяТекущаяСтраница = Страницы.ДоброПожаловать; ИначеЕсли ТекущаяСтраница = Страницы.ПодключениеКИнтернет Тогда НоваяТекущаяСтраница = Страницы.ДоброПожаловать; ИначеЕсли ТекущаяСтраница = Страницы.ПодключениеКСайту Тогда НоваяТекущаяСтраница = Страницы.ДоступноеОбновление; ИначеЕсли ТекущаяСтраница = Страницы.ДоступноеОбновление Тогда НоваяТекущаяСтраница = Страницы.ДоброПожаловать; Если Объект.ИсточникОбновления = 1 Тогда // диск ИТС НоваяТекущаяСтраница = Страницы.МестоположениеДискаИТС; КонецЕсли; ИначеЕсли ТекущаяСтраница = Страницы.ОбновленияНеОбнаружено Тогда НоваяТекущаяСтраница = Страницы.ДоброПожаловать; Если Объект.ИсточникОбновления = 1 Тогда // диск ИТС НоваяТекущаяСтраница = Страницы.МестоположениеДискаИТС; КонецЕсли; ИначеЕсли ТекущаяСтраница = Страницы.ДлительнаяОперация Тогда НоваяТекущаяСтраница = Страницы.ДоброПожаловать; ИначеЕсли ТекущаяСтраница = Страницы.ВыборРежимаОбновленияФайл ИЛИ ТекущаяСтраница = Страницы.ВыборРежимаОбновленияСервер ИЛИ ТекущаяСтраница = Страницы.ПараметрыАвторизации ИЛИ ТекущаяСтраница = Страницы.ДополнительныеНастройки Тогда Если Объект.ИсточникОбновления = 0 Тогда // интернет НоваяТекущаяСтраница = Страницы.ДоступноеОбновление; ИначеЕсли Объект.ИсточникОбновления = 1 Тогда // диск ИТС НоваяТекущаяСтраница = Страницы.ДоброПожаловать; Иначе // файл НоваяТекущаяСтраница = Страницы.ФайлОбновления; КонецЕсли; ИначеЕсли ТекущаяСтраница = Страницы.УспешноеОбновление Тогда НоваяТекущаяСтраница = Страницы.ДоброПожаловать; Если Объект.ИсточникОбновления = 1 Тогда // диск ИТС НоваяТекущаяСтраница = Страницы.МестоположениеДискаИТС; КонецЕсли; ИначеЕсли ТекущаяСтраница = Страницы.НеуспешноеОбновление Тогда НоваяТекущаяСтраница = Страницы.ДоброПожаловать; Если Объект.ИсточникОбновления = 1 Тогда // диск ИТС НоваяТекущаяСтраница = Страницы.МестоположениеДискаИТС; КонецЕсли; ИначеЕсли ТекущаяСтраница = Страницы.ФайлОбновления Тогда НоваяТекущаяСтраница = Страницы.ДоброПожаловать; ИначеЕсли ТекущаяСтраница = Страницы.ДоступноеОбновление Тогда НоваяТекущаяСтраница = Страницы.ДоброПожаловать; ИначеЕсли ТекущаяСтраница = Страницы.МестоположениеДискаИТС Тогда НоваяТекущаяСтраница = Страницы.ДоброПожаловать; КонецЕсли; ПередОткрытиемСтраницы(НоваяТекущаяСтраница); Элементы.СтраницыПомощника.ТекущаяСтраница = НоваяТекущаяСтраница; КонецПроцедуры &НаКлиенте Процедура КнопкаДалееНажатие(Команда) ФлагЗавершенияРаботы = Ложь; ОбработатьНажатиеКнопкиДалее(ФлагЗавершенияРаботы); Если ФлагЗавершенияРаботы Тогда ОбновлениеКонфигурацииКлиентПереопределяемый.ПередЗавершениемРаботыСистемы(); ПропуститьПредупреждениеПередЗавершениемРаботыСистемы = Истина; ЗавершитьРаботуСистемы(Ложь); Конецесли; КонецПроцедуры &НаКлиенте Процедура НадписьКакОформитьПодпискуИТСНажатие(Элемент) ОбновлениеКонфигурацииКлиент.ОткрытьВебСтраницу("http://its.1c.ru/about.php?section=how"); КонецПроцедуры &НаКлиенте Процедура НадписьПодробнееОбИТСНажатие(Элемент) ОбновлениеКонфигурацииКлиент.ОткрытьВебСтраницу("http://its.1c.ru/about.php"); КонецПроцедуры &НаКлиенте Процедура НадписьИнформацияОбОбновленииНажатие(Элемент) Если НЕ ПустаяСтрока(ИмяФайлаИнформацияОбОбновлении) Тогда ОбновлениеКонфигурацииКлиент.ОткрытьВебСтраницу(ИмяФайлаИнформацияОбОбновлении); Иначе Предупреждение(НСтр("ru = 'Информация об обновлении отсутствует.'")); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура НадписьПорядокОбновленияНажатие(Элемент) Если НЕ ПустаяСтрока(ИмяФайлаПорядокОбновления) Тогда ОбновлениеКонфигурацииКлиент.ОткрытьВебСтраницу(ИмяФайлаПорядокОбновления); Иначе Предупреждение(НСтр("ru = 'Описание порядка обновления отсутствует.'")); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура НадписьСписокДействийНажатие(Элемент) ОткрытьФормуМодально("Обработка.АктивныеПользователи.Форма.ФормаСпискаАктивныхПользователей"); ПередОткрытиемСтраницы(); КонецПроцедуры &НаКлиенте Процедура НадписьСписокДействий1Нажатие(Элемент) ОткрытьФормуМодально("Обработка.АктивныеПользователи.Форма.ФормаСпискаАктивныхПользователей"); ПередОткрытиемСтраницы(); КонецПроцедуры &НаКлиенте Процедура НадписьСписокДействий3Нажатие(Элемент) ОткрытьФормуМодально("Обработка.АктивныеПользователи.Форма.ФормаСпискаАктивныхПользователей"); ПередОткрытиемСтраницы(); КонецПроцедуры &НаКлиенте Процедура ПереключательНуженФайлОбновленияПриИзменении(Элемент) ПередОткрытиемСтраницы(); КонецПроцедуры &НаКлиенте Процедура ПолеФайлОбновленияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); Диалог.Каталог = ОбновлениеКонфигурацииКлиент.ПолучитьКаталогФайла(Объект.ИмяФайлаОбновления); Диалог.ПроверятьСуществованиеФайла = Истина; Диалог.Фильтр = НСтр("ru = 'Все файлы поставки (*.cf*;*.cfu)|*.cf*;*.cfu|Файлы поставки конфигурации (*.cf)|*.cf|Файлы поставки обновления конфигурации(*.cfu)|*.cfu'"); Диалог.Заголовок = НСтр("ru = 'Выбор поставки обновления конфигурации'"); Если Диалог.Выбрать() Тогда Объект.ИмяФайлаОбновления = Диалог.ПолноеИмяФайла; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура НадписьИнформацияОПолученииДоступаНажатие(Элемент) ОбновлениеКонфигурацииКлиент.ОткрытьВебСтраницу( ОбновлениеКонфигурацииКлиент.ПолучитьПараметрыОбновления().АдресСтраницыИнформацииОПолученииДоступаКПользовательскомуСайту); КонецПроцедуры &НаКлиенте Процедура НадписьРезервнаяКопияНажатие(Элемент) ПараметрыФормы = Новый Структура("СоздаватьРезервнуюКопию, ИмяКаталогаРезервнойКопииИБ, ВосстанавливатьИнформационнуюБазу", Объект.СоздаватьРезервнуюКопию, Объект.ИмяКаталогаРезервнойКопииИБ, Объект.ВосстанавливатьИнформационнуюБазу); Результат = ОткрытьФормуМодально("Обработка.ОбновлениеКонфигурации.Форма.НастройкаРезервнойКопии", ПараметрыФормы, ЭтаФорма); Если ТипЗнч(Результат) = Тип("Структура") Тогда ЗаполнитьЗначенияСвойств(Объект, Результат); КонецЕсли; ПередОткрытиемСтраницы(); КонецПроцедуры &НаКлиенте Процедура ПереключательОбновленияПриИзменении(Элемент) ПередОткрытиемСтраницы(); КонецПроцедуры &НаКлиенте Процедура ВыслатьОтчетНаПочтуПриИзменении(Элемент) ПередОткрытиемСтраницы(); КонецПроцедуры &НаКлиенте Процедура КластерТребуетАутентификацииПриИзменении(Элемент) ПередОткрытиемСтраницы(); КонецПроцедуры &НаКлиенте Процедура НестандартныеПортыСервераПриИзменении(Элемент) Элементы.ПанельНестандартныеПортыСервера.Доступность = Объект.НестандартныеПортыСервера; КонецПроцедуры &НаКлиенте Процедура КнопкаОбновитьВерсиюКомпонентыНажатие(Команда) ОбщегоНазначенияКлиент.ЗарегистрироватьCOMСоединитель(); КонецПроцедуры &НаКлиенте Процедура НадписьНастройкаПараметровПроксиНажатие(Элемент) ОткрытьФормуМодально("ОбщаяФорма.ПараметрыПроксиСервера"); КонецПроцедуры &НаКлиенте Процедура ДекорацияЧерезИнтернетНажатие(Элемент) Объект.ИсточникОбновления = 0; ПередОткрытиемСтраницы(); КонецПроцедуры &НаКлиенте Процедура ДекорацияЧерезИТСНажатие(Элемент) Объект.ИсточникОбновления = 1; ПередОткрытиемСтраницы(); КонецПроцедуры &НаКлиенте Процедура ДекорацияИзФайлаНажатие(Элемент) Объект.ИсточникОбновления = 2; ПередОткрытиемСтраницы(); КонецПроцедуры &НаКлиенте Процедура ИсточникДискаИТСПриИзменении(Элемент) ПередОткрытиемСтраницы(); КонецПроцедуры &НаКлиенте Процедура ДискИТСНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога); Диалог.Каталог = ДискИТС; Диалог.ПроверятьСуществованиеФайла = Истина; Диалог.Заголовок = "Выбор каталога для диска ИТС"; Если Диалог.Выбрать() Тогда ДискИТС = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(Диалог.Каталог); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ГиперссылкаПроверятьНаличиеОбновленияПриЗапускеНажатие(Элемент) ПараметрыФормы = Новый Структура("ПроверятьНаличиеОбновленияПриЗапуске, РасписаниеПроверкиНаличияОбновления", Объект.ПроверятьНаличиеОбновленияПриЗапуске, Объект.РасписаниеПроверкиНаличияОбновления); Результат = ОткрытьФормуМодально("Обработка.ОбновлениеКонфигурации.Форма.НастройкаРасписания", ПараметрыФормы, ЭтаФорма); Если ТипЗнч(Результат) = Тип("Структура") Тогда ЗаполнитьЗначенияСвойств(Объект, Результат); КонецЕсли; ПередОткрытиемСтраницы(); КонецПроцедуры &НаКлиенте Процедура НадписьПереченьРелизовНаДискахИТСНажатие(Элемент) Если ПустаяСтрока(ПереченьРелизовНаДискахИТС) Тогда Предупреждение(НСтр("ru = 'Информация о перечне релизов не обнаружена.'")); КонецЕсли; ЗапуститьПриложение(ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ДискИТС) + "Autorun.exe -browse """ + ПереченьРелизовНаДискахИТС + """") КонецПроцедуры &НаКлиенте Процедура НадписьОткрытьЖурналРегистрацииНажатие(Элемент) ОткрытьФорму("Обработка.ЖурналРегистрации.Форма", Новый Структура("Пользователь", ИмяПользователя())); КонецПроцедуры &НаКлиенте Процедура НадписьПерейтиВЖурналРегистрацииНажатие(Элемент) ОткрытьФорму("Обработка.ЖурналРегистрации.Форма", Новый Структура("Пользователь", ИмяПользователя())); КонецПроцедуры &НаКлиенте Процедура КомандаПроверитьДискИТС(Команда) Объект.ИсточникОбновления = 1; // диск ИТС Объект.ИсточникДискаИТС = 0; // искать диск ИТС в приводе Элементы.СтраницыПомощника.ТекущаяСтраница = Элементы.СтраницыПомощника.ПодчиненныеЭлементы.МестоположениеДискаИТС; ОбработатьНажатиеКнопкиДалее(); КонецПроцедуры &НаКлиенте Процедура НадписьИнформацияОбОбновленииПриЗавершенииНажатие(Элемент) ОткрытьФорму("ОбщаяФорма.ОписаниеИзмененийСистемы"); КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// // ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ (СЕРВЕР) &НаСервереБезКонтекста Функция ЭтоСеансКонфигуратором(СеансИнформационнойБазы) Возврат ВРег(СеансИнформационнойБазы.ИмяПриложения) = ВРег("Designer"); КонецФункции &НаСервереБезКонтекста Функция ЭтоCOMСоединение(СеансИнформационнойБазы) Возврат ВРег(СеансИнформационнойБазы.ИмяПриложения) = ВРег("COMConnection"); КонецФункции // Проверка наличия соединения конфигуратором. // // Возвращаемое значение: // Булево - Истина, если соединение есть, // Ложь, если соединения нет. &НаСервереБезКонтекста Функция НаличиеСоединенияКонфигуратором() МассивСеансов = ПолучитьСеансыИнформационнойБазы(); Для Каждого Сеанс Из МассивСеансов Цикл Если ЭтоСеансКонфигуратором(Сеанс) Тогда Возврат Истина; КонецЕсли; КонецЦикла; Возврат Ложь; КонецФункции &НаСервереБезКонтекста Функция НаличиеCOMСоединений() МассивСеансов = ПолучитьСеансыИнформационнойБазы(); Для Каждого Сеанс Из МассивСеансов Цикл Если ЭтоCOMСоединение(Сеанс) Тогда Возврат Истина; КонецЕсли; КонецЦикла; Возврат Ложь; КонецФункции // Проверка наличия активных соединений с информационной базой. // // Возвращаемое значение: // Булево - Истина, если соединения есть, // Ложь, если соединений нет. &НаСервереБезКонтекста Функция НаличиеАктивныхСоединений(СообщенияДляЖурналаРегистрации = Неопределено) // запись накопленных событий ЖР ОбщегоНазначения.ЗаписатьСобытияВЖурналРегистрации(СообщенияДляЖурналаРегистрации); Возврат ПолучитьСеансыИнформационнойБазы().Количество() > 1; КонецФункции &НаСервере Функция ПолучитьТекстыМакетов(ИменаМакетов, СтруктураПараметров, СообщенияДляЖурналаРегистрации) // запись накопленных событий ЖР ОбщегоНазначения.ЗаписатьСобытияВЖурналРегистрации(СообщенияДляЖурналаРегистрации); Результат = Новый Массив(); Результат.Добавить(ПолучитьТекстСкрипта(СтруктураПараметров)); ИменаМакетовМассив = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ИменаМакетов); Для каждого ИмяМакета ИЗ ИменаМакетовМассив Цикл Результат.Добавить(Обработки.ОбновлениеКонфигурации.ПолучитьМакет(ИмяМакета).ПолучитьТекст()); КонецЦикла; Возврат Результат; КонецФункции &НаСервере Функция ПолучитьТекстСкрипта(СтруктураПараметров) // Файл обновления конфигурации: main.js ШаблонСкрипта = Обработки.ОбновлениеКонфигурации.ПолучитьМакет("МакетФайлаОбновленияКонфигурации"); Скрипт = ШаблонСкрипта.ПолучитьОбласть("ОбластьПараметров"); Скрипт.УдалитьСтроку(1); Скрипт.УдалитьСтроку(Скрипт.КоличествоСтрок()); Текст = ШаблонСкрипта.ПолучитьОбласть("ОбластьОбновленияКонфигурации"); Текст.УдалитьСтроку(1); Текст.УдалитьСтроку(Текст.КоличествоСтрок()); Возврат ВставитьПараметрыСкрипта(Скрипт.ПолучитьТекст(), СтруктураПараметров) + Текст.ПолучитьТекст(); КонецФункции &НаСервере Функция ВставитьПараметрыСкрипта(Знач Текст, Знач СтруктураПараметров) Результат = Текст; Если Объект.СоздаватьРезервнуюКопию = 2 Тогда Объект.ВосстанавливатьИнформационнуюБазу = Истина; ИначеЕсли Объект.СоздаватьРезервнуюКопию = 0 Тогда Объект.ВосстанавливатьИнформационнуюБазу = Ложь; КонецЕсли; ИменаФайловОбновления = ""; Для Каждого Обновление Из Объект.ДоступныеОбновления Цикл ИменаФайловОбновления = ИменаФайловОбновления + Подг(Обновление.ПутьКЛокальномуФайлуОбновления) + ","; КонецЦикла; Если СтрДлина(ИменаФайловОбновления) > 0 Тогда ИменаФайловОбновления = Лев(ИменаФайловОбновления, СтрДлина(ИменаФайловОбновления) - 1); КонецЕсли; ИменаФайловОбновления = "[" + ИменаФайловОбновления + "]"; СтрокаСоединенияИнформационнойБазы = СтруктураПараметров.ПараметрыСкрипта.СтрокаСоединенияИнформационнойБазы + СтруктураПараметров.ПараметрыСкрипта.СтрокаПодключения; ИмяИсполняемогоФайлаПрограммы = СтруктураПараметров.КаталогПрограммы + СтруктураПараметров.ИмяФайлаПрограммы; // Определение пути к информационной базе. ПризнакФайловогоРежима = Неопределено; ПутьКИнформационнойБазе = СоединенияИБКлиентСервер.ПутьКИнформационнойБазе(ПризнакФайловогоРежима, ?(Объект.НестандартныеПортыСервера, Объект.ПортКластераСерверов, 0)); ПараметрПутиКИнформационнойБазе = ?(ПризнакФайловогоРежима, "/F", "/S") + ПутьКИнформационнойБазе; СтрокаПутиКИнформационнойБазе = ?(ПризнакФайловогоРежима, ПутьКИнформационнойБазе, ""); Результат = СтрЗаменить(Результат, "[ИменаФайловОбновления]" , ИменаФайловОбновления); Результат = СтрЗаменить(Результат, "[ИмяФайлаРекламы]" , СтруктураПараметров.ИмяФайлаРекламы); Результат = СтрЗаменить(Результат, "[ИмяИсполняемогоФайлаПрограммы]" , Подг(ИмяИсполняемогоФайлаПрограммы)); Результат = СтрЗаменить(Результат, "[ПараметрПутиКИнформационнойБазе]" , Подг(ПараметрПутиКИнформационнойБазе)); Результат = СтрЗаменить(Результат, "[СтрокаПутиКФайлуИнформационнойБазы]" , Подг(ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(СтрЗаменить(СтрокаПутиКИнформационнойБазе, """", "")) + "1Cv8.1CD")); Результат = СтрЗаменить(Результат, "[СтрокаСоединенияИнформационнойБазы]" , Подг(СтрокаСоединенияИнформационнойБазы)); Результат = СтрЗаменить(Результат, "[ПараметрыАутентификацииПользователя]" , Подг(СтруктураПараметров.ПараметрыСкрипта.ПараметрыАутентификации)); Результат = СтрЗаменить(Результат, "[СобытиеЖурналаРегистрации]" , Подг(СтруктураПараметров.СобытиеЖурналаРегистрации)); Результат = СтрЗаменить(Результат, "[АдресЭлектроннойПочты]", Подг(?(Объект.РежимОбновления = 2 И Объект.ВыслатьОтчетНаПочту, Объект.АдресЭлектроннойПочты, ""))); Результат = СтрЗаменить(Результат, "[ИмяАдминистратораОбновления]" , Подг(ИмяПользователя())); Результат = СтрЗаменить(Результат, "[СоздаватьРезервнуюКопию]" , ?(ПризнакФайловогоРежима И Объект.СоздаватьРезервнуюКопию <> 0, "true", "false")); Результат = СтрЗаменить(Результат, "[КаталогРезервнойКопии]" , Подг(?(Объект.СоздаватьРезервнуюКопию = 1, ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(Объект.ИмяКаталогаРезервнойКопииИБ), ""))); Результат = СтрЗаменить(Результат, "[ВосстанавливатьИнформационнуюБазу]" , ?(Объект.ВосстанавливатьИнформационнуюБазу, "true", "false")); БлокироватьСоединенияИБ = НЕ СтруктураПараметров.ИнформационнаяБазаФайловая ИЛИ РежимИмитацииКлиентСервернойИБ(); Результат = СтрЗаменить(Результат, "[БлокироватьСоединенияИБ]" , ?(БлокироватьСоединенияИБ, "true", "false")); Результат = СтрЗаменить(Результат, "[ИмяCOMСоединителя]" , Подг(СтруктураПараметров.ИмяCOMСоединителя)); Результат = СтрЗаменить(Результат, "[ИспользоватьCOMСоединитель]" , ?(СтруктураПараметров.ЭтоБазоваяВерсияКонфигурации, "false", "true")); Возврат Результат; КонецФункции &НаСервереБезКонтекста Функция Подг(Знач Текст) Возврат "'" + СтрЗаменить(Текст, "\", "\\") + "'"; КонецФункции &НаСервереБезКонтекста Функция ЕстьАктивныеПользователи(СообщенияДляЖурналаРегистрации = Неопределено) // запись накопленных событий ЖР ОбщегоНазначения.ЗаписатьСобытияВЖурналРегистрации(СообщенияДляЖурналаРегистрации); УстановитьПривилегированныйРежим(Истина); Возврат ПользователиИнформационнойБазы.ПолучитьПользователей().Количество() > 0; Конецфункции &НаСервереБезКонтекста Процедура НоваяСтрокаТаблицыОбновленийКонфигурации(ТаблицаОбновленийКонфигурации, Обновление) НоваяСтрока = ТаблицаОбновленийКонфигурации.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока, Обновление); НомерВерсии = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Обновление.Версия, "."); НоваяСтрока.Версия1Разряд = Число(НомерВерсии[0]); НоваяСтрока.Версия2Разряд = Число(НомерВерсии[1]); НоваяСтрока.Версия3Разряд = Число(НомерВерсии[2]); НоваяСтрока.Версия4Разряд = Число(НомерВерсии[3]); ПутьФайла = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(СтрЗаменить(Обновление.ПутьКФайлуОбновления, "\", "/"), "/"); Если ПутьФайла.Количество() > 0 Тогда НоваяСтрока.ФайлОбновления = ПутьФайла[ПутьФайла.Количество() - 1]; КонецЕсли; КонецПроцедуры &НаСервере Функция ПроверитьИУстановитьПарольАдминистратора(СообщенияДляЖурналаРегистрации) // запись накопленных событий ЖР ОбщегоНазначения.ЗаписатьСобытияВЖурналРегистрации(СообщенияДляЖурналаРегистрации); ТекущийПользователь = ПользователиИнформационнойБазы.ТекущийПользователь(); Если ТекущийПользователь.АутентификацияОС И НЕ ТекущийПользователь.АутентификацияСтандартная Тогда ТекущийПользователь.АутентификацияСтандартная = Истина; ТекущийПользователь.Пароль = Объект.ПарольАдминистратораИБ; Попытка ТекущийПользователь.Записать(); Исключение ИнфоОбОшибке = ИнформацияОбОшибке(); ТекстСообщения = НСтр("ru = 'Не удалось установить пароль администратора: '"); ЗаписьЖурналаРегистрации(ОбновлениеКонфигурации.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка,,, ТекстСообщения + ПодробноеПредставлениеОшибки(ИнфоОбОшибке)); Возврат ТекстСообщения + КраткоеПредставлениеОшибки(ИнфоОбОшибке); КонецПопытки; КонецЕсли; Возврат ""; КонецФункции // Служебная функция, предназначенная для получения описания типов строки, заданной длины. // // Параметры: // ДлинаСтроки - число, длина строки. // // Возвращаемое значение: // Объект "ОписаниеТипов" для строки указанной длины. // &НаСервереБезКонтекста Функция ПолучитьОписаниеТиповСтроки(ДлинаСтроки) Массив = Новый Массив; Массив.Добавить(Тип("Строка")); КвалификаторСтроки = Новый КвалификаторыСтроки(ДлинаСтроки, ДопустимаяДлина.Переменная); Возврат Новый ОписаниеТипов(Массив, , КвалификаторСтроки); КонецФункции // Служебная функция, предназначенная для получения описания типов числа, заданной разрядности. // // Параметры: // Разрядность - число, разряд числа. // РазрядностьДробнойЧасти - число, разряд дробной части. // // Возвращаемое значение: // Объект "ОписаниеТипов" для числа указанной разрядности. // &НаСервереБезКонтекста Функция ПолучитьОписаниеТиповЧисла(Разрядность,РазрядностьДробнойЧасти=0) Массив = Новый Массив; Массив.Добавить(Тип("Число")); КвалификаторЧисла = Новый КвалификаторыЧисла(Разрядность,РазрядностьДробнойЧасти); Возврат Новый ОписаниеТипов(Массив, КвалификаторЧисла); КонецФункции // Получить список всех инкрементальных обновлений по списку шаблонов, // последовательная установка которых обновит версию ВерсияОт до версии ВерсияДо. // // Параметры // ВерсияОт – строка – исходная версия // ВерсияДо – строка – конечная версия, до которой конфигурация // обновляется с исходной // // Возвращаемое значение: // Массив – массив строк ТаблицаЗначений &НаСервере Процедура ПолучитьДоступныеОбновленияВИнтервале(Знач ВерсияОт, Знач ВерсияДо, АдресФайлаВоВремХранилище, СообщенияДляЖурналаРегистрации) // запись накопленных событий ЖР ОбщегоНазначения.ЗаписатьСобытияВЖурналРегистрации(СообщенияДляЖурналаРегистрации); ТаблицаОбновлений = Неопределено; ВыполнитьЗагрузкуСпискаОбновлений(АдресФайлаВоВремХранилище, ТаблицаОбновлений); Если ТаблицаОбновлений = Неопределено Тогда // ошибки при чтении файла Возврат; КонецЕсли; ТаблицаОбновленийКонфигурации = Объект.ДоступныеОбновления.Выгрузить(); ТаблицаОбновленийКонфигурации.Очистить(); ТаблицаДоступныхОбновленийКонфигурации = ТаблицаОбновленийКонфигурации.Скопировать(); Для Каждого Обновление Из ТаблицаОбновлений Цикл НоваяСтрокаТаблицыОбновленийКонфигурации(ТаблицаОбновленийКонфигурации, Обновление); КонецЦикла; ТаблицаОбновленийКонфигурации.Сортировать("Версия1Разряд Убыв, |Версия2Разряд Убыв, |Версия3Разряд Убыв, |Версия4Разряд Убыв"); ТекущаяВерсияОт = ВерсияОт; Пока ТекущаяВерсияОт <> ВерсияДо Цикл Отбор = Новый Структура("ВерсияДляОбновления", ТекущаяВерсияОт); МассивДоступныхОбновлений = ТаблицаОбновленийКонфигурации.НайтиСтроки(Отбор); Для Каждого Обновление Из МассивДоступныхОбновлений Цикл НоваяСтрокаТаблицыОбновленийКонфигурации(ТаблицаДоступныхОбновленийКонфигурации, Обновление); КонецЦикла; ТаблицаДоступныхОбновленийКонфигурации.Сортировать("Версия1Разряд Убыв, |Версия2Разряд Убыв, |Версия3Разряд Убыв, |Версия4Разряд Убыв"); Если ТаблицаДоступныхОбновленийКонфигурации.Количество() = 0 Тогда Прервать; КонецЕсли; Отбор = Новый Структура("Версия", ТаблицаДоступныхОбновленийКонфигурации[0].Версия); МассивУжеНайденныхОбновлений = Объект.ДоступныеОбновления.НайтиСтроки(Отбор); Если МассивУжеНайденныхОбновлений.Количество() = 0 Тогда // добавляем новое обновление НовоеДоступноеОбновление = Объект.ДоступныеОбновления.Добавить(); ЗаполнитьЗначенияСвойств(НовоеДоступноеОбновление, ТаблицаДоступныхОбновленийКонфигурации[0]); ИначеЕсли ПустаяСтрока(МассивУжеНайденныхОбновлений[0].ПутьКЛокальномуФайлуОбновления) Тогда // обновляем информацию в уже найденном обновлении ЗаполнитьЗначенияСвойств(МассивУжеНайденныхОбновлений[0], ТаблицаДоступны |
|||
11
1cnooob
06.04.12
✎
23:34
|
обработка обновления
|
|||
12
aleks-id
06.04.12
✎
23:34
|
куда мир катится. хомячки нетленки через тонкий клиент выгружают (* ушел стреляться или в запой, пока не решил *)
|
|||
13
1cnooob
06.04.12
✎
23:36
|
на сервере получить конф и сохранить ее или отправить на почту)
|
|||
14
andrewks
06.04.12
✎
23:37
|
(10) э, хорош вандалить
|
|||
15
Seducer
06.04.12
✎
23:42
|
(10) Ой, мля...... Ты бы еще сюда выложил все модули
|
|||
16
serg_sh75
06.04.12
✎
23:44
|
(11) а лучше сразу всю конфу))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |