mirror of
https://github.com/tormozit/RDT1C.git
synced 2025-12-17 13:14:11 +00:00
Форма выбора объектов метаданных
*Исправлено вычисление количества строк кнопкой "Количество" у табличных частей и перерасчетов
Общее
*Исправлены ошибки при работе с наборами записей перерасчетов
*Исправлена ошибка обработки отказа от записи при наличии ссылки на объект БД в дополнительных свойствах объекта
+В форме настроек подключения к СУБД собственной базы добавлен режим выполнения запросов непосредственно с сервера 1С
Статистика по запросам MSSQL
+Добавлено подменю вариантов отчета
+Добавлена кнопка передачи компоновки отчета в консоль компоновки
+Добавлена кнопка передачи запроса отчета в консоль запросов
Консоль кода
*Исправлена команда "В однострочный" для выделенного фрагмента
Консоль запросов
+На закладке "Запрос результата" добавлена кнопка "Статистика MSSQL" для открытия инструмента "Статистика по запросам MSSQL" с передачей интервала последнего выполнения запроса
*Исправлена потеря регистра букв имен на закладке "Временные таблицы" в некоторых случаях в режиме дерева запроса
Тестирование метаданных
*Исправлена ошибка тестирования элементов управления управляемых форм
Поиск дублей и замена ссылок
*Исправлено заполнение колонки "Ценность данных" кнопкой "обновить ценность" на закладке "Группы дублей"
Конструктор запроса
*Исправлено попадание элементов отбора с агрегатами в некоторых случаях в секцию ГДЕ вместо ИМЕЮЩИЕ при сборке текста
*Исправлено в некоторых случаях некорректное преобразование константного правого значения элемента условия в параметр
Структура хранения БД
+Добавлена кнопка "Описание шаблонов ИТС"
Редактор объекта БД
+На закладке "Связанные колонки" добавлено групповое изменение пометок
+В списке реквизитов добавлена колонка "Зависит от" для отражения связей параметров выбора
*Исправлена работа связей параметров выбора сломанная несколько версий назад
+Добавлена команда выгрузки избранных связанных колонок
+При загрузке объекта из памяти теперь считываются дополнительные свойства в одноименную таблицу на форме
*Исправлена ошибка при выборе метассылок (например перечислений) внесенная несколько версий назад
Подбор и обработка объектов
*Исправлена ошибка обработки строк некоторых регистров
+В обработке "Добавить/изменить строку" добавлена колонка "Зависит от" для отражения связей параметров выбора
Консоль заданий
+Добавлена команда перехода к методу из списка фоновых заданий
+Для фонового задания сделана полноценная форма
*Список методов теперь сортируется по алфавиту
+В списке методов добавлены колонки "Последний конец" и "Возраст, м"
+Добавлен режим автообновления для списка методов
Редактор хранилищ настроек
+Добавлены команды выгрузки/загрузки выделенных настроек в/из файла
+Добавлена команда установки отбора по настройкам инструментов разработчика
Анализ техножурнала
+При загрузке логов с отбором теперь выводится сообщение с представлением фильтра
+Добавлен фильтр по типу события на этапе загрузке логов
151 lines
13 KiB
Plaintext
151 lines
13 KiB
Plaintext
//ирПортативный Перем ирПортативный Экспорт;
|
||
//ирПортативный Перем ирОбщий Экспорт;
|
||
//ирПортативный Перем ирСервер Экспорт;
|
||
//ирПортативный Перем ирКэш Экспорт;
|
||
//ирПортативный Перем ирПривилегированный Экспорт;
|
||
|
||
Перем РежимОтладки Экспорт;
|
||
|
||
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
|
||
|
||
#Если _ Тогда
|
||
СхемаКомпоновки = Новый СхемаКомпоновкиДанных;
|
||
КонечнаяНастройка = Новый НастройкиКомпоновкиДанных;
|
||
ВнешниеНаборыДанных = Новый Структура;
|
||
ДокументРезультат = Новый ТабличныйДокумент;
|
||
#КонецЕсли
|
||
ДокументРезультат.Очистить();
|
||
СтандартнаяОбработка = Ложь;
|
||
ФайлЗамера = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ФайлЗамера")).Значение;
|
||
Таблица = Новый ТаблицаЗначений;
|
||
Таблица.Колонки.Добавить("Файл");
|
||
Таблица.Колонки.Добавить("Модуль");
|
||
Таблица.Колонки.Добавить("ИДМодуля");
|
||
Таблица.Колонки.Добавить("Текст");
|
||
Таблица.Колонки.Добавить("НомерСтроки", Новый ОписаниеТипов("Число"));
|
||
Таблица.Колонки.Добавить("НомерПервойСтрокиМетода", Новый ОписаниеТипов("Число"));
|
||
Таблица.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));
|
||
Таблица.Колонки.Добавить("ВремяЧистое", Новый ОписаниеТипов("Число"));
|
||
Таблица.Колонки.Добавить("ВремяЧистоеСВложенными", Новый ОписаниеТипов("Число"));
|
||
Таблица.Колонки.Добавить("ВремяПроцент", Новый ОписаниеТипов("Число"));
|
||
Таблица.Колонки.Добавить("ВремяПроцентСВложенными", Новый ОписаниеТипов("Число"));
|
||
Таблица.Колонки.Добавить("Клиент", Новый ОписаниеТипов("Булево"));
|
||
Таблица.Колонки.Добавить("Сервер", Новый ОписаниеТипов("Булево"));
|
||
Таблица.Колонки.Добавить("ОбработкаСервером", Новый ОписаниеТипов("Булево"));
|
||
Таблица.Колонки.Добавить("Метод", Новый ОписаниеТипов("Строка"));
|
||
Таблица.Колонки.Добавить("КоличествоВходов", Новый ОписаниеТипов("Число"));
|
||
Таблица.Колонки.Добавить("КоличествоВыходов", Новый ОписаниеТипов("Число"));
|
||
ТекстовыйДокумент = Новый ТекстовыйДокумент;
|
||
Попытка
|
||
ТекстовыйДокумент.Прочитать(ФайлЗамера);
|
||
Исключение
|
||
Сообщить("Ошибка чтения файла замера: " + ОписаниеОшибки(), СтатусСообщения.Внимание);
|
||
Возврат;
|
||
КонецПопытки;
|
||
Текст = ТекстовыйДокумент.ПолучитьТекст();
|
||
// Пример
|
||
// {{"",0},ada14b12-452d-4f85-9d71-99554e8fc6c0,a78d9ce3-4e0c-48d5-9863-ae7342eedf94,0,00000000-0000-0000-0000-000000000000,0,AAAAAAAAAAAAAAAAAAAAAAAAAAA=,""},"МодульОбычногоПриложения",515,"Если глЗначениеПеременной(""глОбработкаАвтоОбменДанными"") = Неопределено Тогда",1,0.00023340955344883218397869,0.000020323812104611060902992,0.000450628996772107550476536,0.000039237892896673637698585,1,0,0,aaff96cf-5e0a-4e93-aa3e-70ab34e49a77,
|
||
шГУИД = "\b[A-F0-9]{8}(?:-[A-F0-9]{4}){3}-[A-Z0-9]{12}\b";
|
||
шЭкспЧисло = "[-+]?(?:\b[0-9]+(?:\.[0-9]*)?|\.[0-9]+\b)(?:[eE][-+]?[0-9]+\b)?";
|
||
шЧисло = "(?:[\d]+)";
|
||
шСтрока = """(?:(?:"""")|[^""])*""";
|
||
шЗапятая = "\s*,\s*";
|
||
ШаблонЗаписи = "{\s*{\s*" + "(" + шСтрока + ")" + шЗапятая + шЧисло + "\s*}" + шЗапятая + "(" + шГУИД + ")" + шЗапятая + "(" + шГУИД + ")" + шЗапятая + шЧисло + "\s*"
|
||
+ "(?:" + шЗапятая + шГУИД + шЗапятая + шЧисло + "(?:" + шЗапятая + "\w+=(?:" + шЗапятая + шСтрока + ")?)?)?}"
|
||
+ шЗапятая + "(" + шСтрока + ")" + шЗапятая + "(" + шЧисло + ")" + шЗапятая + "(" + шСтрока + ")" + шЗапятая + "(" + шЧисло + ")"
|
||
+ шЗапятая + "(" + шЭкспЧисло + ")" + шЗапятая + "(" + шЭкспЧисло + ")" + шЗапятая + "(" + шЭкспЧисло + ")" + шЗапятая + "(" + шЭкспЧисло + ")"
|
||
+ шЗапятая + "(" + шЧисло + ")" + шЗапятая + "(" + шЧисло + ")" + шЗапятая + "(" + шЧисло + ")" + шЗапятая + шГУИД + шЗапятая;
|
||
RegExp = Новый COMОбъект("VBScript.RegExp");
|
||
RegExp.Global = Истина;
|
||
RegExp.IgnoreCase = Истина;
|
||
RegExp.Multiline = Истина;
|
||
RegExp.Pattern = ШаблонЗаписи;
|
||
Вхождения = RegExp.Execute(Текст);
|
||
СсылкаСервиса = 0;
|
||
Индикатор = ирОбщий.ПолучитьИндикаторПроцессаЛкс(Вхождения.Count);
|
||
Для Каждого Вхождение Из Вхождения Цикл
|
||
ирОбщий.ОбработатьИндикаторЛкс(Индикатор);
|
||
СтрокаЗамера = Таблица.Добавить();
|
||
СтрокаЗамера.Файл = Вычислить(Вхождение.SubMatches(0));
|
||
СтрокаЗамера.ИДМодуля = Вхождение.SubMatches(1) + "," + Вхождение.SubMatches(2);
|
||
СтрокаЗамера.Модуль = Вычислить(Вхождение.SubMatches(3));
|
||
СтрокаЗамера.НомерСтроки = Число(Вхождение.SubMatches(4));
|
||
СтрокаЗамера.Текст = Вычислить(Вхождение.SubMatches(5));
|
||
СтрокаЗамера.Количество = Число(Вхождение.SubMatches(6));
|
||
СтрокаЗамера.ВремяЧистоеСВложенными = Число(Вхождение.SubMatches(7));
|
||
СтрокаЗамера.ВремяЧистое = Число(Вхождение.SubMatches(8));
|
||
СтрокаЗамера.ВремяПроцентСВложенными = Число(Вхождение.SubMatches(9));
|
||
СтрокаЗамера.ВремяПроцент = Число(Вхождение.SubMatches(10));
|
||
СтрокаЗамера.Клиент = Число(Вхождение.SubMatches(11));
|
||
СтрокаЗамера.Сервер = Число(Вхождение.SubMatches(12));
|
||
СтрокаЗамера.ОбработкаСервером = Число(Вхождение.SubMatches(13));
|
||
КонецЦикла;
|
||
ирОбщий.ОсвободитьИндикаторПроцессаЛкс();
|
||
Таблица.Сортировать("ИДМодуля, НомерСтроки, Клиент");
|
||
ПредыдущаяСтрока = Неопределено;
|
||
НомерМетода = 0;
|
||
Для Каждого СтрокаЗамера Из Таблица Цикл
|
||
ЭтоНовыйМетод = ПредыдущаяСтрока = Неопределено;
|
||
Если Истина
|
||
И ПредыдущаяСтрока <> Неопределено
|
||
И (Ложь
|
||
Или Найти(НРег(ПредыдущаяСтрока.Текст), "конецпроцедуры") > 0
|
||
Или Найти(НРег(ПредыдущаяСтрока.Текст), "конецфункции") > 0)
|
||
Тогда
|
||
ПредыдущаяСтрока.КоличествоВыходов = ПредыдущаяСтрока.Количество;
|
||
Если ПредыдущаяСтрока.НомерСтроки <> СтрокаЗамера.НомерСтроки Тогда
|
||
ЭтоНовыйМетод = Истина;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
Если Истина
|
||
И ПредыдущаяСтрока <> Неопределено
|
||
И ПредыдущаяСтрока.ИДМодуля <> СтрокаЗамера.ИДМодуля
|
||
Тогда
|
||
ЭтоНовыйМетод = Истина;
|
||
КонецЕсли;
|
||
Если Ложь
|
||
Или ЭтоНовыйМетод
|
||
Или (Истина
|
||
И ПредыдущаяСтрока <> Неопределено
|
||
И ПредыдущаяСтрока.КоличествоВходов > 0
|
||
И ПредыдущаяСтрока.ИДМодуля = СтрокаЗамера.ИДМодуля
|
||
И ПредыдущаяСтрока.НомерСтроки = СтрокаЗамера.НомерСтроки)
|
||
Тогда
|
||
СтрокаЗамера.КоличествоВходов = СтрокаЗамера.Количество;
|
||
СтрокаЗамера.НомерПервойСтрокиМетода = СтрокаЗамера.НомерСтроки;
|
||
КонецЕсли;
|
||
Если ЭтоНовыйМетод Тогда
|
||
НомерМетода = НомерМетода + 1;
|
||
КонецЕсли;
|
||
СтрокаЗамера.Метод = "Метод" + XMLСтрока(НомерМетода);
|
||
ПредыдущаяСтрока = СтрокаЗамера;
|
||
КонецЦикла;
|
||
СтрокаЗамера.КоличествоВыходов = СтрокаЗамера.Количество;
|
||
КонечнаяНастройка = КомпоновщикНастроек.Настройки;
|
||
ВнешниеНаборыДанных = Новый Структура("Таблица", Таблица);
|
||
Если РежимОтладки = 2 Тогда
|
||
ирОбщий.ОтладитьЛкс(СхемаКомпоновкиДанных, , КонечнаяНастройка, ВнешниеНаборыДанных);
|
||
Возврат;
|
||
КонецЕсли;
|
||
ирОбщий.СкомпоноватьВТабличныйДокументЛкс(СхемаКомпоновкиДанных, КонечнаяНастройка, ДокументРезультат, ВнешниеНаборыДанных, ДанныеРасшифровки);
|
||
|
||
КонецПроцедуры
|
||
|
||
//ирПортативный лФайл = Новый Файл(ИспользуемоеИмяФайла);
|
||
//ирПортативный ПолноеИмяФайлаБазовогоМодуля = Лев(лФайл.Путь, СтрДлина(лФайл.Путь) - СтрДлина("Модули\")) + "ирПортативный.epf";
|
||
//ирПортативный #Если Клиент Тогда
|
||
//ирПортативный Контейнер = Новый Структура();
|
||
//ирПортативный Оповестить("ирПолучитьБазовуюФорму", Контейнер);
|
||
//ирПортативный Если Не Контейнер.Свойство("ирПортативный", ирПортативный) Тогда
|
||
//ирПортативный ирПортативный = ВнешниеОбработки.ПолучитьФорму(ПолноеИмяФайлаБазовогоМодуля);
|
||
//ирПортативный ирПортативный.Открыть();
|
||
//ирПортативный КонецЕсли;
|
||
//ирПортативный #Иначе
|
||
//ирПортативный ирПортативный = ВнешниеОбработки.Создать(ПолноеИмяФайлаБазовогоМодуля, Ложь); // Это будет второй экземпляр объекта
|
||
//ирПортативный #КонецЕсли
|
||
//ирПортативный ирОбщий = ирПортативный.ПолучитьОбщийМодульЛкс("ирОбщий");
|
||
//ирПортативный ирКэш = ирПортативный.ПолучитьОбщийМодульЛкс("ирКэш");
|
||
//ирПортативный ирСервер = ирПортативный.ПолучитьОбщийМодульЛкс("ирСервер");
|
||
//ирПортативный ирПривилегированный = ирПортативный.ПолучитьОбщийМодульЛкс("ирПривилегированный");
|
||
|
||
РежимОтладки = 0; |