mirror of
https://github.com/tormozit/RDT1C.git
synced 2025-12-17 21:24:11 +00:00
Подбор и обработка объектов
+В обработке "Изменить/добавить строку" добавить флажок "Принудительная запись"
*Улучшена обработка недоступных полей и таблиц из-за прав и функциональных опций
*Исправлено свежее воссоздание объектов сразу после удаления в обработке в обработке "Удалить" в непортативных вариантах с включенным флажком "Объекты на сервере"
Сравнение таблиц
+Добавлен флажок "Располагать сравниваемые ячейки вертикально"
Форма выбора метаданных
+Добавлена кнопка "Функциональные опции" для включения и заполнения одноименной колонки
Общее
*Восстановлена совместимость варианта Расширение с 8.3.10 и 8.3.11
*Исправлена свежая ошибка "Не установлен отбор по регистратору" при записи регистров в клиент-серверном режиме в непортативных вариантах с включенном флажком "Объекты на сервере"
*Исправлено открытие лишней пустой формы при выполнении команды "Список инструментов и общие настройки" в управляемом приложении
Конструктор запроса
*Исправлена ошибка при разборе инструкции INSERT
*Исправлено превращение значений параметров некоторых типов в строки
Консоль заданий
+Для списка фоновых заданий добавлена колонка "Ошибки ЖР", отражающая количество ошибок в журнале регистрации, и переключатель для ее заполнения
*Исправлено обнобновление отбора по текущему методу в режиме "По методу" при смене текущего метода
Управление службами серверов 1С
+Добавлена команда запуска консоли серверов с дополнением ее списка серверов
Консоль компоновки
*Исправлена очистка доступных полей компоновщика настроек в некоторых случаях
+Добавлена индикация наличия неактуальных полей в области и отборе строки условного оформления
Редактор объекта БД
*Отключена управляемая форма как менее функциональная, менее быстрая и не привносящая новых возможностей
Консоль запросов
*Исправлены мелкие ошибки в работе с ADODB, включая режим без использования компоненты GameWithFire
*Улучшен поиск итогов по ОБЩИЕ на закладке "Выборки итогов"
Анализ журнала регистрации
*Исправлена очистка не включенных элементов отбора при открытии с передачей отбора
Отложенная отладка
*В команде "Открыть объект для отладки" исправлен поиск объекта, сохраненного под другим пользователем в вариантах кроме Подсистема
90 lines
7.9 KiB
Plaintext
90 lines
7.9 KiB
Plaintext
Перем мСоединениеADO;
|
||
|
||
Функция ВыполнитьЗапросADO(ТекстЗапроса)
|
||
|
||
СоединениеADO();
|
||
РезультатЗапроса = Новый COMОбъект("ADODB.Recordset");
|
||
adOpenStatic = 3;
|
||
adLockOptimistic = 3;
|
||
adCmdText = 1;
|
||
РезультатЗапроса.Open(ТекстЗапроса, мСоединениеADO, adOpenStatic, adLockOptimistic, adCmdText);
|
||
Возврат РезультатЗапроса;
|
||
|
||
КонецФункции
|
||
|
||
Процедура СоединениеADO() Экспорт
|
||
|
||
Если мСоединениеADO = Неопределено Тогда
|
||
мСоединениеADO = ирОбщий.ПолучитьСоединениеСУБД();
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
|
||
|
||
#Если _ Тогда
|
||
СхемаКомпоновки = Новый СхемаКомпоновкиДанных;
|
||
КонечнаяНастройка = Новый НастройкиКомпоновкиДанных;
|
||
ВнешниеНаборыДанных = Новый Структура;
|
||
ДокументРезультат = Новый ТабличныйДокумент;
|
||
#КонецЕсли
|
||
ДокументРезультат.Очистить();
|
||
СтандартнаяОбработка = Ложь;
|
||
АнализТехножурнала = Обработки.ирАнализТехножурнала.Создать();
|
||
КонечнаяНастройка = КомпоновщикНастроек.ПолучитьНастройки();
|
||
ПорядокЗапроса = ирОбщий.ПолучитьВыражениеПорядкаКомпоновкиНаЯзыкеЛкс(КонечнаяНастройка.Порядок,,, "MSSQL");
|
||
Если Не ЗначениеЗаполнено(ПорядокЗапроса) Тогда
|
||
ПорядокЗапроса = "TotIO desc";
|
||
КонецЕсли;
|
||
ТекстЗапроса = ПолучитьМакет("StatisticsQuery").ПолучитьТекст();
|
||
СоединениеADO();
|
||
Если мСоединениеADO = Неопределено Тогда
|
||
Сообщить("Для выполнения отчета необходима клиент-серверная база");
|
||
Возврат;
|
||
КонецЕсли;
|
||
КоличествоПервых = КонечнаяНастройка.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("КоличествоПервых")).Значение;
|
||
ПопавшиеВПоследниеМинут = КонечнаяНастройка.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ПопавшиеВПоследниеМинут")).Значение;
|
||
ТекстЗапроса = ирОбщий.СтрЗаменитьОбязательноЛкс(ТекстЗапроса, "1111", XMLСтрока(КоличествоПервых));
|
||
ТекстЗапроса = ирОбщий.СтрЗаменитьОбязательноЛкс(ТекстЗапроса, "2222", XMLСтрока(ПопавшиеВПоследниеМинут));
|
||
//ФормаПодключения = ирКэш.Получить().ПолучитьФорму("ПараметрыСоединенияСУБД");
|
||
//ФормаПодключения.ЗаполнитьПараметры();
|
||
//ТекстЗапроса = ирОбщий.СтрЗаменитьОбязательноЛкс(ТекстЗапроса, "3333", ФормаПодключения.ИмяБД);
|
||
ВсеВыбранныеПоля = ирОбщий.ПолучитьВсеВыбранныеПоляГруппировкиКомпоновкиЛкс(КонечнаяНастройка.Выбор, Истина);
|
||
ВыбранноеПолеПланЗапроса = ирОбщий.НайтиЭлементКоллекцииПоЗначениюСвойстваЛкс(ВсеВыбранныеПоля, "Поле", Новый ПолеКомпоновкиДанных("query_plan"));
|
||
Если ВыбранноеПолеПланЗапроса = Неопределено Тогда
|
||
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "qp.query_plan", "NULL"); // получание планов запросов в XML занимает много времени
|
||
КонецЕсли;
|
||
ТекстЗапроса = ТекстЗапроса + Символы.ПС + "ORDER BY " + ПорядокЗапроса;
|
||
РезультатADO = ВыполнитьЗапросADO(ТекстЗапроса);
|
||
Запросы = ирОбщий.РезультатЗапросаADOВТаблицуЗначенийОбщийЛкс(РезультатADO,,,,, Ложь); // Для использования GWF надо решить сначала проблему смещения дат
|
||
Запросы.Колонки.Добавить("ТаблицыМетаданных");
|
||
Запросы.Колонки.Добавить("ТекстЗапросаМета");
|
||
ВыбранноеПолеТаблицыМетаданных = ирОбщий.НайтиЭлементКоллекцииПоЗначениюСвойстваЛкс(ВсеВыбранныеПоля, "Поле", Новый ПолеКомпоновкиДанных("ТаблицыМетаданных"));
|
||
ВыбранноеПолеТекстЗапросаМета = ирОбщий.НайтиЭлементКоллекцииПоЗначениюСвойстваЛкс(ВсеВыбранныеПоля, "Поле", Новый ПолеКомпоновкиДанных("ТекстЗапросаМета"));
|
||
Для Каждого СтрокаЗапроса Из Запросы Цикл
|
||
Если Ложь
|
||
Или ВыбранноеПолеТекстЗапросаМета <> Неопределено
|
||
Или ВыбранноеПолеТаблицыМетаданных <> Неопределено
|
||
Тогда
|
||
//Если ирОбщий.СтрокиРавныЛкс(СтрокаЗапроса.database_name, ФормаПодключения.ИмяБД) Тогда
|
||
НайденныеТаблицы = Новый ТаблицаЗначений;
|
||
СтрокаЗапроса.ТекстЗапросаМета = АнализТехножурнала.ПеревестиТекстБДВТерминыМетаданных(СтрокаЗапроса.query_text,,, "MSSQL", НайденныеТаблицы,,,, Истина);
|
||
Если НайденныеТаблицы.Количество() > 0 Тогда
|
||
МассивИмен = НайденныеТаблицы.ВыгрузитьКолонку("ИмяМета");
|
||
СтрокаЗапроса.ТаблицыМетаданных = ирОбщий.ПолучитьСтрокуСРазделителемИзМассиваЛкс(МассивИмен);
|
||
КонецЕсли;
|
||
//КонецЕсли;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
#Если _ Тогда
|
||
Таблица = Новый ТаблицаЗначений;
|
||
#КонецЕсли
|
||
Запросы.Колонки.Добавить("ШаблонЗапроса", Новый ОписаниеТипов("Строка"));
|
||
Для Каждого СтрокаТаблицы Из Запросы Цикл
|
||
СтрокаТаблицы.ШаблонЗапроса = АнализТехножурнала.ПолучитьШаблонТекстаБД(СтрокаТаблицы.query_text);
|
||
КонецЦикла;
|
||
ВнешниеНаборыДанных = Новый Структура("Запросы", Запросы);
|
||
ирОбщий.СкомпоноватьВТабличныйДокументЛкс(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, ДокументРезультат, ВнешниеНаборыДанных, ДанныеРасшифровки);
|
||
|
||
КонецПроцедуры
|