zfilin | Дата: Четверг, 21.06.2012, 15:01 | Сообщение # 1 |
Рядовой
Группа: Проверенные
Сообщений: 2
Репутация: 0
Статус: Оффлайн
| Добрый день. Хочу внести предложение по консоли запросов в вашей подсистеме "Инструменты разработчика". Часто бывает так, что сам запрос и параметры собираются по-кусочкам. Т.е. текст запроса формируется из кусочков текста, а параметры могут быть сложными, например, списками, которые формируются другими запросами, разными процедурами.
И, если текст запроса в конечном итоге можно получить сразу перед методом "Выполнить", если в отладке посмотреть Запрос.Текст и потом скопировать и вставить в консоль запросов для последующей отладки, то с параметрами сложнее.
Посмотреть-то их можно (Запрос.Параметры), но перенести в консоль сложнее. Я поступал следующим образом: В отладке копировал значение, которое возвращает функция ЗначениеВСтрокуВнутр(Запрос.Параметры), а потом после некоторых преобразований, вроде добавления символа | и двойных кавычек загружал параметры способом "ЗначениеИзСтрокиВнутр" через вкладку "Перед выполнением запроса". Вообщем, оно работает но не удобно. Предложение такое: Давайте добавим на панель кнопку "Загрузить из строки" рядом с кнопкой "Заполнить из запроса", чтобы по нажатию на кнопку "Загрузить из строки" появлялось поле, куда можно ввести результат работы функции "ЗначениеВСтрокуВнутр(Запрос.Параметры)", а по кнопке Ок, оно эти параметры раскидывало в табличку параметров?
Вот примерно такой код процедур я набросал для реализации этого: Code
Функция ЗаполнитьПараметрыИзСтроки(ЛиДобавлятьНовые = Истина)
СтрокаПараметровВнутр = ""; //Если не ВвестиСтроку(СтрокаПараметровВнутр, "Строка с параметрами",,Истина) Тогда // Возврат Истина; //КонецЕсли; // Форма для ввода строки отличается от "ВвестиСтроку" только тем, что на форме можно разместить развернутую подсказку о том, что это должна быть за строка Результат = ПолучитьФорму("ФормаВводаСтрокиПараметров").ОткрытьМодально(); Если (Результат = Неопределено) или ПустаяСтрока(Результат) Тогда Возврат Истина; КонецЕсли; СтрокаПараметровВнутр = Результат;
Попытка СтруктураПараметров = ЗначениеИзСтрокиВнутр(СтрокаПараметровВнутр); Исключение Сообщить("Ошибка разбора строки с параметрами!"); Возврат Ложь; КонецПопытки; Если ЛиДобавлятьНовые Тогда Параметры.Колонки.Добавить("НИмя", Новый ОписаниеТипов("Строка")); Для Каждого СтрокаПараметра Из Параметры Цикл СтрокаПараметра.НИмя = НРег(СтрокаПараметра.ИмяПараметра); КонецЦикла; Для каждого ПараметрЗапроса Из СтруктураПараметров Цикл ИмяПараметра = ПараметрЗапроса.Ключ; СтрокаПараметров = Параметры.Найти(НРег(ИмяПараметра), "НИмя"); Если СтрокаПараметров <> Неопределено Тогда Продолжить; КонецЕсли; СтрокаПараметров = Параметры.Добавить(); СтрокаПараметров.ИмяПараметра = ИмяПараметра; СтрокаПараметров.ЭтоВыражение = Ложь; МассивТипов = Новый Массив; МассивТипов.Добавить(ТипЗнч(ПараметрЗапроса.Значение)); ТипЗначения = Новый ОписаниеТипов(МассивТипов); СтрокаПараметров.ТипЗначения = ТипЗначения; СтрокаПараметров.Значение = ПараметрЗапроса.Значение; КонецЦикла; Параметры.Колонки.Удалить("НИмя"); КонецЕсли;
Возврат Истина;
КонецФункции // ЗаполнитьПараметрыИзСтроки()
// Обработчик нажатия кнопки командной панели "Заполнить из строки" // Процедура КоманднаяПанельПараметрыЗаполнитьИзСтроки(Кнопка)
Если Не ЗаполнитьПараметрыИзСтроки() Тогда Возврат; КонецЕсли;
КонецПроцедуры
|
|
| |
tormozit | Дата: Четверг, 21.06.2012, 16:33 | Сообщение # 2 |
Генералиссимус
Группа: Администраторы
Сообщений: 6503
Репутация: 173
Статус: Оффлайн
| Сложилось впечатление, что ты не ознакомился с функцией режима отладки От. http://www.youtube.com/watch?v=QqM8qXGcUVU
Если ознакомился, то чем она не устраивает?
|
|
| |
zfilin | Дата: Четверг, 21.06.2012, 18:16 | Сообщение # 3 |
Рядовой
Группа: Проверенные
Сообщений: 2
Репутация: 0
Статус: Оффлайн
| О, спасибо. Отладка это то, что нужно. Извините, что лишний раз отвлек.
|
|
| |