Программное редактирование базы в реестре кластера через сервис RAS

1. Manticor 66 13.05.20 13:00 Сейчас в теме
Доброго времени суток.

Нужно программно зайти в реестр кластера 1С, создать/обновить или удалить там определенную базу данных.

Каким образом это реализовать программно, использую средство RAS/RAC от 1с, минуя старую технологию COM.

Есть ли методы прямого выполнения команд RAS, с возможностью получения результата исполнения команды или ошибки в случае не отработки?
Вознаграждение за ответ
Показать полностью
Найденные решения
11. nomad_irk 76 14.05.20 09:36 Сейчас в теме
(10)https://infostart.ru/public/1234139/

Web-сервис/Http-сервис сначала нужно создать в конфигураторе и описать их функции.
Manticor; +1 Ответить
2. davealone 165 13.05.20 14:15 Сейчас в теме +2 $m
(1) Ветка в СП Средства интеграции и администрирования - Администрирование сервера "1С:Предприятия"
Например:


&НаКлиенте
Процедура ПолучитьКластеры(Команда)
	СписокКластеров.Очистить();
	Агент = Новый АдминистрированиеСервера("localhost", "1545");
	Агент.ВыполнитьАутентификацию();
	Кластеры = Агент.ПолучитьКластеры();
	Для Каждого Кластер Из Кластеры Цикл
		СписокКластеров.Добавить(Кластер, Кластер.Имя);
	КонецЦикла;
КонецПроцедуры

&НаКлиенте
Процедура ПолучитьБазы(Команда)
	СписокБаз.Очистить();
	Кластер = Элементы.СписокКластеров.ТекущиеДанные;
	Если Кластер <> Неопределено Тогда
		АдминистрированиеКластера = Кластер.Значение;
		АдминистрированиеКластера.ВыполнитьАутентификацию();
		Базы = АдминистрированиеКластера.ПолучитьИнформационныеБазы();
		Для Каждого База Из Базы Цикл
			СписокБаз.Добавить(База, База.Имя);
		КонецЦикла;	
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ПолучитьСеансы(Команда)
	СписокСеансов.Очистить();
	База = Элементы.СписокБаз.ТекущиеДанные;
	Если База <> Неопределено Тогда
		АдминБаза = База.Значение;
		Сеансы = АдминБаза.ПолучитьСеансы();
		Для Каждого Сеанс Из Сеансы Цикл
			СписокСеансов.Добавить(Сеанс, Сеанс.ИмяПриложения);  
		КонецЦикла;
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ЗавершитьСеанс(Команда)
	Сеанс = Элементы.СписокСеансов.ТекущиеДанные;
	Если Сеанс <> Неопределено Тогда
		АдминСеанс = Сеанс.Значение;
		АдминСеанс.ЗавершитьСеанс();
	КонецЕсли;
КонецПроцедуры

Показать
9. nomad_irk 76 13.05.20 17:35 Сейчас в теме
(8)В общем случае - да, но не анонимно.
ODATA
Web-Сервис
HTTP-Сервис
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. davealone 165 13.05.20 14:15 Сейчас в теме +2 $m
(1) Ветка в СП Средства интеграции и администрирования - Администрирование сервера "1С:Предприятия"
Например:


&НаКлиенте
Процедура ПолучитьКластеры(Команда)
	СписокКластеров.Очистить();
	Агент = Новый АдминистрированиеСервера("localhost", "1545");
	Агент.ВыполнитьАутентификацию();
	Кластеры = Агент.ПолучитьКластеры();
	Для Каждого Кластер Из Кластеры Цикл
		СписокКластеров.Добавить(Кластер, Кластер.Имя);
	КонецЦикла;
КонецПроцедуры

&НаКлиенте
Процедура ПолучитьБазы(Команда)
	СписокБаз.Очистить();
	Кластер = Элементы.СписокКластеров.ТекущиеДанные;
	Если Кластер <> Неопределено Тогда
		АдминистрированиеКластера = Кластер.Значение;
		АдминистрированиеКластера.ВыполнитьАутентификацию();
		Базы = АдминистрированиеКластера.ПолучитьИнформационныеБазы();
		Для Каждого База Из Базы Цикл
			СписокБаз.Добавить(База, База.Имя);
		КонецЦикла;	
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ПолучитьСеансы(Команда)
	СписокСеансов.Очистить();
	База = Элементы.СписокБаз.ТекущиеДанные;
	Если База <> Неопределено Тогда
		АдминБаза = База.Значение;
		Сеансы = АдминБаза.ПолучитьСеансы();
		Для Каждого Сеанс Из Сеансы Цикл
			СписокСеансов.Добавить(Сеанс, Сеанс.ИмяПриложения);  
		КонецЦикла;
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ЗавершитьСеанс(Команда)
	Сеанс = Элементы.СписокСеансов.ТекущиеДанные;
	Если Сеанс <> Неопределено Тогда
		АдминСеанс = Сеанс.Значение;
		АдминСеанс.ЗавершитьСеанс();
	КонецЕсли;
