gifts2017

Консоль запросов для 1С Предприятие 8.2 (Управляемое приложение)

Опубликовал Анатолий Кичук (anatoliy.kichuk) в раздел Программирование - Инструментарий

Консоль запросов для 1С:Предприятие  (Управляемое приложение):

Обработка "Консоль запросов" предназначена для составления и исполнения запросов 1С:Предприятия  в режиме управляемого приложения. Данная обработка предназначена в основном для специалистов по внедрению и опытных пользователей.

Обработка "Консоль запросов" предназначена для составления и исполнения запросов 1С:Предприятия в режиме управляемого приложения. Данная обработка предназначена в основном для специалистов по внедрению и опытных пользователей.

Диалог обработки разбит на три основных блока.

 

Дерево запросов. В левой верхней части обработки располагается дерево запросов, составленных пользователем. Возможно добавление, удаление, перемещение элементов этого списка. По двойному щелчку мыши по строке дерева происходит выполнение выбранного запроса. Управление деревом осуществляется с помощью блока кнопок командной панели обработки. Созданное дерево запросов можно сохранить в файле с расширением ".sel".

 

Текст запроса. В правой верхней части обработки располагается непосредственно текст запроса. Отображаемый запрос зависит от текущей строки дерева запросов.

По кнопке "Параметры" вызывается отдельное окно, в котором можно задать список параметров запроса. В первой колонке указывается имя параметра. Во второй колонке указывается признак, позволяющий задать значение параметра выражением на встроенном языке 1С:Предприятия 8. В третьей колонке указывается собственно параметр запроса, который может быть задан непосредственно значением или выражением на встроенном языке. Список параметров текущего запроса можно получить нажатием кнопки "Заполнить из запроса".

 

Результат запроса можно отображать в трех режимах:

  • Список
  • Иерархический список
  • Дерево

 

Описание текстов запросов, задания параметров приведено в книге "1С: Предприятие . Руководство разработчика".

 

Результат запроса. В нижней части диалога располагается результат выполнения запроса.

 

* Обработку можно использовать, внешнюю для конфигурации

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Обработка "Консоль запросов для 1С:Предприятие 8.2 (Управляемое приложение)"
.epf 44,46Kb
27.06.13
649
.epf 44,46Kb 649 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Сергей Ожерельев (Поручик) 17.05.12 23:47
(0) При открытии файла запросов вида .sel ошибка: Недопустимое значение параметра (параметр номер "2").
2. andrewks 18.05.12 08:22
раскраска кода планируется?
3. Анатолий Кичук (anatoliy.kichuk) 19.05.12 12:35
Я не нарывался на ошибку "При открытии файла запросов вида .sel ошибка: Недопустимое значение параметра (параметр номер "2")." Предполагаю, что файл запросов был создан из другой консоли... Загрузи заново обработку с сайта - сейчас "висит" обновленная версия.
4. Анатолий Кичук (anatoliy.kichuk) 19.05.12 12:40
Про раскраску кода - пока вряд ли. Такой возможности еще не нашел: если воспользоваться свойством управляемой формы "Условное оформление", то функционал не обеспечивает оформление отдельного слова (фрагмента текста) поля текстового документа. Если пытаться установить условие "Содержит" в диалоге упомянутого свойства, то при запуске обработки в режиме 1С:Предприятие сеанс аварийно завершается. Возможно подобная возможность появится в следующих релизах Платформы.
5. Василий Антонов (khaoos) 21.05.12 06:42
В чем преимущества над аналогами?
6. Анатолий Кичук (anatoliy.kichuk) 21.05.12 08:44
Преимущества... Вряд ли можно отметить какие-либо уж очень значимые. Вопрос скорее всего в субъективном отношении: многие привыкли работать с консолью для 8.1, поэтому одной из целью при разработке - привести, к соответствию с ней. Ну, также я реализовал некоторые свои видения. Мне удобнее работать с моей консолью поскольку:
- результат выводится не в табличный документ, а в таблицу формы, отсюда удобнее настраивать ширину колонок (в табличный документ можно вывести стандартными средствами - из подменю "Все действия" командной панели таблицы);
- результаты пакета открываются в отдельных окнах, что позволяет каждый результат просмотреть в полноэкранном режиме;
- только два режима получения результатов: "Получить запрос", "Получить пакет", при этом результаты временных таблиц видны при использовании второго режима.

