Изменение имени домена для выбранных пользователей информационной базы

Публикация № 1187592

Администрирование - Администрирование СУБД

Предлагаю Вашему вниманию обработку используемую в реальном производственном процессе на нашем предприятии. Задача переименования доменов возникла при реорганизации предприятия, имена некоторых доменов для удобства решено было изменить, но при таком количестве пользователей изменение имен доменов штатными средствами выглядело нереально. Было решено создать обработку для изменения имен доменов Информационной базы. Обработка предназначена для работы в клиент-серверных базах и тестировалась на платформе 8.3.14.1854. Работает в режиме внешней обработки.

   Алгоритм работы обработки выглядит так:
1. При нажатии кнопки "Создать список доменов" на закладке формы появляется список доменов, на котором необходимо галочками отметить домены, предназначенные для изменения.
2. В строку ввода "Новое имя домена" необходимо записать имя домена, на которое будут изменены отмеченные домены.   
3. После нажатия кнопки "Переименовать домены" запускается процедура переименования, по окончании обработки выйдет сообщение о количестве переименованных пользователей.
 

    Перейдем к рассмотрению программного кода.
    
    Процедура "ИнструкцияПоЭксплуатации" описывает порядок действий при пользовании обработкой.    

Код процедуры:

&НаКлиенте
 Процедура ИнструкцияПоЭксплуатации(Команда)
//Процедура выводит текстовый файл Инструкция по эксплуатации	 

	Инструкция="          Инструкция для обработки переименование доменов."+Символы.ПС+" 
	|1. В строку ""Новое имя домена"" запишите новое имя домена."+Символы.ПС+" 
	|2. Нажмите кнопку ""Создать список доменов"", на экране появится список доменов для данной базы."+Символы.ПС+" 
	|   Выберите те домены которые вы хотите изменить (поставте галочки)."+Символы.ПС+" 
	|3. Нажмите кнопку ""Переименовать домены"", по окончании обработки выйдет сообщение о количестве переименованных пользователей.";
	
	Предупреждение(Инструкция);
	
КонецПроцедуры

 

    Процедура "ПриОткрытииОбработки" запускает процедуру "СозданиеСпискаДоменов", результатом работы которой является список доменов базы.

Код процедуры:
  

&НаКлиенте
Процедура ПриОткрытииОбработки(Команда)
ОчиститьСообщения();
СозданиеСпискаДоменов();	
Сообщить("Список доменов создан,выберите нужные домены для переименования.");
	
КонецПроцедуры	

  

    Процедуры "СозданиеСпискаДоменов"    и  "ЗаполняемТаблицуВсеДомены" заполняют таблицу значений "ВсеДомены", в которую вносятся все домены пользователей базы.

Код процедуры:
        

&НаСервере
Процедура СозданиеСпискаДоменов() 
//Создаем Массив пользователей Информационной Базы для создания списка доменов ************************
		ВсеДомены.Очистить();
		ТаблицаДоменов.Очистить();
      Выборка= ПользователиИнформационнойБазы.ПолучитьПользователей();                	 
	  Для Каждого ЭлементМассива Из Выборка Цикл                                       
		          ПользовательУникльныйИдентификатор=ЭлементМассива.УникальныйИдентификатор;
				  
				  ЗаполняемТаблицуВсеДомены(ПользовательУникльныйИдентификатор);
				  
	  КонецЦикла;
			  
			      ЗаполняемТаблицуТаблицаДоменов();

КонецПроцедуры

 &НаСервере
Процедура ЗаполняемТаблицуВсеДомены(ПользовательУникльныйИдентификатор)
	  УстановитьПривилегированныйРежим(Истина);
//Заполняем таблицу ВсеДомены ************************************************************************			  
              ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(ПользовательУникльныйИдентификатор);
              ФИО1  = ПользовательИБ.ПолноеИмя;
			  ДоменЛогин=ПользовательИБ.ПользовательОС;
			  ДлинаДомена=СтрДлина(ДоменЛогин);
			  СчетчикБукв=3;
			  Буква="";
			  ИмяДоменаВТаблице="";
			  Буква=Сред(ДоменЛогин,СчетчикБукв,1);
			Пока НЕ Буква="\" И СчетчикБукв < ДлинаДомена Цикл
				ИмяДоменаВТаблице=ИмяДоменаВТаблице+Буква; 
				СчетчикБукв=СчетчикБукв+1;
				Буква=Сред(ДоменЛогин,СчетчикБукв,1);  
			КонецЦикла;	 
			УстановитьПривилегированныйРежим(Ложь);
			 Строка=ВсеДомены.Добавить();
	         Строка.ИменаДоменов=ИмяДоменаВТаблице;
			 