КонецПроцедуры

Показать
3. Manticor 66 13.05.20 16:05 Сейчас в теме
(2)
Агент = Новый АдминистрированиеСервера("localhost", "1545");


Ругается:

Тип не определен (АдминистрированиеСервера)
Агент = Новый <<?>>АдминистрированиеСервера("localhost", "1545"); (Проверка: Сервер)

Что на сервере, что на клиенте. У меня платформа 8.3.13.1513.
4. nomad_irk 76 13.05.20 16:10 Сейчас в теме
5. Manticor 66 13.05.20 16:27 Сейчас в теме
(4)
(2)
Возможно ли новыми методами получить пользователей базы данных и назначить им права?
7. nomad_irk 76 13.05.20 17:00 Сейчас в теме
(5)Вряд ли. т.к. работа с пользователями ИБ - это уже внутри ИБ должно происходить.
8. Manticor 66 13.05.20 17:30 Сейчас в теме
(7)
елями ИБ - это уже внутри ИБ долж


А есть ли способ подключиться к базе, минуя COM?
9. nomad_irk 76 13.05.20 17:35 Сейчас в теме
(8)В общем случае - да, но не анонимно.
ODATA
Web-Сервис
HTTP-Сервис
10. Manticor 66 13.05.20 17:58 Сейчас в теме
(9) есть примеры, как по каждой из приведенных технологий сделать коннект к базе?
11. nomad_irk 76 14.05.20 09:36 Сейчас в теме
(10)https://infostart.ru/public/1234139/

Web-сервис/Http-сервис сначала нужно создать в конфигураторе и описать их функции.
Manticor; +1 Ответить
12. Manticor 66 14.05.20 11:45 Сейчас в теме
(11) Получается, если есть более 100 баз, то в конфигураторе каждой из них нужно создавать и описывать web сервис?
13. nomad_irk 76 14.05.20 11:51 Сейчас в теме
(12)Да. ODATA доступен на уровне платформы, необходимо только выполнить публикацию БД на веб-сервере.
14. Manticor 66 14.05.20 14:02 Сейчас в теме
(13)
необходимо только выполнить публикацию БД на веб-сервере


То есть без написания кода в этих "более 100-ни" баз не обойтись?

Или все таки есть волшебное средство, по которому можно подключиться к базе.

В принципе мне нужно в базе куда коннект идет получить список пользователей, добавить/удалить пользователя, назначить ему права.
15. nomad_irk 76 14.05.20 14:28 Сейчас в теме
(14)С помощью ODATA, с использованием логин/пароля пользователя с полными правами внутри базы
По-другому - только COM остается, но там тоже нужны логин и пароль.
6. davealone 165 13.05.20 16:38 Сейчас в теме
(3) C 8.3.14 работа из кода
Для более ранних посмотрите моудль АдминистрированиеКластераRAS в БСП 3.1
Там еще через ЗапуститьКоманду реализовано. На 3.1.2.202 во всяком случае так

(5) Не видел даже просто в командах RAC таких функций, работа с ИБ, сеансами, соединениями - то же что и в старой консоли.
16. Const1C 14.05.20 17:28 Сейчас в теме
С RAS лучше работать минуя 1С. Зачем вам через платформу управлять базами данных.
Вот пример как я это делаю через консоль:
.\rac.exe cluster list $addr
.\rac.exe infobase --cluster=$id summary list $addr
.\rac.exe session --cluster=$cid list --infobase=$iid $addr
.\rac.exe infobase update --infobase=$iid --infobase-user=$usr --infobase-pwd=$pswd --cluster=$cid --sessions-deny=$block --permission-code=156 --scheduled-jobs-deny=$block --denied-to="" $addr
17. Manticor 66 14.05.20 18:08 Сейчас в теме
(16)
Нужно именно через 1С. Так как запилена самописная система управления базами.
18. Const1C 14.05.20 21:25 Сейчас в теме
(17) тогда в помощь библиотека irac от onescript. Т.к. язык используется один, ни что не мешает его внедрить в 1С:
https://github.com/arkuznetsov/irac
19. Fox-trot 158 14.05.20 22:54 Сейчас в теме
(17) а роли как привязывать? если к примеру зоопарк конфигураций
каждый раз формировать список ролей?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот