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










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

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

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

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

 

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

 

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

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

 

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

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

 

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

 

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

 

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

62 Comments

  1. Поручик

    (0) При открытии файла запросов вида .sel ошибка: Недопустимое значение параметра (параметр номер «2»).

    Reply
  2. andrewks

    раскраска кода планируется?

    Reply
  3. anatoliy.kichuk

    Я не нарывался на ошибку «При открытии файла запросов вида .sel ошибка: Недопустимое значение параметра (параметр номер «2»).» Предполагаю, что файл запросов был создан из другой консоли… Загрузи заново обработку с сайта — сейчас «висит» обновленная версия.

    Reply
  4. anatoliy.kichuk

    Про раскраску кода — пока вряд ли. Такой возможности еще не нашел: если воспользоваться свойством управляемой формы «Условное оформление», то функционал не обеспечивает оформление отдельного слова (фрагмента текста) поля текстового документа. Если пытаться установить условие «Содержит» в диалоге упомянутого свойства, то при запуске обработки в режиме 1С:Предприятие сеанс аварийно завершается. Возможно подобная возможность появится в следующих релизах Платформы.

    Reply
  5. khaoos

    В чем преимущества над аналогами?

    Reply
  6. anatoliy.kichuk

    Преимущества… Вряд ли можно отметить какие-либо уж очень значимые. Вопрос скорее всего в субъективном отношении: многие привыкли работать с консолью для 8.1, поэтому одной из целью при разработке — привести, к соответствию с ней. Ну, также я реализовал некоторые свои видения. Мне удобнее работать с моей консолью поскольку:

    — результат выводится не в табличный документ, а в таблицу формы, отсюда удобнее настраивать ширину колонок (в табличный документ можно вывести стандартными средствами — из подменю «Все действия» командной панели таблицы);

    — результаты пакета открываются в отдельных окнах, что позволяет каждый результат просмотреть в полноэкранном режиме;

    — только два режима получения результатов: «Получить запрос», «Получить пакет», при этом результаты временных таблиц видны при использовании второго режима.

    «Прощупайте» и делайте выводы, а также пишите отзывы… 🙂

    Reply
  7. Поручик

    (6) Что изменилось в обработке?

    Reply
  8. anatoliy.kichuk

    Мелочи:

    — откорректировал алгоритм сохранения запросов в файл: если путь уже был определен, то при следующем сохранении, диалог выбора каталога не выводится.

    — добавил еще несколько кнопок для работы с текстом запросов (не помню, в прошлой опубликованной версии было ли это).

    Reply
  9. Misanets

    ох, упирался, не хотел, но вот и мне понадобилась консоль для управляемого.

    Reply
  10. anatoliy.kichuk

    А чего ж упирался?! 🙂

    Reply
  11. bol

    (9)Misanets, на курсах Насипов показывает, как использовать 1с-консоль запросов в управляемом приложении.

    Reply
  12. anatoliy.kichuk

    Неужели мою консоль?! 🙂

    Reply
  13. aleksey.kubovtsov

    спасибо.пригодится

    Reply
  14. anatoliy.kichuk

    Не за что! Пользуйся на здоровье! 😉

    Reply
  15. kilokilo

    А у Вас спина белая картинки все пропали..

    Reply
  16. anatoliy.kichuk

    Странно! Только проверил — все на месте… 🙂

    Reply
  17. kilokilo

    (16)

    Это из кэша вашего броузера. Из дома — тоже не видно. Если не трудно — перегрузите их заново.

    Reply
  18. anatoliy.kichuk

    Возможно, но маловероятно по следующим причинам:

    — модератор не публикует без картинок;

    — я регулярно очищаю кэш браузера.

    В ближайшее время обновлю картинки… 😉

    Reply
  19. boln

    А я вот, ребята, тоже изобрел — велосипед называется. Многие привыкли пешком ходить, так вот вам мое изобретение. И почему кроме меня никто до этого не додумался?

    Reply
  20. anatoliy.kichuk

    Ого! Сурьезная заява! 😀

    Reply
  21. maxim305

    Спасибо, пригодиться!

    Reply
  22. anatoliy.kichuk

    Рад, что консоль полезна кому-либо!

    Reply
  23. vaZum

    Не могу добавить параметр списком

    ФизЛицо В (&ФизЛицо)

    Reply
  24. anatoliy.kichuk

    К сожалению, пока еще не реализовал этот функционал (добавления параметра списком) — постараюсь в ближайшее время реализовать.

    Reply
  25. DoctorRoza

    Авансом! Чтобы было дальнейшее развитие работы! 🙂

    Reply
  26. anatoliy.kichuk

    Постараюсь, развить… 🙂

    Reply
  27. anatoliy.kichuk

    То, что обещал — выполнил… 🙂

    Reply
  28. yuraos

    (6)

    плюс за реализацию традиционного интерфейса консоли

    и за отображение результата пакетного выполнения.

    один вопросик:

    как будут выводиться в таблице результата колонки,

    если

    тип значения поля запроса не доступен на клиенте,

    например колонки полей с табличными частями объектов,

    имеющие тип «ТаблицаЗначений» ???

    Reply
  29. anatoliy.kichuk

    Спасибо, за положительный отзыв о моей консоли. Табличные части (таблицы значений) не выводятся в результат — предполагается, что если уж понадобится выборка табличной части, то запрос будет построен с обращением именно к ней. Т.е. если написать запрос вида «ВЫБРАТЬ * ИЗ <ИмяТаблицы>», где ИмяТаблицы — таблица документа, содержащего хотя бы одну таб. часть, то произойдет то, что описано выше. 🙂

    Reply
  30. yuraos

    (29)

    ммм … а именно в каком посте ОпИСАнО ???

    🙂

    Reply
  31. yuraos

    (30)

    Вообще-то говоря иногда бывает нужно выбирать табличную часть объекта отдельным полем.

    У меня есть практический пример,

    в котором выгребаются всевозможные данные по заказам покупателям,

    по взаморасчетам с клинтами по этим заказам и …

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

    Далее в цикле полученная выборка данных обрабатывается

    для построения графика платежей клиентов и

    вычисления «просроченной» задолженности.

    Reply
  32. anatoliy.kichuk

    Не полян вопрос… Если вопрос о фрагменте когда, выполняющем проверку, то см. фрагмент кода:

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

    фрагмент:

    Для Каждого Колонка Из КоллекцияКолонок Цикл

    Если Колонка.ТипЗначения.СодержитТип(Тип(«ТаблицаЗначений»)) Тогда

    Продолжить;

    КонецЕсли;



    КонецЦикла;

    Reply
  33. anatoliy.kichuk

    Нужно будет подумать над этим… 😉

    Reply
  34. yuraos

    (31)(32)

    так, понятно …

    надо полагать что такие поля вообще исключается при выгрузке результата запроса в таблицу значений

    и стало быть спрашивать о том,

    можно ли просмотреть эту «вложенную» таблицу при клике мышью по ячейке

    пока рановато.

    Тогда спрошу

    Можно ли просмотреть при клике мышью значения, запакованные в полях типа «ХранилищеЗначений» ???

    🙂

    PS:

    На вскидку не могу сообразить, что запрос 1С может вернуть,

    что не позволено использовать на стороне «управляемого» клиента ?

    Объект «ОписаниеТипов» вроде доступен…

    Reply
  35. rasswet

    в качестве параметра можно сделать массив и МоментВремени?

    Reply
  36. yuraos

    (35) rasswet,

    1. массив нельзя — но вместо него в традиционной консоли используется список значений.

    2. момент времени нельзя никак — для него даже нет интерактивных средств выбора…

    …единственная возможность:

    вычислить перед выполнением запроса значение момента времени из составляющих,

    заданных в других параметрах и установить его в качестве параметра как бы «виртуально».

    Reply
  37. alean

    Нормально.

    Видно, что делал для себя. Добротно.

    Беру в свой инструментарий.

    Reply
  38. anatoliy.kichuk

    Спасибо! Будет время, еще поработаю над ней — есть еще над чем работать. 🙂

    Reply
  39. Irek-kazan

    Спасибо за интересную консоль, плюсую

    Reply
  40. anatoliy.kichuk

    Спасибо,за характеристику моей консоли, как «интересную» — вдохновляет.

    Reply
  41. tomvlad

    Было бы неплохо заставить открывать файл запросов и при работе в режиме клиент-сервера. Сейчас нормальная работа (открытие сохраненных запросов и работа с этим списком) возможна только в файловом режиме (или при работе непосредственно на сервере, что не всегда хорошо).

    А в остальном — это одна из лучших (привычная, удобная, кому как нравится) консоль из имеющихся.

    Reply
  42. anatoliy.kichuk

    Вот, на будущей недельке выйду в отпуск и вполне возможно, что повожусь с консолью — мне тоже некоторые моменты «режут» глаза, но до их отладки пока руки не дошли. 😉

    Reply
  43. yuraos

    (41) tomvlad,

    А в чем проявляется проблема с открытием файла в клиент-серверной базе???

    Reply
  44. tomvlad

    (43) yuraos, не предусмотрена возможность того, что файл может быть открыт на сервере. А сервер может, к примеру, не иметь доступа к расположению файла списка запросов.

    Reply
  45. yuraos

    (44) tomvlad,

    ааааа….дошло на второй день!





    Для заполнения списка запросов приходится вызывать серверную процедуру

    и через нее по простому передаем путь к файлу, выбранный на стороне клиента



    а на стороне сервера такого пути скорей всего не нету … и не дай-бог если найдется!

    Reply
  46. yuraos

    (45)

    знакомый прикол. тут или сетевой путь выбирать из расшаренной папки

    или через загрузку во временное хранилище сам файл передавать.

    Reply
  47. blockcode

    Отличная консоль для управляемого приложения!!!

    Прикручу к ней парсер для разборки-сборки вложенных запросов и буду использовать.

    Reply
  48. anatoliy.kichuk

    Спасибо за отзыв!

    Reply
  49. blockcode

    К консоли прицепил пару кнопок «Разобрать» и «Собрать» для распарсивания сложных вложенных запросов.

    Действия кнопки «Разобрать»:

    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. Предоставляется возможность составления своих базовых скриптов как заменяемых блоков в запросе. Необходимо лишь отслеживать идентичность возвращаемых параметров.

    Reply
  50. Rudakov_D

    Почему у публикации Платформа: 1С:Бухгалтерский учет 7.7 ?

    Reply
  51. anatoliy.kichuk

    (50) Дмитрий, привет! Исправил.

    Reply
  52. candy_sk

    полезная вещь для каждого дня, сохраню на память.

    Reply
  53. yuraos

    (41)(42)(45)



    Возможный вариант решения проблемы:

    Считывать текст из файла с сохраненными запросами на стороне клиента

    и запоминать его в строковом реквизите формы неограниченной длины:

    ТекстОбъект = Новый ЧтениеТекста(ПутьКФайлуЗапросов);
    ДеревоЗапросовСтрокой = ТекстОбъект.Прочитать();
    
    Reply
  54. yuraos

    (53)

    затем вызвать серверную процедуру,

    восстанавливающую из строкового представления дерево значений:

    &НаСервере
    Процедура ЗагрузитьЗапросыИзСтроки()
    Попытка
    ЗначениеВДанныеФормы(ЗначениеИзСтрокиВнутр(ДеревоЗапросовСтрокой), ДеревоЗапросов);
    Исключение
    Сообщить(«Не соответствие формата исходного файла!», СтатусСообщения.Важное);
    КонецПопытки;
    Модифицированность = Ложь;
    КонецПроцедуры
    
    
    

    Показать

    Reply
  55. yuraos

    (54)

    аналогично поступаем при сохранении, но в обратном порядке.

    сначала вызываем серверную процедуру,

    записывающую в реквизит формы строковое представление дерева списка запросов:

    &НаСервере
    Процедура ДеревоЗапросовВСтроку()
    ДеревоЗапросовСтрокой = ЗначениеВСтрокуВнутр(ДанныеФормыВЗначение(ДеревоЗапросов, Тип(«ДеревоЗначений»)));
    КонецПроцедуры
    
    
    Reply
  56. yuraos

    (55)

    затем на клиенте записываем строковое значение

    из реквизита формы в файл с выбранным путем (доступным на стороне клиента):

    ТекстОбъект = Новый ЗаписьТекста(ПутьКФайлуЗапросов);
    ТекстОбъект.Записать(ДеревоЗапросовСтрокой ;
    
    
    Reply
  57. yuraos

    (53)

    Описанная выше метода

    (использование функций «ЗначениеВСтроку» вместо функций «ЗначениеВФайл«)

    проверена мной в режиме обычного приложения и прекрасно там работает.

    Причем запросы сохраненые «по старому» (функцией ЗначениеВФайл())

    прекрасно открываются «по новому«.




    судя по документации в управляемом приложении тоже должно работать.

    Reply
  58. McCoy77

    Отличная работа. Спасибо

    Reply
  59. anatoliy.kichuk

    Спасибо!

    Только yuraos прав — имеются недоработки для клиент-серверного варианта — руки до этого не доходят.

    Reply
  60. EastGuy

    Извините, но без клиент-серверного варианта «+» не поставлю — не серьезно.

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

    {Форма.Форма.Форма(330)}: Ошибка при вызове метода контекста (ПоместитьВоВременноеХранилище)

    ДеревоЗапросов.НайтиПоИдентификатору(ИдентификаторСтроки).ПараметрыЗапроса,

    по причине:

    Переданное значение не может быть помещено во временное хранилище

    Reply
  61. Светлый ум

    Пригодилось — так, как в большинстве консолей на управляемых формах — визуально корявый конструктор запросов (особенно в части соединений таблиц-дерево).

    А здесь все родное — и по старинке быстренько набросал нужные соединения

    Reply
  62. anatoliy.kichuk

    Может интереснее будет другая моя консоль: http://infostart.ru/public/619750/: работает в клиент серверном варианте.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *