Платформа: 8.3.27.2130 Режим БД: клиент-серверный Конфигурация. Название: Документооборот 8, редакция КОРП 2.1 (2.1.37.5) Конфигурация. Основной режим запуска: Управляемое приложение Конфигурация. Вариант встроенного языка: Русский Конфигурация. Режим управления блокировкой данных: Управляемый Конфигурация. Режим совместимости: Версия8_3_24 Конфигурация. Режим использования синхронных вызовов: Использовать Конфигурация. Версия БСП: 301 Конфигурация. Использовать обычные формы в управляемом приложении: Нет Инструменты разработчика. Версия: Расширение 8.18.1e Инструменты разработчика. Инструмент: Прочее Инструменты разработчика. Перехват клавиатурного ввода: Да Инструменты разработчика. Глобальные настройки всех баз: Да Инструменты разработчика. Объекты на сервере: Да Инструменты разработчика. Асинхронность запрещена: Нет Инструменты разработчика. Разрешены имитаторы: Да Расширения. ЗапуститьСеансПользователя (2.0) Расширения. РасширенныйГлобальныйПоиск (1.1.2) Расширения. УниверсальныеИнструменты (1.4.11) Расширения. ЗащитаРолейРасширенийДляАдминовБСП3 (1.3) Расширения. ИнструментыРазработчикаTormozit (8.18.1e) Расширения. НастройкиДинамическогоСпискаTormozit (1.00) Расширения. InfostartToolkitPROF (2.3.8) Клиент. Приложение: Управляемое приложение 64б Клиент. Проверка модальных вызовов: Да Клиент. Язык интерфейса конфигурации: ru Клиент. Язык интерфейса системы: ru Клиент. Отладка разрешена: Нет Клиент. Постоянный кэш метаданных: Да Клиент. ОС: Майкрософт Windows 10 Pro 64-разрядная Русский Клиент. ОС от имени администратора: Нет Клиент. ОС выполнение BAT: Да Клиент. ОС Текущая кодовая страница: 866 Клиент-Сервер. Пинг: 0мс (отлично) Сервер. ОС: Майкрософт Windows Server 2016 Standard 64-разрядная Русский Сервер. Процесс: 64б Сервер. Отладка: http
В ДО 2 при копировании пользователя получаем ошибку
Ошибка при вызове метода контекста (Скопировать) {ЗащитаРолейРасширенийДляАдминовБСП3 ОбщийМодуль.УправлениеДоступомСлужебный.Модуль(21)}: НовыеРоли = НовыеРолиПользователей.Скопировать(НовыеРолиПользователей.НайтиСтроки(Отбор), "Роль, РольСсылка");
Функция ТекущиеСвойстваПользователей(МассивПользователей) Экспорт
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ПустойИдентификатор", Новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000"));
Если МассивПользователей = Неопределено Тогда Запрос.Текст = "ВЫБРАТЬ | Пользователи.Ссылка КАК Пользователь, | Пользователи.ИдентификаторПользователяИБ |ПОМЕСТИТЬ ПроверяемыеПользователи |ИЗ | Справочник.Пользователи КАК Пользователи |ГДЕ | Пользователи.Служебный = ЛОЖЬ | И Пользователи.ИдентификаторПользователяИБ <> &ПустойИдентификатор | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | ВнешниеПользователи.Ссылка, | ВнешниеПользователи.ИдентификаторПользователяИБ |ИЗ | Справочник.ВнешниеПользователи КАК ВнешниеПользователи |ГДЕ | ВнешниеПользователи.ИдентификаторПользователяИБ <> &ПустойИдентификатор";
ИначеЕсли ТипЗнч(МассивПользователей) = Тип("Тип") Тогда Если Метаданные.НайтиПоТипу(МассивПользователей) = Метаданные.Справочники.ВнешниеПользователи Тогда Запрос.Текст = "ВЫБРАТЬ | ВнешниеПользователи.Ссылка КАК Пользователь, | ВнешниеПользователи.ИдентификаторПользователяИБ |ПОМЕСТИТЬ ПроверяемыеПользователи |ИЗ | Справочник.ВнешниеПользователи КАК ВнешниеПользователи |ГДЕ | ВнешниеПользователи.ИдентификаторПользователяИБ <> &ПустойИдентификатор"; Иначе Запрос.Текст = "ВЫБРАТЬ | Пользователи.Ссылка КАК Пользователь, | Пользователи.ИдентификаторПользователяИБ |ПОМЕСТИТЬ ПроверяемыеПользователи |ИЗ | Справочник.Пользователи КАК Пользователи |ГДЕ | Пользователи.Служебный = ЛОЖЬ | И Пользователи.ИдентификаторПользователяИБ <> &ПустойИдентификатор"; КонецЕсли; Иначе ИсходныеПользователи = Новый ТаблицаЗначений; ИсходныеПользователи.Колонки.Добавить("Пользователь", Новый ОписаниеТипов( "СправочникСсылка.Пользователи, СправочникСсылка.ВнешниеПользователи"));
Для каждого Пользователь Из МассивПользователей Цикл ИсходныеПользователи.Добавить().Пользователь = Пользователь; КонецЦикла;
Запрос.УстановитьПараметр("ИсходныеПользователи", ИсходныеПользователи); Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | ИсходныеПользователи.Пользователь |ПОМЕСТИТЬ ИсходныеПользователи |ИЗ | &ИсходныеПользователи КАК ИсходныеПользователи |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Пользователи.Ссылка КАК Пользователь, | Пользователи.ИдентификаторПользователяИБ |ПОМЕСТИТЬ ПроверяемыеПользователи |ИЗ | Справочник.Пользователи КАК Пользователи | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ИсходныеПользователи КАК ИсходныеПользователи | ПО Пользователи.Ссылка = ИсходныеПользователи.Пользователь | И (Пользователи.Служебный = ЛОЖЬ) | И (Пользователи.ИдентификаторПользователяИБ <> &ПустойИдентификатор) | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | ВнешниеПользователи.Ссылка, | ВнешниеПользователи.ИдентификаторПользователяИБ |ИЗ | Справочник.ВнешниеПользователи КАК ВнешниеПользователи | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ИсходныеПользователи КАК ИсходныеПользователи | ПО ВнешниеПользователи.Ссылка = ИсходныеПользователи.Пользователь | И (ВнешниеПользователи.ИдентификаторПользователяИБ <> &ПустойИдентификатор)"; КонецЕсли;
Запрос.Текст = Запрос.Текст + " |; | |//////////////////////////////////////////////////////////////////////////////// |" + "ВЫБРАТЬ | ПользователиВКонтейнерах.Пользователь КАК Ссылка, | ПользователиВКонтейнерах.Пользователь.ИдентификаторПользователяИБ |ИЗ | РегистрСведений.ПолномочияПользователей КАК ПолномочияПользователей | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПользователиВКонтейнерах КАК ПользователиВКонтейнерах | ПО (ПолномочияПользователей.Полномочия = ЗНАЧЕНИЕ(Справочник.ПрофилиГруппДоступа.Администратор)) | И ПолномочияПользователей.Владелец = ПользователиВКонтейнерах.Контейнер |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ПроверяемыеПользователи.Пользователь, | ПроверяемыеПользователи.ИдентификаторПользователяИБ |ИЗ | ПроверяемыеПользователи КАК ПроверяемыеПользователи |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗЛИЧНЫЕ | ПроверяемыеПользователи.Пользователь КАК Пользователь, | ПолномочияПользователей.Полномочия КАК Профиль |ПОМЕСТИТЬ ПрофилиПользователей |ИЗ | ПроверяемыеПользователи КАК ПроверяемыеПользователи | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПользователиВКонтейнерах КАК ПользователиВКонтейнерах | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПолномочияПользователей КАК ПолномочияПользователей | ПО ПользователиВКонтейнерах.Контейнер = ПолномочияПользователей.Владелец | ПО ПроверяемыеПользователи.Пользователь = ПользователиВКонтейнерах.Пользователь |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗЛИЧНЫЕ | ПрофилиПользователей.Пользователь, | Роли.Роль.Имя КАК Роль |ИЗ | ПрофилиПользователей КАК ПрофилиПользователей | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ПрофилиГруппДоступа.Роли КАК Роли | ПО (Роли.Ссылка = ПрофилиПользователей.Профиль) | И (НЕ Роли.Ссылка.ПометкаУдаления)";
Если ПолучитьФункциональнуюОпцию("ИспользоватьВнешнихПользователей") Тогда Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ИсключитьВнешнихПользователей", "Истина"); Иначе Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ИсключитьВнешнихПользователей", "ТИПЗНАЧЕНИЯ(ПроверяемыеПользователи.Пользователь) = ТИП(Справочник.Пользователи)"); КонецЕсли;
РезультатыЗапросов = Запрос.ВыполнитьПакет(); ПоследнийРезультат = РезультатыЗапросов.Количество()-1; Итог = Новый Структура;
Итог.Вставить("Администраторы", Новый Соответствие);
Для каждого Строка Из РезультатыЗапросов[ПоследнийРезультат-3].Выгрузить() Цикл Итог.Администраторы.Вставить(Строка.Ссылка, Истина); КонецЦикла;