КонецПроцедуры	
	

   

  Процедура "ЗаполняемТаблицуТаблицаДоменов" заполняет таблицу значений "ТаблицаДоменов", которая выводится на закладке формы для выбора изменяемого имени домена.    

Код процедуры:
        

&НаСервере
Процедура ЗаполняемТаблицуТаблицаДоменов()
	  УстановитьПривилегированныйРежим(Истина);
//Заполняем таблицу ВсеДомены ************************************************************************			  
    ПустойДомен="";
    СчетчикДоменов=1;
	ВД = РеквизитФормыВЗначение("ВсеДомены",Тип("ТаблицаЗначений"));                 //Выгружаем Табличный реквизит формы в переменную
	Запрос = Новый Запрос;
	МВТ=Новый МенеджерВременныхТаблиц;                                               //Создаем МенеджерВременныхТаблиц
	Запрос.МенеджерВременныхТаблиц=МВТ;
	Запрос.Текст = 
	        "ВЫБРАТЬ
	        |	ВД1.ИменаДоменов КАК ИмяДомена
	        |ПОМЕСТИТЬ ВТДанные
	        |ИЗ
	        |	&ВД1 КАК ВД1
	        |;
	        |
	        |////////////////////////////////////////////////////////////////////////////////
	        |ВЫБРАТЬ
	        |	ВТДанные.ИмяДомена КАК ИмяДомена
	        |ИЗ
	        |	ВТДанные КАК ВТДанные
	        |ГДЕ
	        |	ВТДанные.ИмяДомена <> &ПустойДомен
	        |
	        |СГРУППИРОВАТЬ ПО
	        |	ВТДанные.ИмяДомена"
		     ;
			 Запрос.УстановитьПараметр("ПустойДомен",ПустойДомен);
			 Запрос.УстановитьПараметр("ВД1",ВД);
	         РезультатЗапроса = Запрос.Выполнить();
	         Выборка = РезультатЗапроса.Выбрать();                                
			 Пока Выборка.Следующий() Цикл                                            //Выбираем результат запроса в цикле
				   Строка=ТаблицаДоменов.Добавить();
				   Строка.Номер=СчетчикДоменов;
	               Строка.ИмяДомена=Выборка.ИмяДомена;
				   СчетчикДоменов=СчетчикДоменов+1;
            КонецЦикла;   

			 
КонецПроцедуры	

 

    Процедура "КнопкаВыполнить" запускает процедуру изменения имени домена "ИзменениеИмениДомена" которая собственно изменяет выбранные имена доменов пользователей.    

Код процедуры:
        

&НаКлиенте
Процедура КнопкаВыполнить(Команда)
Сообщить("Начато изменение имен доменов.");
НовоеИмяДомена=ИмяДомена;
	Если НовоеИмяДомена="" Тогда
		Сообщить("Введите Новое Имя Домена, без него программа не работает");
		Возврат;
	КонецЕсли;

ИзменениеИмениДомена(НовоеИмяДомена);

Сообщить("Имена доменов изменены.");

КонецПроцедуры

&НаСервере
Процедура ИзменениеИмениДомена(НовоеИмяДомена)
//Создаем Массив пользователей Информационной Базы для изменения доменов *****************************
		КоличествоПользователей=0;
      Выборка= ПользователиИнформационнойБазы.ПолучитьПользователей();                	 
	  Для Каждого ЭлементМассива Из Выборка Цикл                                       
		          ПользовательУникльныйИдентификатор=ЭлементМассива.УникальныйИдентификатор;
				  
				  ИзменениеИмениДомена1(ПользовательУникльныйИдентификатор,НовоеИмяДомена,КоличествоПользователей);
				  
	  КонецЦикла;
	  
  Сообщить("Изменены домены у "+КоличествоПользователей+" пользователей.");

КонецПроцедуры
	 
 &НаСервере
Процедура ИзменениеИмениДомена1(ПользовательУникльныйИдентификатор,НовоеИмяДомена,КоличествоПользователей)
	  УстановитьПривилегированныйРежим(Истина);
//Разбиваем	ДоменЛогин на ДоменПользователя и ЛогинПользователя		  
              ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(ПользовательУникльныйИдентификатор);
              ФИО1  = ПользовательИБ.ПолноеИмя;
			  ДоменЛогин=ПользовательИБ.ПользовательОС;