"Прощупайте" и делайте выводы, а также пишите отзывы... :-)
7. Сергей Ожерельев (Поручик) 05.06.12 15:20
(6) Что изменилось в обработке?
8. Анатолий Кичук (anatoliy.kichuk) 05.06.12 16:12
Мелочи:
- откорректировал алгоритм сохранения запросов в файл: если путь уже был определен, то при следующем сохранении, диалог выбора каталога не выводится.
- добавил еще несколько кнопок для работы с текстом запросов (не помню, в прошлой опубликованной версии было ли это).
9. Alex Misanets (Misanets) 06.06.12 15:40
ох, упирался, не хотел, но вот и мне понадобилась консоль для управляемого.
10. Анатолий Кичук (anatoliy.kichuk) 06.06.12 16:15
11. Наталья Болотнова (bol) 07.06.12 06:21
(9)Misanets, на курсах Насипов показывает, как использовать 1с-консоль запросов в управляемом приложении.
12. Анатолий Кичук (anatoliy.kichuk) 07.06.12 09:37
Неужели мою консоль?! :-)
aleksey.kubovtsov; +1 Ответить
13. Алексей Кубовцов (aleksey.kubovtsov) 22.06.12 10:02
14. Анатолий Кичук (anatoliy.kichuk) 22.06.12 10:33
Не за что! Пользуйся на здоровье! ;-)
15. kiril lipatov (kilokilo) 05.08.12 15:45
А у Вас спина белая картинки все пропали..
16. Анатолий Кичук (anatoliy.kichuk) 05.08.12 20:56
Странно! Только проверил - все на месте... :-)
17. kiril lipatov (kilokilo) 08.08.12 18:36
(16) anatoliy.kichuk,
Это из кэша вашего броузера. Из дома - тоже не видно. Если не трудно - перегрузите их заново.
18. Анатолий Кичук (anatoliy.kichuk) 09.08.12 09:46
Возможно, но маловероятно по следующим причинам:
- модератор не публикует без картинок;
- я регулярно очищаю кэш браузера.
В ближайшее время обновлю картинки... ;-)
19. Николай Больсунов (boln) 07.09.12 23:22
А я вот, ребята, тоже изобрел - велосипед называется. Многие привыкли пешком ходить, так вот вам мое изобретение. И почему кроме меня никто до этого не додумался?
20. Анатолий Кичук (anatoliy.kichuk) 09.09.12 10:44
21. Максим (maxim305) 14.11.12 10:31
22. Анатолий Кичук (anatoliy.kichuk) 14.11.12 10:41
Рад, что консоль полезна кому-либо!
23. Вадим Хасанов (vaZum) 14.11.12 23:38
Не могу добавить параметр списком
ФизЛицо В (&ФизЛицо)
24. Анатолий Кичук (anatoliy.kichuk) 15.11.12 09:43
К сожалению, пока еще не реализовал этот функционал (добавления параметра списком) - постараюсь в ближайшее время реализовать.
25. Алексей Роза (DoctorRoza) 15.11.12 09:54
Авансом! Чтобы было дальнейшее развитие работы! :)
26. Анатолий Кичук (anatoliy.kichuk) 15.11.12 10:01
Постараюсь, развить... :-)
27. Анатолий Кичук (anatoliy.kichuk) 09.01.13 11:01
То, что обещал - выполнил... :-)
28. Юрий Осипов (yuraos) 10.03.13 06:50
(6) anatoliy.kichuk,
плюс за реализацию традиционного интерфейса консоли
и за отображение результата пакетного выполнения.

