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

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

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

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

Есть ли методы прямого выполнения команд RAS, с возможностью получения результата исполнения команды или ошибки в случае не отработки?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
11. nomad_irk 71 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 71 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 71 13.05.20 16:10 Сейчас в теме
5. Manticor 66 13.05.20 16:27 Сейчас в теме
(4)
(2)
Возможно ли новыми методами получить пользователей базы данных и назначить им права?
7. nomad_irk 71 13.05.20 17:00 Сейчас в теме
(5)Вряд ли. т.к. работа с пользователями ИБ - это уже внутри ИБ должно происходить.
8. Manticor 66 13.05.20 17:30 Сейчас в теме
(7)
елями ИБ - это уже внутри ИБ долж


А есть ли способ подключиться к базе, минуя COM?
9. nomad_irk 71 13.05.20 17:35 Сейчас в теме
(8)В общем случае - да, но не анонимно.
ODATA
Web-Сервис
HTTP-Сервис
10. Manticor 66 13.05.20 17:58 Сейчас в теме
(9) есть примеры, как по каждой из приведенных технологий сделать коннект к базе?
11. nomad_irk 71 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 71 14.05.20 11:51 Сейчас в теме
(12)Да. ODATA доступен на уровне платформы, необходимо только выполнить публикацию БД на веб-сервере.
14. Manticor 66 14.05.20 14:02 Сейчас в теме
(13)
необходимо только выполнить публикацию БД на веб-сервере


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

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

В принципе мне нужно в базе куда коннект идет получить список пользователей, добавить/удалить пользователя, назначить ему права.
15. nomad_irk 71 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 156 14.05.20 22:54 Сейчас в теме
(17) а роли как привязывать? если к примеру зоопарк конфигураций
каждый раз формировать список ролей?
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)