Если НЕ	ДоменЛогин="" Тогда		  
			  ДлинаДомена=СтрДлина(ДоменЛогин);
			  ДоменПользователя="";
			  ЛогинПользователя="";
			  Буква="";
			  СчетчикБукв=3;
			  Буква=Сред(ДоменЛогин,СчетчикБукв,1);
			  ФлагДЛ="Д";
	Пока СчетчикБукв <= ДлинаДомена Цикл
		Если Буква="\" Тогда
				ФлагДЛ="Л";
				СчетчикБукв=СчетчикБукв+1;
				Буква=Сред(ДоменЛогин,СчетчикБукв,1);
			Иначе
				Если ФлагДЛ="Д" Тогда
					ДоменПользователя=ДоменПользователя+Буква; 
					СчетчикБукв=СчетчикБукв+1;
					Буква=Сред(ДоменЛогин,СчетчикБукв,1);  
				КонецЕсли;
				Если ФлагДЛ="Л" Тогда
					ЛогинПользователя=ЛогинПользователя+Буква; 
					СчетчикБукв=СчетчикБукв+1;
					Буква=Сред(ДоменЛогин,СчетчикБукв,1);  
				КонецЕсли;
		КонецЕсли;
	КонецЦикла;	 
//Смотрим стоит ли у домена галочка выбора			  
	ТД = РеквизитФормыВЗначение("ТаблицаДоменов",Тип("ТаблицаЗначений"));            //Выгружаем Табличный реквизит формы в переменную
	Запрос = Новый Запрос;
	МВТ=Новый МенеджерВременныхТаблиц;                                               //Создаем МенеджерВременныхТаблиц
	Запрос.МенеджерВременныхТаблиц=МВТ;
	Запрос.Текст = 
	        "ВЫБРАТЬ
	        |	ТД1.ИмяДомена КАК ИмяДомена,
	        |	ТД1.ОтметкаВыбора КАК ОтметкаВыбора
	        |ПОМЕСТИТЬ ВТДанные
	        |ИЗ
	        |	&ТД1 КАК ТД1
	        |;
	        |
	        |////////////////////////////////////////////////////////////////////////////////
	        |ВЫБРАТЬ
	        |	ВТДанные.ИмяДомена КАК ИмяДомена,
	        |	ВТДанные.ОтметкаВыбора КАК ОтметкаВыбора
	        |ИЗ
	        |	ВТДанные КАК ВТДанные
	        |ГДЕ
	        |	ВТДанные.ИмяДомена = &ДоменПользователя
	        |	И ВТДанные.ОтметкаВыбора = ИСТИНА"
		     ;
			 Запрос.УстановитьПараметр("ДоменПользователя",ДоменПользователя);
			 Запрос.УстановитьПараметр("ТД1",ТД);
	         РезультатЗапроса = Запрос.Выполнить();
	         Выборка = РезультатЗапроса.Выбрать();                                
			 Пока Выборка.Следующий() Цикл                                            //Выбираем результат запроса в цикле
					ДоменЛогин="\\"+НовоеИмяДомена+"\"+ЛогинПользователя;
             		ПользовательИБ.ПользовательОС =ДоменЛогин;
    		  		ПользовательИБ.Записать();
					КоличествоПользователей=КоличествоПользователей+1;
			КонецЦикла; 
КонецЕсли;				
 			УстановитьПривилегированныйРежим(Ложь);
 
КонецПроцедуры

    Обработка особенно актуальна для случая, когда пользователи имеют аутентификацию операционной системы и работают через консоль.

Скачать файлы

Наименование Файл Версия Размер
Изменение имени домена для выбранных пользователей информационной базы.:
.epf 10,35Kb
30.01.20
0
.epf 10,35Kb Скачать

Специальные предложения

Оставьте свое сообщение

См. также

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

Стартеры 1С Сервисные утилиты Администрирование СУБД v8 1cv8.cf Россия Абонемент ($m)

Когда в локальной сети много пользователей, а еще большое количество различных баз и при этом каждому нужны свои, то администрирование этого зоопарка превращается в АД! Этот комплекс позволяет централизованно управлять списком доступных баз в разрезе пользователей. За пару кликов можно добавить или убрать базу у всех пользователей.

5 стартмани

05.12.2018    12711    11    RomikR    9    

Обслуживание базы данных на PostgreSQL

Администрирование СУБД v8 Россия Абонемент ($m)

Предысторией создания данного продукта был перевод одного из своих клиентов на PostgreSQL. Серверная платформа не позволяла установить там pgAdmin. А скриптами и планировщиками пользоваться неудобно. Поэтому пришла идея реализовать обслуживание баз данных PostgreSQL средствами 1С.

1 стартмани