один вопросик:
как будут выводиться в таблице результата колонки,
если
тип значения поля запроса не доступен на клиенте,
например колонки полей с табличными частями объектов,
имеющие тип "ТаблицаЗначений" ???
29. Анатолий Кичук (anatoliy.kichuk) 10.03.13 12:11
Спасибо, за положительный отзыв о моей консоли. Табличные части (таблицы значений) не выводятся в результат - предполагается, что если уж понадобится выборка табличной части, то запрос будет построен с обращением именно к ней. Т.е. если написать запрос вида "ВЫБРАТЬ * ИЗ <ИмяТаблицы>", где ИмяТаблицы - таблица документа, содержащего хотя бы одну таб. часть, то произойдет то, что описано выше. :-)
30. Юрий Осипов (yuraos) 10.03.13 12:53
(29) anatoliy.kichuk,
ммм ... а именно в каком посте ОпИСАнО ???
:)
31. Юрий Осипов (yuraos) 10.03.13 12:59
(30)
Вообще-то говоря иногда бывает нужно выбирать табличную часть объекта отдельным полем.

У меня есть практический пример,
в котором выгребаются всевозможные данные по заказам покупателям,
по взаморасчетам с клинтами по этим заказам и ...
табличная часть из некоего спрвочника, описывающей условия отсрочки платежей.

Далее в цикле полученная выборка данных обрабатывается
для построения графика платежей клиентов и
вычисления "просроченной" задолженности.
32. Анатолий Кичук (anatoliy.kichuk) 10.03.13 13:05
Не полян вопрос... Если вопрос о фрагменте когда, выполняющем проверку, то см. фрагмент кода:

Форма.МодульФормы.ПодготовитьКоллекцию(),

фрагмент:

Для Каждого Колонка Из КоллекцияКолонок Цикл
Если Колонка.ТипЗначения.СодержитТип(Тип("ТаблицаЗначений")) Тогда
Продолжить;
КонецЕсли;
...
КонецЦикла;
33. Анатолий Кичук (anatoliy.kichuk) 10.03.13 13:10
Нужно будет подумать над этим... ;-)
34. Юрий Осипов (yuraos) 10.03.13 16:30
(31)(32)
так, понятно ...
надо полагать что такие поля вообще исключается при выгрузке результата запроса в таблицу значений
и стало быть спрашивать о том,
можно ли просмотреть эту "вложенную" таблицу при клике мышью по ячейке
пока рановато.
Тогда спрошу
Можно ли просмотреть при клике мышью значения, запакованные в полях типа "ХранилищеЗначений" ???
:)

PS:
На вскидку не могу сообразить, что запрос 1С может вернуть,
что не позволено использовать на стороне "управляемого" клиента ?
Объект "ОписаниеТипов" вроде доступен...
35. rasswet (rasswet) 22.03.13 17:28
в качестве параметра можно сделать массив и МоментВремени?
36. Юрий Осипов (yuraos) 07.05.13 06:31
(35) rasswet,
1. массив нельзя - но вместо него в традиционной консоли используется список значений.
2. момент времени нельзя никак - для него даже нет интерактивных средств выбора...
...единственная возможность:
вычислить перед выполнением запроса значение момента времени из составляющих,
заданных в других параметрах и установить его в качестве параметра как бы "виртуально".
37. alean alean (alean) 23.05.13 11:27
Нормально.
Видно, что делал для себя. Добротно.
Беру в свой инструментарий.
38. Анатолий Кичук (anatoliy.kichuk) 23.05.13 12:24
Спасибо! Будет время, еще поработаю над ней - есть еще над чем работать. :-)
39. Ирек Вафин (Irek-kazan) 23.05.13 12:27
Спасибо за интересную консоль, плюсую
40. Анатолий Кичук (anatoliy.kichuk) 24.05.13 00:40
Спасибо,за характеристику моей консоли, как "интересную" - вдохновляет.
41. Владислав Томашевич (tomvlad) 29.05.13 09:00
Было бы неплохо заставить открывать файл запросов и при работе в режиме клиент-сервера. Сейчас нормальная работа (открытие сохраненных запросов и работа с этим списком) возможна только в файловом режиме (или при работе непосредственно на сервере, что не всегда хорошо).

