|
857 | 857 |
|
858 | 858 | КонецПроцедуры
|
859 | 859 |
|
| 860 | +// Создание серверной информационной базы 1С |
| 861 | +// |
| 862 | +// Параметры: |
| 863 | +// ПараметрыБазы1С - Структура |
| 864 | +// Сервер1С - Строка - Адрес кластера серверов 1С ([<протокол>://]<адрес>[:<порт>]) |
| 865 | +// ИмяИБ - Строка - Имя информационной базы на сервере 1С |
| 866 | +// РазрешитьРегЗадания - Булево - Истина - разрешить запуск рег. заданий (по умолчанию: Ложь) |
| 867 | +// ПараметрыСУБД - Структура |
| 868 | +// ТипСУБД - Строка - Тип сервера СУБД ("MSSQLServer" <по умолчанию>; "PostgreSQL"; "IBMDB2"; "OracleDatabase") |
| 869 | +// СерверСУБД - Строка - Адрес сервера СУБД |
| 870 | +// ПользовательСУБД - Строка - Пользователь сервера СУБД |
| 871 | +// ПарольСУБД - Строка - Пароль пользователя сервера СУБД |
| 872 | +// ИмяБД - Строка - Имя базы на сервере СУБД (если не указано будет использовано имя ИБ 1С) |
| 873 | +// СмещениеДат - Строка - Смещение дат на сервере MS SQL (0; 2000 <по умолчанию>) |
| 874 | +// СоздаватьБД - Булево - Истина - будет создана база на сервере СУБД в случае отсутствия (по умолчанию: Ложь) |
| 875 | +// АвторизацияВКластере - Структура |
| 876 | +// Имя - Строка - Имя администратора кластера 1С |
| 877 | +// Пароль - Строка - Пароль администратора кластера 1С |
| 878 | +// ОшибкаЕслиСуществует - Булево - Истина - Вызвать исключение если ИБ в кластере 1С существует (по умолчанию: Ложь) |
| 879 | +// ПутьКШаблону - Строка - Путь к шаблону для создания информационной базы (*.cf; *.dt). |
| 880 | +// Если шаблон не указан, то будет создана пустая ИБ |
| 881 | +// ИмяБазыВСписке - Строка - Имя в списке баз пользователя (если не задано, то ИБ в список не добавляется) |
| 882 | +// |
| 883 | +Процедура СоздатьСервернуюБазу(ПараметрыБазы1С, |
| 884 | + ПараметрыСУБД, |
| 885 | + АвторизацияВКластере, |
| 886 | + Знач ОшибкаЕслиСуществует = Ложь, |
| 887 | + Знач ПутьКШаблону = "", |
| 888 | + Знач ИмяБазыВСписке = "") Экспорт |
| 889 | + |
| 890 | + Сервер1С = ПолучитьПараметр(ПараметрыБазы1С, "Сервер1С"); |
| 891 | + ИмяИБ = ПолучитьПараметр(ПараметрыБазы1С, "ИмяИБ"); |
| 892 | + |
| 893 | + Лог.Отладка("Создание серверной ИБ ""%1\%2""", Сервер1С, ИмяИБ); |
| 894 | + |
| 895 | + РазрешитьРегЗадания = ПолучитьПараметр(ПараметрыБазы1С, "РазрешитьРегЗадания", Ложь); |
| 896 | + |
| 897 | + ТипСУБД = ПолучитьПараметр(ПараметрыСУБД, "ТипСУБД", "MSSQLServer"); |
| 898 | + СерверСУБД = ПолучитьПараметр(ПараметрыСУБД, "СерверСУБД"); |
| 899 | + ПользовательСУБД = ПолучитьПараметр(ПараметрыСУБД, "ПользовательСУБД"); |
| 900 | + ПарольСУБД = ПолучитьПараметр(ПараметрыСУБД, "ПарольСУБД", ""); |
| 901 | + |
| 902 | + ИмяБД = ПолучитьПараметр(ПараметрыСУБД, "ИмяБД"); |
| 903 | + Если НЕ ЗначениеЗаполнено(ИмяБД) Тогда |
| 904 | + ИмяБД = ИмяИБ; |
| 905 | + Лог.Информация("Не указано имя базы на сервере СУБД, будет использовано имя ИБ - ""%1""", ИмяБД); |
| 906 | + КонецЕсли; |
| 907 | + |
| 908 | + СмещениеДат = ПолучитьПараметр(ПараметрыСУБД, "СмещениеДат", "2000"); |
| 909 | + СоздаватьБД = ПолучитьПараметр(ПараметрыСУБД, "СоздаватьБД", Ложь); |
| 910 | + |
| 911 | + АдминистраторКластера = ПолучитьПараметр(АвторизацияВКластере, "Имя", Ложь); |
| 912 | + ПарольКластера = ПолучитьПараметр(АвторизацияВКластере, "Пароль", Ложь); |
| 913 | + |
| 914 | + СтрокаЗапуска = "Srvr=" + СокрЛП(Сервер1С) |
| 915 | + + ";Ref=" + СокрЛП(ИмяИБ) |
| 916 | + + ";DBMS=" + СокрЛП(ТипСУБД) |
| 917 | + + ";DBSrvr=" + СокрЛП(СерверСУБД) |
| 918 | + + ";DBUID=" + СокрЛП(ПользовательСУБД) |
| 919 | + + ";DBPwd=" + СокрЛП(ПарольСУБД) |
| 920 | + + ";DB=" + СокрЛП(ИмяБД) |
| 921 | + + ";SQLYOffs=" + СокрЛП(СмещениеДат) |
| 922 | + + ";CrSQLDB=" + ?(СоздаватьБД, "Y", "N") |
| 923 | + + ";SchJobDn=" + ?(РазрешитьРегЗадания, "N", "Y"); |
| 924 | + |
| 925 | + Если НЕ ПустаяСтрока(АдминистраторКластера) Тогда |
| 926 | + СтрокаЗапуска = СтрокаЗапуска + ";SUsr=" + АдминистраторКластера; |
| 927 | + КонецЕсли; |
| 928 | + |
| 929 | + Если НЕ ПустаяСтрока(ПарольКластера) Тогда |
| 930 | + СтрокаЗапуска = СтрокаЗапуска + ";SPwd=" + ПарольКластера; |
| 931 | + КонецЕсли; |
| 932 | + |
| 933 | + ИмяФайлаРезультата = ПолучитьИмяВременногоФайла("out"); |
| 934 | + |
| 935 | + Лог.Отладка("Строка запуска: %1", СтрокаЗапуска); |
| 936 | + |
| 937 | + ПараметрыЗапуска = Новый Массив; |
| 938 | + ПараметрыЗапуска.Добавить("CREATEINFOBASE"); |
| 939 | + ПараметрыЗапуска.Добавить(ОбернутьВКавычки(СтрокаЗапуска)); |
| 940 | + |
| 941 | + Если мОчищатьФайлИнформации Тогда |
| 942 | + ПараметрыЗапуска.Добавить("/Out " + ОбернутьВКавычки(ФайлИнформации())); |
| 943 | + Иначе |
| 944 | + ПараметрыЗапуска.Добавить("/Out " + ОбернутьВКавычки(ФайлИнформации()) + " -NoTruncate"); |
| 945 | + КонецЕсли; |
| 946 | + |
| 947 | + Если НЕ ПустаяСтрока(ИмяБазыВСписке) Тогда |
| 948 | + ПараметрыЗапуска.Добавить("/AddInList""" + ИмяБазыВСписке + """"); |
| 949 | + КонецЕсли; |
| 950 | + Если НЕ ПустаяСтрока(ПутьКШаблону) Тогда |
| 951 | + ПараметрыЗапуска.Добавить("/UseTemplate""" + ПутьКШаблону + """"); |
| 952 | + КонецЕсли; |
| 953 | + |
| 954 | + Если НЕ ПустаяСтрока(мКонтекстКоманды.КодЯзыка) Тогда |
| 955 | + ПараметрыЗапуска.Добавить("/L" + мКонтекстКоманды.КодЯзыка); |
| 956 | + КонецЕсли; |
| 957 | + Если НЕ ПустаяСтрока(мКонтекстКоманды.КодЯзыкаСеанса) Тогда |
| 958 | + ПараметрыЗапуска.Добавить("/VL" + мКонтекстКоманды.КодЯзыкаСеанса); |
| 959 | + КонецЕсли; |
| 960 | + |
| 961 | + СохранитьТекстФайлаИнформации(); |
| 962 | + |
| 963 | + КодВозврата = ЗапуститьИПодождать(ПараметрыЗапуска); |
| 964 | + |
| 965 | + УстановитьВывод(ПрочитатьФайлИнформации()); |
| 966 | + |
| 967 | + Если КодВозврата = 0 Тогда |
| 968 | + Лог.Информация("Создана серверная ИБ ""%1\%2""", Сервер1С, ИмяИБ); |
| 969 | + Иначе |
| 970 | + Если ОшибкаЕслиСуществует |
| 971 | + ИЛИ СтрНайти(ВРег(ВыводКоманды()), ВРег("информационная база уже существует")) = 0 Тогда |
| 972 | + ВызватьИсключение "Ошибка создания ИБ: """ + ВыводКоманды() + """"; |
| 973 | + КонецЕсли; |
| 974 | + Лог.Информация("Информационная база ""%1\%2"" уже существует.", Сервер1С, ИмяИБ); |
| 975 | + КонецЕсли; |
| 976 | + |
| 977 | +КонецПроцедуры //СоздатьСервернуюБазу() |
| 978 | + |
860 | 979 | Процедура ЗагрузитьИнформационнуюБазу(ПутьВыгрузкиИБ) Экспорт
|
861 | 980 | ФайлВыгрузки = Новый Файл(ПутьВыгрузкиИБ);
|
862 | 981 | Ожидаем.Что(ФайлВыгрузки.Существует(), "Файл выгрузки <"+ПутьВыгрузкиИБ+"> существует, а это не так").ЭтоИстина();
|
|
1635 | 1754 | КонецЕсли;
|
1636 | 1755 | КонецФункции
|
1637 | 1756 |
|
| 1757 | +// Пполучает значение параметра из структуры |
| 1758 | +// |
| 1759 | +// Параметры: |
| 1760 | +// Параметры - Структура - Структура, содержащая значения параметров |
| 1761 | +// Имя - Строка - Имя параметра |
| 1762 | +// ЗначениеПоУмолчанию - Произвольный - Значение параметра по умолчанию |
| 1763 | +// (возвращается если в структуре параметров значение по указанному имени не найдено) |
| 1764 | +// (по умолчанию "") |
| 1765 | +// Возвращаемое значение: |
| 1766 | +// Произвольный - Значение параметра |
| 1767 | +// |
| 1768 | +Функция ПолучитьПараметр(Параметры, Имя, ЗначениеПоУмолчанию = "") |
| 1769 | + |
| 1770 | + ЗначениеПараметра = ЗначениеПоУмолчанию; |
| 1771 | + |
| 1772 | + Если Параметры.Свойство(Имя) Тогда |
| 1773 | + ЗначениеПараметра = Параметры[Имя]; |
| 1774 | + КонецЕсли; |
| 1775 | + |
| 1776 | + Возврат ЗначениеПараметра; |
| 1777 | + |
| 1778 | +КонецФункции //ПолучитьПараметр() |
| 1779 | + |
1638 | 1780 | Процедура Инициализация()
|
1639 | 1781 | СистемнаяИнформация = Новый СистемнаяИнформация;
|
1640 | 1782 | ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0;
|
|
0 commit comments