27.05.2020    295    0    andrewbc    0    

Включение отладки на сервере

Администрирование СУБД v8 Абонемент ($m)

Два простых VBS скрипта для автоматического включения отладки на сервере для x32 и x64 систем.

1 стартмани

20.05.2020    530    1    Andy_NTG    0    

Оптимизация и работа с системными представлениями

Администрирование СУБД v8 v8::УФ 1cv8.cf Абонемент ($m)

Обработка сделана для понимания работы системных представлений. В принципе, вы можете написать целую систему мониторинга ресурсов. Основа для этого, как раз, и дана в этой обработке. Внешний вид особо не шлифовался. Считаю, что это не так критично. Использовал обращение только к MS SQL, но при желании, такое же можно написать и для Postgres, и для Oracle. Тестировал на платформе 1С 8.2.19.90.

1 стартмани

12.05.2020    548    1    darkdan77    1    

Ошибка "Для одного ссылочного кода существует более одной таблицы в базе данных" - как проще исправить

Администрирование СУБД Тестирование и исправление v8 v8::УФ 1cv8.cf Абонемент ($m)

При обновлении платформы 1с 8.3.6.2100 на платформу 8.3.16.224 под УПП 1.3.138.1 возникла ошибка "Для одного ссылочного кода существует более одной таблицы в базе данных...". В интернете много есть информации по этой проблеме, в частности в публикации https://infostart.ru/public/1126277/ приведено ее решение, но оно довольно громоздкое. Есть вариант более простой

2 стартмани

28.04.2020    837    2    Ион    2    

Проверка подписки ИТС

Администрирование СУБД v8 1cv8.cf Абонемент ($m)

Проверка подписки ИТС по регистрационным номерам, логинам. Практическое применение API по интеграции с Порталом 1С:ИТС.

1 стартмани

17.03.2020    1342    4    kostik_love    0    

История работы пользователей (отчет на СКД)

Администрирование СУБД v8 v8::УФ v8::СКД 1cv8.cf Абонемент ($m)

Отчет для просмотра истории работы пользователей (СКД, просмотр для любого пользователя).

2 стартмани

14.03.2020    3604    46    YPermitin    26    

Ограничение доступа в базу по количеству сеансов или дате

Администрирование СУБД v8 1cv8.cf Абонемент ($m)

Расширение позволяет ограничить доступ в базу по количеству активных сеансов или дате. Не затрагивает объекты типовой конфигурации. Сделано и протестировано на БП 8.3 версий 3.0.65.84 и выше. Требует платформу не ниже 8.3.16. Представлены версии расширения для конфигураций с режимом совместимости 8.3.12, 8.3.14 и 8.3.15.

2 стартмани

12.03.2020    1049    1    folo    0    

Очистка хранилища настроек пользователей (обычные и управляемые формы)

Администрирование СУБД v8 v8::УФ 1cv8.cf Абонемент ($m)

Обработка очищает хранилище настроек пользователей.

1 стартмани

10.02.2020    1344    14    Diana.dedov.91    0    

Транслятор запросов 1С в SQL

Производительность и оптимизация (HighLoad) Администрирование СУБД v8 1cv8.cf Абонемент ($m)

Инструмент для трансляции запросов платформы 1С в SQL, а также их диагностики.

10 стартмани

07.01.2020    9147    69    YPermitin    89    

Проверка SQL базы данных 1С 8.1, 8.2, 8.3

Администрирование СУБД v8 1cv8.cf Абонемент ($m)

Обработка предназначена для проверки SQL базы данных 1С. Используется только для клиент-серверной версии 1С, у которой база данных хранится под управлением MS SQL Server. Конфигурация 1С значения не имеет.

2 стартмани

25.12.2019    5405    37    dgonson    19    

На время отключаем контроль остатков и проверку документов

Администрирование СУБД v8 ERP2 УТ11 КА2 Абонемент ($m)

На время сеанса отключаем контроль остатков и проверку документов в ERP, КА, УТ типовыми средствами и простым расширением.

1 стартмани

24.12.2019    5905    7    sapervodichka    2    

Тест серверного оборудования на допустимое количество пользователей: как это использовать?

Администрирование СУБД Нагрузочное тестирование Сервера v8 1cv8.cf Абонемент ($m)

Выполнил 3 разных теста для проверки серверного оборудования (тест 1С, тесты gilev) на возможное число 1С онлайн-пользователей одновременно работающих на нем и интерпретировал результаты тестов через легких, средних и тяжелых пользователей с помощью таблицы с профилями реальных пользователей.

3 стартмани

