From 64ca76f46ba6188cba3dd788b958496dcd767c9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A5=D0=BE=D1=80=D0=B5=D0=B2=20=D0=90=D0=BB=D0=B5=D0=BA?= =?UTF-8?q?=D1=81=D0=B5=D0=B9=20=D0=90=D0=BD=D0=B4=D1=80=D0=B5=D0=B5=D0=B2?= =?UTF-8?q?=D0=B8=D1=87?= Date: Tue, 17 Jan 2017 15:21:36 +0300 Subject: [PATCH 1/9] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BF=D1=80=D0=BE=D1=86=D0=B5=D0=B4=D1=83=D1=80?= =?UTF-8?q?=D0=B0=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D1=82?= =?UTF-8?q?=D0=B5=D0=BB=D1=8F=20=D0=B2=20=D1=85=D1=80=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D0=BB=D0=B8=D1=89=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/v8runner.os | 1405 +++++++++-------- ...20\270\320\273\320\270\321\211\320\260.os" | 12 + tests/v8runner-test.os | 36 +- 3 files changed, 777 insertions(+), 676 deletions(-) create mode 100644 "src/\320\237\321\200\320\260\320\262\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260.os" diff --git a/src/v8runner.os b/src/v8runner.os index 17158c5..dd6988d 100644 --- a/src/v8runner.os +++ b/src/v8runner.os @@ -5,6 +5,7 @@ #Использовать logos #Использовать asserts +#Использовать ".." Перем мКонтекстКоманды; Перем мКаталогСборки; @@ -19,165 +20,219 @@ // Программный интерфейс Процедура УстановитьКонтекст(Знач СтрокаСоединения, Знач Пользователь, Знач Пароль) Экспорт - мКонтекстКоманды.КлючСоединенияСБазой = СтрокаСоединения; - мКонтекстКоманды.ИмяПользователя = Пользователь; - мКонтекстКоманды.Пароль = Пароль; + мКонтекстКоманды.КлючСоединенияСБазой = СтрокаСоединения; + мКонтекстКоманды.ИмяПользователя = Пользователь; + мКонтекстКоманды.Пароль = Пароль; - ПоказатьКонтекстВРежимеОтладки(); + ПоказатьКонтекстВРежимеОтладки(); КонецПроцедуры Функция ПолучитьКонтекст() Экспорт - КопияКонтекста = СкопироватьСтруктуру(мКонтекстКоманды); - Возврат КопияКонтекста; + КопияКонтекста = СкопироватьСтруктуру(мКонтекстКоманды); + Возврат КопияКонтекста; КонецФункции Процедура ИспользоватьКонтекст(Знач Контекст) Экспорт - мКонтекстКоманды = СкопироватьСтруктуру(Контекст); - ПоказатьКонтекстВРежимеОтладки(); + мКонтекстКоманды = СкопироватьСтруктуру(Контекст); + ПоказатьКонтекстВРежимеОтладки(); КонецПроцедуры Процедура ПоказатьКонтекстВРежимеОтладки() - Лог.Отладка("КлючСоединенияСБазой "+ мКонтекстКоманды.КлючСоединенияСБазой); - Лог.Отладка("ИмяПользователя <"+ мКонтекстКоманды.ИмяПользователя+">"); - Лог.Отладка(?(ПустаяСтрока(мКонтекстКоманды.Пароль), "Пароль не задан", " Задан пароль "+ мКонтекстКоманды.Пароль)); + Лог.Отладка("КлючСоединенияСБазой "+ мКонтекстКоманды.КлючСоединенияСБазой); + Лог.Отладка("ИмяПользователя <"+ мКонтекстКоманды.ИмяПользователя+">"); + Лог.Отладка(?(ПустаяСтрока(мКонтекстКоманды.Пароль), "Пароль не задан", " Задан пароль "+ мКонтекстКоманды.Пароль)); КонецПроцедуры Функция ПолучитьВерсиюИзХранилища(Знач СтрокаСоединения, Знач ПользовательХранилища, Знач ПарольХранилища, Знач НомерВерсии = Неопределено) Экспорт - Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); + Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); - Параметры.Добавить("/ConfigurationRepositoryF """+СтрокаСоединения+""""); - Параметры.Добавить("/ConfigurationRepositoryN """+ПользовательХранилища+""""); + Параметры.Добавить("/ConfigurationRepositoryF """+СтрокаСоединения+""""); + Параметры.Добавить("/ConfigurationRepositoryN """+ПользовательХранилища+""""); - Если Не ПустаяСтрока(ПарольХранилища) Тогда - Параметры.Добавить("/ConfigurationRepositoryP """+ПарольХранилища+""""); - КонецЕсли; + Если Не ПустаяСтрока(ПарольХранилища) Тогда + Параметры.Добавить("/ConfigurationRepositoryP """+ПарольХранилища+""""); + КонецЕсли; - ФайлРезультата = ОбъединитьПути(КаталогСборки(), "source.cf"); + ФайлРезультата = ОбъединитьПути(КаталогСборки(), "source.cf"); - Параметры.Добавить("/ConfigurationRepositoryDumpCfg """+ФайлРезультата + """"); + Параметры.Добавить("/ConfigurationRepositoryDumpCfg """+ФайлРезультата + """"); - Если Не ПустаяСтрока(НомерВерсии) Тогда - Параметры.Добавить("-v "+НомерВерсии); - КонецЕсли; + Если Не ПустаяСтрока(НомерВерсии) Тогда + Параметры.Добавить("-v "+НомерВерсии); + КонецЕсли; - ВыполнитьКоманду(Параметры); + ВыполнитьКоманду(Параметры); - Возврат ФайлРезультата; + Возврат ФайлРезультата; КонецФункции Процедура СоздатьФайлыПоставки(Знач ПутьФайлаПолнойПоставки ="", - знач ПутьФайлаПоставкиОбновления = "", - Знач ДистрибутивыДляОбновления = Неопределено, // Массив файлов дистрибутива cf - Знач ПутьФайлаСПараметрамиЛицензирования = "") Экспорт - - Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); - - Параметры.Добавить("/CreateDistributionFiles "); - - Если НЕ ЗначениеЗаполнено(ПутьФайлаПолнойПоставки) - И НЕ ЗначениеЗаполнено(ПутьФайлаПоставкиОбновления) Тогда - ВызватьИсключение "Не правильно заданы параметры процедуры <" + "СоздатьФайлыПоставки" +">"; - КонецЕсли; - - Если ЗначениеЗаполнено(ПутьФайлаПолнойПоставки) Тогда - Параметры.Добавить("-cffile "+ОбернутьВКавычки(ПутьФайлаПолнойПоставки)+" "); - КонецЕсли; - - Если ЗначениеЗаполнено(ПутьФайлаПоставкиОбновления) - И Не ДистрибутивыДляОбновления = Неопределено - И ДистрибутивыДляОбновления.Количество() > 0 Тогда - - Параметры.Добавить("-cfufile "+ОбернутьВКавычки(ПутьФайлаПоставкиОбновления)+" "); - - // Поддерживаются только файлы cf - Для каждого ДистрибутивОбновления Из ДистрибутивыДляОбновления Цикл - - Параметры.Добавить("-f "+ОбернутьВКавычки(ДистрибутивОбновления)+" "); - - КонецЦикла; - КонецЕсли; - - Если ЗначениеЗаполнено(ПутьФайлаСПараметрамиЛицензирования) Тогда - Параметры.Добавить("-digisign "+ОбернутьВКавычки(ПутьФайлаСПараметрамиЛицензирования)+" "); - КонецЕсли; - - ВыполнитьКоманду(Параметры); + знач ПутьФайлаПоставкиОбновления = "", + Знач ДистрибутивыДляОбновления = Неопределено, // Массив файлов дистрибутива cf + Знач ПутьФайлаСПараметрамиЛицензирования = "") Экспорт + + Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); + + Параметры.Добавить("/CreateDistributionFiles "); + + Если НЕ ЗначениеЗаполнено(ПутьФайлаПолнойПоставки) + И НЕ ЗначениеЗаполнено(ПутьФайлаПоставкиОбновления) Тогда + ВызватьИсключение "Не правильно заданы параметры процедуры <" + "СоздатьФайлыПоставки" +">"; + КонецЕсли; + + Если ЗначениеЗаполнено(ПутьФайлаПолнойПоставки) Тогда + Параметры.Добавить("-cffile "+ОбернутьВКавычки(ПутьФайлаПолнойПоставки)+" "); + КонецЕсли; + + Если ЗначениеЗаполнено(ПутьФайлаПоставкиОбновления) + И Не ДистрибутивыДляОбновления = Неопределено + И ДистрибутивыДляОбновления.Количество() > 0 Тогда + + Параметры.Добавить("-cfufile "+ОбернутьВКавычки(ПутьФайлаПоставкиОбновления)+" "); + + // Поддерживаются только файлы cf + Для каждого ДистрибутивОбновления Из ДистрибутивыДляОбновления Цикл + + Параметры.Добавить("-f "+ОбернутьВКавычки(ДистрибутивОбновления)+" "); + + КонецЦикла; + КонецЕсли; + + Если ЗначениеЗаполнено(ПутьФайлаСПараметрамиЛицензирования) Тогда + Параметры.Добавить("-digisign "+ОбернутьВКавычки(ПутьФайлаСПараметрамиЛицензирования)+" "); + КонецЕсли; + + ВыполнитьКоманду(Параметры); КонецПроцедуры Процедура СоздатьФайловоеХранилищеКонфигурации(Знач ПапкаХранилища, - Знач ПользовательХранилища, - Знач ПарольХранилища = "", - знач ПодключитьБазуКХранилищю = Ложь) Экспорт - - ОбеспечитьКаталог(ПапкаХранилища); - - Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); - - Параметры.Добавить("/ConfigurationRepositoryF """+ПапкаХранилища+""""); - Параметры.Добавить("/ConfigurationRepositoryN """+ПользовательХранилища+""""); - - Если Не ПустаяСтрока(ПарольХранилища) Тогда - Параметры.Добавить("/ConfigurationRepositoryP """+ПарольХранилища+""""); - КонецЕсли; - - Параметры.Добавить("/ConfigurationRepositoryCreate "); - - Параметры.Добавить("-AllowConfigurationChanges"); - Параметры.Добавить("-ChangesAllowedRule ObjectNotSupported"); - Параметры.Добавить("-ChangesNotRecommendedRule ObjectNotSupported"); - - Если ПодключитьБазуКХранилищю = Ложь Тогда - Параметры.Добавить("-NoBind"); - КонецЕсли; - - ВыполнитьКоманду(Параметры); + Знач ПользовательХранилища, + Знач ПарольХранилища = "", + знач ПодключитьБазуКХранилищю = Ложь) Экспорт + + ОбеспечитьКаталог(ПапкаХранилища); + + Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); + + Параметры.Добавить("/ConfigurationRepositoryF """+ПапкаХранилища+""""); + Параметры.Добавить("/ConfigurationRepositoryN """+ПользовательХранилища+""""); + + Если Не ПустаяСтрока(ПарольХранилища) Тогда + Параметры.Добавить("/ConfigurationRepositoryP """+ПарольХранилища+""""); + КонецЕсли; + + Параметры.Добавить("/ConfigurationRepositoryCreate "); + + Параметры.Добавить("-AllowConfigurationChanges"); + Параметры.Добавить("-ChangesAllowedRule ObjectNotSupported"); + Параметры.Добавить("-ChangesNotRecommendedRule ObjectNotSupported"); + + Если ПодключитьБазуКХранилищю = Ложь Тогда + Параметры.Добавить("-NoBind"); + КонецЕсли; + + ВыполнитьКоманду(Параметры); КонецПроцедуры Процедура ОтключитьсяОтХранилища() Экспорт - Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); - Параметры.Добавить("/ConfigurationRepositoryUnbindCfg -force "); + Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); + Параметры.Добавить("/ConfigurationRepositoryUnbindCfg -force "); - ВыполнитьКоманду(Параметры); + ВыполнитьКоманду(Параметры); КонецПроцедуры + +// Добавление пользователя хранилища конфигурации. +// Пользователь, от имени которого выполняется подключение к хранилищу, должен обладать административными правами. +// Если пользователь с указанным именем существует, то пользователь добавлен не будет. +// Параметры: +// СтрокаСоединения - Строка - имя cf-файла с объединяемой конфигурацией. +// ПользовательХранилища - строка - имя файла с настройками объединения конфигураций. +// ПарольХранилища - Строка - флаг необходимости установки конфигурации на поддержку. +// НовыйПользователь - Строка - Имя создаваемого пользователя. +// ПарольПользователя - Строка - Пароль создаваемого пользователя. +// Права — ПраваПользователяХранилища -Права пользователя. Возможные значения: +// ReadOnly — право на просмотр, (по умолчанию) +// LockObjects — право на захват объектов, +// ManageConfigurationVersions — право на изменение состава версий, +// Administration — право на административные функции. +// RestoreDeletedUser — Если обнаружен удаленный пользователь с таким же именем, он будет восстановлен. +// ВосстановитьУдаленного - Булево - флаг небходимости востановления удаленного пользователя +// +Процедура ДобавитьПользователяВХранилище(Знач СтрокаСоединения, + Знач ПользовательХранилища, + Знач ПарольХранилища, + Знач НовыйПользователь, + Знач ПарольПользователя = "", + Знач Права = ПраваПользователяХранилища.ТолькоЧтение, + Знач ВосстановитьУдаленного = Ложь) Экспорт + + Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); + + Параметры.Добавить("/ConfigurationRepositoryAddUser """+ПапкаХранилища+""""); + + Параметры.Добавить("/ConfigurationRepositoryF """+ПапкаХранилища+""""); + Параметры.Добавить("/ConfigurationRepositoryN """+ПользовательХранилища+""""); + + Если Не ПустаяСтрока(ПарольХранилища) Тогда + Параметры.Добавить("/ConfigurationRepositoryP """+ПарольХранилища+""""); + КонецЕсли; + + Параметры.Добавить("/ConfigurationRepositoryCreate "); + Параметры.Добавить(СтрШаблон("-User ""%1""",НовыйПользователь)); + Если Не ПустаяСтрока(ПарольПользователя) Тогда + Параметры.Добавить(СтрШаблон("-Pwd ""%1""",ПарольПользователя)); + КонецЕсли; + + Параметры.Добавить(СтрШаблон("-Rights %1",Права)); + + Если ВосстановитьУдаленного Тогда + Параметры.Добавить("RestoreDeletedUser"); + КонецЕсли; + + ВыполнитьКоманду(Параметры); + +КонецПроцедуры + + Процедура ВыгрузитьКонфигурациюВФайлы(Знач КаталогВыгрузки, Знач ФорматВыгрузки = "") Экспорт - - Если НЕ ЗначениеЗаполнено(ФорматВыгрузки) Тогда - ФорматВыгрузки = РежимВыгрузкиКонфигурации.Иерархический; - КонецЕсли; - - Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); - Параметры.Добавить(СтрШаблон("/DumpConfigToFiles %1 -format %2", ОбернутьВКавычки(КаталогВыгрузки), ФорматВыгрузки)); - ВыполнитьКоманду(Параметры); - + + Если НЕ ЗначениеЗаполнено(ФорматВыгрузки) Тогда + ФорматВыгрузки = РежимВыгрузкиКонфигурации.Иерархический; + КонецЕсли; + + Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); + Параметры.Добавить(СтрШаблон("/DumpConfigToFiles %1 -format %2", ОбернутьВКавычки(КаталогВыгрузки), ФорматВыгрузки)); + ВыполнитьКоманду(Параметры); + КонецПроцедуры Процедура ЗагрузитьКонфигурациюИзФайла(Знач ФайлКонфигурации, Знач ОбновитьКонфигурациюИБ = Ложь) Экспорт - // Выполняем загрузку и обновление за два шага, т.к. - // иногда обновление конфигурации ИБ на новой базе проходит неудачно, - // если запустить две операции в одной команде. + // Выполняем загрузку и обновление за два шага, т.к. + // иногда обновление конфигурации ИБ на новой базе проходит неудачно, + // если запустить две операции в одной команде. - Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); - Параметры.Добавить("/LoadCfg """ + ФайлКонфигурации + """"); - ВыполнитьКоманду(Параметры); + Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); + Параметры.Добавить("/LoadCfg """ + ФайлКонфигурации + """"); + ВыполнитьКоманду(Параметры); - Если ОбновитьКонфигурациюИБ Тогда - ОбновитьКонфигурациюБазыДанных(Ложь, Истина); - КонецЕсли; + Если ОбновитьКонфигурациюИБ Тогда + ОбновитьКонфигурациюБазыДанных(Ложь, Истина); + КонецЕсли; КонецПроцедуры Процедура ВыгрузитьКонфигурациюВФайл(Знач ФайлКонфигурации) Экспорт - - Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); - Параметры.Добавить("/DumpCfg """ + ФайлКонфигурации + """"); - ВыполнитьКоманду(Параметры); - + + Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); + Параметры.Добавить("/DumpCfg """ + ФайлКонфигурации + """"); + ВыполнитьКоманду(Параметры); + КонецПроцедуры // Выполнить объединение текущей конфигурации с файлом (с использованием файла настроек) @@ -203,257 +258,257 @@ // Если не указан, то объединение будет прервано в вышеуказанных случаях. // Процедура ОбъединитьКонфигурациюСФайлом(Знач ФайлКонфигурации, - Знач ФайлНастроек, - Знач ПоставитьНаПоддержку = Неопределено, - Знач ВключитьВОбъединениеОбъектыПоНеразрешеннымСсылкам = Неопределено, - Знач Принудительно = Ложь) Экспорт - - Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); - Параметры.Добавить("/MergeCfg " + ОбернутьВКавычки(ФайлКонфигурации)); - Параметры.Добавить("-Settings " + ОбернутьВКавычки(ФайлНастроек)); - - Если ПоставитьНаПоддержку = Истина Тогда - Параметры.Добавить("-EnableSupport"); - ИначеЕсли ПоставитьНаПоддержку = Ложь Тогда - Параметры.Добавить("-DisableSupport"); - КонецЕсли; - - Если ВключитьВОбъединениеОбъектыПоНеразрешеннымСсылкам = Истина Тогда - Параметры.Добавить("-IncludeObjectsByUnresolvedRefs"); - ИначеЕсли ВключитьВОбъединениеОбъектыПоНеразрешеннымСсылкам = Ложь Тогда - Параметры.Добавить("-ClearUnresolvedRefs"); - КонецЕсли; - - Если Принудительно Тогда - Параметры.Добавить("-force"); - КонецЕсли; - - ВыполнитьКоманду(Параметры); + Знач ФайлНастроек, + Знач ПоставитьНаПоддержку = Неопределено, + Знач ВключитьВОбъединениеОбъектыПоНеразрешеннымСсылкам = Неопределено, + Знач Принудительно = Ложь) Экспорт + + Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); + Параметры.Добавить("/MergeCfg " + ОбернутьВКавычки(ФайлКонфигурации)); + Параметры.Добавить("-Settings " + ОбернутьВКавычки(ФайлНастроек)); + + Если ПоставитьНаПоддержку = Истина Тогда + Параметры.Добавить("-EnableSupport"); + ИначеЕсли ПоставитьНаПоддержку = Ложь Тогда + Параметры.Добавить("-DisableSupport"); + КонецЕсли; + + Если ВключитьВОбъединениеОбъектыПоНеразрешеннымСсылкам = Истина Тогда + Параметры.Добавить("-IncludeObjectsByUnresolvedRefs"); + ИначеЕсли ВключитьВОбъединениеОбъектыПоНеразрешеннымСсылкам = Ложь Тогда + Параметры.Добавить("-ClearUnresolvedRefs"); + КонецЕсли; + + Если Принудительно Тогда + Параметры.Добавить("-force"); + КонецЕсли; + + ВыполнитьКоманду(Параметры); КонецПроцедуры Процедура ОбновитьКонфигурациюБазыДанных(ПредупрежденияКакОшибки = Ложь, НаСервере = Истина, ДинамическоеОбновление = Ложь) Экспорт - ПараметрыСвязиСБазой = СтандартныеПараметрыЗапускаКонфигуратора(); - ПараметрыСвязиСБазой.Добавить("/UpdateDBCfg"); - Если Не ДинамическоеОбновление Тогда - ПараметрыСвязиСБазой.Добавить("-Dynamic-"); - КонецЕсли; - - Если ПредупрежденияКакОшибки Тогда - ПараметрыСвязиСБазой.Добавить("-WarningsAsErrors"); - КонецЕсли; - Если НаСервере Тогда - ПараметрыСвязиСБазой.Добавить("-Server"); - КонецЕсли; - - ВыполнитьКоманду(ПараметрыСвязиСБазой); + ПараметрыСвязиСБазой = СтандартныеПараметрыЗапускаКонфигуратора(); + ПараметрыСвязиСБазой.Добавить("/UpdateDBCfg"); + Если Не ДинамическоеОбновление Тогда + ПараметрыСвязиСБазой.Добавить("-Dynamic-"); + КонецЕсли; + + Если ПредупрежденияКакОшибки Тогда + ПараметрыСвязиСБазой.Добавить("-WarningsAsErrors"); + КонецЕсли; + Если НаСервере Тогда + ПараметрыСвязиСБазой.Добавить("-Server"); + КонецЕсли; + + ВыполнитьКоманду(ПараметрыСвязиСБазой); КонецПроцедуры Процедура ОбновитьКонфигурацию(Знач КаталогВерсии, Знач ИспользоватьПолныйДистрибутив = Ложь) Экспорт - ПараметрыЗапуска = СтандартныеПараметрыЗапускаКонфигуратора(); + ПараметрыЗапуска = СтандартныеПараметрыЗапускаКонфигуратора(); - Если ИспользоватьПолныйДистрибутив = Неопределено Тогда - ИспользоватьПолныйДистрибутив = Не КаталогСодержитФайлОбновления(КаталогВерсии); - КонецЕсли; + Если ИспользоватьПолныйДистрибутив = Неопределено Тогда + ИспользоватьПолныйДистрибутив = Не КаталогСодержитФайлОбновления(КаталогВерсии); + КонецЕсли; - Если ИспользоватьПолныйДистрибутив Тогда - ФайлОбновления = "1cv8.cf"; - Иначе - ФайлОбновления = "1cv8.cfu"; - КонецЕсли; + Если ИспользоватьПолныйДистрибутив Тогда + ФайлОбновления = "1cv8.cf"; + Иначе + ФайлОбновления = "1cv8.cfu"; + КонецЕсли; - ПараметрыЗапуска.Добавить("/UpdateCfg " + ОбернутьВКавычки(ОбъединитьПути(КаталогВерсии, ФайлОбновления))); + ПараметрыЗапуска.Добавить("/UpdateCfg " + ОбернутьВКавычки(ОбъединитьПути(КаталогВерсии, ФайлОбновления))); - ВыполнитьКоманду(ПараметрыЗапуска); + ВыполнитьКоманду(ПараметрыЗапуска); КонецПроцедуры Процедура СнятьКонфигурациюСПоддержки(Знач Принудительно = Ложь) Экспорт - Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); - Параметры.Добавить("/ManageCfgSupport -disableSupport"); - Если Принудительно Тогда - Параметры.Добавить("-force"); - КонецЕсли; + Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); + Параметры.Добавить("/ManageCfgSupport -disableSupport"); + Если Принудительно Тогда + Параметры.Добавить("-force"); + КонецЕсли; - ВыполнитьКоманду(Параметры); + ВыполнитьКоманду(Параметры); КонецПроцедуры Процедура СконвертироватьФайлКонфигурации(Знач ФайлКонфигурации) Экспорт - Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); - Параметры.Добавить("/ConvertFiles """ + ФайлКонфигурации + """"); - ВыполнитьКоманду(Параметры); + Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); + Параметры.Добавить("/ConvertFiles """ + ФайлКонфигурации + """"); + ВыполнитьКоманду(Параметры); КонецПроцедуры Процедура СоздатьФайловуюБазу(Знач КаталогБазы, Знач ПутьКШаблону="", Знач ИмяБазыВСписке="") Экспорт - Лог.Отладка("Создаю файловую базу "+КаталогБазы); + Лог.Отладка("Создаю файловую базу "+КаталогБазы); - ОбеспечитьКаталог(КаталогБазы); - УдалитьФайлы(КаталогБазы, "*.*"); + ОбеспечитьКаталог(КаталогБазы); + УдалитьФайлы(КаталогБазы, "*.*"); - ПараметрыЗапуска = Новый Массив; - ПараметрыЗапуска.Добавить("CREATEINFOBASE"); - ПараметрыЗапуска.Добавить("File="""+КаталогБазы+""""); - ПараметрыЗапуска.Добавить("/Out""" + ФайлИнформации() + """"); - - Если ИмяБазыВСписке <> "" Тогда + ПараметрыЗапуска = Новый Массив; + ПараметрыЗапуска.Добавить("CREATEINFOBASE"); + ПараметрыЗапуска.Добавить("File="""+КаталогБазы+""""); + ПараметрыЗапуска.Добавить("/Out""" + ФайлИнформации() + """"); + + Если ИмяБазыВСписке <> "" Тогда ПараметрыЗапуска.Добавить("/AddInList"""+ ИмяБазыВСписке + """"); КонецЕсли; - Если ПутьКШаблону<> "" Тогда + Если ПутьКШаблону<> "" Тогда ПараметрыЗапуска.Добавить("/UseTemplate"""+ ПутьКШаблону + """"); КонецЕсли; - Если НЕ ПустаяСтрока(мКонтекстКоманды.КодЯзыка) Тогда - ПараметрыЗапуска.Добавить("/L"+мКонтекстКоманды.КодЯзыка); - КонецЕсли; - Если НЕ ПустаяСтрока(мКонтекстКоманды.КодЯзыкаСеанса) Тогда - ПараметрыЗапуска.Добавить("/VL"+мКонтекстКоманды.КодЯзыкаСеанса); - КонецЕсли; + Если НЕ ПустаяСтрока(мКонтекстКоманды.КодЯзыка) Тогда + ПараметрыЗапуска.Добавить("/L"+мКонтекстКоманды.КодЯзыка); + КонецЕсли; + Если НЕ ПустаяСтрока(мКонтекстКоманды.КодЯзыкаСеанса) Тогда + ПараметрыЗапуска.Добавить("/VL"+мКонтекстКоманды.КодЯзыкаСеанса); + КонецЕсли; - КодВозврата = ЗапуститьИПодождать(ПараметрыЗапуска); - УстановитьВывод(ПрочитатьФайлИнформации()); - Если КодВозврата <> 0 Тогда - ВызватьИсключение ВыводКоманды(); - КонецЕсли; + КодВозврата = ЗапуститьИПодождать(ПараметрыЗапуска); + УстановитьВывод(ПрочитатьФайлИнформации()); + Если КодВозврата <> 0 Тогда + ВызватьИсключение ВыводКоманды(); + КонецЕсли; КонецПроцедуры Процедура ЗагрузитьИнформационнуюБазу(ПутьВыгрузкиИБ) Экспорт - ФайлВыгрузки = Новый Файл(ПутьВыгрузкиИБ); - Ожидаем.Что(ФайлВыгрузки.Существует(), "Файл выгрузки <"+ПутьВыгрузкиИБ+"> существует, а это не так").ЭтоИстина(); + ФайлВыгрузки = Новый Файл(ПутьВыгрузкиИБ); + Ожидаем.Что(ФайлВыгрузки.Существует(), "Файл выгрузки <"+ПутьВыгрузкиИБ+"> существует, а это не так").ЭтоИстина(); - ПараметрыЗапуска = СтандартныеПараметрыЗапускаКонфигуратора(); + ПараметрыЗапуска = СтандартныеПараметрыЗапускаКонфигуратора(); - ПараметрыЗапуска.Добавить("/RestoreIB " + ОбернутьВКавычки(ПутьВыгрузкиИБ)); + ПараметрыЗапуска.Добавить("/RestoreIB " + ОбернутьВКавычки(ПутьВыгрузкиИБ)); - ВыполнитьКоманду(ПараметрыЗапуска); + ВыполнитьКоманду(ПараметрыЗапуска); КонецПроцедуры Процедура ВыгрузитьИнформационнуюБазу(ПутьВыгрузкиИБ) Экспорт - Файл = Новый Файл(ПутьВыгрузкиИБ); - КаталогВыгрузкиИБ = Файл.Путь; + Файл = Новый Файл(ПутьВыгрузкиИБ); + КаталогВыгрузкиИБ = Файл.Путь; - ОбеспечитьКаталог(КаталогВыгрузкиИБ); + ОбеспечитьКаталог(КаталогВыгрузкиИБ); - ПараметрыЗапуска = СтандартныеПараметрыЗапускаКонфигуратора(); + ПараметрыЗапуска = СтандартныеПараметрыЗапускаКонфигуратора(); - ПараметрыЗапуска.Добавить("/DumpIB " + ОбернутьВКавычки(ПутьВыгрузкиИБ)); + ПараметрыЗапуска.Добавить("/DumpIB " + ОбернутьВКавычки(ПутьВыгрузкиИБ)); - ВыполнитьКоманду(ПараметрыЗапуска); + ВыполнитьКоманду(ПараметрыЗапуска); КонецПроцедуры Процедура ВыполнитьКоманду(Знач Параметры) Экспорт - ПроверитьВозможностьВыполненияКоманды(); - - Файл = Новый Файл(ФайлИнформации()); - Если Файл.Существует() Тогда - Попытка - Лог.Отладка("Удаляю файл информации 1С"); - УдалитьФайлы(Файл.ПолноеИмя); - Исключение - Лог.Предупреждение("Не удалось удалить файл информации: " + ОписаниеОшибки()); - КонецПопытки; - КонецЕсли; - - КодВозврата = ЗапуститьИПодождать(Параметры); - УстановитьВывод(ПрочитатьФайлИнформации()); - Если КодВозврата <> 0 Тогда - Лог.Ошибка("Получен ненулевой код возврата "+КодВозврата+". Выполнение скрипта остановлено!"); - ВызватьИсключение ВыводКоманды(); - Иначе - Лог.Отладка("Код возврата равен 0"); - КонецЕсли; + ПроверитьВозможностьВыполненияКоманды(); + + Файл = Новый Файл(ФайлИнформации()); + Если Файл.Существует() Тогда + Попытка + Лог.Отладка("Удаляю файл информации 1С"); + УдалитьФайлы(Файл.ПолноеИмя); + Исключение + Лог.Предупреждение("Не удалось удалить файл информации: " + ОписаниеОшибки()); + КонецПопытки; + КонецЕсли; + + КодВозврата = ЗапуститьИПодождать(Параметры); + УстановитьВывод(ПрочитатьФайлИнформации()); + Если КодВозврата <> 0 Тогда + Лог.Ошибка("Получен ненулевой код возврата "+КодВозврата+". Выполнение скрипта остановлено!"); + ВызватьИсключение ВыводКоманды(); + Иначе + Лог.Отладка("Код возврата равен 0"); + КонецЕсли; КонецПроцедуры Функция ПолучитьПараметрыЗапуска() Экспорт - Возврат СтандартныеПараметрыЗапускаКонфигуратора(); + Возврат СтандартныеПараметрыЗапускаКонфигуратора(); КонецФункции Процедура ВыполнитьРасширеннуюПроверкуКонфигуратора(Ключи) Экспорт - Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); - - Параметры.Добавить("/CheckConfig"); - - Для Каждого СтрокаКлюча Из Ключи Цикл - Если СтрокаКлюча.Значение = Истина Тогда - Параметры.Добавить(СтрокаКлюча.Ключ); - КонецЕсли; - КонецЦикла; - - ВыполнитьКоманду(Параметры); - + Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); + + Параметры.Добавить("/CheckConfig"); + + Для Каждого СтрокаКлюча Из Ключи Цикл + Если СтрокаКлюча.Значение = Истина Тогда + Параметры.Добавить(СтрокаКлюча.Ключ); + КонецЕсли; + КонецЦикла; + + ВыполнитьКоманду(Параметры); + КонецПроцедуры Процедура ВыполнитьСинтаксическийКонтроль( - Знач ТонкийКлиент = Истина, - Знач ВебКлиент = Истина, - Знач Сервер = Истина, - Знач ВнешнееСоединение = Истина, - Знач ТолстыйКлиентОбычноеПриложение = Истина) Экспорт + Знач ТонкийКлиент = Истина, + Знач ВебКлиент = Истина, + Знач Сервер = Истина, + Знач ВнешнееСоединение = Истина, + Знач ТолстыйКлиентОбычноеПриложение = Истина) Экспорт - Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); + Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); - Параметры.Добавить("/CheckConfig"); + Параметры.Добавить("/CheckConfig"); - ДобавитьФлагПроверки(Параметры, ТонкийКлиент, "-ThinClient"); - ДобавитьФлагПроверки(Параметры, ВебКлиент, "-WebClient"); - ДобавитьФлагПроверки(Параметры, Сервер, "-Server"); - ДобавитьФлагПроверки(Параметры, ВнешнееСоединение, "-ExternalConnection"); - ДобавитьФлагПроверки(Параметры, ТолстыйКлиентОбычноеПриложение, "-ThickClientOrdinaryApplication"); + ДобавитьФлагПроверки(Параметры, ТонкийКлиент, "-ThinClient"); + ДобавитьФлагПроверки(Параметры, ВебКлиент, "-WebClient"); + ДобавитьФлагПроверки(Параметры, Сервер, "-Server"); + ДобавитьФлагПроверки(Параметры, ВнешнееСоединение, "-ExternalConnection"); + ДобавитьФлагПроверки(Параметры, ТолстыйКлиентОбычноеПриложение, "-ThickClientOrdinaryApplication"); - ВыполнитьКоманду(Параметры); + ВыполнитьКоманду(Параметры); КонецПроцедуры Процедура ЗапуститьВРежимеПредприятия(Знач КлючЗапуска = "", Знач УправляемыйРежим = Неопределено, Знач ДополнительныеКлючи = Неопределено) Экспорт - ПараметрыСвязиСБазой = ПолучитьПараметрыЗапуска(); - ПараметрыСвязиСБазой[0] = "ENTERPRISE"; - Если Не ПустаяСтрока(КлючЗапуска) Тогда - ПараметрыСвязиСБазой.Добавить("/C"+КлючЗапуска); - КонецЕсли; - Если УправляемыйРежим = Истина Тогда - ПараметрыСвязиСБазой.Вставить(2, "/RunModeManagedApplication"); - ИначеЕсли УправляемыйРежим = Ложь Тогда - ПараметрыСвязиСБазой.Вставить(2, "/RunModeOrdinaryApplication"); - КонецЕсли; - - Если ДополнительныеКлючи <> Неопределено Тогда - ПараметрыСвязиСБазой.Добавить(ДополнительныеКлючи); - КонецЕсли; - - ВыполнитьКоманду(ПараметрыСвязиСБазой); + ПараметрыСвязиСБазой = ПолучитьПараметрыЗапуска(); + ПараметрыСвязиСБазой[0] = "ENTERPRISE"; + Если Не ПустаяСтрока(КлючЗапуска) Тогда + ПараметрыСвязиСБазой.Добавить("/C"+КлючЗапуска); + КонецЕсли; + Если УправляемыйРежим = Истина Тогда + ПараметрыСвязиСБазой.Вставить(2, "/RunModeManagedApplication"); + ИначеЕсли УправляемыйРежим = Ложь Тогда + ПараметрыСвязиСБазой.Вставить(2, "/RunModeOrdinaryApplication"); + КонецЕсли; + + Если ДополнительныеКлючи <> Неопределено Тогда + ПараметрыСвязиСБазой.Добавить(ДополнительныеКлючи); + КонецЕсли; + + ВыполнитьКоманду(ПараметрыСвязиСБазой); КонецПроцедуры Процедура ДобавитьФлагПроверки(Знач Параметры, Знач ФлагПроверки, Знач ИмяФлага) - Если ФлагПроверки Тогда - Параметры.Добавить(ИмяФлага); - КонецЕсли; + Если ФлагПроверки Тогда + Параметры.Добавить(ИмяФлага); + КонецЕсли; КонецПроцедуры Функция КаталогСодержитФайлОбновления(Знач КаталогВерсии) - ФайлОбновления = Новый Файл(ОбъединитьПути(КаталогВерсии, "1cv8.cfu")); - Возврат ФайлОбновления.Существует(); + ФайлОбновления = Новый Файл(ОбъединитьПути(КаталогВерсии, "1cv8.cfu")); + Возврат ФайлОбновления.Существует(); КонецФункции Функция ПутьКВременнойБазе() Экспорт - Возврат ОбъединитьПути(КаталогСборки(), "v8r_TempDB"); + Возврат ОбъединитьПути(КаталогСборки(), "v8r_TempDB"); КонецФункции ////////////////////////////////////////////////// @@ -461,243 +516,243 @@ Функция ПолучитьПутьКВерсииПлатформы(Знач ВерсияПлатформы) Экспорт - Если Лев(ВерсияПлатформы, 2) <> "8." Тогда - ВызватьИсключение "Неверная версия платформы <"+ВерсияПлатформы+">"; - КонецЕсли; - - Если ЭтоWindows = Истина Тогда - - СписокСтрок = РазложитьСтрокуВМассивПодстрок(ВерсияПлатформы, "."); - Если СписокСтрок.Количество() < 2 Тогда - ВызватьИсключение "Маска версии платформы должна содержать, как минимум, минорную и мажорную версию, т.е. Maj.Min[.Release][.Build]"; - КонецЕсли; - - КаталогиУстановкиПлатформы = СобратьВозможныеКаталогиУстановкиПлатформыWindows(); - - Если КаталогиУстановкиПлатформы.Количество() = 0 Тогда - Лог.Отладка("В конфигах стартера не найдены пути установки. Пробую стандартные пути наугад."); - файлProgramFiles = Новый Файл("C:\Program Files (x86)\"); - Если Не файлProgramFiles.Существует() Тогда - файлProgramFiles = Новый Файл("C:\Program Files\"); - Если Не файлProgramFiles.Существует() Тогда - ВызватьИсключение "Не обнаружено установленных версий платформы 1С"; - КонецЕсли; - КонецЕсли; - - КаталогиУстановкиПлатформы.Добавить(ОбъединитьПути(файлProgramFiles.ПолноеИмя, "1Cv8")); - КаталогиУстановкиПлатформы.Добавить(ОбъединитьПути(файлProgramFiles.ПолноеИмя, "1Cv82")); - - КонецЕсли; - - МассивКаталогов1С = Новый Массив; - Для Каждого ВозможныйПуть Из КаталогиУстановкиПлатформы Цикл - - Лог.Отладка("Выполняю попытку поиска версии в каталоге " + ВозможныйПуть); - - МассивФайлов = НайтиФайлы(ВозможныйПуть, ВерсияПлатформы+"*"); - Если МассивФайлов.Количество() = 0 Тогда - Лог.Отладка("Не найдено ни одного каталога с версией."); - Продолжить; - КонецЕсли; - Если МассивКаталогов1С = Неопределено Тогда - МассивКаталогов1С = МассивФайлов; - Иначе - Для каждого Файл Из МассивФайлов Цикл - МассивКаталогов1С.Добавить(Файл); - Лог.Отладка("Нашел платформу 1С %1", Файл.Имя); - КонецЦикла; - КонецЕсли; - КонецЦикла; - - НужныйФайлПлатформы = Неопределено; - - МассивКаталоговВерсий = Новый Массив; - Для Каждого ЭлементМассива Из МассивКаталогов1С Цикл - правыйСимвол = Прав(ЭлементМассива.Имя, 1); - Если правыйСимвол < "0" или правыйСимвол > "9" Тогда - Продолжить; - КонецЕсли; - МассивКаталоговВерсий.Добавить(ЭлементМассива); - КонецЦикла; - - Если МассивКаталоговВерсий.Количество() > 0 Тогда - МаксВерсия = МассивКаталоговВерсий[0].Имя; - НужныйФайлПлатформы = Новый Файл(ОбъединитьПути(МассивКаталоговВерсий[0].ПолноеИмя, "bin", "1cv8.exe")); - - Для Сч = 1 По МассивКаталоговВерсий.ВГраница() Цикл - ТекущаяВерсия = МассивКаталоговВерсий[Сч].Имя; - Если МаксВерсия < ТекущаяВерсия Тогда - ПутьБин = ОбъединитьПути(МассивКаталоговВерсий[Сч].ПолноеИмя, "bin"); - ПроверяемыйФайл = Новый Файл(ОбъединитьПути(ПутьБин, "1cv8.exe")); - Если НЕ ПроверяемыйФайл.Существует() Тогда - Продолжить; - КонецЕсли; - - МаксВерсия = ТекущаяВерсия; - НужныйФайлПлатформы = ПроверяемыйФайл; - КонецЕсли; - КонецЦикла; - - Если НужныйФайлПлатформы.Существует() Тогда - Лог.Отладка("Версия найдена: " + НужныйФайлПлатформы.ПолноеИмя); - Иначе - НужныйФайлПлатформы = Неопределено; - КонецЕсли; - КонецЕсли; - - Если НужныйФайлПлатформы = Неопределено Тогда - ВызватьИсключение "Не найден путь к платформе 1С <"+ВерсияПлатформы+">"; - КонецЕсли; - - Иначе - // help wanted: на Линукс конфиг стартера лежит в ~/.1C/1cestart. - КаталогУстановки = Новый Файл("/opt/1C/v8.3/i386"); - Если НЕ КаталогУстановки.Существует() Тогда - КаталогУстановки = Новый Файл("/opt/1C/v8.3/x86_64"); - КонецЕсли; - НужныйФайлПлатформы = Новый Файл(Строка(КаталогУстановки.ПолноеИмя) + "/" + "1cv8"); - КонецЕсли; - - Если Не НужныйФайлПлатформы.Существует() Тогда - ВызватьИсключение "Ошибка определения версии платформы. Файл <"+НужныйФайлПлатформы.ПолноеИмя+"> не существует"; - КонецЕсли; - - Возврат НужныйФайлПлатформы.ПолноеИмя; + Если Лев(ВерсияПлатформы, 2) <> "8." Тогда + ВызватьИсключение "Неверная версия платформы <"+ВерсияПлатформы+">"; + КонецЕсли; + + Если ЭтоWindows = Истина Тогда + + СписокСтрок = РазложитьСтрокуВМассивПодстрок(ВерсияПлатформы, "."); + Если СписокСтрок.Количество() < 2 Тогда + ВызватьИсключение "Маска версии платформы должна содержать, как минимум, минорную и мажорную версию, т.е. Maj.Min[.Release][.Build]"; + КонецЕсли; + + КаталогиУстановкиПлатформы = СобратьВозможныеКаталогиУстановкиПлатформыWindows(); + + Если КаталогиУстановкиПлатформы.Количество() = 0 Тогда + Лог.Отладка("В конфигах стартера не найдены пути установки. Пробую стандартные пути наугад."); + файлProgramFiles = Новый Файл("C:\Program Files (x86)\"); + Если Не файлProgramFiles.Существует() Тогда + файлProgramFiles = Новый Файл("C:\Program Files\"); + Если Не файлProgramFiles.Существует() Тогда + ВызватьИсключение "Не обнаружено установленных версий платформы 1С"; + КонецЕсли; + КонецЕсли; + + КаталогиУстановкиПлатформы.Добавить(ОбъединитьПути(файлProgramFiles.ПолноеИмя, "1Cv8")); + КаталогиУстановкиПлатформы.Добавить(ОбъединитьПути(файлProgramFiles.ПолноеИмя, "1Cv82")); + + КонецЕсли; + + МассивКаталогов1С = Новый Массив; + Для Каждого ВозможныйПуть Из КаталогиУстановкиПлатформы Цикл + + Лог.Отладка("Выполняю попытку поиска версии в каталоге " + ВозможныйПуть); + + МассивФайлов = НайтиФайлы(ВозможныйПуть, ВерсияПлатформы+"*"); + Если МассивФайлов.Количество() = 0 Тогда + Лог.Отладка("Не найдено ни одного каталога с версией."); + Продолжить; + КонецЕсли; + Если МассивКаталогов1С = Неопределено Тогда + МассивКаталогов1С = МассивФайлов; + Иначе + Для каждого Файл Из МассивФайлов Цикл + МассивКаталогов1С.Добавить(Файл); + Лог.Отладка("Нашел платформу 1С %1", Файл.Имя); + КонецЦикла; + КонецЕсли; + КонецЦикла; + + НужныйФайлПлатформы = Неопределено; + + МассивКаталоговВерсий = Новый Массив; + Для Каждого ЭлементМассива Из МассивКаталогов1С Цикл + правыйСимвол = Прав(ЭлементМассива.Имя, 1); + Если правыйСимвол < "0" или правыйСимвол > "9" Тогда + Продолжить; + КонецЕсли; + МассивКаталоговВерсий.Добавить(ЭлементМассива); + КонецЦикла; + + Если МассивКаталоговВерсий.Количество() > 0 Тогда + МаксВерсия = МассивКаталоговВерсий[0].Имя; + НужныйФайлПлатформы = Новый Файл(ОбъединитьПути(МассивКаталоговВерсий[0].ПолноеИмя, "bin", "1cv8.exe")); + + Для Сч = 1 По МассивКаталоговВерсий.ВГраница() Цикл + ТекущаяВерсия = МассивКаталоговВерсий[Сч].Имя; + Если МаксВерсия < ТекущаяВерсия Тогда + ПутьБин = ОбъединитьПути(МассивКаталоговВерсий[Сч].ПолноеИмя, "bin"); + ПроверяемыйФайл = Новый Файл(ОбъединитьПути(ПутьБин, "1cv8.exe")); + Если НЕ ПроверяемыйФайл.Существует() Тогда + Продолжить; + КонецЕсли; + + МаксВерсия = ТекущаяВерсия; + НужныйФайлПлатформы = ПроверяемыйФайл; + КонецЕсли; + КонецЦикла; + + Если НужныйФайлПлатформы.Существует() Тогда + Лог.Отладка("Версия найдена: " + НужныйФайлПлатформы.ПолноеИмя); + Иначе + НужныйФайлПлатформы = Неопределено; + КонецЕсли; + КонецЕсли; + + Если НужныйФайлПлатформы = Неопределено Тогда + ВызватьИсключение "Не найден путь к платформе 1С <"+ВерсияПлатформы+">"; + КонецЕсли; + + Иначе + // help wanted: на Линукс конфиг стартера лежит в ~/.1C/1cestart. + КаталогУстановки = Новый Файл("/opt/1C/v8.3/i386"); + Если НЕ КаталогУстановки.Существует() Тогда + КаталогУстановки = Новый Файл("/opt/1C/v8.3/x86_64"); + КонецЕсли; + НужныйФайлПлатформы = Новый Файл(Строка(КаталогУстановки.ПолноеИмя) + "/" + "1cv8"); + КонецЕсли; + + Если Не НужныйФайлПлатформы.Существует() Тогда + ВызватьИсключение "Ошибка определения версии платформы. Файл <"+НужныйФайлПлатформы.ПолноеИмя+"> не существует"; + КонецЕсли; + + Возврат НужныйФайлПлатформы.ПолноеИмя; КонецФункции Процедура УстановитьКлючРазрешенияЗапуска(Знач Ключ) Экспорт - мКонтекстКоманды.КлючРазрешенияЗапуска = Ключ; + мКонтекстКоманды.КлючРазрешенияЗапуска = Ключ; КонецПроцедуры Процедура УстановитьКодЯзыка(Знач Код) Экспорт - мКонтекстКоманды.КодЯзыка = Код; - Если ПустаяСтрока(мКонтекстКоманды.КодЯзыкаСеанса) Тогда - мКонтекстКоманды.КодЯзыкаСеанса = Код; - КонецЕсли; + мКонтекстКоманды.КодЯзыка = Код; + Если ПустаяСтрока(мКонтекстКоманды.КодЯзыкаСеанса) Тогда + мКонтекстКоманды.КодЯзыкаСеанса = Код; + КонецЕсли; КонецПроцедуры Процедура УстановитьКодЯзыкаСеанса(Знач Код) Экспорт - мКонтекстКоманды.КодЯзыкаСеанса = Код; + мКонтекстКоманды.КодЯзыкаСеанса = Код; КонецПроцедуры Функция ВыводКоманды() Экспорт - Возврат мВыводКоманды; + Возврат мВыводКоманды; КонецФункции Функция КаталогСборки(Знач Каталог = "") Экспорт - Если мКаталогСборки = Неопределено Тогда - мКаталогСборки = ТекущийКаталог(); - КонецЕсли; + Если мКаталогСборки = Неопределено Тогда + мКаталогСборки = ТекущийКаталог(); + КонецЕсли; - Если Каталог = "" Тогда - Возврат мКаталогСборки; - Иначе - ТекКаталог = мКаталогСборки; - мКаталогСборки = Каталог; - Возврат ТекКаталог; - КонецЕсли; + Если Каталог = "" Тогда + Возврат мКаталогСборки; + Иначе + ТекКаталог = мКаталогСборки; + мКаталогСборки = Каталог; + Возврат ТекКаталог; + КонецЕсли; КонецФункции Функция ПутьКПлатформе1С(Знач Путь = "") Экспорт - Если Путь = "" Тогда - Возврат мПутьКПлатформе1С; - Иначе - ФайлПлатформы = Новый Файл(Путь); - Если Не ФайлПлатформы.Существует() Тогда - ВызватьИсключение "Нельзя установить несуществующий путь к платформе: " + ФайлПлатформы.ПолноеИмя; - КонецЕсли; - - ТекЗначение = мПутьКПлатформе1С; - мПутьКПлатформе1С = Путь; - Возврат ТекЗначение; - КонецЕсли; + Если Путь = "" Тогда + Возврат мПутьКПлатформе1С; + Иначе + ФайлПлатформы = Новый Файл(Путь); + Если Не ФайлПлатформы.Существует() Тогда + ВызватьИсключение "Нельзя установить несуществующий путь к платформе: " + ФайлПлатформы.ПолноеИмя; + КонецЕсли; + + ТекЗначение = мПутьКПлатформе1С; + мПутьКПлатформе1С = Путь; + Возврат ТекЗначение; + КонецЕсли; КонецФункции Процедура ИспользоватьВерсиюПлатформы(Знач МаскаВерсии) Экспорт - Путь = ПолучитьПутьКВерсииПлатформы(МаскаВерсии); - ПутьКПлатформе1С(Путь); + Путь = ПолучитьПутьКВерсииПлатформы(МаскаВерсии); + ПутьКПлатформе1С(Путь); КонецПроцедуры Функция ПутьКТонкомуКлиенту1С(Знач ПутьКПлатформе1С = "") Экспорт - Лог.Отладка("ПутьКТонкомуКлиенту1С: Путь платформы 1С <"+ПутьКПлатформе1С+">"); - Если ПутьКПлатформе1С = "" Тогда - ПутьКПлатформе1С = ПутьКПлатформе1С(); - Лог.Отладка("ПутьКТонкомуКлиенту1С: вычислили Путь платформы 1С <"+ПутьКПлатформе1С+">"); - КонецЕсли; - - ФайлПриложения = Новый Файл(ПутьКПлатформе1С); - Каталог = ФайлПриложения.Путь; - ИмяФайлаТонкогоКлиента = ?(ЭтоWindows=Истина, "1cv8c.exe", "1cv8c"); - ФайлПриложения = Новый Файл(ОбъединитьПути(Каталог, ИмяФайлаТонкогоКлиента)); - Если Не ФайлПриложения.Существует() Тогда - ВызватьИсключение "Не установлен тонкий клиент"; - КонецЕсли; - - Лог.Отладка("ПутьКТонкомуКлиенту1С: получили путь к тонкому клиенту 1С <"+ФайлПриложения.ПолноеИмя+">"); - Возврат ФайлПриложения.ПолноеИмя; + Лог.Отладка("ПутьКТонкомуКлиенту1С: Путь платформы 1С <"+ПутьКПлатформе1С+">"); + Если ПутьКПлатформе1С = "" Тогда + ПутьКПлатформе1С = ПутьКПлатформе1С(); + Лог.Отладка("ПутьКТонкомуКлиенту1С: вычислили Путь платформы 1С <"+ПутьКПлатформе1С+">"); + КонецЕсли; + + ФайлПриложения = Новый Файл(ПутьКПлатформе1С); + Каталог = ФайлПриложения.Путь; + ИмяФайлаТонкогоКлиента = ?(ЭтоWindows=Истина, "1cv8c.exe", "1cv8c"); + ФайлПриложения = Новый Файл(ОбъединитьПути(Каталог, ИмяФайлаТонкогоКлиента)); + Если Не ФайлПриложения.Существует() Тогда + ВызватьИсключение "Не установлен тонкий клиент"; + КонецЕсли; + + Лог.Отладка("ПутьКТонкомуКлиенту1С: получили путь к тонкому клиенту 1С <"+ФайлПриложения.ПолноеИмя+">"); + Возврат ФайлПриложения.ПолноеИмя; КонецФункции Процедура УстановитьИмяФайлаСообщенийПлатформы(Знач Имя) Экспорт - мИмяФайлаИнформации = Имя; // если будет абс. путь, то ОбъединитьПути отработает корректно. + мИмяФайлаИнформации = Имя; // если будет абс. путь, то ОбъединитьПути отработает корректно. КонецПроцедуры Процедура УдалитьВременнуюБазу() Экспорт - Если ВременнаяБазаСуществует() Тогда - КаталогВременнойБазы = ПутьКВременнойБазе(); - Лог.Отладка("Удаляю временную базу: "+КаталогВременнойБазы); - УдалитьФайлы(КаталогВременнойБазы); - КонецЕсли; + Если ВременнаяБазаСуществует() Тогда + КаталогВременнойБазы = ПутьКВременнойБазе(); + Лог.Отладка("Удаляю временную базу: "+КаталогВременнойБазы); + УдалитьФайлы(КаталогВременнойБазы); + КонецЕсли; КонецПроцедуры Функция СобратьВозможныеКаталогиУстановкиПлатформыWindows() - СИ = Новый СистемнаяИнформация; - - // Ищем в расположениях для Vista и выше. - // Желающие поддержать пути в Windows XP - welcome - КаталогВсеПользователи = СИ.ПолучитьПеременнуюСреды("ALLUSERSPROFILE"); - КаталогТекущегоПользователя = СИ.ПолучитьПеременнуюСреды("APPDATA"); - - МассивПутей = Новый Массив; - СуффиксРасположения = "1C\1CEStart\1CEStart.cfg"; - - ОбщийКонфиг = ОбъединитьПути(КаталогВсеПользователи, СуффиксРасположения); - ДополнитьМассивРасположенийИзКонфигурационногоФайла(ОбщийКонфиг, МассивПутей); - - ПользовательскийКонфиг = ОбъединитьПути(КаталогТекущегоПользователя, СуффиксРасположения); - ДополнитьМассивРасположенийИзКонфигурационногоФайла(ПользовательскийКонфиг, МассивПутей); - - Возврат МассивПутей; - + СИ = Новый СистемнаяИнформация; + + // Ищем в расположениях для Vista и выше. + // Желающие поддержать пути в Windows XP - welcome + КаталогВсеПользователи = СИ.ПолучитьПеременнуюСреды("ALLUSERSPROFILE"); + КаталогТекущегоПользователя = СИ.ПолучитьПеременнуюСреды("APPDATA"); + + МассивПутей = Новый Массив; + СуффиксРасположения = "1C\1CEStart\1CEStart.cfg"; + + ОбщийКонфиг = ОбъединитьПути(КаталогВсеПользователи, СуффиксРасположения); + ДополнитьМассивРасположенийИзКонфигурационногоФайла(ОбщийКонфиг, МассивПутей); + + ПользовательскийКонфиг = ОбъединитьПути(КаталогТекущегоПользователя, СуффиксРасположения); + ДополнитьМассивРасположенийИзКонфигурационногоФайла(ПользовательскийКонфиг, МассивПутей); + + Возврат МассивПутей; + КонецФункции Процедура ДополнитьМассивРасположенийИзКонфигурационногоФайла(Знач ИмяФайла, Знач МассивПутей) - - ФайлКонфига = Новый Файл(ИмяФайла); - Если Не ФайлКонфига.Существует() Тогда - Лог.Отладка("Конфигурационный файл " + ИмяФайла + " не найден."); - Возврат; - КонецЕсли; - - Лог.Отладка("Читаю конфигурационный файл " + ИмяФайла + "."); - Конфиг = Новый КонфигурацияСтартера; - Конфиг.Открыть(ИмяФайла); - - Значения = Конфиг.ПолучитьСписок("InstalledLocation"); - Если Значения <> Неопределено Тогда - Для Каждого Путь Из Значения Цикл - МассивПутей.Добавить(Путь); - КонецЦикла; - КонецЕсли; - + + ФайлКонфига = Новый Файл(ИмяФайла); + Если Не ФайлКонфига.Существует() Тогда + Лог.Отладка("Конфигурационный файл " + ИмяФайла + " не найден."); + Возврат; + КонецЕсли; + + Лог.Отладка("Читаю конфигурационный файл " + ИмяФайла + "."); + Конфиг = Новый КонфигурацияСтартера; + Конфиг.Открыть(ИмяФайла); + + Значения = Конфиг.ПолучитьСписок("InstalledLocation"); + Если Значения <> Неопределено Тогда + Для Каждого Путь Из Значения Цикл + МассивПутей.Добавить(Путь); + КонецЦикла; + КонецЕсли; + КонецПроцедуры ////////////////////////////////////////////////////////////////////////////////// @@ -705,282 +760,282 @@ Функция СтандартныеПараметрыЗапускаКонфигуратора() - Лог.Отладка("КлючСоединенияСБазой "+КлючСоединенияСБазой()); - Лог.Отладка("ИмяПользователя <"+мКонтекстКоманды.ИмяПользователя+">"); - - ПараметрыЗапуска = Новый Массив; - ПараметрыЗапуска.Добавить("DESIGNER"); - ПараметрыЗапуска.Добавить(КлючСоединенияСБазой()); - - ПараметрыЗапуска.Добавить("/Out" + ОбернутьВКавычки(ФайлИнформации())); - Если Не ПустаяСтрока(мКонтекстКоманды.ИмяПользователя) Тогда - ПараметрыЗапуска.Добавить("/N" + ОбернутьВКавычки(мКонтекстКоманды.ИмяПользователя)); - КонецЕсли; - Если Не ПустаяСтрока(мКонтекстКоманды.Пароль) Тогда - ПараметрыЗапуска.Добавить("/P" + ОбернутьВКавычки(мКонтекстКоманды.Пароль)); - КонецЕсли; - ПараметрыЗапуска.Добавить("/WA+"); - Если Не ПустаяСтрока(мКонтекстКоманды.КлючРазрешенияЗапуска) Тогда - ПараметрыЗапуска.Добавить("/UC" + ОбернутьВКавычки(мКонтекстКоманды.КлючРазрешенияЗапуска)); - КонецЕсли; - Если НЕ ПустаяСтрока(мКонтекстКоманды.КодЯзыка) Тогда - ПараметрыЗапуска.Добавить("/L"+мКонтекстКоманды.КодЯзыка); - КонецЕсли; - Если НЕ ПустаяСтрока(мКонтекстКоманды.КодЯзыкаСеанса) Тогда - ПараметрыЗапуска.Добавить("/VL"+мКонтекстКоманды.КодЯзыкаСеанса); - КонецЕсли; - ПараметрыЗапуска.Добавить("/DisableStartupMessages"); - ПараметрыЗапуска.Добавить("/DisableStartupDialogs"); - - Возврат ПараметрыЗапуска; + Лог.Отладка("КлючСоединенияСБазой "+КлючСоединенияСБазой()); + Лог.Отладка("ИмяПользователя <"+мКонтекстКоманды.ИмяПользователя+">"); + + ПараметрыЗапуска = Новый Массив; + ПараметрыЗапуска.Добавить("DESIGNER"); + ПараметрыЗапуска.Добавить(КлючСоединенияСБазой()); + + ПараметрыЗапуска.Добавить("/Out" + ОбернутьВКавычки(ФайлИнформации())); + Если Не ПустаяСтрока(мКонтекстКоманды.ИмяПользователя) Тогда + ПараметрыЗапуска.Добавить("/N" + ОбернутьВКавычки(мКонтекстКоманды.ИмяПользователя)); + КонецЕсли; + Если Не ПустаяСтрока(мКонтекстКоманды.Пароль) Тогда + ПараметрыЗапуска.Добавить("/P" + ОбернутьВКавычки(мКонтекстКоманды.Пароль)); + КонецЕсли; + ПараметрыЗапуска.Добавить("/WA+"); + Если Не ПустаяСтрока(мКонтекстКоманды.КлючРазрешенияЗапуска) Тогда + ПараметрыЗапуска.Добавить("/UC" + ОбернутьВКавычки(мКонтекстКоманды.КлючРазрешенияЗапуска)); + КонецЕсли; + Если НЕ ПустаяСтрока(мКонтекстКоманды.КодЯзыка) Тогда + ПараметрыЗапуска.Добавить("/L"+мКонтекстКоманды.КодЯзыка); + КонецЕсли; + Если НЕ ПустаяСтрока(мКонтекстКоманды.КодЯзыкаСеанса) Тогда + ПараметрыЗапуска.Добавить("/VL"+мКонтекстКоманды.КодЯзыкаСеанса); + КонецЕсли; + ПараметрыЗапуска.Добавить("/DisableStartupMessages"); + ПараметрыЗапуска.Добавить("/DisableStartupDialogs"); + + Возврат ПараметрыЗапуска; КонецФункции Процедура ПроверитьВозможностьВыполненияКоманды() - Если Не ЗначениеЗаполнено(ПутьКПлатформе1С()) Тогда - ВызватьИсключение "Не задан путь к платформе 1С"; - КонецЕсли; + Если Не ЗначениеЗаполнено(ПутьКПлатформе1С()) Тогда + ВызватьИсключение "Не задан путь к платформе 1С"; + КонецЕсли; - Лог.Отладка("Проверяю равенство КлючСоединенияСБазой() = КлючВременногоКонтекста() и Не ВременнаяБазаСуществует()"); - Лог.Отладка("КлючСоединенияСБазой() "+КлючСоединенияСБазой()); - Лог.Отладка("КлючВременногоКонтекста() "+КлючВременногоКонтекста()); - Лог.Отладка("ВременнаяБазаСуществует() "+ВременнаяБазаСуществует()); + Лог.Отладка("Проверяю равенство КлючСоединенияСБазой() = КлючВременногоКонтекста() и Не ВременнаяБазаСуществует()"); + Лог.Отладка("КлючСоединенияСБазой() "+КлючСоединенияСБазой()); + Лог.Отладка("КлючВременногоКонтекста() "+КлючВременногоКонтекста()); + Лог.Отладка("ВременнаяБазаСуществует() "+ВременнаяБазаСуществует()); - Если КлючСоединенияСБазой() = КлючВременногоКонтекста() и Не ВременнаяБазаСуществует() Тогда - Лог.Отладка("Равенство выполняется."); - СоздатьВременнуюБазу(); - Иначе - Лог.Отладка("Равенство не выполняется."); - КонецЕсли; + Если КлючСоединенияСБазой() = КлючВременногоКонтекста() и Не ВременнаяБазаСуществует() Тогда + Лог.Отладка("Равенство выполняется."); + СоздатьВременнуюБазу(); + Иначе + Лог.Отладка("Равенство не выполняется."); + КонецЕсли; КонецПроцедуры Функция КлючСоединенияСБазой() - Если ПустаяСтрока(мКонтекстКоманды.КлючСоединенияСБазой) Тогда - Возврат КлючВременногоКонтекста(); - Иначе - Возврат мКонтекстКоманды.КлючСоединенияСБазой; - КонецЕсли; + Если ПустаяСтрока(мКонтекстКоманды.КлючСоединенияСБазой) Тогда + Возврат КлючВременногоКонтекста(); + Иначе + Возврат мКонтекстКоманды.КлючСоединенияСБазой; + КонецЕсли; КонецФункции Процедура СоздатьВременнуюБазу() - КаталогВременнойБазы = ПутьКВременнойБазе(); - Лог.Отладка("Создаю временную базу. Путь "+КаталогВременнойБазы); + КаталогВременнойБазы = ПутьКВременнойБазе(); + Лог.Отладка("Создаю временную базу. Путь "+КаталогВременнойБазы); - СоздатьФайловуюБазу(КаталогВременнойБазы); + СоздатьФайловуюБазу(КаталогВременнойБазы); КонецПроцедуры Функция ЗапуститьИПодождать(Знач Параметры) - СтрокаЗапуска = ""; - СтрокаДляЛога = ""; - Для Каждого Параметр Из Параметры Цикл + СтрокаЗапуска = ""; + СтрокаДляЛога = ""; + Для Каждого Параметр Из Параметры Цикл - СтрокаЗапуска = СтрокаЗапуска + " " + Параметр; + СтрокаЗапуска = СтрокаЗапуска + " " + Параметр; - Если Лев(Параметр,2) <> "/P" и Лев(Параметр,25) <> "/ConfigurationRepositoryP" Тогда - СтрокаДляЛога = СтрокаДляЛога + " " + Параметр; - КонецЕсли; + Если Лев(Параметр,2) <> "/P" и Лев(Параметр,25) <> "/ConfigurationRepositoryP" Тогда + СтрокаДляЛога = СтрокаДляЛога + " " + Параметр; + КонецЕсли; - КонецЦикла; + КонецЦикла; - КодВозврата = 0; + КодВозврата = 0; - Приложение = ОбернутьВКавычки(ПутьКПлатформе1С()); - Лог.Отладка(Приложение + СтрокаДляЛога); + Приложение = ОбернутьВКавычки(ПутьКПлатформе1С()); + Лог.Отладка(Приложение + СтрокаДляЛога); - Если ЭтоWindows = Ложь Тогда - СтрокаЗапуска = "sh -c '"+Приложение + СтрокаЗапуска + "'"; - Иначе - СтрокаЗапуска = Приложение + СтрокаЗапуска; - КонецЕсли; - ЗапуститьПриложение(СтрокаЗапуска, , Истина, КодВозврата); + Если ЭтоWindows = Ложь Тогда + СтрокаЗапуска = "sh -c '"+Приложение + СтрокаЗапуска + "'"; + Иначе + СтрокаЗапуска = Приложение + СтрокаЗапуска; + КонецЕсли; + ЗапуститьПриложение(СтрокаЗапуска, , Истина, КодВозврата); - Возврат КодВозврата; + Возврат КодВозврата; КонецФункции Функция ПрочитатьФайлИнформации() - Текст = ""; + Текст = ""; - Файл = Новый Файл(ФайлИнформации()); - Если Файл.Существует() Тогда - Чтение = Новый ЧтениеТекста(Файл.ПолноеИмя); - Текст = Чтение.Прочитать(); - Чтение.Закрыть(); - Иначе - Текст = "Информации об ошибке нет"; - КонецЕсли; + Файл = Новый Файл(ФайлИнформации()); + Если Файл.Существует() Тогда + Чтение = Новый ЧтениеТекста(Файл.ПолноеИмя); + Текст = Чтение.Прочитать(); + Чтение.Закрыть(); + Иначе + Текст = "Информации об ошибке нет"; + КонецЕсли; - Лог.Отладка("файл информации: - |"+Текст); - Возврат Текст; + Лог.Отладка("файл информации: + |"+Текст); + Возврат Текст; КонецФункции Процедура УстановитьВывод(Знач Сообщение) - мВыводКоманды = Сообщение; + мВыводКоманды = Сообщение; КонецПроцедуры Функция ФайлИнформации() Экспорт - Если мИмяФайлаИнформации = Неопределено Тогда - выделенныйВременныйФайл = ПолучитьИмяВременногоФайла("txt"); - указательНаВременныйФайл = Новый Файл(выделенныйВременныйФайл); - мИмяФайлаИнформации = указательНаВременныйФайл.Имя; - указательНаВременныйФайл = ""; - КонецЕсли; - - Возврат ОбъединитьПути(КаталогСборки(), мИмяФайлаИнформации); + Если мИмяФайлаИнформации = Неопределено Тогда + выделенныйВременныйФайл = ПолучитьИмяВременногоФайла("txt"); + указательНаВременныйФайл = Новый Файл(выделенныйВременныйФайл); + мИмяФайлаИнформации = указательНаВременныйФайл.Имя; + указательНаВременныйФайл = ""; + КонецЕсли; + + Возврат ОбъединитьПути(КаталогСборки(), мИмяФайлаИнформации); КонецФункции Процедура ОбеспечитьКаталог(Знач Каталог) - Файл = Новый Файл(Каталог); - Если Не Файл.Существует() Тогда - СоздатьКаталог(Каталог); - ИначеЕсли Не Файл.ЭтоКаталог() Тогда - ВызватьИсключение "Каталог " + Каталог + " не является каталогом"; - КонецЕсли; + Файл = Новый Файл(Каталог); + Если Не Файл.Существует() Тогда + СоздатьКаталог(Каталог); + ИначеЕсли Не Файл.ЭтоКаталог() Тогда + ВызватьИсключение "Каталог " + Каталог + " не является каталогом"; + КонецЕсли; КонецПроцедуры Функция КлючВременногоКонтекста() - Возврат "/F""" + ПутьКВременнойБазе() + """"; + Возврат "/F""" + ПутьКВременнойБазе() + """"; КонецФункции Функция ВременнаяБазаСуществует() Экспорт - ФайлБазы = Новый Файл(ОбъединитьПути(ПутьКВременнойБазе(), "1Cv8.1CD")); - - Возврат ФайлБазы.Существует(); + ФайлБазы = Новый Файл(ОбъединитьПути(ПутьКВременнойБазе(), "1Cv8.1CD")); + + Возврат ФайлБазы.Существует(); КонецФункции Функция ХранилищеКонфигурацииСуществует(Знач ПапкаХранилища) Экспорт - ФайлБазы = Новый Файл(ОбъединитьПути(ПапкаХранилища, "1cv8ddb.1CD")); - - Возврат ФайлБазы.Существует(); + ФайлБазы = Новый Файл(ОбъединитьПути(ПапкаХранилища, "1cv8ddb.1CD")); + + Возврат ФайлБазы.Существует(); КонецФункции Функция РазложитьСтрокуВМассивПодстрок(ИсходнаяСтрока, Разделитель) - МассивПодстрок = Новый Массив; - ОстатокСтроки = ИсходнаяСтрока; + МассивПодстрок = Новый Массив; + ОстатокСтроки = ИсходнаяСтрока; - Поз = -1; - Пока Поз <> 0 Цикл + Поз = -1; + Пока Поз <> 0 Цикл - Поз = Найти(ОстатокСтроки, Разделитель); - Если Поз > 0 Тогда - Подстрока = Лев(ОстатокСтроки, Поз-1); - ОстатокСтроки = Сред(ОстатокСтроки, Поз+1); - Иначе - Подстрока = ОстатокСтроки; - КонецЕсли; + Поз = Найти(ОстатокСтроки, Разделитель); + Если Поз > 0 Тогда + Подстрока = Лев(ОстатокСтроки, Поз-1); + ОстатокСтроки = Сред(ОстатокСтроки, Поз+1); + Иначе + Подстрока = ОстатокСтроки; + КонецЕсли; - МассивПодстрок.Добавить(Подстрока); + МассивПодстрок.Добавить(Подстрока); - КонецЦикла; + КонецЦикла; - Возврат МассивПодстрок; + Возврат МассивПодстрок; КонецФункции Функция ОбернутьВКавычки(Знач Строка); - Если Лев(Строка, 1) = """" и Прав(Строка, 1) = """" Тогда - Возврат Строка; - Иначе - Возврат """" + Строка + """"; - КонецЕсли; + Если Лев(Строка, 1) = """" и Прав(Строка, 1) = """" Тогда + Возврат Строка; + Иначе + Возврат """" + Строка + """"; + КонецЕсли; КонецФункции Процедура Инициализация() - СистемнаяИнформация = Новый СистемнаяИнформация; - ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0; + СистемнаяИнформация = Новый СистемнаяИнформация; + ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0; - мКонтекстКоманды = Новый Структура; - мКонтекстКоманды.Вставить("КлючСоединенияСБазой", ""); - мКонтекстКоманды.Вставить("ИмяПользователя", ""); - мКонтекстКоманды.Вставить("Пароль", ""); - мКонтекстКоманды.Вставить("КлючРазрешенияЗапуска", ""); - мКонтекстКоманды.Вставить("КодЯзыка", ""); - мКонтекстКоманды.Вставить("КодЯзыкаСеанса", ""); + мКонтекстКоманды = Новый Структура; + мКонтекстКоманды.Вставить("КлючСоединенияСБазой", ""); + мКонтекстКоманды.Вставить("ИмяПользователя", ""); + мКонтекстКоманды.Вставить("Пароль", ""); + мКонтекстКоманды.Вставить("КлючРазрешенияЗапуска", ""); + мКонтекстКоманды.Вставить("КодЯзыка", ""); + мКонтекстКоманды.Вставить("КодЯзыкаСеанса", ""); - ПутьКПлатформе1С(ПолучитьПутьКВерсииПлатформы("8.3")); + ПутьКПлатформе1С(ПолучитьПутьКВерсииПлатформы("8.3")); КонецПроцедуры Функция СкопироватьСтруктуру(Знач Источник) - Копия = Новый Структура; - Для Каждого КлючИЗначение Из Источник Цикл - Копия.Вставить(КлючИЗначение.Ключ, КлючИЗначение.Значение); - КонецЦикла; + Копия = Новый Структура; + Для Каждого КлючИЗначение Из Источник Цикл + Копия.Вставить(КлючИЗначение.Ключ, КлючИЗначение.Значение); + КонецЦикла; - Возврат Копия; + Возврат Копия; КонецФункции Процедура ПолучитьИзмененияКонфигурацииБазыДанныхИзХранилища(Знач СтрокаСоединения, Знач ПользовательХранилища, Знач ПарольХранилища="") Экспорт - ПараметрыСвязиСБазой = СтандартныеПараметрыЗапускаКонфигуратора(); - - ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryF """+СтрокаСоединения+""""); - ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryN """+ПользовательХранилища+""""); - - Если Не ПустаяСтрока(ПарольХранилища) Тогда - ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryP """+ПарольХранилища+""""); - КонецЕсли; - - ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryUpdateCfg"); - ПараметрыСвязиСБазой.Добавить("-force"); - - ВыполнитьКоманду(ПараметрыСвязиСБазой); + ПараметрыСвязиСБазой = СтандартныеПараметрыЗапускаКонфигуратора(); + + ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryF """+СтрокаСоединения+""""); + ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryN """+ПользовательХранилища+""""); + + Если Не ПустаяСтрока(ПарольХранилища) Тогда + ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryP """+ПарольХранилища+""""); + КонецЕсли; + + ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryUpdateCfg"); + ПараметрыСвязиСБазой.Добавить("-force"); + + ВыполнитьКоманду(ПараметрыСвязиСБазой); КонецПроцедуры Процедура ОбновитьКонфигурациюБазыДанныхИзХранилища(СтрокаСоединения, ПользовательХранилища, ПарольХранилища="") Экспорт - ПараметрыСвязиСБазой = СтандартныеПараметрыЗапускаКонфигуратора(); - - ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryF """+СтрокаСоединения+""""); - ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryN """+ПользовательХранилища+""""); - - Если Не ПустаяСтрока(ПарольХранилища) Тогда - ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryP """+ПарольХранилища+""""); - КонецЕсли; - - ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryUpdateCfg"); - ПараметрыСвязиСБазой.Добавить("-force"); - - ПараметрыСвязиСБазой.Добавить("/UpdateDBCfg"); - - ВыполнитьКоманду(ПараметрыСвязиСБазой); + ПараметрыСвязиСБазой = СтандартныеПараметрыЗапускаКонфигуратора(); + + ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryF """+СтрокаСоединения+""""); + ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryN """+ПользовательХранилища+""""); + + Если Не ПустаяСтрока(ПарольХранилища) Тогда + ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryP """+ПарольХранилища+""""); + КонецЕсли; + + ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryUpdateCfg"); + ПараметрыСвязиСБазой.Добавить("-force"); + + ПараметрыСвязиСБазой.Добавить("/UpdateDBCfg"); + + ВыполнитьКоманду(ПараметрыСвязиСБазой); КонецПроцедуры Функция ВариантОбработкиНесуществующихСсылок() Экспорт - Варианты = Новый Структура; - Варианты.Вставить("СоздаватьОбъекты", 1); - Варианты.Вставить("ОчищатьОбъекты", 2); - Варианты.Вставить("НеИзменять", 3); + Варианты = Новый Структура; + Варианты.Вставить("СоздаватьОбъекты", 1); + Варианты.Вставить("ОчищатьОбъекты", 2); + Варианты.Вставить("НеИзменять", 3); - Возврат Новый ФиксированнаяСтруктура(Варианты); + Возврат Новый ФиксированнаяСтруктура(Варианты); КонецФункции // ИмяФункции() Функция ВариантОбработкиЧастичнойПотериДанных() Экспорт - - Варианты = Новый Структура; - Варианты.Вставить("СоздаватьОбъекты", 1); - Варианты.Вставить("УдалятьОбъекты", 2); + + Варианты = Новый Структура; + Варианты.Вставить("СоздаватьОбъекты", 1); + Варианты.Вставить("УдалятьОбъекты", 2); - Возврат Новый ФиксированнаяСтруктура(Варианты); + Возврат Новый ФиксированнаяСтруктура(Варианты); КонецФункции // ИмяФункции() @@ -998,23 +1053,23 @@ // Функция ПолучитьОпцииТиИ() Экспорт - ВариантыОбработкиНесуществующихСсылок = ВариантОбработкиНесуществующихСсылок(); - ВариантыОбработкиЧастичнойПотериДанных = ВариантОбработкиЧастичнойПотериДанных(); + ВариантыОбработкиНесуществующихСсылок = ВариантОбработкиНесуществующихСсылок(); + ВариантыОбработкиЧастичнойПотериДанных = ВариантОбработкиЧастичнойПотериДанных(); - СтруктураОпцииТиИ = Новый Структура; - СтруктураОпцииТиИ.Вставить("ТолькоТестирование", Истина); - СтруктураОпцииТиИ.Вставить("Реиндексация", Истина); - СтруктураОпцииТиИ.Вставить("ЛогическаяЦелостность", Истина); - СтруктураОпцииТиИ.Вставить("ЛогическаяИСсылочнаяЦелостность", Истина); - СтруктураОпцииТиИ.Вставить("ПересчетИтогов", Истина); - СтруктураОпцииТиИ.Вставить("СжатиеТаблиц", Истина); - СтруктураОпцииТиИ.Вставить("Реструктуризация", Истина); - СтруктураОпцииТиИ.Вставить("ВариантОбработкиНесуществующихСсылок", ВариантыОбработкиНесуществующихСсылок.СоздаватьОбъекты); - СтруктураОпцииТиИ.Вставить("ВариантОбработкиЧастичнойПотериДанных", ВариантыОбработкиЧастичнойПотериДанных.СоздаватьОбъекты); - СтруктураОпцииТиИ.Вставить("ПродолжитьТиИСТочкиПрерывания", Ложь); - СтруктураОпцииТиИ.Вставить("МаксВремяТестирования", ""); - Возврат СтруктураОпцииТиИ; + СтруктураОпцииТиИ = Новый Структура; + СтруктураОпцииТиИ.Вставить("ТолькоТестирование", Истина); + СтруктураОпцииТиИ.Вставить("Реиндексация", Истина); + СтруктураОпцииТиИ.Вставить("ЛогическаяЦелостность", Истина); + СтруктураОпцииТиИ.Вставить("ЛогическаяИСсылочнаяЦелостность", Истина); + СтруктураОпцииТиИ.Вставить("ПересчетИтогов", Истина); + СтруктураОпцииТиИ.Вставить("СжатиеТаблиц", Истина); + СтруктураОпцииТиИ.Вставить("Реструктуризация", Истина); + СтруктураОпцииТиИ.Вставить("ВариантОбработкиНесуществующихСсылок", ВариантыОбработкиНесуществующихСсылок.СоздаватьОбъекты); + СтруктураОпцииТиИ.Вставить("ВариантОбработкиЧастичнойПотериДанных", ВариантыОбработкиЧастичнойПотериДанных.СоздаватьОбъекты); + СтруктураОпцииТиИ.Вставить("ПродолжитьТиИСТочкиПрерывания", Ложь); + СтруктураОпцииТиИ.Вставить("МаксВремяТестирования", ""); + Возврат СтруктураОпцииТиИ; КонецФункции // ПолучитьОпцииТиИ() @@ -1039,38 +1094,38 @@ // Процедура ЗапуститьТестированиеИИсправление(Параметры = Неопределено) Экспорт - ПараметрыСвязиСБазой = СтандартныеПараметрыЗапускаКонфигуратора(); - ВариантыОбработкиНесуществующихСсылок = ВариантОбработкиНесуществующихСсылок(); - ВариантыОбработкиЧастичнойПотериДанных = ВариантОбработкиЧастичнойПотериДанных(); + ПараметрыСвязиСБазой = СтандартныеПараметрыЗапускаКонфигуратора(); + ВариантыОбработкиНесуществующихСсылок = ВариантОбработкиНесуществующихСсылок(); + ВариантыОбработкиЧастичнойПотериДанных = ВариантОбработкиЧастичнойПотериДанных(); - Если Параметры = Неопределено Тогда - Параметры = ПолучитьОпцииТиИ(); - КонецЕсли; + Если Параметры = Неопределено Тогда + Параметры = ПолучитьОпцииТиИ(); + КонецЕсли; - СтрокаОпций = "/IBCheckAndRepair"; - СтрокаОпций = СтрокаОпций + ?(Параметры.ТолькоТестирование, " -TestOnly", ""); - СтрокаОпций = СтрокаОпций + ?(Параметры.Реиндексация, " -ReIndex", ""); - СтрокаОпций = СтрокаОпций + ?(Параметры.ЛогическаяЦелостность, " -LogIntegrity", ""); - СтрокаОпций = СтрокаОпций + ?(Параметры.ЛогическаяИСсылочнаяЦелостность, " -LogAndRefsIntegrity", ""); - СтрокаОпций = СтрокаОпций + ?(Параметры.ПересчетИтогов, " -RecalcTotals", ""); - СтрокаОпций = СтрокаОпций + ?(Параметры.СжатиеТаблиц, " -IBCompression", ""); - СтрокаОпций = СтрокаОпций + ?(Параметры.Реструктуризация, " -Rebuild", ""); + СтрокаОпций = "/IBCheckAndRepair"; + СтрокаОпций = СтрокаОпций + ?(Параметры.ТолькоТестирование, " -TestOnly", ""); + СтрокаОпций = СтрокаОпций + ?(Параметры.Реиндексация, " -ReIndex", ""); + СтрокаОпций = СтрокаОпций + ?(Параметры.ЛогическаяЦелостность, " -LogIntegrity", ""); + СтрокаОпций = СтрокаОпций + ?(Параметры.ЛогическаяИСсылочнаяЦелостность, " -LogAndRefsIntegrity", ""); + СтрокаОпций = СтрокаОпций + ?(Параметры.ПересчетИтогов, " -RecalcTotals", ""); + СтрокаОпций = СтрокаОпций + ?(Параметры.СжатиеТаблиц, " -IBCompression", ""); + СтрокаОпций = СтрокаОпций + ?(Параметры.Реструктуризация, " -Rebuild", ""); - БитыеСсылки = Параметры.ВариантОбработкиНесуществующихСсылок; - СтрокаОпций = СтрокаОпций + ?(БитыеСсылки = ВариантыОбработкиНесуществующихСсылок.СоздаватьОбъекты, " -BadRefCreate", ?(БитыеСсылки = ВариантыОбработкиНесуществующихСсылок.ОчищатьОбъекты, " -BadRefClear", " -BadRefNone")); + БитыеСсылки = Параметры.ВариантОбработкиНесуществующихСсылок; + СтрокаОпций = СтрокаОпций + ?(БитыеСсылки = ВариантыОбработкиНесуществующихСсылок.СоздаватьОбъекты, " -BadRefCreate", ?(БитыеСсылки = ВариантыОбработкиНесуществующихСсылок.ОчищатьОбъекты, " -BadRefClear", " -BadRefNone")); - ЧастичнаяПотеря = Параметры.ВариантОбработкиЧастичнойПотериДанных; - СтрокаОпций = СтрокаОпций + ?(ЧастичнаяПотеря = ВариантыОбработкиЧастичнойПотериДанных.СоздаватьОбъекты, " -BadDataCreate", " -BadDataDelete"); + ЧастичнаяПотеря = Параметры.ВариантОбработкиЧастичнойПотериДанных; + СтрокаОпций = СтрокаОпций + ?(ЧастичнаяПотеря = ВариантыОбработкиЧастичнойПотериДанных.СоздаватьОбъекты, " -BadDataCreate", " -BadDataDelete"); - СтрокаОпций = СтрокаОпций + ?(Параметры.ПродолжитьТиИСТочкиПрерывания, " -UseStartPoint", ""); + СтрокаОпций = СтрокаОпций + ?(Параметры.ПродолжитьТиИСТочкиПрерывания, " -UseStartPoint", ""); - СтрокаОпций = СтрокаОпций + ?(Параметры.МаксВремяТестирования = "", ""," -TimeLimit:" + Параметры.МаксВремяТестирования); - - ПараметрыСвязиСБазой.Добавить(СтрокаОпций); + СтрокаОпций = СтрокаОпций + ?(Параметры.МаксВремяТестирования = "", ""," -TimeLimit:" + Параметры.МаксВремяТестирования); + + ПараметрыСвязиСБазой.Добавить(СтрокаОпций); - Лог.Отладка("Параметры запуска ТиИ: " + СтрокаОпций); + Лог.Отладка("Параметры запуска ТиИ: " + СтрокаОпций); - ВыполнитьКоманду(ПараметрыСвязиСБазой); + ВыполнитьКоманду(ПараметрыСвязиСБазой); КонецПроцедуры // ИмяПроцедуры() diff --git "a/src/\320\237\321\200\320\260\320\262\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260.os" "b/src/\320\237\321\200\320\260\320\262\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260.os" new file mode 100644 index 0000000..ba4ae6d --- /dev/null +++ "b/src/\320\237\321\200\320\260\320\262\320\260\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260.os" @@ -0,0 +1,12 @@ + +Перем ТолькоЧтение Экспорт; +Перем ПравоЗахватаОбъектов Экспорт; +Перем ПравоИзмененияВерсий Экспорт; +Перем Администрирование Экспорт; + +/////////////////////////////////////////////////////////////// + +ТолькоЧтение = "ReadOnly"; +ПравоЗахватаОбъектов = "LockObjects"; +ПравоИзмененияВерсий = "ManageConfigurationVersions"; +Администрирование = "Administration"; diff --git a/tests/v8runner-test.os b/tests/v8runner-test.os index 8e8ea76..186c046 100644 --- a/tests/v8runner-test.os +++ b/tests/v8runner-test.os @@ -24,7 +24,8 @@ СписокТестов.Добавить("ТестДолжен_ПроверитьУстановкуЯзыкаИнтерфейса"); СписокТестов.Добавить("ТестДолжен_СоздатьХранилищеКонфигурации"); СписокТестов.Добавить("ТестДолжен_ПроверитьСозданиеФайловПоставки"); - + СписокТестов.Добавить("ТестДолжен_ДобавитьПользователяВХранилище"); + Возврат СписокТестов; КонецФункции @@ -142,6 +143,39 @@ КонецПроцедуры +Процедура ТестДолжен_ДобавитьПользователяВХранилище() Экспорт + + ВременныйКаталог = ВременныеФайлы.СоздатьКаталог(); + УправлениеКонфигуратором.КаталогСборки(ВременныйКаталог); + + КаталогВременногоХранилища = ОбъединитьПути(ВременныйКаталог, "v8r_TempRepository"); + + ФайлКонфигурации = ОбъединитьПути(ТекущийСценарий().Каталог, "fixtures", "1.0\1Cv8.cf"); + + + УправлениеКонфигуратором.ЗагрузитьКонфигурациюИзФайла(ФайлКонфигурации); + УправлениеКонфигуратором.СоздатьФайловоеХранилищеКонфигурации( + КаталогВременногоХранилища, + "Администратор"); + Утверждения.ПроверитьИстину(УправлениеКонфигуратором.ХранилищеКонфигурацииСуществует(КаталогВременногоХранилища), "Временное хранилище конфигурации должно существовать"); + + НовыйПользователь = "ТестовыйПользователь"; + ПарольПользователя = "ТестПароль"; + УправлениеКонфигуратором.ДобавитьПользователяВХранилище(КаталогВременногоХранилища, + "Администратор", + , + НовыйПользователь, + ПарольПользователя, + ПраваПользователяХранилища.ТолькоЧтение, + Истина); + + ПутьКФайлуВерсии = УправлениеКонфигуратором.ПолучитьВерсиюИзХранилища(КаталогВременногоХранилища, НовыйПользователь, ПарольПользователя); + + Утверждения.ПроверитьИстину(ФайлСуществует(ПутьКФайлуВерсии), "Файл конфигурации из хранилища должен существовать"); + + ВременныеФайлы.Удалить() +КонецПроцедуры + // Проверяет существование каталога // // Параметры: From 60952f7c6c88373c53eecc8ccd3854f83d880254 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A5=D0=BE=D1=80=D0=B5=D0=B2=20=D0=90=D0=BB=D0=B5=D0=BA?= =?UTF-8?q?=D1=81=D0=B5=D0=B9=20=D0=90=D0=BD=D0=B4=D1=80=D0=B5=D0=B5=D0=B2?= =?UTF-8?q?=D0=B8=D1=87?= Date: Tue, 17 Jan 2017 15:25:28 +0300 Subject: [PATCH 2/9] =?UTF-8?q?=D0=A2=D0=B0=D0=B1=D1=8B=20=D0=B8=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D0=B1=D0=B5=D0=BB=D1=8B.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/v8runner-test.os | 278 ++++++++++++++++++++--------------------- 1 file changed, 139 insertions(+), 139 deletions(-) diff --git a/tests/v8runner-test.os b/tests/v8runner-test.os index 186c046..c868628 100644 --- a/tests/v8runner-test.os +++ b/tests/v8runner-test.os @@ -6,174 +6,174 @@ Перем УправлениеКонфигуратором; Процедура Инициализация() - - УправлениеКонфигуратором = Новый УправлениеКонфигуратором; - Лог = Логирование.ПолучитьЛог("oscript.lib.v8runner"); - Лог.УстановитьУровень(УровниЛога.Отладка); + + УправлениеКонфигуратором = Новый УправлениеКонфигуратором; + Лог = Логирование.ПолучитьЛог("oscript.lib.v8runner"); + Лог.УстановитьУровень(УровниЛога.Отладка); КонецПроцедуры Функция ПолучитьСписокТестов(Тестирование) Экспорт - - юТест = Тестирование; - - СписокТестов = Новый Массив; - СписокТестов.Добавить("ТестДолжен_ИзменитьКаталогСборки"); - СписокТестов.Добавить("ТестДолжен_СоздатьВременнуюБазу"); - СписокТестов.Добавить("ТестДолжен_ПроверитьНазначениеПутиКПлатформе"); - СписокТестов.Добавить("ТестДолжен_ПроверитьУстановкуЯзыкаИнтерфейса"); - СписокТестов.Добавить("ТестДолжен_СоздатьХранилищеКонфигурации"); - СписокТестов.Добавить("ТестДолжен_ПроверитьСозданиеФайловПоставки"); - СписокТестов.Добавить("ТестДолжен_ДобавитьПользователяВХранилище"); - - Возврат СписокТестов; - + + юТест = Тестирование; + + СписокТестов = Новый Массив; + СписокТестов.Добавить("ТестДолжен_ИзменитьКаталогСборки"); + СписокТестов.Добавить("ТестДолжен_СоздатьВременнуюБазу"); + СписокТестов.Добавить("ТестДолжен_ПроверитьНазначениеПутиКПлатформе"); + СписокТестов.Добавить("ТестДолжен_ПроверитьУстановкуЯзыкаИнтерфейса"); + СписокТестов.Добавить("ТестДолжен_СоздатьХранилищеКонфигурации"); + СписокТестов.Добавить("ТестДолжен_ПроверитьСозданиеФайловПоставки"); + СписокТестов.Добавить("ТестДолжен_ДобавитьПользователяВХранилище"); + + Возврат СписокТестов; + КонецФункции Процедура ТестДолжен_ИзменитьКаталогСборки() Экспорт - - ПоУмолчанию = ТекущийКаталог(); - Утверждения.ПроверитьРавенство(УправлениеКонфигуратором.КаталогСборки(), ПоУмолчанию, "По умолчанию каталог сборки должен совпадать с текущим каталогом"); - - СтароеЗначение = УправлениеКонфигуратором.КаталогСборки(КаталогВременныхФайлов()); - Утверждения.ПроверитьРавенство(СтароеЗначение, ПоУмолчанию, "Предыдущее значение каталога должно возвращяться при его смене"); - Утверждения.ПроверитьРавенство(УправлениеКонфигуратором.КаталогСборки(), КаталогВременныхФайлов(), "Каталог сборки должен быть изменен"); - + + ПоУмолчанию = ТекущийКаталог(); + Утверждения.ПроверитьРавенство(УправлениеКонфигуратором.КаталогСборки(), ПоУмолчанию, "По умолчанию каталог сборки должен совпадать с текущим каталогом"); + + СтароеЗначение = УправлениеКонфигуратором.КаталогСборки(КаталогВременныхФайлов()); + Утверждения.ПроверитьРавенство(СтароеЗначение, ПоУмолчанию, "Предыдущее значение каталога должно возвращяться при его смене"); + Утверждения.ПроверитьРавенство(УправлениеКонфигуратором.КаталогСборки(), КаталогВременныхФайлов(), "Каталог сборки должен быть изменен"); + КонецПроцедуры Процедура ТестДолжен_СоздатьВременнуюБазу() Экспорт - - Если УправлениеКонфигуратором.ВременнаяБазаСуществует() Тогда - УдалитьФайлы(УправлениеКонфигуратором.ПутьКВременнойБазе()); - КонецЕсли; - - Утверждения.ПроверитьЛожь(УправлениеКонфигуратором.ВременнаяБазаСуществует(), "Временной базы не должно быть в каталоге <"+УправлениеКонфигуратором.ПутьКВременнойБазе()+">"); - УправлениеКонфигуратором.СоздатьФайловуюБазу(УправлениеКонфигуратором.ПутьКВременнойБазе()); - Сообщить(УправлениеКонфигуратором.ВыводКоманды()); - Утверждения.ПроверитьИстину(УправлениеКонфигуратором.ВременнаяБазаСуществует(), "Временная база должна существовать"); - УдалитьФайлы(УправлениеКонфигуратором.ПутьКВременнойБазе()); - + + Если УправлениеКонфигуратором.ВременнаяБазаСуществует() Тогда + УдалитьФайлы(УправлениеКонфигуратором.ПутьКВременнойБазе()); + КонецЕсли; + + Утверждения.ПроверитьЛожь(УправлениеКонфигуратором.ВременнаяБазаСуществует(), "Временной базы не должно быть в каталоге <"+УправлениеКонфигуратором.ПутьКВременнойБазе()+">"); + УправлениеКонфигуратором.СоздатьФайловуюБазу(УправлениеКонфигуратором.ПутьКВременнойБазе()); + Сообщить(УправлениеКонфигуратором.ВыводКоманды()); + Утверждения.ПроверитьИстину(УправлениеКонфигуратором.ВременнаяБазаСуществует(), "Временная база должна существовать"); + УдалитьФайлы(УправлениеКонфигуратором.ПутьКВременнойБазе()); + КонецПроцедуры Процедура ТестДолжен_СоздатьХранилищеКонфигурации() Экспорт - - ВременныйКаталог = ВременныеФайлы.СоздатьКаталог(); - - УправлениеКонфигуратором.КаталогСборки(ВременныйКаталог); - - КаталогВременногоХранилища = ОбъединитьПути(ВременныйКаталог, "v8r_TempRepository"); - - ФайлКонфигурации = ОбъединитьПути(ТекущийСценарий().Каталог, "fixtures", "1.0\1Cv8.cf"); - - - УправлениеКонфигуратором.ЗагрузитьКонфигурациюИзФайла(ФайлКонфигурации); - // по идеи надо проверить что конфигурация загружена. - // Вопрос как? - УправлениеКонфигуратором.СоздатьФайловоеХранилищеКонфигурации( - КаталогВременногоХранилища, - "Администратор"); - Утверждения.ПроверитьИстину(УправлениеКонфигуратором.ХранилищеКонфигурацииСуществует(КаталогВременногоХранилища), "Временное хранилище конфигурации должно существовать"); - ВременныеФайлы.Удалить() - + + ВременныйКаталог = ВременныеФайлы.СоздатьКаталог(); + + УправлениеКонфигуратором.КаталогСборки(ВременныйКаталог); + + КаталогВременногоХранилища = ОбъединитьПути(ВременныйКаталог, "v8r_TempRepository"); + + ФайлКонфигурации = ОбъединитьПути(ТекущийСценарий().Каталог, "fixtures", "1.0\1Cv8.cf"); + + + УправлениеКонфигуратором.ЗагрузитьКонфигурациюИзФайла(ФайлКонфигурации); + // по идеи надо проверить что конфигурация загружена. + // Вопрос как? + УправлениеКонфигуратором.СоздатьФайловоеХранилищеКонфигурации( + КаталогВременногоХранилища, + "Администратор"); + Утверждения.ПроверитьИстину(УправлениеКонфигуратором.ХранилищеКонфигурацииСуществует(КаталогВременногоХранилища), "Временное хранилище конфигурации должно существовать"); + ВременныеФайлы.Удалить() + КонецПроцедуры Процедура ТестДолжен_ПроверитьСозданиеФайловПоставки() Экспорт - - ВременныйКаталог = ВременныеФайлы.СоздатьКаталог(); - - УправлениеКонфигуратором.КаталогСборки(ВременныйКаталог); - - КаталогПоставки = ОбъединитьПути(ВременныйКаталог, "v8r_TempDitr"); - - ПутьФайлКонфигурации = ОбъединитьПути(ТекущийСценарий().Каталог, "fixtures", "1.0\1Cv8.cf"); - - НомерВерсииВыпуска = "1.0"; - - ПутьФайлПредыдущейПоставки = ОбъединитьПути(ТекущийСценарий().Каталог, "fixtures", "0.9\1Cv8.cf"); - - ПутьФайлПолнойПоставки = ОбъединитьПути(КаталогПоставки, НомерВерсииВыпуска +".cf"); - - ПутьФайлаПоставкиОбноления = ОбъединитьПути(КаталогПоставки, НомерВерсииВыпуска+".cfu"); - - МассивФайловПредыдущейПоставки = новый Массив; - МассивФайловПредыдущейПоставки.Добавить(ПутьФайлПредыдущейПоставки); - - УправлениеКонфигуратором.ЗагрузитьКонфигурациюИзФайла(ПутьФайлКонфигурации, Истина); - - УправлениеКонфигуратором.СоздатьФайлыПоставки(ПутьФайлПолнойПоставки, - ПутьФайлаПоставкиОбноления, - МассивФайловПредыдущейПоставки); - - Утверждения.ПроверитьИстину(ФайлСуществует(ПутьФайлПолнойПоставки), "Файл полной поставки конфигурации должен существовать"); - Утверждения.ПроверитьИстину(ФайлСуществует(ПутьФайлаПоставкиОбноления), "Файл частичной поставки конфигурации должен существовать"); - - ВременныеФайлы.Удалить(); - + + ВременныйКаталог = ВременныеФайлы.СоздатьКаталог(); + + УправлениеКонфигуратором.КаталогСборки(ВременныйКаталог); + + КаталогПоставки = ОбъединитьПути(ВременныйКаталог, "v8r_TempDitr"); + + ПутьФайлКонфигурации = ОбъединитьПути(ТекущийСценарий().Каталог, "fixtures", "1.0\1Cv8.cf"); + + НомерВерсииВыпуска = "1.0"; + + ПутьФайлПредыдущейПоставки = ОбъединитьПути(ТекущийСценарий().Каталог, "fixtures", "0.9\1Cv8.cf"); + + ПутьФайлПолнойПоставки = ОбъединитьПути(КаталогПоставки, НомерВерсииВыпуска +".cf"); + + ПутьФайлаПоставкиОбноления = ОбъединитьПути(КаталогПоставки, НомерВерсииВыпуска+".cfu"); + + МассивФайловПредыдущейПоставки = новый Массив; + МассивФайловПредыдущейПоставки.Добавить(ПутьФайлПредыдущейПоставки); + + УправлениеКонфигуратором.ЗагрузитьКонфигурациюИзФайла(ПутьФайлКонфигурации, Истина); + + УправлениеКонфигуратором.СоздатьФайлыПоставки(ПутьФайлПолнойПоставки, + ПутьФайлаПоставкиОбноления, + МассивФайловПредыдущейПоставки); + + Утверждения.ПроверитьИстину(ФайлСуществует(ПутьФайлПолнойПоставки), "Файл полной поставки конфигурации должен существовать"); + Утверждения.ПроверитьИстину(ФайлСуществует(ПутьФайлаПоставкиОбноления), "Файл частичной поставки конфигурации должен существовать"); + + ВременныеФайлы.Удалить(); + КонецПроцедуры Процедура ТестДолжен_ПроверитьНазначениеПутиКПлатформе() Экспорт - - ПутьПоУмолчанию = УправлениеКонфигуратором.ПолучитьПутьКВерсииПлатформы("8.3"); - Утверждения.ПроверитьЛожь(ПустаяСтрока(ПутьПоУмолчанию)); - Утверждения.ПроверитьРавенство(ПутьПоУмолчанию, УправлениеКонфигуратором.ПутьКПлатформе1С()); - - НовыйПуть = "тратата"; - Попытка - УправлениеКонфигуратором.ПутьКПлатформе1С(НовыйПуть); - Исключение - Возврат; - КонецПопытки; - - ВызватьИсключение "Не было выброшено исключение при попытке установить неверный путь"; - + + ПутьПоУмолчанию = УправлениеКонфигуратором.ПолучитьПутьКВерсииПлатформы("8.3"); + Утверждения.ПроверитьЛожь(ПустаяСтрока(ПутьПоУмолчанию)); + Утверждения.ПроверитьРавенство(ПутьПоУмолчанию, УправлениеКонфигуратором.ПутьКПлатформе1С()); + + НовыйПуть = "тратата"; + Попытка + УправлениеКонфигуратором.ПутьКПлатформе1С(НовыйПуть); + Исключение + Возврат; + КонецПопытки; + + ВызватьИсключение "Не было выброшено исключение при попытке установить неверный путь"; + КонецПроцедуры Процедура ТестДолжен_ПроверитьУстановкуЯзыкаИнтерфейса() Экспорт - - ПоУмолчанию = "en"; - УправлениеКонфигуратором.УстановитьКодЯзыка(ПоУмолчанию); - - МассивПараметров = УправлениеКонфигуратором.ПолучитьПараметрыЗапуска(); - Утверждения.ПроверитьБольшеИлиРавно(МассивПараметров.Найти("/L"+ПоУмолчанию), 0, "Массив параметров запуска должен содержать локализацию /L"+ПоУмолчанию + " строка:"+Строка(МассивПараметров)); - Утверждения.ПроверитьБольшеИлиРавно(МассивПараметров.Найти("/VL"+ПоУмолчанию), 0, "Массив запуска должен содержать локализацию сеанаса /VL"+ПоУмолчанию + " строка:"+Строка(МассивПараметров)); - + + ПоУмолчанию = "en"; + УправлениеКонфигуратором.УстановитьКодЯзыка(ПоУмолчанию); + + МассивПараметров = УправлениеКонфигуратором.ПолучитьПараметрыЗапуска(); + Утверждения.ПроверитьБольшеИлиРавно(МассивПараметров.Найти("/L"+ПоУмолчанию), 0, "Массив параметров запуска должен содержать локализацию /L"+ПоУмолчанию + " строка:"+Строка(МассивПараметров)); + Утверждения.ПроверитьБольшеИлиРавно(МассивПараметров.Найти("/VL"+ПоУмолчанию), 0, "Массив запуска должен содержать локализацию сеанаса /VL"+ПоУмолчанию + " строка:"+Строка(МассивПараметров)); + КонецПроцедуры Процедура ТестДолжен_ДобавитьПользователяВХранилище() Экспорт - - ВременныйКаталог = ВременныеФайлы.СоздатьКаталог(); - УправлениеКонфигуратором.КаталогСборки(ВременныйКаталог); - - КаталогВременногоХранилища = ОбъединитьПути(ВременныйКаталог, "v8r_TempRepository"); - - ФайлКонфигурации = ОбъединитьПути(ТекущийСценарий().Каталог, "fixtures", "1.0\1Cv8.cf"); - - - УправлениеКонфигуратором.ЗагрузитьКонфигурациюИзФайла(ФайлКонфигурации); - УправлениеКонфигуратором.СоздатьФайловоеХранилищеКонфигурации( - КаталогВременногоХранилища, - "Администратор"); - Утверждения.ПроверитьИстину(УправлениеКонфигуратором.ХранилищеКонфигурацииСуществует(КаталогВременногоХранилища), "Временное хранилище конфигурации должно существовать"); - - НовыйПользователь = "ТестовыйПользователь"; - ПарольПользователя = "ТестПароль"; - УправлениеКонфигуратором.ДобавитьПользователяВХранилище(КаталогВременногоХранилища, - "Администратор", - , - НовыйПользователь, - ПарольПользователя, - ПраваПользователяХранилища.ТолькоЧтение, - Истина); - - ПутьКФайлуВерсии = УправлениеКонфигуратором.ПолучитьВерсиюИзХранилища(КаталогВременногоХранилища, НовыйПользователь, ПарольПользователя); - - Утверждения.ПроверитьИстину(ФайлСуществует(ПутьКФайлуВерсии), "Файл конфигурации из хранилища должен существовать"); - - ВременныеФайлы.Удалить() + + ВременныйКаталог = ВременныеФайлы.СоздатьКаталог(); + УправлениеКонфигуратором.КаталогСборки(ВременныйКаталог); + + КаталогВременногоХранилища = ОбъединитьПути(ВременныйКаталог, "v8r_TempRepository"); + + ФайлКонфигурации = ОбъединитьПути(ТекущийСценарий().Каталог, "fixtures", "1.0\1Cv8.cf"); + + + УправлениеКонфигуратором.ЗагрузитьКонфигурациюИзФайла(ФайлКонфигурации); + УправлениеКонфигуратором.СоздатьФайловоеХранилищеКонфигурации( + КаталогВременногоХранилища, + "Администратор"); + Утверждения.ПроверитьИстину(УправлениеКонфигуратором.ХранилищеКонфигурацииСуществует(КаталогВременногоХранилища), "Временное хранилище конфигурации должно существовать"); + + НовыйПользователь = "ТестовыйПользователь"; + ПарольПользователя = "ТестПароль"; + УправлениеКонфигуратором.ДобавитьПользователяВХранилище(КаталогВременногоХранилища, + "Администратор", + , + НовыйПользователь, + ПарольПользователя, + ПраваПользователяХранилища.ТолькоЧтение, + Истина); + + ПутьКФайлуВерсии = УправлениеКонфигуратором.ПолучитьВерсиюИзХранилища(КаталогВременногоХранилища, НовыйПользователь, ПарольПользователя); + + Утверждения.ПроверитьИстину(ФайлСуществует(ПутьКФайлуВерсии), "Файл конфигурации из хранилища должен существовать"); + + ВременныеФайлы.Удалить() КонецПроцедуры // Проверяет существование каталога From ca19b2ee2d90bcdec9e9f0de1cff30381497e2c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A5=D0=BE=D1=80=D0=B5=D0=B2=20=D0=90=D0=BB=D0=B5=D0=BA?= =?UTF-8?q?=D1=81=D0=B5=D0=B9=20=D0=90=D0=BD=D0=B4=D1=80=D0=B5=D0=B5=D0=B2?= =?UTF-8?q?=D0=B8=D1=87?= Date: Tue, 17 Jan 2017 15:42:44 +0300 Subject: [PATCH 3/9] =?UTF-8?q?=D0=9F=D1=80=D0=B0=D0=B2=D0=BA=D0=B0=20?= =?UTF-8?q?=D0=B1=D0=B0=D0=B3=D0=BE=D0=B2=20=D0=B8=20=D0=BE=D0=BF=D0=B5?= =?UTF-8?q?=D1=87=D0=B0=D1=82=D0=BE=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/v8runner.os | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/v8runner.os b/src/v8runner.os index dd6988d..51e8661 100644 --- a/src/v8runner.os +++ b/src/v8runner.os @@ -173,16 +173,14 @@ Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); - Параметры.Добавить("/ConfigurationRepositoryAddUser """+ПапкаХранилища+""""); - - Параметры.Добавить("/ConfigurationRepositoryF """+ПапкаХранилища+""""); + Параметры.Добавить("/ConfigurationRepositoryF """+СтрокаСоединения+""""); Параметры.Добавить("/ConfigurationRepositoryN """+ПользовательХранилища+""""); Если Не ПустаяСтрока(ПарольХранилища) Тогда Параметры.Добавить("/ConfigurationRepositoryP """+ПарольХранилища+""""); КонецЕсли; - - Параметры.Добавить("/ConfigurationRepositoryCreate "); + + Параметры.Добавить("/ConfigurationRepositoryAddUser "); Параметры.Добавить(СтрШаблон("-User ""%1""",НовыйПользователь)); Если Не ПустаяСтрока(ПарольПользователя) Тогда Параметры.Добавить(СтрШаблон("-Pwd ""%1""",ПарольПользователя)); @@ -191,7 +189,7 @@ Параметры.Добавить(СтрШаблон("-Rights %1",Права)); Если ВосстановитьУдаленного Тогда - Параметры.Добавить("RestoreDeletedUser"); + Параметры.Добавить("-RestoreDeletedUser"); КонецЕсли; ВыполнитьКоманду(Параметры); From c8664407394a40621537f82f2f57a6e821c766c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A5=D0=BE=D1=80=D0=B5=D0=B2=20=D0=90=D0=BB=D0=B5=D0=BA?= =?UTF-8?q?=D1=81=D0=B5=D0=B9=20=D0=90=D0=BD=D0=B4=D1=80=D0=B5=D0=B5=D0=B2?= =?UTF-8?q?=D0=B8=D1=87?= Date: Tue, 17 Jan 2017 16:12:54 +0300 Subject: [PATCH 4/9] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BE=D0=BF=D0=B8=D1=81=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=BF=D1=80=D0=BE=D1=86=D0=B5=D0=B4=D1=83=D1=80?= =?UTF-8?q?=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/v8runner.os | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/v8runner.os b/src/v8runner.os index 51e8661..9eacbec 100644 --- a/src/v8runner.os +++ b/src/v8runner.os @@ -150,9 +150,9 @@ // Пользователь, от имени которого выполняется подключение к хранилищу, должен обладать административными правами. // Если пользователь с указанным именем существует, то пользователь добавлен не будет. // Параметры: -// СтрокаСоединения - Строка - имя cf-файла с объединяемой конфигурацией. -// ПользовательХранилища - строка - имя файла с настройками объединения конфигураций. -// ПарольХранилища - Строка - флаг необходимости установки конфигурации на поддержку. +// СтрокаСоединения - Строка - Строка соединения с хранилищем конфигурации +// ПользовательХранилища - строка - Пользователь для подключения к хранилищю конфигурации +// ПарольХранилища - Строка - Пароль пользователь для подключения к хранилищю конфигурации // НовыйПользователь - Строка - Имя создаваемого пользователя. // ПарольПользователя - Строка - Пароль создаваемого пользователя. // Права — ПраваПользователяХранилища -Права пользователя. Возможные значения: From 72d564c0d7ddfe114fe81c9b1a4145c7b76ddcc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A5=D0=BE=D1=80=D0=B5=D0=B2=20=D0=90=D0=BB=D0=B5=D0=BA?= =?UTF-8?q?=D1=81=D0=B5=D0=B9=20=D0=90=D0=BD=D0=B4=D1=80=D0=B5=D0=B5=D0=B2?= =?UTF-8?q?=D0=B8=D1=87?= Date: Tue, 17 Jan 2017 19:55:11 +0300 Subject: [PATCH 5/9] =?UTF-8?q?=D0=9E=D1=82=D0=BA=D0=B0=D1=82=D0=B8=D0=BB?= =?UTF-8?q?=20=D1=82=D0=B0=D0=B1=D1=8B=20=D0=B8=20=D0=BF=D1=80=D0=BE=D0=B1?= =?UTF-8?q?=D0=B5=D0=BB=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/v8runner.os | 1329 ++++++++++++++++++++-------------------- tests/v8runner-test.os | 217 ++++--- 2 files changed, 772 insertions(+), 774 deletions(-) diff --git a/src/v8runner.os b/src/v8runner.os index 9eacbec..8d05e4e 100644 --- a/src/v8runner.os +++ b/src/v8runner.os @@ -5,7 +5,6 @@ #Использовать logos #Использовать asserts -#Использовать ".." Перем мКонтекстКоманды; Перем мКаталогСборки; @@ -20,129 +19,129 @@ // Программный интерфейс Процедура УстановитьКонтекст(Знач СтрокаСоединения, Знач Пользователь, Знач Пароль) Экспорт - мКонтекстКоманды.КлючСоединенияСБазой = СтрокаСоединения; - мКонтекстКоманды.ИмяПользователя = Пользователь; - мКонтекстКоманды.Пароль = Пароль; + мКонтекстКоманды.КлючСоединенияСБазой = СтрокаСоединения; + мКонтекстКоманды.ИмяПользователя = Пользователь; + мКонтекстКоманды.Пароль = Пароль; - ПоказатьКонтекстВРежимеОтладки(); + ПоказатьКонтекстВРежимеОтладки(); КонецПроцедуры Функция ПолучитьКонтекст() Экспорт - КопияКонтекста = СкопироватьСтруктуру(мКонтекстКоманды); - Возврат КопияКонтекста; + КопияКонтекста = СкопироватьСтруктуру(мКонтекстКоманды); + Возврат КопияКонтекста; КонецФункции Процедура ИспользоватьКонтекст(Знач Контекст) Экспорт - мКонтекстКоманды = СкопироватьСтруктуру(Контекст); - ПоказатьКонтекстВРежимеОтладки(); + мКонтекстКоманды = СкопироватьСтруктуру(Контекст); + ПоказатьКонтекстВРежимеОтладки(); КонецПроцедуры Процедура ПоказатьКонтекстВРежимеОтладки() - Лог.Отладка("КлючСоединенияСБазой "+ мКонтекстКоманды.КлючСоединенияСБазой); - Лог.Отладка("ИмяПользователя <"+ мКонтекстКоманды.ИмяПользователя+">"); - Лог.Отладка(?(ПустаяСтрока(мКонтекстКоманды.Пароль), "Пароль не задан", " Задан пароль "+ мКонтекстКоманды.Пароль)); + Лог.Отладка("КлючСоединенияСБазой "+ мКонтекстКоманды.КлючСоединенияСБазой); + Лог.Отладка("ИмяПользователя <"+ мКонтекстКоманды.ИмяПользователя+">"); + Лог.Отладка(?(ПустаяСтрока(мКонтекстКоманды.Пароль), "Пароль не задан", " Задан пароль "+ мКонтекстКоманды.Пароль)); КонецПроцедуры Функция ПолучитьВерсиюИзХранилища(Знач СтрокаСоединения, Знач ПользовательХранилища, Знач ПарольХранилища, Знач НомерВерсии = Неопределено) Экспорт - Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); + Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); - Параметры.Добавить("/ConfigurationRepositoryF """+СтрокаСоединения+""""); - Параметры.Добавить("/ConfigurationRepositoryN """+ПользовательХранилища+""""); + Параметры.Добавить("/ConfigurationRepositoryF """+СтрокаСоединения+""""); + Параметры.Добавить("/ConfigurationRepositoryN """+ПользовательХранилища+""""); - Если Не ПустаяСтрока(ПарольХранилища) Тогда - Параметры.Добавить("/ConfigurationRepositoryP """+ПарольХранилища+""""); - КонецЕсли; + Если Не ПустаяСтрока(ПарольХранилища) Тогда + Параметры.Добавить("/ConfigurationRepositoryP """+ПарольХранилища+""""); + КонецЕсли; - ФайлРезультата = ОбъединитьПути(КаталогСборки(), "source.cf"); + ФайлРезультата = ОбъединитьПути(КаталогСборки(), "source.cf"); - Параметры.Добавить("/ConfigurationRepositoryDumpCfg """+ФайлРезультата + """"); + Параметры.Добавить("/ConfigurationRepositoryDumpCfg """+ФайлРезультата + """"); - Если Не ПустаяСтрока(НомерВерсии) Тогда - Параметры.Добавить("-v "+НомерВерсии); - КонецЕсли; + Если Не ПустаяСтрока(НомерВерсии) Тогда + Параметры.Добавить("-v "+НомерВерсии); + КонецЕсли; - ВыполнитьКоманду(Параметры); + ВыполнитьКоманду(Параметры); - Возврат ФайлРезультата; + Возврат ФайлРезультата; КонецФункции Процедура СоздатьФайлыПоставки(Знач ПутьФайлаПолнойПоставки ="", - знач ПутьФайлаПоставкиОбновления = "", - Знач ДистрибутивыДляОбновления = Неопределено, // Массив файлов дистрибутива cf - Знач ПутьФайлаСПараметрамиЛицензирования = "") Экспорт - - Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); - - Параметры.Добавить("/CreateDistributionFiles "); - - Если НЕ ЗначениеЗаполнено(ПутьФайлаПолнойПоставки) - И НЕ ЗначениеЗаполнено(ПутьФайлаПоставкиОбновления) Тогда - ВызватьИсключение "Не правильно заданы параметры процедуры <" + "СоздатьФайлыПоставки" +">"; - КонецЕсли; - - Если ЗначениеЗаполнено(ПутьФайлаПолнойПоставки) Тогда - Параметры.Добавить("-cffile "+ОбернутьВКавычки(ПутьФайлаПолнойПоставки)+" "); - КонецЕсли; - - Если ЗначениеЗаполнено(ПутьФайлаПоставкиОбновления) - И Не ДистрибутивыДляОбновления = Неопределено - И ДистрибутивыДляОбновления.Количество() > 0 Тогда - - Параметры.Добавить("-cfufile "+ОбернутьВКавычки(ПутьФайлаПоставкиОбновления)+" "); - - // Поддерживаются только файлы cf - Для каждого ДистрибутивОбновления Из ДистрибутивыДляОбновления Цикл - - Параметры.Добавить("-f "+ОбернутьВКавычки(ДистрибутивОбновления)+" "); - - КонецЦикла; - КонецЕсли; + знач ПутьФайлаПоставкиОбновления = "", + Знач ДистрибутивыДляОбновления = Неопределено, // Массив файлов дистрибутива cf + Знач ПутьФайлаСПараметрамиЛицензирования = "") Экспорт + + Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); + + Параметры.Добавить("/CreateDistributionFiles "); + + Если НЕ ЗначениеЗаполнено(ПутьФайлаПолнойПоставки) + И НЕ ЗначениеЗаполнено(ПутьФайлаПоставкиОбновления) Тогда + ВызватьИсключение "Не правильно заданы параметры процедуры <" + "СоздатьФайлыПоставки" +">"; + КонецЕсли; + + Если ЗначениеЗаполнено(ПутьФайлаПолнойПоставки) Тогда + Параметры.Добавить("-cffile "+ОбернутьВКавычки(ПутьФайлаПолнойПоставки)+" "); + КонецЕсли; + + Если ЗначениеЗаполнено(ПутьФайлаПоставкиОбновления) + И Не ДистрибутивыДляОбновления = Неопределено + И ДистрибутивыДляОбновления.Количество() > 0 Тогда + + Параметры.Добавить("-cfufile "+ОбернутьВКавычки(ПутьФайлаПоставкиОбновления)+" "); + + // Поддерживаются только файлы cf + Для каждого ДистрибутивОбновления Из ДистрибутивыДляОбновления Цикл + + Параметры.Добавить("-f "+ОбернутьВКавычки(ДистрибутивОбновления)+" "); + + КонецЦикла; + КонецЕсли; - Если ЗначениеЗаполнено(ПутьФайлаСПараметрамиЛицензирования) Тогда - Параметры.Добавить("-digisign "+ОбернутьВКавычки(ПутьФайлаСПараметрамиЛицензирования)+" "); - КонецЕсли; + Если ЗначениеЗаполнено(ПутьФайлаСПараметрамиЛицензирования) Тогда + Параметры.Добавить("-digisign "+ОбернутьВКавычки(ПутьФайлаСПараметрамиЛицензирования)+" "); + КонецЕсли; - ВыполнитьКоманду(Параметры); + ВыполнитьКоманду(Параметры); КонецПроцедуры Процедура СоздатьФайловоеХранилищеКонфигурации(Знач ПапкаХранилища, - Знач ПользовательХранилища, - Знач ПарольХранилища = "", - знач ПодключитьБазуКХранилищю = Ложь) Экспорт - - ОбеспечитьКаталог(ПапкаХранилища); - - Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); - - Параметры.Добавить("/ConfigurationRepositoryF """+ПапкаХранилища+""""); - Параметры.Добавить("/ConfigurationRepositoryN """+ПользовательХранилища+""""); - - Если Не ПустаяСтрока(ПарольХранилища) Тогда - Параметры.Добавить("/ConfigurationRepositoryP """+ПарольХранилища+""""); - КонецЕсли; + Знач ПользовательХранилища, + Знач ПарольХранилища = "", + знач ПодключитьБазуКХранилищю = Ложь) Экспорт + + ОбеспечитьКаталог(ПапкаХранилища); + + Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); + + Параметры.Добавить("/ConfigurationRepositoryF """+ПапкаХранилища+""""); + Параметры.Добавить("/ConfigurationRepositoryN """+ПользовательХранилища+""""); + + Если Не ПустаяСтрока(ПарольХранилища) Тогда + Параметры.Добавить("/ConfigurationRepositoryP """+ПарольХранилища+""""); + КонецЕсли; - Параметры.Добавить("/ConfigurationRepositoryCreate "); - - Параметры.Добавить("-AllowConfigurationChanges"); - Параметры.Добавить("-ChangesAllowedRule ObjectNotSupported"); - Параметры.Добавить("-ChangesNotRecommendedRule ObjectNotSupported"); - - Если ПодключитьБазуКХранилищю = Ложь Тогда - Параметры.Добавить("-NoBind"); - КонецЕсли; + Параметры.Добавить("/ConfigurationRepositoryCreate "); + + Параметры.Добавить("-AllowConfigurationChanges"); + Параметры.Добавить("-ChangesAllowedRule ObjectNotSupported"); + Параметры.Добавить("-ChangesNotRecommendedRule ObjectNotSupported"); + + Если ПодключитьБазуКХранилищю = Ложь Тогда + Параметры.Добавить("-NoBind"); + КонецЕсли; - ВыполнитьКоманду(Параметры); + ВыполнитьКоманду(Параметры); КонецПроцедуры Процедура ОтключитьсяОтХранилища() Экспорт - Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); - Параметры.Добавить("/ConfigurationRepositoryUnbindCfg -force "); + Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); + Параметры.Добавить("/ConfigurationRepositoryUnbindCfg -force "); - ВыполнитьКоманду(Параметры); + ВыполнитьКоманду(Параметры); КонецПроцедуры @@ -198,39 +197,39 @@ Процедура ВыгрузитьКонфигурациюВФайлы(Знач КаталогВыгрузки, Знач ФорматВыгрузки = "") Экспорт - - Если НЕ ЗначениеЗаполнено(ФорматВыгрузки) Тогда - ФорматВыгрузки = РежимВыгрузкиКонфигурации.Иерархический; - КонецЕсли; - - Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); - Параметры.Добавить(СтрШаблон("/DumpConfigToFiles %1 -format %2", ОбернутьВКавычки(КаталогВыгрузки), ФорматВыгрузки)); - ВыполнитьКоманду(Параметры); - + + Если НЕ ЗначениеЗаполнено(ФорматВыгрузки) Тогда + ФорматВыгрузки = РежимВыгрузкиКонфигурации.Иерархический; + КонецЕсли; + + Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); + Параметры.Добавить(СтрШаблон("/DumpConfigToFiles %1 -format %2", ОбернутьВКавычки(КаталогВыгрузки), ФорматВыгрузки)); + ВыполнитьКоманду(Параметры); + КонецПроцедуры Процедура ЗагрузитьКонфигурациюИзФайла(Знач ФайлКонфигурации, Знач ОбновитьКонфигурациюИБ = Ложь) Экспорт - // Выполняем загрузку и обновление за два шага, т.к. - // иногда обновление конфигурации ИБ на новой базе проходит неудачно, - // если запустить две операции в одной команде. + // Выполняем загрузку и обновление за два шага, т.к. + // иногда обновление конфигурации ИБ на новой базе проходит неудачно, + // если запустить две операции в одной команде. - Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); - Параметры.Добавить("/LoadCfg """ + ФайлКонфигурации + """"); - ВыполнитьКоманду(Параметры); + Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); + Параметры.Добавить("/LoadCfg """ + ФайлКонфигурации + """"); + ВыполнитьКоманду(Параметры); - Если ОбновитьКонфигурациюИБ Тогда - ОбновитьКонфигурациюБазыДанных(Ложь, Истина); - КонецЕсли; + Если ОбновитьКонфигурациюИБ Тогда + ОбновитьКонфигурациюБазыДанных(Ложь, Истина); + КонецЕсли; КонецПроцедуры Процедура ВыгрузитьКонфигурациюВФайл(Знач ФайлКонфигурации) Экспорт - - Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); - Параметры.Добавить("/DumpCfg """ + ФайлКонфигурации + """"); - ВыполнитьКоманду(Параметры); - + + Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); + Параметры.Добавить("/DumpCfg """ + ФайлКонфигурации + """"); + ВыполнитьКоманду(Параметры); + КонецПроцедуры // Выполнить объединение текущей конфигурации с файлом (с использованием файла настроек) @@ -256,257 +255,257 @@ // Если не указан, то объединение будет прервано в вышеуказанных случаях. // Процедура ОбъединитьКонфигурациюСФайлом(Знач ФайлКонфигурации, - Знач ФайлНастроек, - Знач ПоставитьНаПоддержку = Неопределено, - Знач ВключитьВОбъединениеОбъектыПоНеразрешеннымСсылкам = Неопределено, - Знач Принудительно = Ложь) Экспорт - - Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); - Параметры.Добавить("/MergeCfg " + ОбернутьВКавычки(ФайлКонфигурации)); - Параметры.Добавить("-Settings " + ОбернутьВКавычки(ФайлНастроек)); + Знач ФайлНастроек, + Знач ПоставитьНаПоддержку = Неопределено, + Знач ВключитьВОбъединениеОбъектыПоНеразрешеннымСсылкам = Неопределено, + Знач Принудительно = Ложь) Экспорт + + Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); + Параметры.Добавить("/MergeCfg " + ОбернутьВКавычки(ФайлКонфигурации)); + Параметры.Добавить("-Settings " + ОбернутьВКавычки(ФайлНастроек)); - Если ПоставитьНаПоддержку = Истина Тогда - Параметры.Добавить("-EnableSupport"); - ИначеЕсли ПоставитьНаПоддержку = Ложь Тогда - Параметры.Добавить("-DisableSupport"); - КонецЕсли; + Если ПоставитьНаПоддержку = Истина Тогда + Параметры.Добавить("-EnableSupport"); + ИначеЕсли ПоставитьНаПоддержку = Ложь Тогда + Параметры.Добавить("-DisableSupport"); + КонецЕсли; - Если ВключитьВОбъединениеОбъектыПоНеразрешеннымСсылкам = Истина Тогда - Параметры.Добавить("-IncludeObjectsByUnresolvedRefs"); - ИначеЕсли ВключитьВОбъединениеОбъектыПоНеразрешеннымСсылкам = Ложь Тогда - Параметры.Добавить("-ClearUnresolvedRefs"); - КонецЕсли; + Если ВключитьВОбъединениеОбъектыПоНеразрешеннымСсылкам = Истина Тогда + Параметры.Добавить("-IncludeObjectsByUnresolvedRefs"); + ИначеЕсли ВключитьВОбъединениеОбъектыПоНеразрешеннымСсылкам = Ложь Тогда + Параметры.Добавить("-ClearUnresolvedRefs"); + КонецЕсли; - Если Принудительно Тогда - Параметры.Добавить("-force"); - КонецЕсли; + Если Принудительно Тогда + Параметры.Добавить("-force"); + КонецЕсли; - ВыполнитьКоманду(Параметры); + ВыполнитьКоманду(Параметры); КонецПроцедуры Процедура ОбновитьКонфигурациюБазыДанных(ПредупрежденияКакОшибки = Ложь, НаСервере = Истина, ДинамическоеОбновление = Ложь) Экспорт - ПараметрыСвязиСБазой = СтандартныеПараметрыЗапускаКонфигуратора(); - ПараметрыСвязиСБазой.Добавить("/UpdateDBCfg"); - Если Не ДинамическоеОбновление Тогда - ПараметрыСвязиСБазой.Добавить("-Dynamic-"); - КонецЕсли; - - Если ПредупрежденияКакОшибки Тогда - ПараметрыСвязиСБазой.Добавить("-WarningsAsErrors"); - КонецЕсли; - Если НаСервере Тогда - ПараметрыСвязиСБазой.Добавить("-Server"); - КонецЕсли; + ПараметрыСвязиСБазой = СтандартныеПараметрыЗапускаКонфигуратора(); + ПараметрыСвязиСБазой.Добавить("/UpdateDBCfg"); + Если Не ДинамическоеОбновление Тогда + ПараметрыСвязиСБазой.Добавить("-Dynamic-"); + КонецЕсли; + + Если ПредупрежденияКакОшибки Тогда + ПараметрыСвязиСБазой.Добавить("-WarningsAsErrors"); + КонецЕсли; + Если НаСервере Тогда + ПараметрыСвязиСБазой.Добавить("-Server"); + КонецЕсли; - ВыполнитьКоманду(ПараметрыСвязиСБазой); + ВыполнитьКоманду(ПараметрыСвязиСБазой); КонецПроцедуры Процедура ОбновитьКонфигурацию(Знач КаталогВерсии, Знач ИспользоватьПолныйДистрибутив = Ложь) Экспорт - ПараметрыЗапуска = СтандартныеПараметрыЗапускаКонфигуратора(); + ПараметрыЗапуска = СтандартныеПараметрыЗапускаКонфигуратора(); - Если ИспользоватьПолныйДистрибутив = Неопределено Тогда - ИспользоватьПолныйДистрибутив = Не КаталогСодержитФайлОбновления(КаталогВерсии); - КонецЕсли; + Если ИспользоватьПолныйДистрибутив = Неопределено Тогда + ИспользоватьПолныйДистрибутив = Не КаталогСодержитФайлОбновления(КаталогВерсии); + КонецЕсли; - Если ИспользоватьПолныйДистрибутив Тогда - ФайлОбновления = "1cv8.cf"; - Иначе - ФайлОбновления = "1cv8.cfu"; - КонецЕсли; + Если ИспользоватьПолныйДистрибутив Тогда + ФайлОбновления = "1cv8.cf"; + Иначе + ФайлОбновления = "1cv8.cfu"; + КонецЕсли; - ПараметрыЗапуска.Добавить("/UpdateCfg " + ОбернутьВКавычки(ОбъединитьПути(КаталогВерсии, ФайлОбновления))); + ПараметрыЗапуска.Добавить("/UpdateCfg " + ОбернутьВКавычки(ОбъединитьПути(КаталогВерсии, ФайлОбновления))); - ВыполнитьКоманду(ПараметрыЗапуска); + ВыполнитьКоманду(ПараметрыЗапуска); КонецПроцедуры Процедура СнятьКонфигурациюСПоддержки(Знач Принудительно = Ложь) Экспорт - Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); - Параметры.Добавить("/ManageCfgSupport -disableSupport"); - Если Принудительно Тогда - Параметры.Добавить("-force"); - КонецЕсли; + Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); + Параметры.Добавить("/ManageCfgSupport -disableSupport"); + Если Принудительно Тогда + Параметры.Добавить("-force"); + КонецЕсли; - ВыполнитьКоманду(Параметры); + ВыполнитьКоманду(Параметры); КонецПроцедуры Процедура СконвертироватьФайлКонфигурации(Знач ФайлКонфигурации) Экспорт - Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); - Параметры.Добавить("/ConvertFiles """ + ФайлКонфигурации + """"); - ВыполнитьКоманду(Параметры); + Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); + Параметры.Добавить("/ConvertFiles """ + ФайлКонфигурации + """"); + ВыполнитьКоманду(Параметры); КонецПроцедуры Процедура СоздатьФайловуюБазу(Знач КаталогБазы, Знач ПутьКШаблону="", Знач ИмяБазыВСписке="") Экспорт - Лог.Отладка("Создаю файловую базу "+КаталогБазы); + Лог.Отладка("Создаю файловую базу "+КаталогБазы); - ОбеспечитьКаталог(КаталогБазы); - УдалитьФайлы(КаталогБазы, "*.*"); + ОбеспечитьКаталог(КаталогБазы); + УдалитьФайлы(КаталогБазы, "*.*"); - ПараметрыЗапуска = Новый Массив; - ПараметрыЗапуска.Добавить("CREATEINFOBASE"); - ПараметрыЗапуска.Добавить("File="""+КаталогБазы+""""); - ПараметрыЗапуска.Добавить("/Out""" + ФайлИнформации() + """"); - - Если ИмяБазыВСписке <> "" Тогда + ПараметрыЗапуска = Новый Массив; + ПараметрыЗапуска.Добавить("CREATEINFOBASE"); + ПараметрыЗапуска.Добавить("File="""+КаталогБазы+""""); + ПараметрыЗапуска.Добавить("/Out""" + ФайлИнформации() + """"); + + Если ИмяБазыВСписке <> "" Тогда ПараметрыЗапуска.Добавить("/AddInList"""+ ИмяБазыВСписке + """"); КонецЕсли; - Если ПутьКШаблону<> "" Тогда + Если ПутьКШаблону<> "" Тогда ПараметрыЗапуска.Добавить("/UseTemplate"""+ ПутьКШаблону + """"); КонецЕсли; - Если НЕ ПустаяСтрока(мКонтекстКоманды.КодЯзыка) Тогда - ПараметрыЗапуска.Добавить("/L"+мКонтекстКоманды.КодЯзыка); - КонецЕсли; - Если НЕ ПустаяСтрока(мКонтекстКоманды.КодЯзыкаСеанса) Тогда - ПараметрыЗапуска.Добавить("/VL"+мКонтекстКоманды.КодЯзыкаСеанса); - КонецЕсли; + Если НЕ ПустаяСтрока(мКонтекстКоманды.КодЯзыка) Тогда + ПараметрыЗапуска.Добавить("/L"+мКонтекстКоманды.КодЯзыка); + КонецЕсли; + Если НЕ ПустаяСтрока(мКонтекстКоманды.КодЯзыкаСеанса) Тогда + ПараметрыЗапуска.Добавить("/VL"+мКонтекстКоманды.КодЯзыкаСеанса); + КонецЕсли; - КодВозврата = ЗапуститьИПодождать(ПараметрыЗапуска); - УстановитьВывод(ПрочитатьФайлИнформации()); - Если КодВозврата <> 0 Тогда - ВызватьИсключение ВыводКоманды(); - КонецЕсли; + КодВозврата = ЗапуститьИПодождать(ПараметрыЗапуска); + УстановитьВывод(ПрочитатьФайлИнформации()); + Если КодВозврата <> 0 Тогда + ВызватьИсключение ВыводКоманды(); + КонецЕсли; КонецПроцедуры Процедура ЗагрузитьИнформационнуюБазу(ПутьВыгрузкиИБ) Экспорт - ФайлВыгрузки = Новый Файл(ПутьВыгрузкиИБ); - Ожидаем.Что(ФайлВыгрузки.Существует(), "Файл выгрузки <"+ПутьВыгрузкиИБ+"> существует, а это не так").ЭтоИстина(); + ФайлВыгрузки = Новый Файл(ПутьВыгрузкиИБ); + Ожидаем.Что(ФайлВыгрузки.Существует(), "Файл выгрузки <"+ПутьВыгрузкиИБ+"> существует, а это не так").ЭтоИстина(); - ПараметрыЗапуска = СтандартныеПараметрыЗапускаКонфигуратора(); + ПараметрыЗапуска = СтандартныеПараметрыЗапускаКонфигуратора(); - ПараметрыЗапуска.Добавить("/RestoreIB " + ОбернутьВКавычки(ПутьВыгрузкиИБ)); + ПараметрыЗапуска.Добавить("/RestoreIB " + ОбернутьВКавычки(ПутьВыгрузкиИБ)); - ВыполнитьКоманду(ПараметрыЗапуска); + ВыполнитьКоманду(ПараметрыЗапуска); КонецПроцедуры Процедура ВыгрузитьИнформационнуюБазу(ПутьВыгрузкиИБ) Экспорт - Файл = Новый Файл(ПутьВыгрузкиИБ); - КаталогВыгрузкиИБ = Файл.Путь; + Файл = Новый Файл(ПутьВыгрузкиИБ); + КаталогВыгрузкиИБ = Файл.Путь; - ОбеспечитьКаталог(КаталогВыгрузкиИБ); + ОбеспечитьКаталог(КаталогВыгрузкиИБ); - ПараметрыЗапуска = СтандартныеПараметрыЗапускаКонфигуратора(); + ПараметрыЗапуска = СтандартныеПараметрыЗапускаКонфигуратора(); - ПараметрыЗапуска.Добавить("/DumpIB " + ОбернутьВКавычки(ПутьВыгрузкиИБ)); + ПараметрыЗапуска.Добавить("/DumpIB " + ОбернутьВКавычки(ПутьВыгрузкиИБ)); - ВыполнитьКоманду(ПараметрыЗапуска); + ВыполнитьКоманду(ПараметрыЗапуска); КонецПроцедуры Процедура ВыполнитьКоманду(Знач Параметры) Экспорт - ПроверитьВозможностьВыполненияКоманды(); - - Файл = Новый Файл(ФайлИнформации()); - Если Файл.Существует() Тогда - Попытка - Лог.Отладка("Удаляю файл информации 1С"); - УдалитьФайлы(Файл.ПолноеИмя); - Исключение - Лог.Предупреждение("Не удалось удалить файл информации: " + ОписаниеОшибки()); - КонецПопытки; - КонецЕсли; - - КодВозврата = ЗапуститьИПодождать(Параметры); - УстановитьВывод(ПрочитатьФайлИнформации()); - Если КодВозврата <> 0 Тогда - Лог.Ошибка("Получен ненулевой код возврата "+КодВозврата+". Выполнение скрипта остановлено!"); - ВызватьИсключение ВыводКоманды(); - Иначе - Лог.Отладка("Код возврата равен 0"); - КонецЕсли; + ПроверитьВозможностьВыполненияКоманды(); + + Файл = Новый Файл(ФайлИнформации()); + Если Файл.Существует() Тогда + Попытка + Лог.Отладка("Удаляю файл информации 1С"); + УдалитьФайлы(Файл.ПолноеИмя); + Исключение + Лог.Предупреждение("Не удалось удалить файл информации: " + ОписаниеОшибки()); + КонецПопытки; + КонецЕсли; + + КодВозврата = ЗапуститьИПодождать(Параметры); + УстановитьВывод(ПрочитатьФайлИнформации()); + Если КодВозврата <> 0 Тогда + Лог.Ошибка("Получен ненулевой код возврата "+КодВозврата+". Выполнение скрипта остановлено!"); + ВызватьИсключение ВыводКоманды(); + Иначе + Лог.Отладка("Код возврата равен 0"); + КонецЕсли; КонецПроцедуры Функция ПолучитьПараметрыЗапуска() Экспорт - Возврат СтандартныеПараметрыЗапускаКонфигуратора(); + Возврат СтандартныеПараметрыЗапускаКонфигуратора(); КонецФункции Процедура ВыполнитьРасширеннуюПроверкуКонфигуратора(Ключи) Экспорт - Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); - - Параметры.Добавить("/CheckConfig"); - - Для Каждого СтрокаКлюча Из Ключи Цикл - Если СтрокаКлюча.Значение = Истина Тогда - Параметры.Добавить(СтрокаКлюча.Ключ); - КонецЕсли; - КонецЦикла; - - ВыполнитьКоманду(Параметры); - + Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); + + Параметры.Добавить("/CheckConfig"); + + Для Каждого СтрокаКлюча Из Ключи Цикл + Если СтрокаКлюча.Значение = Истина Тогда + Параметры.Добавить(СтрокаКлюча.Ключ); + КонецЕсли; + КонецЦикла; + + ВыполнитьКоманду(Параметры); + КонецПроцедуры Процедура ВыполнитьСинтаксическийКонтроль( - Знач ТонкийКлиент = Истина, - Знач ВебКлиент = Истина, - Знач Сервер = Истина, - Знач ВнешнееСоединение = Истина, - Знач ТолстыйКлиентОбычноеПриложение = Истина) Экспорт + Знач ТонкийКлиент = Истина, + Знач ВебКлиент = Истина, + Знач Сервер = Истина, + Знач ВнешнееСоединение = Истина, + Знач ТолстыйКлиентОбычноеПриложение = Истина) Экспорт - Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); + Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); - Параметры.Добавить("/CheckConfig"); + Параметры.Добавить("/CheckConfig"); - ДобавитьФлагПроверки(Параметры, ТонкийКлиент, "-ThinClient"); - ДобавитьФлагПроверки(Параметры, ВебКлиент, "-WebClient"); - ДобавитьФлагПроверки(Параметры, Сервер, "-Server"); - ДобавитьФлагПроверки(Параметры, ВнешнееСоединение, "-ExternalConnection"); - ДобавитьФлагПроверки(Параметры, ТолстыйКлиентОбычноеПриложение, "-ThickClientOrdinaryApplication"); + ДобавитьФлагПроверки(Параметры, ТонкийКлиент, "-ThinClient"); + ДобавитьФлагПроверки(Параметры, ВебКлиент, "-WebClient"); + ДобавитьФлагПроверки(Параметры, Сервер, "-Server"); + ДобавитьФлагПроверки(Параметры, ВнешнееСоединение, "-ExternalConnection"); + ДобавитьФлагПроверки(Параметры, ТолстыйКлиентОбычноеПриложение, "-ThickClientOrdinaryApplication"); - ВыполнитьКоманду(Параметры); + ВыполнитьКоманду(Параметры); КонецПроцедуры Процедура ЗапуститьВРежимеПредприятия(Знач КлючЗапуска = "", Знач УправляемыйРежим = Неопределено, Знач ДополнительныеКлючи = Неопределено) Экспорт - ПараметрыСвязиСБазой = ПолучитьПараметрыЗапуска(); - ПараметрыСвязиСБазой[0] = "ENTERPRISE"; - Если Не ПустаяСтрока(КлючЗапуска) Тогда - ПараметрыСвязиСБазой.Добавить("/C"+КлючЗапуска); - КонецЕсли; - Если УправляемыйРежим = Истина Тогда - ПараметрыСвязиСБазой.Вставить(2, "/RunModeManagedApplication"); - ИначеЕсли УправляемыйРежим = Ложь Тогда - ПараметрыСвязиСБазой.Вставить(2, "/RunModeOrdinaryApplication"); - КонецЕсли; - - Если ДополнительныеКлючи <> Неопределено Тогда - ПараметрыСвязиСБазой.Добавить(ДополнительныеКлючи); - КонецЕсли; - - ВыполнитьКоманду(ПараметрыСвязиСБазой); + ПараметрыСвязиСБазой = ПолучитьПараметрыЗапуска(); + ПараметрыСвязиСБазой[0] = "ENTERPRISE"; + Если Не ПустаяСтрока(КлючЗапуска) Тогда + ПараметрыСвязиСБазой.Добавить("/C"+КлючЗапуска); + КонецЕсли; + Если УправляемыйРежим = Истина Тогда + ПараметрыСвязиСБазой.Вставить(2, "/RunModeManagedApplication"); + ИначеЕсли УправляемыйРежим = Ложь Тогда + ПараметрыСвязиСБазой.Вставить(2, "/RunModeOrdinaryApplication"); + КонецЕсли; + + Если ДополнительныеКлючи <> Неопределено Тогда + ПараметрыСвязиСБазой.Добавить(ДополнительныеКлючи); + КонецЕсли; + + ВыполнитьКоманду(ПараметрыСвязиСБазой); КонецПроцедуры Процедура ДобавитьФлагПроверки(Знач Параметры, Знач ФлагПроверки, Знач ИмяФлага) - Если ФлагПроверки Тогда - Параметры.Добавить(ИмяФлага); - КонецЕсли; + Если ФлагПроверки Тогда + Параметры.Добавить(ИмяФлага); + КонецЕсли; КонецПроцедуры Функция КаталогСодержитФайлОбновления(Знач КаталогВерсии) - ФайлОбновления = Новый Файл(ОбъединитьПути(КаталогВерсии, "1cv8.cfu")); - Возврат ФайлОбновления.Существует(); + ФайлОбновления = Новый Файл(ОбъединитьПути(КаталогВерсии, "1cv8.cfu")); + Возврат ФайлОбновления.Существует(); КонецФункции Функция ПутьКВременнойБазе() Экспорт - Возврат ОбъединитьПути(КаталогСборки(), "v8r_TempDB"); + Возврат ОбъединитьПути(КаталогСборки(), "v8r_TempDB"); КонецФункции ////////////////////////////////////////////////// @@ -514,243 +513,243 @@ Функция ПолучитьПутьКВерсииПлатформы(Знач ВерсияПлатформы) Экспорт - Если Лев(ВерсияПлатформы, 2) <> "8." Тогда - ВызватьИсключение "Неверная версия платформы <"+ВерсияПлатформы+">"; - КонецЕсли; + Если Лев(ВерсияПлатформы, 2) <> "8." Тогда + ВызватьИсключение "Неверная версия платформы <"+ВерсияПлатформы+">"; + КонецЕсли; - Если ЭтоWindows = Истина Тогда - - СписокСтрок = РазложитьСтрокуВМассивПодстрок(ВерсияПлатформы, "."); - Если СписокСтрок.Количество() < 2 Тогда - ВызватьИсключение "Маска версии платформы должна содержать, как минимум, минорную и мажорную версию, т.е. Maj.Min[.Release][.Build]"; - КонецЕсли; - - КаталогиУстановкиПлатформы = СобратьВозможныеКаталогиУстановкиПлатформыWindows(); - - Если КаталогиУстановкиПлатформы.Количество() = 0 Тогда - Лог.Отладка("В конфигах стартера не найдены пути установки. Пробую стандартные пути наугад."); - файлProgramFiles = Новый Файл("C:\Program Files (x86)\"); - Если Не файлProgramFiles.Существует() Тогда - файлProgramFiles = Новый Файл("C:\Program Files\"); - Если Не файлProgramFiles.Существует() Тогда - ВызватьИсключение "Не обнаружено установленных версий платформы 1С"; - КонецЕсли; - КонецЕсли; - - КаталогиУстановкиПлатформы.Добавить(ОбъединитьПути(файлProgramFiles.ПолноеИмя, "1Cv8")); - КаталогиУстановкиПлатформы.Добавить(ОбъединитьПути(файлProgramFiles.ПолноеИмя, "1Cv82")); - - КонецЕсли; - - МассивКаталогов1С = Новый Массив; - Для Каждого ВозможныйПуть Из КаталогиУстановкиПлатформы Цикл - - Лог.Отладка("Выполняю попытку поиска версии в каталоге " + ВозможныйПуть); - - МассивФайлов = НайтиФайлы(ВозможныйПуть, ВерсияПлатформы+"*"); - Если МассивФайлов.Количество() = 0 Тогда - Лог.Отладка("Не найдено ни одного каталога с версией."); - Продолжить; - КонецЕсли; - Если МассивКаталогов1С = Неопределено Тогда - МассивКаталогов1С = МассивФайлов; - Иначе - Для каждого Файл Из МассивФайлов Цикл - МассивКаталогов1С.Добавить(Файл); - Лог.Отладка("Нашел платформу 1С %1", Файл.Имя); - КонецЦикла; - КонецЕсли; - КонецЦикла; - - НужныйФайлПлатформы = Неопределено; - - МассивКаталоговВерсий = Новый Массив; - Для Каждого ЭлементМассива Из МассивКаталогов1С Цикл - правыйСимвол = Прав(ЭлементМассива.Имя, 1); - Если правыйСимвол < "0" или правыйСимвол > "9" Тогда - Продолжить; - КонецЕсли; - МассивКаталоговВерсий.Добавить(ЭлементМассива); - КонецЦикла; - - Если МассивКаталоговВерсий.Количество() > 0 Тогда - МаксВерсия = МассивКаталоговВерсий[0].Имя; - НужныйФайлПлатформы = Новый Файл(ОбъединитьПути(МассивКаталоговВерсий[0].ПолноеИмя, "bin", "1cv8.exe")); - - Для Сч = 1 По МассивКаталоговВерсий.ВГраница() Цикл - ТекущаяВерсия = МассивКаталоговВерсий[Сч].Имя; - Если МаксВерсия < ТекущаяВерсия Тогда - ПутьБин = ОбъединитьПути(МассивКаталоговВерсий[Сч].ПолноеИмя, "bin"); - ПроверяемыйФайл = Новый Файл(ОбъединитьПути(ПутьБин, "1cv8.exe")); - Если НЕ ПроверяемыйФайл.Существует() Тогда - Продолжить; - КонецЕсли; - - МаксВерсия = ТекущаяВерсия; - НужныйФайлПлатформы = ПроверяемыйФайл; - КонецЕсли; - КонецЦикла; - - Если НужныйФайлПлатформы.Существует() Тогда - Лог.Отладка("Версия найдена: " + НужныйФайлПлатформы.ПолноеИмя); - Иначе - НужныйФайлПлатформы = Неопределено; - КонецЕсли; - КонецЕсли; - - Если НужныйФайлПлатформы = Неопределено Тогда - ВызватьИсключение "Не найден путь к платформе 1С <"+ВерсияПлатформы+">"; - КонецЕсли; - - Иначе - // help wanted: на Линукс конфиг стартера лежит в ~/.1C/1cestart. - КаталогУстановки = Новый Файл("/opt/1C/v8.3/i386"); - Если НЕ КаталогУстановки.Существует() Тогда - КаталогУстановки = Новый Файл("/opt/1C/v8.3/x86_64"); - КонецЕсли; - НужныйФайлПлатформы = Новый Файл(Строка(КаталогУстановки.ПолноеИмя) + "/" + "1cv8"); - КонецЕсли; - - Если Не НужныйФайлПлатформы.Существует() Тогда - ВызватьИсключение "Ошибка определения версии платформы. Файл <"+НужныйФайлПлатформы.ПолноеИмя+"> не существует"; - КонецЕсли; + Если ЭтоWindows = Истина Тогда + + СписокСтрок = РазложитьСтрокуВМассивПодстрок(ВерсияПлатформы, "."); + Если СписокСтрок.Количество() < 2 Тогда + ВызватьИсключение "Маска версии платформы должна содержать, как минимум, минорную и мажорную версию, т.е. Maj.Min[.Release][.Build]"; + КонецЕсли; + + КаталогиУстановкиПлатформы = СобратьВозможныеКаталогиУстановкиПлатформыWindows(); + + Если КаталогиУстановкиПлатформы.Количество() = 0 Тогда + Лог.Отладка("В конфигах стартера не найдены пути установки. Пробую стандартные пути наугад."); + файлProgramFiles = Новый Файл("C:\Program Files (x86)\"); + Если Не файлProgramFiles.Существует() Тогда + файлProgramFiles = Новый Файл("C:\Program Files\"); + Если Не файлProgramFiles.Существует() Тогда + ВызватьИсключение "Не обнаружено установленных версий платформы 1С"; + КонецЕсли; + КонецЕсли; + + КаталогиУстановкиПлатформы.Добавить(ОбъединитьПути(файлProgramFiles.ПолноеИмя, "1Cv8")); + КаталогиУстановкиПлатформы.Добавить(ОбъединитьПути(файлProgramFiles.ПолноеИмя, "1Cv82")); + + КонецЕсли; + + МассивКаталогов1С = Новый Массив; + Для Каждого ВозможныйПуть Из КаталогиУстановкиПлатформы Цикл + + Лог.Отладка("Выполняю попытку поиска версии в каталоге " + ВозможныйПуть); + + МассивФайлов = НайтиФайлы(ВозможныйПуть, ВерсияПлатформы+"*"); + Если МассивФайлов.Количество() = 0 Тогда + Лог.Отладка("Не найдено ни одного каталога с версией."); + Продолжить; + КонецЕсли; + Если МассивКаталогов1С = Неопределено Тогда + МассивКаталогов1С = МассивФайлов; + Иначе + Для каждого Файл Из МассивФайлов Цикл + МассивКаталогов1С.Добавить(Файл); + Лог.Отладка("Нашел платформу 1С %1", Файл.Имя); + КонецЦикла; + КонецЕсли; + КонецЦикла; + + НужныйФайлПлатформы = Неопределено; + + МассивКаталоговВерсий = Новый Массив; + Для Каждого ЭлементМассива Из МассивКаталогов1С Цикл + правыйСимвол = Прав(ЭлементМассива.Имя, 1); + Если правыйСимвол < "0" или правыйСимвол > "9" Тогда + Продолжить; + КонецЕсли; + МассивКаталоговВерсий.Добавить(ЭлементМассива); + КонецЦикла; + + Если МассивКаталоговВерсий.Количество() > 0 Тогда + МаксВерсия = МассивКаталоговВерсий[0].Имя; + НужныйФайлПлатформы = Новый Файл(ОбъединитьПути(МассивКаталоговВерсий[0].ПолноеИмя, "bin", "1cv8.exe")); + + Для Сч = 1 По МассивКаталоговВерсий.ВГраница() Цикл + ТекущаяВерсия = МассивКаталоговВерсий[Сч].Имя; + Если МаксВерсия < ТекущаяВерсия Тогда + ПутьБин = ОбъединитьПути(МассивКаталоговВерсий[Сч].ПолноеИмя, "bin"); + ПроверяемыйФайл = Новый Файл(ОбъединитьПути(ПутьБин, "1cv8.exe")); + Если НЕ ПроверяемыйФайл.Существует() Тогда + Продолжить; + КонецЕсли; + + МаксВерсия = ТекущаяВерсия; + НужныйФайлПлатформы = ПроверяемыйФайл; + КонецЕсли; + КонецЦикла; + + Если НужныйФайлПлатформы.Существует() Тогда + Лог.Отладка("Версия найдена: " + НужныйФайлПлатформы.ПолноеИмя); + Иначе + НужныйФайлПлатформы = Неопределено; + КонецЕсли; + КонецЕсли; + + Если НужныйФайлПлатформы = Неопределено Тогда + ВызватьИсключение "Не найден путь к платформе 1С <"+ВерсияПлатформы+">"; + КонецЕсли; + + Иначе + // help wanted: на Линукс конфиг стартера лежит в ~/.1C/1cestart. + КаталогУстановки = Новый Файл("/opt/1C/v8.3/i386"); + Если НЕ КаталогУстановки.Существует() Тогда + КаталогУстановки = Новый Файл("/opt/1C/v8.3/x86_64"); + КонецЕсли; + НужныйФайлПлатформы = Новый Файл(Строка(КаталогУстановки.ПолноеИмя) + "/" + "1cv8"); + КонецЕсли; + + Если Не НужныйФайлПлатформы.Существует() Тогда + ВызватьИсключение "Ошибка определения версии платформы. Файл <"+НужныйФайлПлатформы.ПолноеИмя+"> не существует"; + КонецЕсли; - Возврат НужныйФайлПлатформы.ПолноеИмя; + Возврат НужныйФайлПлатформы.ПолноеИмя; КонецФункции Процедура УстановитьКлючРазрешенияЗапуска(Знач Ключ) Экспорт - мКонтекстКоманды.КлючРазрешенияЗапуска = Ключ; + мКонтекстКоманды.КлючРазрешенияЗапуска = Ключ; КонецПроцедуры Процедура УстановитьКодЯзыка(Знач Код) Экспорт - мКонтекстКоманды.КодЯзыка = Код; - Если ПустаяСтрока(мКонтекстКоманды.КодЯзыкаСеанса) Тогда - мКонтекстКоманды.КодЯзыкаСеанса = Код; - КонецЕсли; + мКонтекстКоманды.КодЯзыка = Код; + Если ПустаяСтрока(мКонтекстКоманды.КодЯзыкаСеанса) Тогда + мКонтекстКоманды.КодЯзыкаСеанса = Код; + КонецЕсли; КонецПроцедуры Процедура УстановитьКодЯзыкаСеанса(Знач Код) Экспорт - мКонтекстКоманды.КодЯзыкаСеанса = Код; + мКонтекстКоманды.КодЯзыкаСеанса = Код; КонецПроцедуры Функция ВыводКоманды() Экспорт - Возврат мВыводКоманды; + Возврат мВыводКоманды; КонецФункции Функция КаталогСборки(Знач Каталог = "") Экспорт - Если мКаталогСборки = Неопределено Тогда - мКаталогСборки = ТекущийКаталог(); - КонецЕсли; + Если мКаталогСборки = Неопределено Тогда + мКаталогСборки = ТекущийКаталог(); + КонецЕсли; - Если Каталог = "" Тогда - Возврат мКаталогСборки; - Иначе - ТекКаталог = мКаталогСборки; - мКаталогСборки = Каталог; - Возврат ТекКаталог; - КонецЕсли; + Если Каталог = "" Тогда + Возврат мКаталогСборки; + Иначе + ТекКаталог = мКаталогСборки; + мКаталогСборки = Каталог; + Возврат ТекКаталог; + КонецЕсли; КонецФункции Функция ПутьКПлатформе1С(Знач Путь = "") Экспорт - Если Путь = "" Тогда - Возврат мПутьКПлатформе1С; - Иначе - ФайлПлатформы = Новый Файл(Путь); - Если Не ФайлПлатформы.Существует() Тогда - ВызватьИсключение "Нельзя установить несуществующий путь к платформе: " + ФайлПлатформы.ПолноеИмя; - КонецЕсли; - - ТекЗначение = мПутьКПлатформе1С; - мПутьКПлатформе1С = Путь; - Возврат ТекЗначение; - КонецЕсли; + Если Путь = "" Тогда + Возврат мПутьКПлатформе1С; + Иначе + ФайлПлатформы = Новый Файл(Путь); + Если Не ФайлПлатформы.Существует() Тогда + ВызватьИсключение "Нельзя установить несуществующий путь к платформе: " + ФайлПлатформы.ПолноеИмя; + КонецЕсли; + + ТекЗначение = мПутьКПлатформе1С; + мПутьКПлатформе1С = Путь; + Возврат ТекЗначение; + КонецЕсли; КонецФункции Процедура ИспользоватьВерсиюПлатформы(Знач МаскаВерсии) Экспорт - Путь = ПолучитьПутьКВерсииПлатформы(МаскаВерсии); - ПутьКПлатформе1С(Путь); + Путь = ПолучитьПутьКВерсииПлатформы(МаскаВерсии); + ПутьКПлатформе1С(Путь); КонецПроцедуры Функция ПутьКТонкомуКлиенту1С(Знач ПутьКПлатформе1С = "") Экспорт - Лог.Отладка("ПутьКТонкомуКлиенту1С: Путь платформы 1С <"+ПутьКПлатформе1С+">"); - Если ПутьКПлатформе1С = "" Тогда - ПутьКПлатформе1С = ПутьКПлатформе1С(); - Лог.Отладка("ПутьКТонкомуКлиенту1С: вычислили Путь платформы 1С <"+ПутьКПлатформе1С+">"); - КонецЕсли; - - ФайлПриложения = Новый Файл(ПутьКПлатформе1С); - Каталог = ФайлПриложения.Путь; - ИмяФайлаТонкогоКлиента = ?(ЭтоWindows=Истина, "1cv8c.exe", "1cv8c"); - ФайлПриложения = Новый Файл(ОбъединитьПути(Каталог, ИмяФайлаТонкогоКлиента)); - Если Не ФайлПриложения.Существует() Тогда - ВызватьИсключение "Не установлен тонкий клиент"; - КонецЕсли; - - Лог.Отладка("ПутьКТонкомуКлиенту1С: получили путь к тонкому клиенту 1С <"+ФайлПриложения.ПолноеИмя+">"); - Возврат ФайлПриложения.ПолноеИмя; + Лог.Отладка("ПутьКТонкомуКлиенту1С: Путь платформы 1С <"+ПутьКПлатформе1С+">"); + Если ПутьКПлатформе1С = "" Тогда + ПутьКПлатформе1С = ПутьКПлатформе1С(); + Лог.Отладка("ПутьКТонкомуКлиенту1С: вычислили Путь платформы 1С <"+ПутьКПлатформе1С+">"); + КонецЕсли; + + ФайлПриложения = Новый Файл(ПутьКПлатформе1С); + Каталог = ФайлПриложения.Путь; + ИмяФайлаТонкогоКлиента = ?(ЭтоWindows=Истина, "1cv8c.exe", "1cv8c"); + ФайлПриложения = Новый Файл(ОбъединитьПути(Каталог, ИмяФайлаТонкогоКлиента)); + Если Не ФайлПриложения.Существует() Тогда + ВызватьИсключение "Не установлен тонкий клиент"; + КонецЕсли; + + Лог.Отладка("ПутьКТонкомуКлиенту1С: получили путь к тонкому клиенту 1С <"+ФайлПриложения.ПолноеИмя+">"); + Возврат ФайлПриложения.ПолноеИмя; КонецФункции Процедура УстановитьИмяФайлаСообщенийПлатформы(Знач Имя) Экспорт - мИмяФайлаИнформации = Имя; // если будет абс. путь, то ОбъединитьПути отработает корректно. + мИмяФайлаИнформации = Имя; // если будет абс. путь, то ОбъединитьПути отработает корректно. КонецПроцедуры Процедура УдалитьВременнуюБазу() Экспорт - Если ВременнаяБазаСуществует() Тогда - КаталогВременнойБазы = ПутьКВременнойБазе(); - Лог.Отладка("Удаляю временную базу: "+КаталогВременнойБазы); - УдалитьФайлы(КаталогВременнойБазы); - КонецЕсли; + Если ВременнаяБазаСуществует() Тогда + КаталогВременнойБазы = ПутьКВременнойБазе(); + Лог.Отладка("Удаляю временную базу: "+КаталогВременнойБазы); + УдалитьФайлы(КаталогВременнойБазы); + КонецЕсли; КонецПроцедуры Функция СобратьВозможныеКаталогиУстановкиПлатформыWindows() - СИ = Новый СистемнаяИнформация; - - // Ищем в расположениях для Vista и выше. - // Желающие поддержать пути в Windows XP - welcome - КаталогВсеПользователи = СИ.ПолучитьПеременнуюСреды("ALLUSERSPROFILE"); - КаталогТекущегоПользователя = СИ.ПолучитьПеременнуюСреды("APPDATA"); - - МассивПутей = Новый Массив; - СуффиксРасположения = "1C\1CEStart\1CEStart.cfg"; - - ОбщийКонфиг = ОбъединитьПути(КаталогВсеПользователи, СуффиксРасположения); - ДополнитьМассивРасположенийИзКонфигурационногоФайла(ОбщийКонфиг, МассивПутей); - - ПользовательскийКонфиг = ОбъединитьПути(КаталогТекущегоПользователя, СуффиксРасположения); - ДополнитьМассивРасположенийИзКонфигурационногоФайла(ПользовательскийКонфиг, МассивПутей); - - Возврат МассивПутей; - + СИ = Новый СистемнаяИнформация; + + // Ищем в расположениях для Vista и выше. + // Желающие поддержать пути в Windows XP - welcome + КаталогВсеПользователи = СИ.ПолучитьПеременнуюСреды("ALLUSERSPROFILE"); + КаталогТекущегоПользователя = СИ.ПолучитьПеременнуюСреды("APPDATA"); + + МассивПутей = Новый Массив; + СуффиксРасположения = "1C\1CEStart\1CEStart.cfg"; + + ОбщийКонфиг = ОбъединитьПути(КаталогВсеПользователи, СуффиксРасположения); + ДополнитьМассивРасположенийИзКонфигурационногоФайла(ОбщийКонфиг, МассивПутей); + + ПользовательскийКонфиг = ОбъединитьПути(КаталогТекущегоПользователя, СуффиксРасположения); + ДополнитьМассивРасположенийИзКонфигурационногоФайла(ПользовательскийКонфиг, МассивПутей); + + Возврат МассивПутей; + КонецФункции Процедура ДополнитьМассивРасположенийИзКонфигурационногоФайла(Знач ИмяФайла, Знач МассивПутей) - - ФайлКонфига = Новый Файл(ИмяФайла); - Если Не ФайлКонфига.Существует() Тогда - Лог.Отладка("Конфигурационный файл " + ИмяФайла + " не найден."); - Возврат; - КонецЕсли; - - Лог.Отладка("Читаю конфигурационный файл " + ИмяФайла + "."); - Конфиг = Новый КонфигурацияСтартера; - Конфиг.Открыть(ИмяФайла); - - Значения = Конфиг.ПолучитьСписок("InstalledLocation"); - Если Значения <> Неопределено Тогда - Для Каждого Путь Из Значения Цикл - МассивПутей.Добавить(Путь); - КонецЦикла; - КонецЕсли; - + + ФайлКонфига = Новый Файл(ИмяФайла); + Если Не ФайлКонфига.Существует() Тогда + Лог.Отладка("Конфигурационный файл " + ИмяФайла + " не найден."); + Возврат; + КонецЕсли; + + Лог.Отладка("Читаю конфигурационный файл " + ИмяФайла + "."); + Конфиг = Новый КонфигурацияСтартера; + Конфиг.Открыть(ИмяФайла); + + Значения = Конфиг.ПолучитьСписок("InstalledLocation"); + Если Значения <> Неопределено Тогда + Для Каждого Путь Из Значения Цикл + МассивПутей.Добавить(Путь); + КонецЦикла; + КонецЕсли; + КонецПроцедуры ////////////////////////////////////////////////////////////////////////////////// @@ -758,282 +757,282 @@ Функция СтандартныеПараметрыЗапускаКонфигуратора() - Лог.Отладка("КлючСоединенияСБазой "+КлючСоединенияСБазой()); - Лог.Отладка("ИмяПользователя <"+мКонтекстКоманды.ИмяПользователя+">"); - - ПараметрыЗапуска = Новый Массив; - ПараметрыЗапуска.Добавить("DESIGNER"); - ПараметрыЗапуска.Добавить(КлючСоединенияСБазой()); - - ПараметрыЗапуска.Добавить("/Out" + ОбернутьВКавычки(ФайлИнформации())); - Если Не ПустаяСтрока(мКонтекстКоманды.ИмяПользователя) Тогда - ПараметрыЗапуска.Добавить("/N" + ОбернутьВКавычки(мКонтекстКоманды.ИмяПользователя)); - КонецЕсли; - Если Не ПустаяСтрока(мКонтекстКоманды.Пароль) Тогда - ПараметрыЗапуска.Добавить("/P" + ОбернутьВКавычки(мКонтекстКоманды.Пароль)); - КонецЕсли; - ПараметрыЗапуска.Добавить("/WA+"); - Если Не ПустаяСтрока(мКонтекстКоманды.КлючРазрешенияЗапуска) Тогда - ПараметрыЗапуска.Добавить("/UC" + ОбернутьВКавычки(мКонтекстКоманды.КлючРазрешенияЗапуска)); - КонецЕсли; - Если НЕ ПустаяСтрока(мКонтекстКоманды.КодЯзыка) Тогда - ПараметрыЗапуска.Добавить("/L"+мКонтекстКоманды.КодЯзыка); - КонецЕсли; - Если НЕ ПустаяСтрока(мКонтекстКоманды.КодЯзыкаСеанса) Тогда - ПараметрыЗапуска.Добавить("/VL"+мКонтекстКоманды.КодЯзыкаСеанса); - КонецЕсли; - ПараметрыЗапуска.Добавить("/DisableStartupMessages"); - ПараметрыЗапуска.Добавить("/DisableStartupDialogs"); - - Возврат ПараметрыЗапуска; + Лог.Отладка("КлючСоединенияСБазой "+КлючСоединенияСБазой()); + Лог.Отладка("ИмяПользователя <"+мКонтекстКоманды.ИмяПользователя+">"); + + ПараметрыЗапуска = Новый Массив; + ПараметрыЗапуска.Добавить("DESIGNER"); + ПараметрыЗапуска.Добавить(КлючСоединенияСБазой()); + + ПараметрыЗапуска.Добавить("/Out" + ОбернутьВКавычки(ФайлИнформации())); + Если Не ПустаяСтрока(мКонтекстКоманды.ИмяПользователя) Тогда + ПараметрыЗапуска.Добавить("/N" + ОбернутьВКавычки(мКонтекстКоманды.ИмяПользователя)); + КонецЕсли; + Если Не ПустаяСтрока(мКонтекстКоманды.Пароль) Тогда + ПараметрыЗапуска.Добавить("/P" + ОбернутьВКавычки(мКонтекстКоманды.Пароль)); + КонецЕсли; + ПараметрыЗапуска.Добавить("/WA+"); + Если Не ПустаяСтрока(мКонтекстКоманды.КлючРазрешенияЗапуска) Тогда + ПараметрыЗапуска.Добавить("/UC" + ОбернутьВКавычки(мКонтекстКоманды.КлючРазрешенияЗапуска)); + КонецЕсли; + Если НЕ ПустаяСтрока(мКонтекстКоманды.КодЯзыка) Тогда + ПараметрыЗапуска.Добавить("/L"+мКонтекстКоманды.КодЯзыка); + КонецЕсли; + Если НЕ ПустаяСтрока(мКонтекстКоманды.КодЯзыкаСеанса) Тогда + ПараметрыЗапуска.Добавить("/VL"+мКонтекстКоманды.КодЯзыкаСеанса); + КонецЕсли; + ПараметрыЗапуска.Добавить("/DisableStartupMessages"); + ПараметрыЗапуска.Добавить("/DisableStartupDialogs"); + + Возврат ПараметрыЗапуска; КонецФункции Процедура ПроверитьВозможностьВыполненияКоманды() - Если Не ЗначениеЗаполнено(ПутьКПлатформе1С()) Тогда - ВызватьИсключение "Не задан путь к платформе 1С"; - КонецЕсли; + Если Не ЗначениеЗаполнено(ПутьКПлатформе1С()) Тогда + ВызватьИсключение "Не задан путь к платформе 1С"; + КонецЕсли; - Лог.Отладка("Проверяю равенство КлючСоединенияСБазой() = КлючВременногоКонтекста() и Не ВременнаяБазаСуществует()"); - Лог.Отладка("КлючСоединенияСБазой() "+КлючСоединенияСБазой()); - Лог.Отладка("КлючВременногоКонтекста() "+КлючВременногоКонтекста()); - Лог.Отладка("ВременнаяБазаСуществует() "+ВременнаяБазаСуществует()); + Лог.Отладка("Проверяю равенство КлючСоединенияСБазой() = КлючВременногоКонтекста() и Не ВременнаяБазаСуществует()"); + Лог.Отладка("КлючСоединенияСБазой() "+КлючСоединенияСБазой()); + Лог.Отладка("КлючВременногоКонтекста() "+КлючВременногоКонтекста()); + Лог.Отладка("ВременнаяБазаСуществует() "+ВременнаяБазаСуществует()); - Если КлючСоединенияСБазой() = КлючВременногоКонтекста() и Не ВременнаяБазаСуществует() Тогда - Лог.Отладка("Равенство выполняется."); - СоздатьВременнуюБазу(); - Иначе - Лог.Отладка("Равенство не выполняется."); - КонецЕсли; + Если КлючСоединенияСБазой() = КлючВременногоКонтекста() и Не ВременнаяБазаСуществует() Тогда + Лог.Отладка("Равенство выполняется."); + СоздатьВременнуюБазу(); + Иначе + Лог.Отладка("Равенство не выполняется."); + КонецЕсли; КонецПроцедуры Функция КлючСоединенияСБазой() - Если ПустаяСтрока(мКонтекстКоманды.КлючСоединенияСБазой) Тогда - Возврат КлючВременногоКонтекста(); - Иначе - Возврат мКонтекстКоманды.КлючСоединенияСБазой; - КонецЕсли; + Если ПустаяСтрока(мКонтекстКоманды.КлючСоединенияСБазой) Тогда + Возврат КлючВременногоКонтекста(); + Иначе + Возврат мКонтекстКоманды.КлючСоединенияСБазой; + КонецЕсли; КонецФункции Процедура СоздатьВременнуюБазу() - КаталогВременнойБазы = ПутьКВременнойБазе(); - Лог.Отладка("Создаю временную базу. Путь "+КаталогВременнойБазы); + КаталогВременнойБазы = ПутьКВременнойБазе(); + Лог.Отладка("Создаю временную базу. Путь "+КаталогВременнойБазы); - СоздатьФайловуюБазу(КаталогВременнойБазы); + СоздатьФайловуюБазу(КаталогВременнойБазы); КонецПроцедуры Функция ЗапуститьИПодождать(Знач Параметры) - СтрокаЗапуска = ""; - СтрокаДляЛога = ""; - Для Каждого Параметр Из Параметры Цикл + СтрокаЗапуска = ""; + СтрокаДляЛога = ""; + Для Каждого Параметр Из Параметры Цикл - СтрокаЗапуска = СтрокаЗапуска + " " + Параметр; + СтрокаЗапуска = СтрокаЗапуска + " " + Параметр; - Если Лев(Параметр,2) <> "/P" и Лев(Параметр,25) <> "/ConfigurationRepositoryP" Тогда - СтрокаДляЛога = СтрокаДляЛога + " " + Параметр; - КонецЕсли; + Если Лев(Параметр,2) <> "/P" и Лев(Параметр,25) <> "/ConfigurationRepositoryP" Тогда + СтрокаДляЛога = СтрокаДляЛога + " " + Параметр; + КонецЕсли; - КонецЦикла; + КонецЦикла; - КодВозврата = 0; + КодВозврата = 0; - Приложение = ОбернутьВКавычки(ПутьКПлатформе1С()); - Лог.Отладка(Приложение + СтрокаДляЛога); + Приложение = ОбернутьВКавычки(ПутьКПлатформе1С()); + Лог.Отладка(Приложение + СтрокаДляЛога); - Если ЭтоWindows = Ложь Тогда - СтрокаЗапуска = "sh -c '"+Приложение + СтрокаЗапуска + "'"; - Иначе - СтрокаЗапуска = Приложение + СтрокаЗапуска; - КонецЕсли; - ЗапуститьПриложение(СтрокаЗапуска, , Истина, КодВозврата); + Если ЭтоWindows = Ложь Тогда + СтрокаЗапуска = "sh -c '"+Приложение + СтрокаЗапуска + "'"; + Иначе + СтрокаЗапуска = Приложение + СтрокаЗапуска; + КонецЕсли; + ЗапуститьПриложение(СтрокаЗапуска, , Истина, КодВозврата); - Возврат КодВозврата; + Возврат КодВозврата; КонецФункции Функция ПрочитатьФайлИнформации() - Текст = ""; + Текст = ""; - Файл = Новый Файл(ФайлИнформации()); - Если Файл.Существует() Тогда - Чтение = Новый ЧтениеТекста(Файл.ПолноеИмя); - Текст = Чтение.Прочитать(); - Чтение.Закрыть(); - Иначе - Текст = "Информации об ошибке нет"; - КонецЕсли; + Файл = Новый Файл(ФайлИнформации()); + Если Файл.Существует() Тогда + Чтение = Новый ЧтениеТекста(Файл.ПолноеИмя); + Текст = Чтение.Прочитать(); + Чтение.Закрыть(); + Иначе + Текст = "Информации об ошибке нет"; + КонецЕсли; - Лог.Отладка("файл информации: - |"+Текст); - Возврат Текст; + Лог.Отладка("файл информации: + |"+Текст); + Возврат Текст; КонецФункции Процедура УстановитьВывод(Знач Сообщение) - мВыводКоманды = Сообщение; + мВыводКоманды = Сообщение; КонецПроцедуры Функция ФайлИнформации() Экспорт - Если мИмяФайлаИнформации = Неопределено Тогда - выделенныйВременныйФайл = ПолучитьИмяВременногоФайла("txt"); - указательНаВременныйФайл = Новый Файл(выделенныйВременныйФайл); - мИмяФайлаИнформации = указательНаВременныйФайл.Имя; - указательНаВременныйФайл = ""; - КонецЕсли; - - Возврат ОбъединитьПути(КаталогСборки(), мИмяФайлаИнформации); + Если мИмяФайлаИнформации = Неопределено Тогда + выделенныйВременныйФайл = ПолучитьИмяВременногоФайла("txt"); + указательНаВременныйФайл = Новый Файл(выделенныйВременныйФайл); + мИмяФайлаИнформации = указательНаВременныйФайл.Имя; + указательНаВременныйФайл = ""; + КонецЕсли; + + Возврат ОбъединитьПути(КаталогСборки(), мИмяФайлаИнформации); КонецФункции Процедура ОбеспечитьКаталог(Знач Каталог) - Файл = Новый Файл(Каталог); - Если Не Файл.Существует() Тогда - СоздатьКаталог(Каталог); - ИначеЕсли Не Файл.ЭтоКаталог() Тогда - ВызватьИсключение "Каталог " + Каталог + " не является каталогом"; - КонецЕсли; + Файл = Новый Файл(Каталог); + Если Не Файл.Существует() Тогда + СоздатьКаталог(Каталог); + ИначеЕсли Не Файл.ЭтоКаталог() Тогда + ВызватьИсключение "Каталог " + Каталог + " не является каталогом"; + КонецЕсли; КонецПроцедуры Функция КлючВременногоКонтекста() - Возврат "/F""" + ПутьКВременнойБазе() + """"; + Возврат "/F""" + ПутьКВременнойБазе() + """"; КонецФункции Функция ВременнаяБазаСуществует() Экспорт - ФайлБазы = Новый Файл(ОбъединитьПути(ПутьКВременнойБазе(), "1Cv8.1CD")); - - Возврат ФайлБазы.Существует(); + ФайлБазы = Новый Файл(ОбъединитьПути(ПутьКВременнойБазе(), "1Cv8.1CD")); + + Возврат ФайлБазы.Существует(); КонецФункции Функция ХранилищеКонфигурацииСуществует(Знач ПапкаХранилища) Экспорт - ФайлБазы = Новый Файл(ОбъединитьПути(ПапкаХранилища, "1cv8ddb.1CD")); - - Возврат ФайлБазы.Существует(); + ФайлБазы = Новый Файл(ОбъединитьПути(ПапкаХранилища, "1cv8ddb.1CD")); + + Возврат ФайлБазы.Существует(); КонецФункции Функция РазложитьСтрокуВМассивПодстрок(ИсходнаяСтрока, Разделитель) - МассивПодстрок = Новый Массив; - ОстатокСтроки = ИсходнаяСтрока; + МассивПодстрок = Новый Массив; + ОстатокСтроки = ИсходнаяСтрока; - Поз = -1; - Пока Поз <> 0 Цикл + Поз = -1; + Пока Поз <> 0 Цикл - Поз = Найти(ОстатокСтроки, Разделитель); - Если Поз > 0 Тогда - Подстрока = Лев(ОстатокСтроки, Поз-1); - ОстатокСтроки = Сред(ОстатокСтроки, Поз+1); - Иначе - Подстрока = ОстатокСтроки; - КонецЕсли; + Поз = Найти(ОстатокСтроки, Разделитель); + Если Поз > 0 Тогда + Подстрока = Лев(ОстатокСтроки, Поз-1); + ОстатокСтроки = Сред(ОстатокСтроки, Поз+1); + Иначе + Подстрока = ОстатокСтроки; + КонецЕсли; - МассивПодстрок.Добавить(Подстрока); + МассивПодстрок.Добавить(Подстрока); - КонецЦикла; + КонецЦикла; - Возврат МассивПодстрок; + Возврат МассивПодстрок; КонецФункции Функция ОбернутьВКавычки(Знач Строка); - Если Лев(Строка, 1) = """" и Прав(Строка, 1) = """" Тогда - Возврат Строка; - Иначе - Возврат """" + Строка + """"; - КонецЕсли; + Если Лев(Строка, 1) = """" и Прав(Строка, 1) = """" Тогда + Возврат Строка; + Иначе + Возврат """" + Строка + """"; + КонецЕсли; КонецФункции Процедура Инициализация() - СистемнаяИнформация = Новый СистемнаяИнформация; - ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0; + СистемнаяИнформация = Новый СистемнаяИнформация; + ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0; - мКонтекстКоманды = Новый Структура; - мКонтекстКоманды.Вставить("КлючСоединенияСБазой", ""); - мКонтекстКоманды.Вставить("ИмяПользователя", ""); - мКонтекстКоманды.Вставить("Пароль", ""); - мКонтекстКоманды.Вставить("КлючРазрешенияЗапуска", ""); - мКонтекстКоманды.Вставить("КодЯзыка", ""); - мКонтекстКоманды.Вставить("КодЯзыкаСеанса", ""); + мКонтекстКоманды = Новый Структура; + мКонтекстКоманды.Вставить("КлючСоединенияСБазой", ""); + мКонтекстКоманды.Вставить("ИмяПользователя", ""); + мКонтекстКоманды.Вставить("Пароль", ""); + мКонтекстКоманды.Вставить("КлючРазрешенияЗапуска", ""); + мКонтекстКоманды.Вставить("КодЯзыка", ""); + мКонтекстКоманды.Вставить("КодЯзыкаСеанса", ""); - ПутьКПлатформе1С(ПолучитьПутьКВерсииПлатформы("8.3")); + ПутьКПлатформе1С(ПолучитьПутьКВерсииПлатформы("8.3")); КонецПроцедуры Функция СкопироватьСтруктуру(Знач Источник) - Копия = Новый Структура; - Для Каждого КлючИЗначение Из Источник Цикл - Копия.Вставить(КлючИЗначение.Ключ, КлючИЗначение.Значение); - КонецЦикла; + Копия = Новый Структура; + Для Каждого КлючИЗначение Из Источник Цикл + Копия.Вставить(КлючИЗначение.Ключ, КлючИЗначение.Значение); + КонецЦикла; - Возврат Копия; + Возврат Копия; КонецФункции Процедура ПолучитьИзмененияКонфигурацииБазыДанныхИзХранилища(Знач СтрокаСоединения, Знач ПользовательХранилища, Знач ПарольХранилища="") Экспорт - ПараметрыСвязиСБазой = СтандартныеПараметрыЗапускаКонфигуратора(); - - ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryF """+СтрокаСоединения+""""); - ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryN """+ПользовательХранилища+""""); - - Если Не ПустаяСтрока(ПарольХранилища) Тогда - ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryP """+ПарольХранилища+""""); - КонецЕсли; - - ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryUpdateCfg"); - ПараметрыСвязиСБазой.Добавить("-force"); - - ВыполнитьКоманду(ПараметрыСвязиСБазой); + ПараметрыСвязиСБазой = СтандартныеПараметрыЗапускаКонфигуратора(); + + ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryF """+СтрокаСоединения+""""); + ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryN """+ПользовательХранилища+""""); + + Если Не ПустаяСтрока(ПарольХранилища) Тогда + ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryP """+ПарольХранилища+""""); + КонецЕсли; + + ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryUpdateCfg"); + ПараметрыСвязиСБазой.Добавить("-force"); + + ВыполнитьКоманду(ПараметрыСвязиСБазой); КонецПроцедуры Процедура ОбновитьКонфигурациюБазыДанныхИзХранилища(СтрокаСоединения, ПользовательХранилища, ПарольХранилища="") Экспорт - ПараметрыСвязиСБазой = СтандартныеПараметрыЗапускаКонфигуратора(); - - ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryF """+СтрокаСоединения+""""); - ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryN """+ПользовательХранилища+""""); - - Если Не ПустаяСтрока(ПарольХранилища) Тогда - ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryP """+ПарольХранилища+""""); - КонецЕсли; - - ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryUpdateCfg"); - ПараметрыСвязиСБазой.Добавить("-force"); - - ПараметрыСвязиСБазой.Добавить("/UpdateDBCfg"); - - ВыполнитьКоманду(ПараметрыСвязиСБазой); + ПараметрыСвязиСБазой = СтандартныеПараметрыЗапускаКонфигуратора(); + + ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryF """+СтрокаСоединения+""""); + ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryN """+ПользовательХранилища+""""); + + Если Не ПустаяСтрока(ПарольХранилища) Тогда + ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryP """+ПарольХранилища+""""); + КонецЕсли; + + ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryUpdateCfg"); + ПараметрыСвязиСБазой.Добавить("-force"); + + ПараметрыСвязиСБазой.Добавить("/UpdateDBCfg"); + + ВыполнитьКоманду(ПараметрыСвязиСБазой); КонецПроцедуры Функция ВариантОбработкиНесуществующихСсылок() Экспорт - Варианты = Новый Структура; - Варианты.Вставить("СоздаватьОбъекты", 1); - Варианты.Вставить("ОчищатьОбъекты", 2); - Варианты.Вставить("НеИзменять", 3); + Варианты = Новый Структура; + Варианты.Вставить("СоздаватьОбъекты", 1); + Варианты.Вставить("ОчищатьОбъекты", 2); + Варианты.Вставить("НеИзменять", 3); - Возврат Новый ФиксированнаяСтруктура(Варианты); + Возврат Новый ФиксированнаяСтруктура(Варианты); КонецФункции // ИмяФункции() Функция ВариантОбработкиЧастичнойПотериДанных() Экспорт - - Варианты = Новый Структура; - Варианты.Вставить("СоздаватьОбъекты", 1); - Варианты.Вставить("УдалятьОбъекты", 2); + + Варианты = Новый Структура; + Варианты.Вставить("СоздаватьОбъекты", 1); + Варианты.Вставить("УдалятьОбъекты", 2); - Возврат Новый ФиксированнаяСтруктура(Варианты); + Возврат Новый ФиксированнаяСтруктура(Варианты); КонецФункции // ИмяФункции() @@ -1051,23 +1050,23 @@ // Функция ПолучитьОпцииТиИ() Экспорт - ВариантыОбработкиНесуществующихСсылок = ВариантОбработкиНесуществующихСсылок(); - ВариантыОбработкиЧастичнойПотериДанных = ВариантОбработкиЧастичнойПотериДанных(); + ВариантыОбработкиНесуществующихСсылок = ВариантОбработкиНесуществующихСсылок(); + ВариантыОбработкиЧастичнойПотериДанных = ВариантОбработкиЧастичнойПотериДанных(); - СтруктураОпцииТиИ = Новый Структура; - СтруктураОпцииТиИ.Вставить("ТолькоТестирование", Истина); - СтруктураОпцииТиИ.Вставить("Реиндексация", Истина); - СтруктураОпцииТиИ.Вставить("ЛогическаяЦелостность", Истина); - СтруктураОпцииТиИ.Вставить("ЛогическаяИСсылочнаяЦелостность", Истина); - СтруктураОпцииТиИ.Вставить("ПересчетИтогов", Истина); - СтруктураОпцииТиИ.Вставить("СжатиеТаблиц", Истина); - СтруктураОпцииТиИ.Вставить("Реструктуризация", Истина); - СтруктураОпцииТиИ.Вставить("ВариантОбработкиНесуществующихСсылок", ВариантыОбработкиНесуществующихСсылок.СоздаватьОбъекты); - СтруктураОпцииТиИ.Вставить("ВариантОбработкиЧастичнойПотериДанных", ВариантыОбработкиЧастичнойПотериДанных.СоздаватьОбъекты); - СтруктураОпцииТиИ.Вставить("ПродолжитьТиИСТочкиПрерывания", Ложь); - СтруктураОпцииТиИ.Вставить("МаксВремяТестирования", ""); - Возврат СтруктураОпцииТиИ; + СтруктураОпцииТиИ = Новый Структура; + СтруктураОпцииТиИ.Вставить("ТолькоТестирование", Истина); + СтруктураОпцииТиИ.Вставить("Реиндексация", Истина); + СтруктураОпцииТиИ.Вставить("ЛогическаяЦелостность", Истина); + СтруктураОпцииТиИ.Вставить("ЛогическаяИСсылочнаяЦелостность", Истина); + СтруктураОпцииТиИ.Вставить("ПересчетИтогов", Истина); + СтруктураОпцииТиИ.Вставить("СжатиеТаблиц", Истина); + СтруктураОпцииТиИ.Вставить("Реструктуризация", Истина); + СтруктураОпцииТиИ.Вставить("ВариантОбработкиНесуществующихСсылок", ВариантыОбработкиНесуществующихСсылок.СоздаватьОбъекты); + СтруктураОпцииТиИ.Вставить("ВариантОбработкиЧастичнойПотериДанных", ВариантыОбработкиЧастичнойПотериДанных.СоздаватьОбъекты); + СтруктураОпцииТиИ.Вставить("ПродолжитьТиИСТочкиПрерывания", Ложь); + СтруктураОпцииТиИ.Вставить("МаксВремяТестирования", ""); + Возврат СтруктураОпцииТиИ; КонецФункции // ПолучитьОпцииТиИ() @@ -1092,38 +1091,38 @@ // Процедура ЗапуститьТестированиеИИсправление(Параметры = Неопределено) Экспорт - ПараметрыСвязиСБазой = СтандартныеПараметрыЗапускаКонфигуратора(); - ВариантыОбработкиНесуществующихСсылок = ВариантОбработкиНесуществующихСсылок(); - ВариантыОбработкиЧастичнойПотериДанных = ВариантОбработкиЧастичнойПотериДанных(); + ПараметрыСвязиСБазой = СтандартныеПараметрыЗапускаКонфигуратора(); + ВариантыОбработкиНесуществующихСсылок = ВариантОбработкиНесуществующихСсылок(); + ВариантыОбработкиЧастичнойПотериДанных = ВариантОбработкиЧастичнойПотериДанных(); - Если Параметры = Неопределено Тогда - Параметры = ПолучитьОпцииТиИ(); - КонецЕсли; + Если Параметры = Неопределено Тогда + Параметры = ПолучитьОпцииТиИ(); + КонецЕсли; - СтрокаОпций = "/IBCheckAndRepair"; - СтрокаОпций = СтрокаОпций + ?(Параметры.ТолькоТестирование, " -TestOnly", ""); - СтрокаОпций = СтрокаОпций + ?(Параметры.Реиндексация, " -ReIndex", ""); - СтрокаОпций = СтрокаОпций + ?(Параметры.ЛогическаяЦелостность, " -LogIntegrity", ""); - СтрокаОпций = СтрокаОпций + ?(Параметры.ЛогическаяИСсылочнаяЦелостность, " -LogAndRefsIntegrity", ""); - СтрокаОпций = СтрокаОпций + ?(Параметры.ПересчетИтогов, " -RecalcTotals", ""); - СтрокаОпций = СтрокаОпций + ?(Параметры.СжатиеТаблиц, " -IBCompression", ""); - СтрокаОпций = СтрокаОпций + ?(Параметры.Реструктуризация, " -Rebuild", ""); + СтрокаОпций = "/IBCheckAndRepair"; + СтрокаОпций = СтрокаОпций + ?(Параметры.ТолькоТестирование, " -TestOnly", ""); + СтрокаОпций = СтрокаОпций + ?(Параметры.Реиндексация, " -ReIndex", ""); + СтрокаОпций = СтрокаОпций + ?(Параметры.ЛогическаяЦелостность, " -LogIntegrity", ""); + СтрокаОпций = СтрокаОпций + ?(Параметры.ЛогическаяИСсылочнаяЦелостность, " -LogAndRefsIntegrity", ""); + СтрокаОпций = СтрокаОпций + ?(Параметры.ПересчетИтогов, " -RecalcTotals", ""); + СтрокаОпций = СтрокаОпций + ?(Параметры.СжатиеТаблиц, " -IBCompression", ""); + СтрокаОпций = СтрокаОпций + ?(Параметры.Реструктуризация, " -Rebuild", ""); - БитыеСсылки = Параметры.ВариантОбработкиНесуществующихСсылок; - СтрокаОпций = СтрокаОпций + ?(БитыеСсылки = ВариантыОбработкиНесуществующихСсылок.СоздаватьОбъекты, " -BadRefCreate", ?(БитыеСсылки = ВариантыОбработкиНесуществующихСсылок.ОчищатьОбъекты, " -BadRefClear", " -BadRefNone")); + БитыеСсылки = Параметры.ВариантОбработкиНесуществующихСсылок; + СтрокаОпций = СтрокаОпций + ?(БитыеСсылки = ВариантыОбработкиНесуществующихСсылок.СоздаватьОбъекты, " -BadRefCreate", ?(БитыеСсылки = ВариантыОбработкиНесуществующихСсылок.ОчищатьОбъекты, " -BadRefClear", " -BadRefNone")); - ЧастичнаяПотеря = Параметры.ВариантОбработкиЧастичнойПотериДанных; - СтрокаОпций = СтрокаОпций + ?(ЧастичнаяПотеря = ВариантыОбработкиЧастичнойПотериДанных.СоздаватьОбъекты, " -BadDataCreate", " -BadDataDelete"); + ЧастичнаяПотеря = Параметры.ВариантОбработкиЧастичнойПотериДанных; + СтрокаОпций = СтрокаОпций + ?(ЧастичнаяПотеря = ВариантыОбработкиЧастичнойПотериДанных.СоздаватьОбъекты, " -BadDataCreate", " -BadDataDelete"); - СтрокаОпций = СтрокаОпций + ?(Параметры.ПродолжитьТиИСТочкиПрерывания, " -UseStartPoint", ""); + СтрокаОпций = СтрокаОпций + ?(Параметры.ПродолжитьТиИСТочкиПрерывания, " -UseStartPoint", ""); - СтрокаОпций = СтрокаОпций + ?(Параметры.МаксВремяТестирования = "", ""," -TimeLimit:" + Параметры.МаксВремяТестирования); - - ПараметрыСвязиСБазой.Добавить(СтрокаОпций); + СтрокаОпций = СтрокаОпций + ?(Параметры.МаксВремяТестирования = "", ""," -TimeLimit:" + Параметры.МаксВремяТестирования); + + ПараметрыСвязиСБазой.Добавить(СтрокаОпций); - Лог.Отладка("Параметры запуска ТиИ: " + СтрокаОпций); + Лог.Отладка("Параметры запуска ТиИ: " + СтрокаОпций); - ВыполнитьКоманду(ПараметрыСвязиСБазой); + ВыполнитьКоманду(ПараметрыСвязиСБазой); КонецПроцедуры // ИмяПроцедуры() diff --git a/tests/v8runner-test.os b/tests/v8runner-test.os index c868628..3c2f4eb 100644 --- a/tests/v8runner-test.os +++ b/tests/v8runner-test.os @@ -6,141 +6,140 @@ Перем УправлениеКонфигуратором; Процедура Инициализация() - - УправлениеКонфигуратором = Новый УправлениеКонфигуратором; - Лог = Логирование.ПолучитьЛог("oscript.lib.v8runner"); - Лог.УстановитьУровень(УровниЛога.Отладка); + + УправлениеКонфигуратором = Новый УправлениеКонфигуратором; + Лог = Логирование.ПолучитьЛог("oscript.lib.v8runner"); + Лог.УстановитьУровень(УровниЛога.Отладка); КонецПроцедуры Функция ПолучитьСписокТестов(Тестирование) Экспорт - - юТест = Тестирование; - - СписокТестов = Новый Массив; - СписокТестов.Добавить("ТестДолжен_ИзменитьКаталогСборки"); - СписокТестов.Добавить("ТестДолжен_СоздатьВременнуюБазу"); - СписокТестов.Добавить("ТестДолжен_ПроверитьНазначениеПутиКПлатформе"); - СписокТестов.Добавить("ТестДолжен_ПроверитьУстановкуЯзыкаИнтерфейса"); - СписокТестов.Добавить("ТестДолжен_СоздатьХранилищеКонфигурации"); - СписокТестов.Добавить("ТестДолжен_ПроверитьСозданиеФайловПоставки"); - СписокТестов.Добавить("ТестДолжен_ДобавитьПользователяВХранилище"); - - Возврат СписокТестов; - + + юТест = Тестирование; + + СписокТестов = Новый Массив; + СписокТестов.Добавить("ТестДолжен_ИзменитьКаталогСборки"); + СписокТестов.Добавить("ТестДолжен_СоздатьВременнуюБазу"); + СписокТестов.Добавить("ТестДолжен_ПроверитьНазначениеПутиКПлатформе"); + СписокТестов.Добавить("ТестДолжен_ПроверитьУстановкуЯзыкаИнтерфейса"); + СписокТестов.Добавить("ТестДолжен_СоздатьХранилищеКонфигурации"); + СписокТестов.Добавить("ТестДолжен_ПроверитьСозданиеФайловПоставки"); + + Возврат СписокТестов; + КонецФункции Процедура ТестДолжен_ИзменитьКаталогСборки() Экспорт - - ПоУмолчанию = ТекущийКаталог(); - Утверждения.ПроверитьРавенство(УправлениеКонфигуратором.КаталогСборки(), ПоУмолчанию, "По умолчанию каталог сборки должен совпадать с текущим каталогом"); - - СтароеЗначение = УправлениеКонфигуратором.КаталогСборки(КаталогВременныхФайлов()); - Утверждения.ПроверитьРавенство(СтароеЗначение, ПоУмолчанию, "Предыдущее значение каталога должно возвращяться при его смене"); - Утверждения.ПроверитьРавенство(УправлениеКонфигуратором.КаталогСборки(), КаталогВременныхФайлов(), "Каталог сборки должен быть изменен"); - + + ПоУмолчанию = ТекущийКаталог(); + Утверждения.ПроверитьРавенство(УправлениеКонфигуратором.КаталогСборки(), ПоУмолчанию, "По умолчанию каталог сборки должен совпадать с текущим каталогом"); + + СтароеЗначение = УправлениеКонфигуратором.КаталогСборки(КаталогВременныхФайлов()); + Утверждения.ПроверитьРавенство(СтароеЗначение, ПоУмолчанию, "Предыдущее значение каталога должно возвращяться при его смене"); + Утверждения.ПроверитьРавенство(УправлениеКонфигуратором.КаталогСборки(), КаталогВременныхФайлов(), "Каталог сборки должен быть изменен"); + КонецПроцедуры Процедура ТестДолжен_СоздатьВременнуюБазу() Экспорт - - Если УправлениеКонфигуратором.ВременнаяБазаСуществует() Тогда - УдалитьФайлы(УправлениеКонфигуратором.ПутьКВременнойБазе()); - КонецЕсли; - - Утверждения.ПроверитьЛожь(УправлениеКонфигуратором.ВременнаяБазаСуществует(), "Временной базы не должно быть в каталоге <"+УправлениеКонфигуратором.ПутьКВременнойБазе()+">"); - УправлениеКонфигуратором.СоздатьФайловуюБазу(УправлениеКонфигуратором.ПутьКВременнойБазе()); - Сообщить(УправлениеКонфигуратором.ВыводКоманды()); - Утверждения.ПроверитьИстину(УправлениеКонфигуратором.ВременнаяБазаСуществует(), "Временная база должна существовать"); - УдалитьФайлы(УправлениеКонфигуратором.ПутьКВременнойБазе()); - + + Если УправлениеКонфигуратором.ВременнаяБазаСуществует() Тогда + УдалитьФайлы(УправлениеКонфигуратором.ПутьКВременнойБазе()); + КонецЕсли; + + Утверждения.ПроверитьЛожь(УправлениеКонфигуратором.ВременнаяБазаСуществует(), "Временной базы не должно быть в каталоге <"+УправлениеКонфигуратором.ПутьКВременнойБазе()+">"); + УправлениеКонфигуратором.СоздатьФайловуюБазу(УправлениеКонфигуратором.ПутьКВременнойБазе()); + Сообщить(УправлениеКонфигуратором.ВыводКоманды()); + Утверждения.ПроверитьИстину(УправлениеКонфигуратором.ВременнаяБазаСуществует(), "Временная база должна существовать"); + УдалитьФайлы(УправлениеКонфигуратором.ПутьКВременнойБазе()); + КонецПроцедуры Процедура ТестДолжен_СоздатьХранилищеКонфигурации() Экспорт - - ВременныйКаталог = ВременныеФайлы.СоздатьКаталог(); - - УправлениеКонфигуратором.КаталогСборки(ВременныйКаталог); - - КаталогВременногоХранилища = ОбъединитьПути(ВременныйКаталог, "v8r_TempRepository"); - - ФайлКонфигурации = ОбъединитьПути(ТекущийСценарий().Каталог, "fixtures", "1.0\1Cv8.cf"); - - - УправлениеКонфигуратором.ЗагрузитьКонфигурациюИзФайла(ФайлКонфигурации); - // по идеи надо проверить что конфигурация загружена. - // Вопрос как? - УправлениеКонфигуратором.СоздатьФайловоеХранилищеКонфигурации( - КаталогВременногоХранилища, - "Администратор"); - Утверждения.ПроверитьИстину(УправлениеКонфигуратором.ХранилищеКонфигурацииСуществует(КаталогВременногоХранилища), "Временное хранилище конфигурации должно существовать"); - ВременныеФайлы.Удалить() - + + ВременныйКаталог = ВременныеФайлы.СоздатьКаталог(); + + УправлениеКонфигуратором.КаталогСборки(ВременныйКаталог); + + КаталогВременногоХранилища = ОбъединитьПути(ВременныйКаталог, "v8r_TempRepository"); + + ФайлКонфигурации = ОбъединитьПути(ТекущийСценарий().Каталог, "fixtures", "1.0\1Cv8.cf"); + + + УправлениеКонфигуратором.ЗагрузитьКонфигурациюИзФайла(ФайлКонфигурации); + // по идеи надо проверить что конфигурация загружена. + // Вопрос как? + УправлениеКонфигуратором.СоздатьФайловоеХранилищеКонфигурации( + КаталогВременногоХранилища, + "Администратор"); + Утверждения.ПроверитьИстину(УправлениеКонфигуратором.ХранилищеКонфигурацииСуществует(КаталогВременногоХранилища), "Временное хранилище конфигурации должно существовать"); + ВременныеФайлы.Удалить() + КонецПроцедуры Процедура ТестДолжен_ПроверитьСозданиеФайловПоставки() Экспорт - - ВременныйКаталог = ВременныеФайлы.СоздатьКаталог(); - - УправлениеКонфигуратором.КаталогСборки(ВременныйКаталог); - - КаталогПоставки = ОбъединитьПути(ВременныйКаталог, "v8r_TempDitr"); - - ПутьФайлКонфигурации = ОбъединитьПути(ТекущийСценарий().Каталог, "fixtures", "1.0\1Cv8.cf"); - - НомерВерсииВыпуска = "1.0"; - - ПутьФайлПредыдущейПоставки = ОбъединитьПути(ТекущийСценарий().Каталог, "fixtures", "0.9\1Cv8.cf"); - - ПутьФайлПолнойПоставки = ОбъединитьПути(КаталогПоставки, НомерВерсииВыпуска +".cf"); - - ПутьФайлаПоставкиОбноления = ОбъединитьПути(КаталогПоставки, НомерВерсииВыпуска+".cfu"); - - МассивФайловПредыдущейПоставки = новый Массив; - МассивФайловПредыдущейПоставки.Добавить(ПутьФайлПредыдущейПоставки); - - УправлениеКонфигуратором.ЗагрузитьКонфигурациюИзФайла(ПутьФайлКонфигурации, Истина); - - УправлениеКонфигуратором.СоздатьФайлыПоставки(ПутьФайлПолнойПоставки, - ПутьФайлаПоставкиОбноления, - МассивФайловПредыдущейПоставки); - - Утверждения.ПроверитьИстину(ФайлСуществует(ПутьФайлПолнойПоставки), "Файл полной поставки конфигурации должен существовать"); - Утверждения.ПроверитьИстину(ФайлСуществует(ПутьФайлаПоставкиОбноления), "Файл частичной поставки конфигурации должен существовать"); - - ВременныеФайлы.Удалить(); - + + ВременныйКаталог = ВременныеФайлы.СоздатьКаталог(); + + УправлениеКонфигуратором.КаталогСборки(ВременныйКаталог); + + КаталогПоставки = ОбъединитьПути(ВременныйКаталог, "v8r_TempDitr"); + + ПутьФайлКонфигурации = ОбъединитьПути(ТекущийСценарий().Каталог, "fixtures", "1.0\1Cv8.cf"); + + НомерВерсииВыпуска = "1.0"; + + ПутьФайлПредыдущейПоставки = ОбъединитьПути(ТекущийСценарий().Каталог, "fixtures", "0.9\1Cv8.cf"); + + ПутьФайлПолнойПоставки = ОбъединитьПути(КаталогПоставки, НомерВерсииВыпуска +".cf"); + + ПутьФайлаПоставкиОбноления = ОбъединитьПути(КаталогПоставки, НомерВерсииВыпуска+".cfu"); + + МассивФайловПредыдущейПоставки = новый Массив; + МассивФайловПредыдущейПоставки.Добавить(ПутьФайлПредыдущейПоставки); + + УправлениеКонфигуратором.ЗагрузитьКонфигурациюИзФайла(ПутьФайлКонфигурации, Истина); + + УправлениеКонфигуратором.СоздатьФайлыПоставки(ПутьФайлПолнойПоставки, + ПутьФайлаПоставкиОбноления, + МассивФайловПредыдущейПоставки); + + Утверждения.ПроверитьИстину(ФайлСуществует(ПутьФайлПолнойПоставки), "Файл полной поставки конфигурации должен существовать"); + Утверждения.ПроверитьИстину(ФайлСуществует(ПутьФайлаПоставкиОбноления), "Файл частичной поставки конфигурации должен существовать"); + + ВременныеФайлы.Удалить(); + КонецПроцедуры Процедура ТестДолжен_ПроверитьНазначениеПутиКПлатформе() Экспорт - - ПутьПоУмолчанию = УправлениеКонфигуратором.ПолучитьПутьКВерсииПлатформы("8.3"); - Утверждения.ПроверитьЛожь(ПустаяСтрока(ПутьПоУмолчанию)); - Утверждения.ПроверитьРавенство(ПутьПоУмолчанию, УправлениеКонфигуратором.ПутьКПлатформе1С()); - - НовыйПуть = "тратата"; - Попытка - УправлениеКонфигуратором.ПутьКПлатформе1С(НовыйПуть); - Исключение - Возврат; - КонецПопытки; - - ВызватьИсключение "Не было выброшено исключение при попытке установить неверный путь"; - + + ПутьПоУмолчанию = УправлениеКонфигуратором.ПолучитьПутьКВерсииПлатформы("8.3"); + Утверждения.ПроверитьЛожь(ПустаяСтрока(ПутьПоУмолчанию)); + Утверждения.ПроверитьРавенство(ПутьПоУмолчанию, УправлениеКонфигуратором.ПутьКПлатформе1С()); + + НовыйПуть = "тратата"; + Попытка + УправлениеКонфигуратором.ПутьКПлатформе1С(НовыйПуть); + Исключение + Возврат; + КонецПопытки; + + ВызватьИсключение "Не было выброшено исключение при попытке установить неверный путь"; + КонецПроцедуры Процедура ТестДолжен_ПроверитьУстановкуЯзыкаИнтерфейса() Экспорт - - ПоУмолчанию = "en"; - УправлениеКонфигуратором.УстановитьКодЯзыка(ПоУмолчанию); - - МассивПараметров = УправлениеКонфигуратором.ПолучитьПараметрыЗапуска(); - Утверждения.ПроверитьБольшеИлиРавно(МассивПараметров.Найти("/L"+ПоУмолчанию), 0, "Массив параметров запуска должен содержать локализацию /L"+ПоУмолчанию + " строка:"+Строка(МассивПараметров)); - Утверждения.ПроверитьБольшеИлиРавно(МассивПараметров.Найти("/VL"+ПоУмолчанию), 0, "Массив запуска должен содержать локализацию сеанаса /VL"+ПоУмолчанию + " строка:"+Строка(МассивПараметров)); - + + ПоУмолчанию = "en"; + УправлениеКонфигуратором.УстановитьКодЯзыка(ПоУмолчанию); + + МассивПараметров = УправлениеКонфигуратором.ПолучитьПараметрыЗапуска(); + Утверждения.ПроверитьБольшеИлиРавно(МассивПараметров.Найти("/L"+ПоУмолчанию), 0, "Массив параметров запуска должен содержать локализацию /L"+ПоУмолчанию + " строка:"+Строка(МассивПараметров)); + Утверждения.ПроверитьБольшеИлиРавно(МассивПараметров.Найти("/VL"+ПоУмолчанию), 0, "Массив запуска должен содержать локализацию сеанаса /VL"+ПоУмолчанию + " строка:"+Строка(МассивПараметров)); + КонецПроцедуры Процедура ТестДолжен_ДобавитьПользователяВХранилище() Экспорт From 82a5a6aa199d53e32cd99b75a27b0e6864bd47e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A5=D0=BE=D1=80=D0=B5=D0=B2=20=D0=90=D0=BB=D0=B5=D0=BA?= =?UTF-8?q?=D1=81=D0=B5=D0=B9=20=D0=90=D0=BD=D0=B4=D1=80=D0=B5=D0=B5=D0=B2?= =?UTF-8?q?=D0=B8=D1=87?= Date: Tue, 17 Jan 2017 19:58:43 +0300 Subject: [PATCH 6/9] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=B8=D1=81=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=BD=D0=B5=D0=BF=D1=80=D0=B8=D0=BC?= =?UTF-8?q?=D0=B8=D1=82=D0=B8=D0=B2=D0=BD=D1=8B=D1=85=20=D1=82=D0=B8=D0=BF?= =?UTF-8?q?=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/v8runner.os | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/v8runner.os b/src/v8runner.os index 8d05e4e..78a30c0 100644 --- a/src/v8runner.os +++ b/src/v8runner.os @@ -167,7 +167,7 @@ Знач ПарольХранилища, Знач НовыйПользователь, Знач ПарольПользователя = "", - Знач Права = ПраваПользователяХранилища.ТолькоЧтение, + Знач Права = Неопределено, Знач ВосстановитьУдаленного = Ложь) Экспорт Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); @@ -184,9 +184,14 @@ Если Не ПустаяСтрока(ПарольПользователя) Тогда Параметры.Добавить(СтрШаблон("-Pwd ""%1""",ПарольПользователя)); КонецЕсли; - + + Если Не ЗначениеЗаполнено(Права) ТОгда + Права = ПраваПользователяХранилища.ТолькоЧтение; + КонецЕсли; + Параметры.Добавить(СтрШаблон("-Rights %1",Права)); + Если ВосстановитьУдаленного Тогда Параметры.Добавить("-RestoreDeletedUser"); КонецЕсли; From 43825c0ca4e8320b68d08680e3dc7546cda3c442 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A5=D0=BE=D1=80=D0=B5=D0=B2=20=D0=90=D0=BB=D0=B5=D0=BA?= =?UTF-8?q?=D1=81=D0=B5=D0=B9=20=D0=90=D0=BD=D0=B4=D1=80=D0=B5=D0=B5=D0=B2?= =?UTF-8?q?=D0=B8=D1=87?= Date: Thu, 19 Jan 2017 09:59:24 +0300 Subject: [PATCH 7/9] =?UTF-8?q?=D0=9A=D0=BE=D1=80=D1=80=D0=B5=D0=BA=D1=82?= =?UTF-8?q?=D0=B8=D1=80=D0=BE=D0=B2=D0=BA=D0=B0=20=D0=BF=D0=B0=D1=80=D0=B0?= =?UTF-8?q?=D0=BC=D0=B5=D1=82=D1=80=D0=B0=20"=D0=9F=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BE"=20=D0=B8=20=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D1=82=D0=B0=D1=86=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/v8runner.os | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/v8runner.os b/src/v8runner.os index 78a30c0..ae18bef 100644 --- a/src/v8runner.os +++ b/src/v8runner.os @@ -154,20 +154,20 @@ // ПарольХранилища - Строка - Пароль пользователь для подключения к хранилищю конфигурации // НовыйПользователь - Строка - Имя создаваемого пользователя. // ПарольПользователя - Строка - Пароль создаваемого пользователя. -// Права — ПраваПользователяХранилища -Права пользователя. Возможные значения: -// ReadOnly — право на просмотр, (по умолчанию) -// LockObjects — право на захват объектов, -// ManageConfigurationVersions — право на изменение состава версий, -// Administration — право на административные функции. -// RestoreDeletedUser — Если обнаружен удаленный пользователь с таким же именем, он будет восстановлен. -// ВосстановитьУдаленного - Булево - флаг небходимости востановления удаленного пользователя -// +// Право — ПраваПользователяХранилища -Права пользователя. Возможные значения: +// ТолькоЧтение — право на просмотр, (по умолчанию) +// ПравоЗахватаОбъектов — право на захват объектов, +// ПравоИзмененияВерсий — право на изменение состава версий, +// Администрирование — право на административные функции. +// ВосстановитьУдаленного - Булево - флаг небходимости востановления удаленного пользователя +// Если обнаружен удаленный пользователь с таким же именем, он будет восстановлен. +// Процедура ДобавитьПользователяВХранилище(Знач СтрокаСоединения, Знач ПользовательХранилища, Знач ПарольХранилища, Знач НовыйПользователь, Знач ПарольПользователя = "", - Знач Права = Неопределено, + Знач Право = Неопределено, Знач ВосстановитьУдаленного = Ложь) Экспорт Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); @@ -185,11 +185,11 @@ Параметры.Добавить(СтрШаблон("-Pwd ""%1""",ПарольПользователя)); КонецЕсли; - Если Не ЗначениеЗаполнено(Права) ТОгда - Права = ПраваПользователяХранилища.ТолькоЧтение; + Если Не ЗначениеЗаполнено(Право) ТОгда + Право = ПраваПользователяХранилища.ТолькоЧтение; КонецЕсли; - Параметры.Добавить(СтрШаблон("-Rights %1",Права)); + Параметры.Добавить(СтрШаблон("-Rights %1",Право)); Если ВосстановитьУдаленного Тогда From bcc1dae60c3720508180151749be229d52c7a2f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A5=D0=BE=D1=80=D0=B5=D0=B2=20=D0=90=D0=BB=D0=B5=D0=BA?= =?UTF-8?q?=D1=81=D0=B5=D0=B9=20=D0=90=D0=BD=D0=B4=D1=80=D0=B5=D0=B5=D0=B2?= =?UTF-8?q?=D0=B8=D1=87?= Date: Thu, 19 Jan 2017 10:01:44 +0300 Subject: [PATCH 8/9] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=BD=D0=B5=D1=81?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D0=BF=D1=80=D0=BE=D1=86=D0=B5=D0=B4=D1=83?= =?UTF-8?q?=D1=80=D0=B0=20=D0=A5=D1=80=D0=B0=D0=BD=D0=B8=D0=BB=D0=B8=D1=89?= =?UTF-8?q?=D0=B5=D0=9A=D0=BE=D0=BD=D1=84=D0=B8=D0=B3=D1=83=D1=80=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D0=B8=D0=A1=D1=83=D1=89=D0=B5=D1=81=D1=82=D0=B2?= =?UTF-8?q?=D1=83=D0=B5=D1=82=20=D0=BC=D0=BE=D0=B4=D1=83=D0=BB=D1=8C=20?= =?UTF-8?q?=D1=82=D0=B5=D1=81=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/v8runner.os | 8 -------- tests/v8runner-test.os | 10 ++++++++-- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/src/v8runner.os b/src/v8runner.os index ae18bef..f22b1d3 100644 --- a/src/v8runner.os +++ b/src/v8runner.os @@ -915,14 +915,6 @@ Возврат ФайлБазы.Существует(); КонецФункции -Функция ХранилищеКонфигурацииСуществует(Знач ПапкаХранилища) Экспорт - ФайлБазы = Новый Файл(ОбъединитьПути(ПапкаХранилища, "1cv8ddb.1CD")); - - Возврат ФайлБазы.Существует(); -КонецФункции - - - Функция РазложитьСтрокуВМассивПодстрок(ИсходнаяСтрока, Разделитель) МассивПодстрок = Новый Массив; diff --git a/tests/v8runner-test.os b/tests/v8runner-test.os index 3c2f4eb..5eb96da 100644 --- a/tests/v8runner-test.os +++ b/tests/v8runner-test.os @@ -72,7 +72,7 @@ УправлениеКонфигуратором.СоздатьФайловоеХранилищеКонфигурации( КаталогВременногоХранилища, "Администратор"); - Утверждения.ПроверитьИстину(УправлениеКонфигуратором.ХранилищеКонфигурацииСуществует(КаталогВременногоХранилища), "Временное хранилище конфигурации должно существовать"); + Утверждения.ПроверитьИстину(ХранилищеКонфигурацииСуществует(КаталогВременногоХранилища), "Временное хранилище конфигурации должно существовать"); ВременныеФайлы.Удалить() КонецПроцедуры @@ -156,7 +156,7 @@ УправлениеКонфигуратором.СоздатьФайловоеХранилищеКонфигурации( КаталогВременногоХранилища, "Администратор"); - Утверждения.ПроверитьИстину(УправлениеКонфигуратором.ХранилищеКонфигурацииСуществует(КаталогВременногоХранилища), "Временное хранилище конфигурации должно существовать"); + Утверждения.ПроверитьИстину(ХранилищеКонфигурацииСуществует(КаталогВременногоХранилища), "Временное хранилище конфигурации должно существовать"); НовыйПользователь = "ТестовыйПользователь"; ПарольПользователя = "ТестПароль"; @@ -175,6 +175,12 @@ ВременныеФайлы.Удалить() КонецПроцедуры +Функция ХранилищеКонфигурацииСуществует(Знач ПапкаХранилища) + ФайлБазы = Новый Файл(ОбъединитьПути(ПапкаХранилища, "1cv8ddb.1CD")); + + Возврат ФайлБазы.Существует(); +КонецФункции + // Проверяет существование каталога // // Параметры: From 9492c8605447952156d38015891b0a7549883249 Mon Sep 17 00:00:00 2001 From: Nikita Gryzlov Date: Thu, 19 Jan 2017 11:37:32 +0300 Subject: [PATCH 9/9] =?UTF-8?q?=D0=9F=D0=BE=D0=BF=D1=80=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D1=84=D0=BE=D1=80=D0=BC=D0=B0=D1=82=D0=B8=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/v8runner.os | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/v8runner.os b/src/v8runner.os index f22b1d3..1343ee5 100644 --- a/src/v8runner.os +++ b/src/v8runner.os @@ -154,7 +154,7 @@ // ПарольХранилища - Строка - Пароль пользователь для подключения к хранилищю конфигурации // НовыйПользователь - Строка - Имя создаваемого пользователя. // ПарольПользователя - Строка - Пароль создаваемого пользователя. -// Право — ПраваПользователяХранилища -Права пользователя. Возможные значения: +// Право - ПраваПользователяХранилища - Права пользователя. Возможные значения: // ТолькоЧтение — право на просмотр, (по умолчанию) // ПравоЗахватаОбъектов — право на захват объектов, // ПравоИзмененияВерсий — право на изменение состава версий,