А в остальном - это одна из лучших (привычная, удобная, кому как нравится) консоль из имеющихся.
42. Анатолий Кичук (anatoliy.kichuk) 29.05.13 09:11
Вот, на будущей недельке выйду в отпуск и вполне возможно, что повожусь с консолью - мне тоже некоторые моменты "режут" глаза, но до их отладки пока руки не дошли. ;-)
43. Юрий Осипов (yuraos) 29.05.13 17:30
(41) tomvlad,
А в чем проявляется проблема с открытием файла в клиент-серверной базе???
44. Владислав Томашевич (tomvlad) 31.05.13 09:53
(43) yuraos, не предусмотрена возможность того, что файл может быть открыт на сервере. А сервер может, к примеру, не иметь доступа к расположению файла списка запросов.
45. Юрий Осипов (yuraos) 01.06.13 09:16
(44) tomvlad,
ааааа....дошло на второй день!

---
Для заполнения списка запросов приходится вызывать серверную процедуру
и через нее по простому передаем путь к файлу, выбранный на стороне клиента
...
а на стороне сервера такого пути скорей всего не нету ... и не дай-бог если найдется!
46. Юрий Осипов (yuraos) 01.06.13 09:20
(45)
знакомый прикол. тут или сетевой путь выбирать из расшаренной папки
или через загрузку во временное хранилище сам файл передавать.
47. Павел Иванов (blockcode) 19.06.13 15:43
Отличная консоль для управляемого приложения!!!
Прикручу к ней парсер для разборки-сборки вложенных запросов и буду использовать.
48. Анатолий Кичук (anatoliy.kichuk) 19.06.13 15:47
49. Павел Иванов (blockcode) 26.06.13 16:30
К консоли прицепил пару кнопок "Разобрать" и "Собрать" для распарсивания сложных вложенных запросов.

Действия кнопки "Разобрать":
1. Внимание!!! Удаляет все подчиненные ветви в дереве запросов.
2. Создает и добавляет подзапросы в виде ветвей текущего запроса.
3. Копирует все параметры в подчиненную ветвь запроса.
4. Рекурсивно раскладывает до последнего вложенного запроса.

Действие кнопки "Собрать":
1. Заменяет текущие подзапросы запросами из ветвей подчинения первого уровня вложения. Сборка ведется не по именам подзапросов, а позиционно, в том порядке в котором происходила разборка.
2. Внимание!!! Сборка не отслеживает соответствие возвращаемых параметров, при его изменении после разборки.

Практически это выглядит следующим образом:
1. Выкладываем запрос для отладки и корректировки в "Консоль"
2. Указываем все необходимые параметры.
3. Нажимаем кнопку "Разобрать"
4. Находим ветвь с необходимым для отладки подзапросом
5. Вносим необходимые изменения. Выполняем. И если нет ошибок переходим к п.6
6. Поднимаемся на 1 уровень выше, нажимаем "Собрать" и выполняем подзапрос более верхнего уровня.
7. При возникновении ошибок устраняем их и выполняем пункт 6. до тех пор пока не поднимемся до основного запроса.