17.12.2019    8978    10    sapervodichka    3    

Удаление спящих сеансов

Администрирование СУБД v8 УПП1 Абонемент ($m)

Удаление сеансов, имеющих статус "спящий".

1 стартмани

16.12.2019    3324    10    &-rey    7    

Очистка кэша нескольких баз прямо из 1С

Администрирование СУБД v8 1cv8.cf Россия Абонемент ($m)

Обработка предназначена для очистка кэша нескольких баз непосредственно из 1С (только в обычном режиме).

1 стартмани

04.12.2019    2663    16    r.moschenskiy    2    

Работа с базами данных 1С в SQL Server Management Studio (Расширение для SSMS)

Администрирование СУБД Производительность и оптимизация (HighLoad) Администрирование данных 1С Структура метаданных v8 Абонемент ($m)

Расширение позволяет просматривать связи объектов метаданных и таблиц БД, сгруппированные данные (по группам метаданных) об используемом дисковом пространстве и выполнять трансляцию SQL текста запроса в термины 1С. И бонусом - при наведении курсора мыши на таблицу или поле показывает назначение объекта в терминах 1С.

10 стартмани

27.11.2019    9092    36    akpaevj    46    

Запуск внешних обработок по списку пользователей

Роли и права Администрирование СУБД v8 БП3.0 Абонемент ($m)

Создает командный файл для запуска пользователей по списку.

1 стартмани

07.11.2019    3537    2    Mari_Kuznetzova    0    

Монитор показателей и лицензий с графиками

Администрирование СУБД v8 1cv8.cf Абонемент ($m)

Онлайн диаграмма лицензий 1С и показателей сервера 1С в различных измерениях и отборах.

1 стартмани

07.10.2019    10785    117    sapervodichka    17    

CF & SQL : конструктор прямых запросов к БД 1С

Инструментарий разработчика Администрирование СУБД v8 1cv8.cf Россия Абонемент ($m)

Программа для чтения и анализа внутренней структуры данных 1С V8.х, Содержит конструктор прямых SQL запросов, позволяет обрабатывать и редактировать тексты SQL-запросов, выполнять прямые запросы к базе данных 1С и обрабатывать полученные результаты.

1 стартмани

02.10.2019    14074    173    dmitrydemenew    43    

Закрытие незавершенных сеансов

Сервисные утилиты Администрирование СУБД v8 1cv8.cf Россия Абонемент ($m)

Как удалять потерянные сеансы пользователей, чтобы они не мешали работе. Обработка протестирована на платформе версии 8.3.13.1644.

1 стартмани

20.09.2019    9004    40    AnatolPopov    8    

Размер таблицы SQL базы 1С

Статистика базы данных Сервисные утилиты Администрирование СУБД Структура метаданных v8 1cv8.cf Россия Абонемент ($m)

Обработка для анализа структуры БД в виде таблиц SQL, их объемов и объемов индексов таблиц. Писалась для анализа в целях оптимизации работоспособности и быстродействия 1С. Будет полезна администраторам и разработчикам, в целях поиска нужной таблицы в SQL по метаданным конфигурации. Две обработки: 1. "Размер таблицы SQL базы 1С не УФ" - не управляемые формы - работает на любой конфигурации 1С 8.2/8.3 (тестировалась УПП 10.3, КА 1.1, ЗУП 2.5 и т.д.) 2. "Размер таблицы SQL базы 1С УФ" - под управляемые формы - работает под любыми конфигурациями 1С 8.3 (тестировалась УТ 11)

1 стартмани

11.04.2017    17565    100    Mouros    5    

Анализ настроек кластеров 1С (+ менеджер файлов на сервере)

Сервисные утилиты Администрирование СУБД v8::УФ 1cv8.cf Абонемент ($m)

Итак, у вас количество баз давно перевалило за десяток. Все эти базы раскиданы по кластерам. К тому же и версии платформы 1С у этих баз разные. Ну а вы, к несчастью - администратор всего этого хозяйства. К несчастью, потому что вы администратор 1С. А это необычный администратор. Случается так, что вы не имеете прав локального администратора, а консоль сервера приложений на вашем рабочем месте не установлена. Но не беда, поставить ее вам готовы уже завтра-послезавтра.

10 стартмани

26.12.2015    24781    56    zenechka    33    

Скрипт для выгрузки информационной базы

Архивирование (backup) Скрипты автоматизации Администрирование СУБД v8 Россия Абонемент ($m)

Скрипт позволяет произвести выгрузку информационной базы 1С клиент-серверного варианта.

1 стартмани

06.11.2015    27761    11    bashirov.rs    15