mirror of
https://github.com/tormozit/RDT1C.git
synced 2025-12-17 05:04:11 +00:00
+Форма пользователя теперь всегда открывается не модально
+В форме пользователя добавлена команда "Записать"
+В форме пользователя добавлена команда "Найти в списке"
Анализ правд доступа
+Добавлено доступное поле "Объект метаданных. Представление"
Динамический список
*Исправлена свежая ошибка при выборе таблицы независимого регистра сведений
*Исправлена свежая ошибка открытия управляемой формы инструмента
Подбор и обработка объектов
*Исправлена ошибка открытия в случае наличия сохраненного списка пакета обработок ссылающегося на удаленные настройки
*Исправлено нежелательное закрытие существующей формы при параметризованном открытии новой
Редактор объекта БД
*В не портативных вариантах исправлено сохранение ссылки нового при включенном флажке "Объекты на сервере" в клиент-серверном режиме
Различные значения колонки
*Исправлена свежая проблема пустого списка при открытии из консоли запросов
Интерфейсная панель
*Исправлена команда "Динамический список" в управляемом приложении открывавшая форму без установки таблицы
Управление службами серверов 1С
*Исправлена потеря последнего параметра запуска службы при чтении в некоторых случаях
Общее
*Исправлено свежее замедление выполнения большинства циклов в портативном варианте
*Исправлена ошибка команды "Открыть объект для отладки" на 8.3.14
+В портативном варианте реализована поддержка серверного модуля для ряда новых версий БСП
+В информацию для тех. поддержки добавлены признак доступности серверного модуля и состояние флажка "объекты на сервере" из общих параметров записи
175 lines
13 KiB
Plaintext
175 lines
13 KiB
Plaintext
//ирПортативный Перем ирПортативный Экспорт;
|
||
//ирПортативный Перем ирОбщий Экспорт;
|
||
//ирПортативный Перем ирСервер Экспорт;
|
||
//ирПортативный Перем ирКэш Экспорт;
|
||
//ирПортативный Перем ирПривилегированный Экспорт;
|
||
|
||
Перем РежимОтладки Экспорт;
|
||
Перем ТаблицаСтарая;
|
||
Перем ПользовательСтарый;
|
||
Перем ОбъектМетаданныхСтарый;
|
||
|
||
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
|
||
|
||
#Если _ Тогда
|
||
СхемаКомпоновки = Новый СхемаКомпоновкиДанных;
|
||
КонечнаяНастройка = Новый НастройкиКомпоновкиДанных;
|
||
ВнешниеНаборыДанных = Новый Структура;
|
||
ДокументРезультат = Новый ТабличныйДокумент;
|
||
#КонецЕсли
|
||
ДокументРезультат.Очистить();
|
||
СтандартнаяОбработка = Ложь;
|
||
Если Ложь
|
||
Или ТаблицаСтарая = Неопределено
|
||
Или ЗначениеЗаполнено(ОбъектМетаданных)
|
||
Или (Истина
|
||
И ЗначениеЗаполнено(ПользовательСтарый)
|
||
И Пользователь <> ПользовательСтарый)
|
||
Тогда
|
||
Таблица = Новый ТаблицаЗначений;
|
||
Таблица.Колонки.Добавить("ТипМетаданных", Новый ОписаниеТипов("Строка"));
|
||
Таблица.Колонки.Добавить("ОбъектМетаданных", Новый ОписаниеТипов("Строка"));
|
||
Таблица.Колонки.Добавить("ОбъектМетаданныхПредставление", Новый ОписаниеТипов("Строка"));
|
||
Таблица.Колонки.Добавить("Роль", Новый ОписаниеТипов("Строка"));
|
||
Таблица.Колонки.Добавить("Право", Новый ОписаниеТипов("Строка"));
|
||
Таблица.Колонки.Добавить("Доступ", Новый ОписаниеТипов("Строка"));
|
||
МассивПрав = Новый Структура;
|
||
МассивПрав.Вставить("Чтение", "1.Чтение");
|
||
МассивПрав.Вставить("Просмотр", "2.Просмотр");
|
||
МассивПрав.Вставить("Изменение", "3.Изменение");
|
||
МассивПрав.Вставить("Редактирование", "4.Редактирование");
|
||
МассивПрав.Вставить("Удаление", "5.Удаление");
|
||
МассивПрав.Вставить("ИнтерактивноеУдаление", "6.ИнтерактивноеУдаление");
|
||
мПлатформа = ирКэш.Получить();
|
||
#Если Сервер И Не Сервер Тогда
|
||
мПлатформа = Обработки.ирПлатформа.Создать();
|
||
#КонецЕсли
|
||
ТипыМетаданных = мПлатформа.ПолучитьТаблицуТиповМетаОбъектов(Истина, Ложь, Ложь);
|
||
Если ЗначениеЗаполнено(Пользователь) Тогда
|
||
Если Пользователь = ИмяПользователя() Тогда
|
||
ПользовательИБ = ПользователиИнформационнойБазы.ТекущийПользователь();
|
||
Иначе
|
||
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени(Пользователь);
|
||
КонецЕсли;
|
||
Если ПользовательИБ = Неопределено Тогда
|
||
Сообщить("Пользователь с именем """ + Пользователь + """ не найден", СтатусСообщения.Внимание);
|
||
Возврат;
|
||
КонецЕсли;
|
||
Роли = ПользовательИБ.Роли;
|
||
Иначе
|
||
Роли = Метаданные.Роли;
|
||
КонецЕсли;
|
||
Если Не ЗначениеЗаполнено(ОбъектМетаданных) Тогда
|
||
ПользовательСтарый = Пользователь;
|
||
КонецЕсли;
|
||
ИндикаторТиповМетаданных = ирОбщий.ПолучитьИндикаторПроцессаЛкс(ТипыМетаданных.Количество(), "Объекты. Типы метаданных");
|
||
Для Каждого СтрокаТипаМетаданных Из ТипыМетаданных Цикл
|
||
ирОбщий.ОбработатьИндикаторЛкс(ИндикаторТиповМетаданных);
|
||
Попытка
|
||
КоллекцияМетаОбъектов = Метаданные[СтрокаТипаМетаданных.Множественное];
|
||
Исключение
|
||
Продолжить;
|
||
КонецПопытки;
|
||
ИндикаторОбъектов = ирОбщий.ПолучитьИндикаторПроцессаЛкс(КоллекцияМетаОбъектов.Количество(), СтрокаТипаМетаданных.Множественное);
|
||
Для Каждого МетаОбъект Из КоллекцияМетаОбъектов Цикл
|
||
#Если Сервер И Не Сервер Тогда
|
||
МетаОбъект = Метаданные.Обработки.ирАнализЖурналаРегистрации;
|
||
#КонецЕсли
|
||
ирОбщий.ОбработатьИндикаторЛкс(ИндикаторОбъектов);
|
||
ПолноеИмяМДЦикла = МетаОбъект.ПолноеИмя();
|
||
Если Истина
|
||
И ЗначениеЗаполнено(ОбъектМетаданных)
|
||
и ОбъектМетаданных <> ПолноеИмяМДЦикла
|
||
Тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
Для Каждого КлючИЗначение Из МассивПрав Цикл
|
||
//ИндикаторРолей = ирОбщий.ПолучитьИндикаторПроцессаЛкс(Метаданные.Роли.Количество(), "Роли");
|
||
Для Каждого Роль Из Роли Цикл
|
||
Право = КлючИЗначение.Ключ;
|
||
ПрерватьЦикл = Ложь;
|
||
ПараметрыДоступа = ирОбщий.ПараметрыДоступаКОбъектуМДЛкс(Право, МетаОбъект, Роль, ПрерватьЦикл);
|
||
Если ПрерватьЦикл Тогда
|
||
Прервать;
|
||
КонецЕсли;
|
||
СтрокаТаблицы = Таблица.Добавить();
|
||
СтрокаТаблицы.ТипМетаданных = СтрокаТипаМетаданных.Единственное;
|
||
СтрокаТаблицы.ОбъектМетаданных = МетаОбъект.ПолноеИмя();
|
||
СтрокаТаблицы.ОбъектМетаданныхПредставление = МетаОбъект.Представление();
|
||
СтрокаТаблицы.Роль = Роль.Имя;
|
||
СтрокаТаблицы.Право = КлючИЗначение.Значение;
|
||
Если ТипЗнч(ПараметрыДоступа) = Тип("Булево") Тогда
|
||
Доступ = "да";
|
||
ИначеЕсли ПараметрыДоступа.Доступность Тогда
|
||
Если ПараметрыДоступа.ОграничениеУсловием Тогда
|
||
Доступ = "да ограничено";
|
||
Иначе
|
||
Доступ = "да";
|
||
КонецЕсли;
|
||
Иначе
|
||
Доступ = "нет";
|
||
КонецЕсли;
|
||
СтрокаТаблицы.Доступ = Доступ;
|
||
КонецЦикла;
|
||
КонецЦикла;
|
||
//ирОбщий.ОсвободитьИндикаторПроцессаЛкс();
|
||
КонецЦикла;
|
||
ирОбщий.ОсвободитьИндикаторПроцессаЛкс();
|
||
КонецЦикла;
|
||
ирОбщий.ОсвободитьИндикаторПроцессаЛкс();
|
||
ТаблицаСтарая = Таблица;
|
||
КонецЕсли;
|
||
РолиПользователей = Новый ТаблицаЗначений;
|
||
РолиПользователей.Колонки.Добавить("Роль", Новый ОписаниеТипов("Строка"));
|
||
РолиПользователей.Колонки.Добавить("Пользователь", Новый ОписаниеТипов("Строка"));
|
||
Если ПравоДоступа("Администрирование", Метаданные) Тогда
|
||
ДоступныеПользователи = ПользователиИнформационнойБазы.ПолучитьПользователей();
|
||
Иначе
|
||
ДоступныеПользователи = Новый Массив;
|
||
ДоступныеПользователи.Добавить(ПользователиИнформационнойБазы.ТекущийПользователь());
|
||
КонецЕсли;
|
||
Для Каждого ПользовательИБ Из ДоступныеПользователи Цикл
|
||
#Если Сервер И Не Сервер Тогда
|
||
ПользовательИБ = ПользователиИнформационнойБазы.СоздатьПользователя();
|
||
#КонецЕсли
|
||
Для Каждого Роль Из ПользовательИБ.Роли Цикл
|
||
СтрокаРоли = РолиПользователей.Добавить();
|
||
СтрокаРоли.Роль = Роль.Имя;
|
||
СтрокаРоли.Пользователь = ПользовательИБ.Имя;
|
||
КонецЦикла;
|
||
КонецЦикла;
|
||
|
||
КонечнаяНастройка = КомпоновщикНастроек.ПолучитьНастройки();
|
||
Если ЗначениеЗаполнено(Пользователь) Тогда
|
||
ирОбщий.НайтиДобавитьЭлементОтбораКомпоновкиЛкс(КонечнаяНастройка, "Пользователь", Пользователь,,, Ложь);
|
||
КонецЕсли;
|
||
Если ЗначениеЗаполнено(ОбъектМетаданных) Тогда
|
||
ирОбщий.НайтиДобавитьЭлементОтбораКомпоновкиЛкс(КонечнаяНастройка, "ОбъектМетаданных", ОбъектМетаданных,,, Ложь);
|
||
КонецЕсли;
|
||
ВнешниеНаборыДанных = Новый Структура("Таблица, РолиПользователей", ТаблицаСтарая, РолиПользователей);
|
||
Если РежимОтладки = 2 Тогда
|
||
ирОбщий.ОтладитьЛкс(СхемаКомпоновкиДанных, , КонечнаяНастройка, ВнешниеНаборыДанных);
|
||
Возврат;
|
||
КонецЕсли;
|
||
ирОбщий.СкомпоноватьВТабличныйДокументЛкс(СхемаКомпоновкиДанных, КонечнаяНастройка, ДокументРезультат, ВнешниеНаборыДанных, ДанныеРасшифровки);
|
||
|
||
КонецПроцедуры
|
||
|
||
//ирПортативный лФайл = Новый Файл(ИспользуемоеИмяФайла);
|
||
//ирПортативный ПолноеИмяФайлаБазовогоМодуля = Лев(лФайл.Путь, СтрДлина(лФайл.Путь) - СтрДлина("Модули\")) + "ирПортативный.epf";
|
||
//ирПортативный #Если Клиент Тогда
|
||
//ирПортативный Контейнер = Новый Структура();
|
||
//ирПортативный Оповестить("ирПолучитьБазовуюФорму", Контейнер);
|
||
//ирПортативный Если Не Контейнер.Свойство("ирПортативный", ирПортативный) Тогда
|
||
//ирПортативный ирПортативный = ВнешниеОбработки.ПолучитьФорму(ПолноеИмяФайлаБазовогоМодуля);
|
||
//ирПортативный ирПортативный.Открыть();
|
||
//ирПортативный КонецЕсли;
|
||
//ирПортативный #Иначе
|
||
//ирПортативный ирПортативный = ВнешниеОбработки.Создать(ПолноеИмяФайлаБазовогоМодуля, Ложь); // Это будет второй экземпляр объекта
|
||
//ирПортативный #КонецЕсли
|
||
//ирПортативный ирОбщий = ирПортативный.ПолучитьОбщийМодульЛкс("ирОбщий");
|
||
//ирПортативный ирКэш = ирПортативный.ПолучитьОбщийМодульЛкс("ирКэш");
|
||
//ирПортативный ирСервер = ирПортативный.ПолучитьОбщийМодульЛкс("ирСервер");
|
||
//ирПортативный ирПривилегированный = ирПортативный.ПолучитьОбщийМодульЛкс("ирПривилегированный");
|
||
|
||
РежимОтладки = 0; |