С данным механизмом я работал и раньше (http://forum.infostart.ru/forum24/topic20163/ сообщение 53) теперь возникла необходимость работы с управляемыми формами...

Преимущество использования методов разборки-сборки при работе со сложными вложенными запросами

1. Возможность отладки на любом уровне вложенности.
2. Простота сборки отлаженных фрагментов.
3. Предоставляется возможность составления своих базовых скриптов как заменяемых блоков в запросе. Необходимо лишь отслеживать идентичность возвращаемых параметров.
Прикрепленные файлы:
Консоль запросов для 1С Предприятие 8.2 (Управляемое приложение).epf
50. Дмитрий Рудаков (Дмитрий Рудаков) 27.06.13 07:39
Почему у публикации Платформа: 1С:Бухгалтерский учет 7.7 ?
51. Анатолий Кичук (anatoliy.kichuk) 28.06.13 13:45
(50) Дмитрий, привет! Исправил.
52. candy_sk (candy_sk) 28.06.13 22:08
полезная вещь для каждого дня, сохраню на память.
53. Юрий Осипов (yuraos) 23.07.13 08:55
(41)(42)(45)
---
Возможный вариант решения проблемы:
Считывать текст из файла с сохраненными запросами на стороне клиента
и запоминать его в строковом реквизите формы неограниченной длины:

ТекстОбъект = Новый ЧтениеТекста(ПутьКФайлуЗапросов);
ДеревоЗапросовСтрокой = ТекстОбъект.Прочитать();
54. Юрий Осипов (yuraos) 23.07.13 09:01
(53)
затем вызвать серверную процедуру,
восстанавливающую из строкового представления дерево значений:
&НаСервере
Процедура ЗагрузитьЗапросыИзСтроки()
  Попытка
      ЗначениеВДанныеФормы(ЗначениеИзСтрокиВнутр(ДеревоЗапросовСтрокой), ДеревоЗапросов);
  Исключение
      Сообщить("Не соответствие формата исходного файла!", СтатусСообщения.Важное);
  КонецПопытки;
  Модифицированность = Ложь;
КонецПроцедуры 


...Показать Скрыть
55. Юрий Осипов (yuraos) 23.07.13 09:09
(54)
аналогично поступаем при сохранении, но в обратном порядке.
сначала вызываем серверную процедуру,
записывающую в реквизит формы строковое представление дерева списка запросов:
&НаСервере
Процедура ДеревоЗапросовВСтроку()
  ДеревоЗапросовСтрокой = ЗначениеВСтрокуВнутр(ДанныеФормыВЗначение(ДеревоЗапросов, Тип("ДеревоЗначений")));
КонецПроцедуры 

...Показать Скрыть
56. Юрий Осипов (yuraos) 23.07.13 09:13
(55)
затем на клиенте записываем строковое значение
из реквизита формы в файл с выбранным путем (доступным на стороне клиента):
ТекстОбъект = Новый ЗаписьТекста(ПутьКФайлуЗапросов);
ТекстОбъект.Записать(ДеревоЗапросовСтрокой ;

...Показать Скрыть
57. Юрий Осипов (yuraos) 23.07.13 09:17
(53)
Описанная выше метода
(использование функций "ЗначениеВСтроку" вместо функций "ЗначениеВФайл")
проверена мной в режиме обычного приложения и прекрасно там работает.

Причем запросы сохраненые "по старому" (функцией ЗначениеВФайл())
прекрасно открываются "по новому".

---
судя по документации в управляемом приложении тоже должно работать.
58. McCoy77 04.11.13 00:19
Отличная работа. Спасибо
59. Анатолий Кичук (anatoliy.kichuk) 04.11.13 11:43
Спасибо!
Только yuraos прав - имеются недоработки для клиент-серверного варианта - руки до этого не доходят.
60. Дмитрий Колесников (EastGuy) 06.01.14 11:19
Извините, но без клиент-серверного варианта "+" не поставлю - не серьезно.

Валится по ошибке при вызове параметров:

{Форма.Форма.Форма(330)}: Ошибка при вызове метода контекста (ПоместитьВоВременноеХранилище)
ДеревоЗапросов.НайтиПоИдентификатору(ИдентификаторСтроки).ПараметрыЗапроса,
по причине:
Переданное значение не может быть помещено во временное хранилище
61. Константин Куликов (Светлый ум) 06.11.16 20:03
Пригодилось - так, как в большинстве консолей на управляемых формах - визуально корявый конструктор запросов (особенно в части соединений таблиц-дерево).
А здесь все родное - и по старинке быстренько набросал нужные соединения
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа