gifts2017

Запросник на управляемых формах

Опубликовал Алексей Белый (mrstomak) в раздел Программирование - Инструментарий

За основу взята оригинальная консоль запросов "Запросник" из публикации http://forum.infostart.ru/forum24/topic34484/ Так получилось, что лично я всегда с огромным удовольствием пользовался вышеупомянутым творением, таскал везде и всюду, ибо давала невероятные возможности. Вошел в какой-нибудь РАУЗ в УПП, или модуль расчета ЗУП с простынями запросов, отбирающихся из менеджера временных таблиц, запустил мега-обработку и сразу всё как на ладони. Сказать, что ощущал себя как Нео - это мало сказать, с таким инструментом чувствовал себя почти богом. Но вскоре случилось ужасное - начали выходить всякие УТ на УФ и возможности применения инструмента резко сузились. Да, можно было включать режим ОФ и что-то делать, но удобство летело к черту, жизнь становилась не такой прекрасной. Время шло, версии для УФ не появлялось. И тут автор обработки, глубоко уважаемый лично мною tezin, заявляет: я от дел отошел, если что исходники открыты, если энтузиаст найдётся для перевода на УФ - я не против. Ну и собственно - почему бы и нет? Вооружился энтузиазмом и забацал консольку.

Итак, что сделано:

- Дерево запросов

- Вывод результата в таблицу и дерево

- Параметры с установкой момента времени, границы, списков, таблицы значений

- Просмотр и отладка временных таблиц

- Версионирование запросов - при каждом выполнении оно запоминается, что там было

- Сохранение в файлы и всё такое

- Обход запроса с помощью настраиваемой выборки

- Конструктор в тонком клиенте при использовании 8.3.5

- Выполнение алгоритмов над результатом запроса

- Возможность отлаживать запрос, формируемый в консоли системы компоновки данных с диска ИТС

- Получение плана запроса, сформированного СУБД

- Получение текста запроса СУБД

- Отладка запроса в модуле

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

В далёкие и прекрасные времена, когда использовались ОФ, мы могли с чистой совестью открывать любые формы из отладчика, вызывать всё это модально и вообще играться как дети.

Эта прекрасная возможность и использовалась Запросником - пишем в модуле объекта функцию с открытием формы и установкой запроса и всё работает.

Суровая реальность УФ заставила поменять подход.

Мы теперь не открываем форму обработки с передачей запроса, но мы точно также специальной строкой в отладчике делаем "дамп" запроса со всеми параметрами и временными таблицами. "дамп" сохраняется в недрах сервера и ждёт, пока его кто-нибудь подберёт.

Подбирается он нажатием одной кнопки "Загрузить дамп" - всё, что завалялось из сохранённого для текущей конфигурации тут же подгружается в деревья запросов со всеми потрохами.

Таким образом, отладка происходитв 2 этапа - вычислить выражение в отладчике вида ВнешниеОбработки.Создать(путь,Ложь).Дамп(Запрос), после чего, можно отпустить исполнение кода дальше и нажать кнопку в обработке (обычный режим), или исполнение кода не отпускать и запустить обработку во втором сеансе (модальный режим).
Строка для вычисления выражения в отладчике доступна в обработке в окне "Отладка запроса в модуле", она генерируется с учетом серверного-файлового режима, в случае серверного файл передаётся на сервер во временную папку.
Проверено на клиент-серверном и файловом вариантах, платформа 8.2, 8.3

// update 2.0.3 08.08.2014
- Добавлена отладка запросов, генерируемых стандартной консолью СКД с ИТС

Решил не присобачивать сюда еще и консоль СКД, т.к. это всё-таки другой инструмент, но я сделал интеграцию между ними.
Как это работает: в Запроснике справа сверху есть подменю с командой "Получить запрос из схемы компоновки", после нажатия вам будет предложено указать, какое из открытых сейчас окон - консоль СКД. При выборе окна запросник выбирает из него схему, настройки, генерирует макет и добавляет получившийся запрос в дерево запросов со всеми параметрами.

// update 2.0.4 08.08.2014
- Добавлена совместимость с платформой 8.2

// update 2.0.5 08.08.2014
- Исправлена ошибка открытия списка версий запросов на платформе 8.3 и ошибка открытия конструктора запросов на 8.3.5
- Добавлена возможность перетаскивать мышкой структуру запроса и параметры в текст запроса при выполении алгоритма
- Добавлено отображение версии запросника в главном окне
// update 2.0.6 16.08.2014
- Исправлена ошибка при выполнении запроса второй раз с установленным флажком "Показывать служебные колонки результата"
- Исправлена ошибка при выполнении запросов, содержащих временные таблицы, когда первая попытка выполнения закончилась ошибкой из-за
неверного синтаксиса запроса
- Произведен рефакторинг участка работы с временными таблицами. Улучшена производительность в операциях сохранения значений ВТ
для последующего отображения.
- Исправлена ошибка сохранения дампа запроса, когда сразу за именем ВТ следовал символ ";"
// update 2.0.7 19.08.2014
Улучшения производительности:
- Несколько улучшена производительность вывода результатов запроса, содержащих большое количество строк
- Уменьшены задержки при навигации по дереву запросов, когда на форме содержиться очень большая таблица результатов запроса
- Произведен рефакторинг процесса работы с алгоритмами запроса. Результат теперь не переходит в другую форму, что
  значительно уменьшает время открытия формы работы с алгоритмами
// update 2.0.8 28.08.2014
- Исправлена ошибка в формируемой в файловой версии строки сохранения дампа - там не было кавычек к пути файла
- Добавлена возможность просматривать тексты запроса СУБД и план запроса СУБД

// update 2.0.9 03.09.2014
- Исправлена ошибка при формировании пакетного запроса в случае, когда включен режим получения плана запроса
- Добавлена совместимость с 8.2.16 и ниже, предположительно до 8.2.14
- Добавлена возможность формировать текст запроса для модуля
- Убрано сообщение об ошибке при открытии конструктора запросов в толстом клиенте
- Произведена некоторая оптимизация для получения плана запроса в клиент-серверном варианте

// update 2.0.10 13.09.2014
- Исправлены ошибки с параметрами дата, которые не содержали время
- Исправлена ошибка при работе с версиями запроса, после работы с которыми терялись параметр "список значений"
- Исправлена ошибка, из-за которой под платформой 8.2 не работало получение запроса из схемы СКД
- Добавлена возможность получать тексты запросов СУБД с представлениями полей 1С.
- Убраны ограничения интерактивного редактирования таблиц результата запроса
 

//update 2.0.11 18.09.2014
- Исправлен печальный баг, который загонял отладчик в бесконечный цикл при сохранении дампа запроса с >4 таблицами
- Исправлены ошибки, из-за которых некоторые ВТ не сохранялись в дамп
- Исправлена ошибка с параметром даты в составе границы
- Интерфейс в такси переведен на компактный режим
- Исправлена ошибка, когда ВТ могли задваиваться в форме, если вызывать их несколько раз с разным синтаксисом

//update 2.0.12 03.10.2014

- Улучшен парсинг запросов при получении дампа - временная таблица теперь корректно обнаруживается внутри вложенного запроса

//update 2.0.13 19.12.2014
- Для возможности нормальной отладки запросов ЗУП добавлено замещение значений NULL на неопределено во временных таблицах
- Исправлена ошибка при выполнении запроса, в котором ВТ используется несколько раз и написана в разном регистре
- Исправлена ситуация, когда иногда могли не отображаться отрицательные числа из-за бага платформы

//update 2.0.14 24.02.2015
- Реализована поддержка отладки сохраненных дампов временных таблиц, у которых есть колонки со значением "Тип"
(используется в ERP 2.0 в запросах на отражение документов в рег. учете)
- Изменен приоритет конструкторов запроса - если доступен конструктор для толстого клиента, то вызывается он.

//update 2.0.15 02.03.2015

- Исправлена ошибка в заполнении колонок таблицы значений-параметра, когда при отмене редактирования выполнялась проверка на тип колонки
- Значения полей типа "Тип" и "Момент времени" в результате запроса теперь отображают представление данных, а не просто строки "Тип" и "Момент времени"
- Реализована интерактивная работа с полями типа "Хранилище значений", "Результат запроса", "Двоичные данные"

//update 2.0.16 12.05.2015

- Добавлено выделение места в тексте запроса, в котором конструктор видит синтаксическую ошибку
- Добавлено предупреждение при попытке выхода из обработки с несохраненными изменениями
- Переработан процесс выбора типов в параметрах запроса и в списке значений с целью повышения удобства
- Исправлена ошибка при использовании команды "Удалить неиспользуемые параметры"
- Добавлена возможность удалять сохраненные версии запроса

 

//update 2.0.17 14.05.2015
- Добавлен новый выбор типа при настройке колонок таблицы значений
- Добавлен новый выбор типа при работе стандартной команды "Подбор" списка значений
- Исправлены некоторые ошибки с отсутствием модифицированности формы

//update 2.0.18 21.06.2016

- Доработки алгоритма формирования текста запроса (автоподстановка параметров)
- Исправлена ошибка в хоткее Ctrl+S

//update 2.0.19 07.07.2016
- Убраны хвосты раскраски кода из формы выполнения алгоритмов
 

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

Наименование Файл Версия Размер Кол. Скачив.
Запросник2_0_19
.epf 350,37Kb
07.07.16
1162
.epf 2.0.19 350,37Kb 1162 Скачать

См. также

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

Комментарии

1. Сергей Семченков (BigClock) 07.08.14 14:42
В Вашем Запроснике есть отладка СКД?
(как в проектах http://infostart.ru/public/179939/, http://infostart.ru/public/97962/)
2. Андрей Лещанов (Nuuq) 07.08.14 15:11
Без Запросника82 в УП как без рук.
Посещал сайт автора с надеждой - а вдруг уже появилось на 1с83 ;) ... но нет... печаль
И о чудо! Вот оно! Спасибо автор!
Желаю не сбавлять энтузиазма
3. Сергей Семченков (BigClock) 07.08.14 15:59
(2) Nuuq,
Согласен. В обычных формах только запросником и пользуюсь, очень удобно.
4. Алексей Белый (mrstomak) 08.08.14 00:22
(1) BigClock, Добавил интеграцию со стандартной консолью СКД с диска ИТС. Отдельной кнопкой выбираете из запросника окно консоли СКД и её запрос перекочёвывает со всеми потрохами в дерево запросов. Мне кажется это лучше, чем городить рядом ещё одну консоль СКД :).
5. Алексей Белый (mrstomak) 08.08.14 00:23
(2) Nuuq, Спасибо за пожелание, надеюсь вещь будет полезная :)
6. Сергей Лесовой (Synoecium) 08.08.14 04:50
А будет версия обработки под 8.2? Судя по коду используется не так много возможностей из 8.3, поэтому при небольших усилиях можно расширить аудиторию пользователей Запросника.
Обработка понравилась) минималистично и функционально.
7. Алексей Белый (mrstomak) 08.08.14 08:08
(6) из 8.3 там немодальные вызовы форм и работа с форматированным документом в одном месте... Ну вообще да, можно под 8.2 переточить, постараюсь этим заняться.
8. Сергей Семченков (BigClock) 08.08.14 09:39
Присоединяюсь к пожеланию добавить поддержку 8.2.
9. Алексей Белый (mrstomak) 08.08.14 11:00
Поддержка платформы 8.2 добавлена.
10. Сергей Лесовой (Synoecium) 08.08.14 12:43
Спасибо за добавление поддержки. Есть еще предложение по доработке, в окне выполнения произвольного алгоритма чтобы вставить в код обработки имя поля приходится жать кнопку "в буфер", затем вставлять в текст. это действие можно очень упростить если дать возможность таскать поля из таблицы "Структура результата запроса" прямо в текст обработчика.
11. Алексей Белый (mrstomak) 08.08.14 14:50
(10) Synoecium, согласен, в следующей версии добавлю, спасибо за идею!
12. {ÐƦǑƝȊ} mx (dour-dead) 09.08.14 11:29
13. {ÐƦǑƝȊ} mx (dour-dead) 09.08.14 11:36
Как пожелание, добавить возможность комментить код запроса

14. Алексей Белый (mrstomak) 09.08.14 16:24
(13) dour-dead, эта возможность сейчас есть в контекстном меню.
15. Юрий Гуреев (Gureev) 11.08.14 09:30
о, отлично! ) а я уж было хотел сам переписывать Тезинский запросник)
16. Max Gr. (max082) 11.08.14 12:39
Спасибо! :)
Написал небольшую обработку, демонстрирующую удобство работы через дамп.
Прикрепленные файлы:
DampSampleForZaprosnik2_0.epf
17. Игорь Дремов (Hitcher) 12.08.14 15:14
1С:Предприятие 8.3 (8.3.5.1098)
На странице "Временные таблицы" при попытке нажать на кнопку "Отладить" возникает ошибка

{Форма.ФормаУпр.Форма(1811)}: Значение не является значением объектного типа (ПолучитьЭлементы)
Для Каждого Поддерево Из ТекСтрока.ПолучитьЭлементы() Цикл
18. Игорь Дремов (Hitcher) 12.08.14 15:55
При нажатии на кнопку "Выполнить запрос"

{Форма.ФормаУпр.Форма(612)}: Ошибка при вызове метода контекста (ИзменитьРеквизиты)
ИзменитьРеквизиты(,МассивУдаляемыхКолонок);
по причине:
Недопустимый путь к реквизиту. Путь: "РезультатТаблицаИтогУровень"
19. Павел (Yimaida) 12.08.14 19:39
Автор взялся за хорошее дело, запросник очень нужный и полезный инструмент.
Обработку пока не качал, немного подожду. Но хотел бы озвучить баг, который только сегодня случайно обнаружил в запроснике на ОФ. При отладке запроса, в запрос был передан параметр с 4 знаками после запятой, а запросник его принял только с 3. Все дело было в ТипЗначения для колонки параметры. Предусмотрите, пожалуйста, такие случаи.
20. rasswet (rasswet) 13.08.14 08:01
видимо пока в процессе отлова багов находится, надо немного подождать.
21. Алек4сандр Ершов (sanja) 13.08.14 08:30
Я тоже всегда этим запросником пользовался, очень удобно временные таблицы раскладывает. Теперь можно и на управляемых. В старом была проблема в том, что не освобождал память, и после выполнения нескольких объемных запросов в консоли сервера отсвечиваешь первым по количеству захваченных данных.
22. Andrey Smirnov (dusha0020) 13.08.14 11:14
Спасибо автору - довольно удобная консоль. Есть предложение по усовершенствованию. Мне часто приходится оперировать довольно большими ТЗ в запросах. Получить их из стандартных объектов запросом невозможно - это результат работы над выборкой довольно сложных алгоритмов, которые в консоли запросов воспроизвести нельзя.
Вот с отладкой таких запросов я долго мучился в консоли пока не допилил одну из стандартных добавив возможность исполнять некий код перед запуском запроса. Допил довольно примитивный но перегрузкой промежуточных таблиц через файл мне удалось подтягивать в консоль для отладки произвольные данные.
Не хочу заморачивать своим решением - оно написано было на коленке и далеко не идеальное, но предлагаю автору подумать над повышением функциональности разработки в этом направлении.
Чтобы был понятен принцип вешаю скрин со своей консоли.
Прикрепленные файлы:
23. Александр Полтава (Патриот) 13.08.14 11:57
Может быть наивный вопрос, но всё же - "Почему разработчики конфигураций или даже платформы не пишут такие инструменты?". Или им, в отличие от нас, не приходится заниматься отладкой? Или они настолько круто знают 1С изнутри, что отладка происходит непосредственно в их мозгу? Или может они просто экономят человекочасы, выжидают, пока энтузиасты с Инфостарта выложат свой титанический труд, чтобы потом скачать за один стартмани =)))? Или наоборот у них есть более крутые наработки, но они не делятся ими с простыми смертными?
24. Сергей Буланкин (bulas) 13.08.14 14:22
Пользуюсь консолью: КонсольЗапросов_8.3.5.epf, в которой есть вызов "Конструктора запросов" из контекстного меню, но когда на закладке "Условия" использую вложенный запрос, то в контекстном меню отсутствует пункт "Конструктор запросов". В вашей КонсолиОбработке есть такая возможность?
25. EvgeniuXP EvgeniuXP (EvgeniuXP) 14.08.14 00:01
(23) они ждут, когда кто-нибудь подкинет новых идей :)
26. Алексей Белый (mrstomak) 15.08.14 21:58
(24) bulas, конструктор запросов разработан силами 1С и используется один и тот же что в той консоли, что в этой, так что не думаю что будет разница.
27. Алексей Белый (mrstomak) 15.08.14 22:01
(22) dusha0020, в запроснике есть возможность использовать произвольные выражения для установки параметров запроса. В окне параметров флажок "Это выражение" и в значении параметра набираете код. Это случайно не то, что вам надо?
28. Алексей Белый (mrstomak) 15.08.14 22:08
(17)(18) Hitcher, спасибо за багрепорты, завтра поднакачу исправление.
29. Алексей Белый (mrstomak) 15.08.14 22:19
(23) Патриот, я тоже задумывался над этим и считаю, что никаких вундервафельных обработок у них нет. Мне кажется, нет никакого смысла для 1С скрывать продвинутые инструменты отладки и не выкладывать их на ИТС. Другое дело, что отладка типовых у них проще происходит, так как есть база проектной документации и описание как и чего должно работать.
30. Алексей Белый (mrstomak) 15.08.14 22:22
(21) sanja, причина в том, что там захватывалось соединение с СУБД всегда из-за неосвобождаемого менеджера временных таблиц. Тут такого нет, ввиду концепции УФ.
31. Ololo Anonim (ololoanonim) 18.08.14 04:19
(29) Знакомые работают во френче 1С, и пользуются простой консолькой скачанной из просторов интернета :)
32. Andrey Smirnov (dusha0020) 18.08.14 11:18
(27) mrstomak, А ведь пробовал - получил ошибку:) Скорее всего буква попала не русская. Действительно работает! Теперь пользуюсь только Вашей консолью. Спасибо.
33. tezin Тезин (tezin) 18.08.14 14:56
34. Andrey Smirnov (dusha0020) 18.08.14 16:35
Все-таки есть проблема. В модуле формы ФормаУпр есть процедура ЗагрузитьФайлИзЗапросаНаСервере.
Все работало нормально до сегодняшнего дня, а а теперь ругается на последнюю строку процедуры
{Форма.ФормаУпр.Форма(1076)}: Ошибка при вызове метода контекста (ЗначениеВРеквизитФормы)
ЗначениеВРеквизитФормы(Дерево,"ДеревоЗапросов");
по причине:
Недопустимое значение параметра (параметр номер '2')

Строку я закомментировал и работаю дальше, но как-то не комильфо.
35. Алексей Белый (mrstomak) 18.08.14 18:27
(34) dusha0020, на 95% причина в том, что файл *.sel другого формата, например, из обычной формы запросника. Но вообще да, оберну это в попытку.
36. Сергей Чигирь (Kserken) 21.08.14 10:50
37. Алексей Роза (DoctorRoza) 27.08.14 15:31
До ИР, пользовался только запросником, сейчас только консолькой из Инструментов .. Но за разработку мегареспект! :)
VovkaPutin; +1 Ответить 1
38. Алексей Белый (mrstomak) 27.08.14 16:22
(37) DoctorRoza, спасибо! А ИР уже есть на УФ?
39. Алексей Белый (mrstomak) 28.08.14 15:38
Добавлена возможность получения текста запроса СУБД и плана запросов СУБД!
40. Maxim Kolkin (the1) 29.08.14 07:55
(38) mrstomak, давно. Но только на толстом клиенте
41. Алексей Белый (mrstomak) 29.08.14 08:10
(40) the1, так там же обычные формы используются при этом, разве нет? И в типовых это не заработает.
Я просто с этой подсистемой знаком только по презентации на инфостарте.
42. Венер Давлетгареев (soft-servis) 03.09.14 12:50
1. В толстом клиенте(8.3.4.465) при нажатии кнопки "Конструктор" появляется ошибка "Метод объекта не обнаружен(Показать)";
2. Если в запросе есть временная таблица, то план запроса не формируется, возникает ошибка;
3. Нет кнопки "Скопировать текст для модуля...".
Можно узнать когда будут исправлены эти ошибки? И будет ли у нас возможность получить исправленную обработку бесплатно?
43. Алексей Белый (mrstomak) 03.09.14 15:47
(42) soft-servis,
п. 1 не мешает открытию конструктора, просто сообщение о том, что немодально открыть не получилось, уберу если напрягает так.

п. 2 ошибка с планом запроса уже исправлена в грядущей версии 2.0.9

п. 3 думал делать или нет, раз кому-то надо то сделаю, тоже будет в следующей версии.

Повторное скачивание, если не ошибаюсь, бесплатно в течение суток. Могу на мыло выслать.

44. Венер Давлетгареев (soft-servis) 04.09.14 06:48
Спасибо, ждем следующую версию. Пришлите, пожалуйста, обработку с исправленным п. 3 на наш e-mail.
45. Алексей Белый (mrstomak) 04.09.14 09:51
(44) soft-servis, мне не виден ваш e-mail
46. Венер Давлетгареев (soft-servis) 04.09.14 09:59
Спасибо!
но мы обнаружили еще пару ошибок(((:
1. В параметрах запроса если указать значение параметра список значений, то при добавлении в этот список значений, он не определяет тип значения;
2. Не критичное, так для справки)), при выполнении "удалить символы модуля" в тексте запроса, если имеются строчные значения, т.е. имеются кавычки, то он их не отрабатывает, а если строчное значение указано у последнего условия, то он удаляет все кавычки с последней.
47. Алексей Белый (mrstomak) 04.09.14 12:40
(46) soft-servis,
1. В списках значений учитывается тип. При открытии окна выбора типа в списке, он позиционируется на типе, который используется в запросе.
2. Спасибо, посмотрю-поправлю!
48. Сергей Борисов (juntatalor) 05.09.14 16:14
Скажите, а это нормально, что при встраивании в конфигурацию появляется ошибка (при простом открытии все работает):

{Обработка.Запросник2_0.МодульОбъекта(197,64)}: Переменная не определена (ИспользуемоеИмяФайла)
ОбработкаВОЛЕ = мТекущееПодключение.ВнешниеОбработки.Создать(<<?>>ИспользуемоеИмяФайла); (Проверка: Сервер)
49. Алексей Белый (mrstomak) 05.09.14 16:29
(48) juntatalor, О, ничего себе. Это хвосты от того, что я дописывал для обычного запросника - открытие запроса из модуля в другом сеансе. Можете комментировать эту строку смело, она нигде не используется. Ошибка возникает, т.к. у встроенной обработки нет свойства ИспользуемоеИмяФайла. Кстати, в режиме встроенной обработки не будет работать получение планов запросов в клиент-серверном варианте, там фильтр в ЖР мешает. В следующих релизах поправлю.
50. Алек4сандр Ершов (sanja) 16.09.14 10:30
Не создается новый файл списка запросов по кнопке "Новый файл".
51. Алексей Белый (mrstomak) 16.09.14 10:51
(50) sanja, исправлено, будет в следующей версии.
52. Алексей Роза (DoctorRoza) 16.09.14 16:24
(41) mrstomak, рекомендую попробовать ИР! Час на разбор, ну хотя бы команды От() (на нее уйдет 15-20 мин, не более) и Вы сразу же будете использовать только Инструменты. :)
VovkaPutin; +1 Ответить 1
53. Алексей Белый (mrstomak) 16.09.14 16:27
(52) DoctorRoza, не очень понял про разбор команды От, но ИР написаны на ОФ, а это не то, что мне нужно.
54. Sirruf (Sirruf) 17.09.14 09:40
Обработка хорошая, но интерфейс глючит(
55. Алексей Белый (mrstomak) 17.09.14 09:44
(54) Sirruf, подробнее расскажи?
56. Sirruf (Sirruf) 17.09.14 09:52
(55) mrstomak, не все элементы помещаются на экран, появляется полоса прокрутки http://joxi.ru/liEZVP3JTJBta2UKwHY
57. Алексей Белый (mrstomak) 17.09.14 09:57
(56) Sirruf, я это уже исправил путем выставления компактного режима для такси, когда выложу следующий релиз будет нормально. А так может просто сам для ФормаУпр выставить компактность.
58. Sirruf (Sirruf) 17.09.14 10:00
(57) mrstomak, Спасибо, да, так лучше :)
59. Сергей Старых (tormozit) 18.09.14 10:00
(41) mrstomak, По поводу "в типовых это не работает" можешь пояснить? Ну и заодно зачем тебе консоль запросов именно на управляемых формах?
60. Алексей Белый (mrstomak) 18.09.14 10:36
(59) tormozit, без проблем.
"В итиповых не работает":
1. Типовые конфы не имеют включенного флага по отображению обычных форм.
"Зачем мне консоль на управляемых формах":
2. Мобильные инструменты не позволяют вызывать выполнение кода на сервере. Это значит, что выполнение алгоритмов над результатом запросов ограничено, т.к. при записи могут быть обращения к общим модулям и подписки, вызывающие передачу мутабельных значений - это просто заколебавшее меня явление, которое постоянно возникает в клиент-серверных базах на УФ при попытке что-то серьёзное делать алгоритмами из клиента. Алгоритм же, выполняющийся в консоли для управляемых форм будет работать без всех этих проблем.
3. Насколько я понимаю, "Отложенная отладка" там тоже недоступна при мобильном варианте. Мне принципиально важно иметь возможность в любой конфигурации, которая мне в работе встретится, моментально вызвать отладку запроса, вызовом одной строки из отладчика и без вмешательств в конфигурацию. Т.к. уф позволяют внешним обработкам как угодно лазить на сервер, у меня есть возможность использовать такую отладку в любых условиях - и в файловом, и в серверном на разных машинах, и проблемы начинаются только тогда, когда несколько серверов в кластере или когда ограничен доступ к файловой системе.

Почему не подходят немобильные ИР:
Мне часто приходится анализировать базы, которые я не могу менять. Я подключаюсь, в базе есть проблема, мне нужно найти и исправить. Необходим именно мобильный инструмент.

Для тех, кто работает с известным списком баз, вероятно, ИР просто незаменимая вещь.
61. Алексей Белый (mrstomak) 18.09.14 10:38
(59) tormozit, ну и эта, ERP 2.0 уже марширует, инструменты для УФ нужно развивать.
62. Сергей Старых (tormozit) 18.09.14 15:38
(60)
"Типовые конфы не имеют включенного флага по отображению обычных форм"
Ну тут вроде бы давно уже описано, как запустить обычное приложение для любой конфигурации.

Действительно типовые конфигурации (особенно с БСП) содержат ошибки (передачи мутабельных значений и подключения подписок), обычно мешающие записи объектов на клиенте. Я пытался доказать разработчикам БСП, что их следует исправлять, но пока все ограничилось публикацией рекомендаций в ИТС о поддержке толстого клиента. Для обхода проблемы с записью на клиенте во всех обработках я сделал опцию "Запись на сервере", доступную пока только в варианте подсистемы.
Интерактивная отладка (вызов инструмента из отладчика) же на сервере в принципе невозможна прикладными средствами. Тут встройка подсистемы дает огромное удобство в виде отложенной отладки. Отложенную отладку (сохранение объекта на сервере) в принципе конечно можно делать и в файл, но достаточно удобного и универсального способа с файлом я пока не придумал. Возможно у тебя есть идеи на этот счет? Выполнение записи объекта в коде алгоритма действительно сейчас не обустроено для поддержки опции "Запись на сервере". Это я попробую исправить. Но если придется вызывать какой то прикладной метод, внутри которого будет такая ошибка, то тут конечно только перенос выполнения на сервер поможет.

В итоге записал задачи, конечно лишь частично решающие обозначенные проблемы
1. В подсистеме в произвольном алгоритме добавить поддержку перенаправления записи на сервер.
2. В мобильных инструментах реализовать отложенную отладку.
63. Алексей Белый (mrstomak) 18.09.14 16:11
(62) tormozit,
Собственно, моя идея на счет отложенной отладки на сервере через файл как раз и воплощена в текущей обработке. Причем её можно и не отложенно вызывать - без проблем получается держать на брекпоинте строку с запросом и отлаживать его в другом сеансе.
Принцип работы - в каталоге временных файлов сервера создаются файлы, содержащие в себе структуру запроса и сохранённые значения ВТ, которые создаются не в самом запросе, а значит, потребуются для его выполнения.
Для отделения предметов отладки разных конфигураций в файл также пишется строка соединения ИБ.

Так как внешняя обработка может залезть на сервер только в УФ, этот способ невозможен для обычного приложения.

Работает и под Linux, и под Windows, проблемы есть только при запрете в кластере работы с файловой подсистемой и при разнесенных физических серверах в рамках 1 кластера (не факт, что файл найдётся при следующем вызове, поэтому не всегда будет работать).

Но у файла есть и преимущество перед объектом базы - он пишется вне транзакций. Это значит, что откат транзакции в запросе не убьёт сохранённые данные для отладки. Допускаю, что у вас для этого запись объекта отладки производится в фоновом задании на сервере?...
64. Сергей Старых (tormozit) 18.09.14 16:31
(63) mrstomak,
Допускаю, что у вас для этого запись объекта отладки производится в фоновом задании на сервере?

Конечно. Поэтому с транзакциями проблем нет. Считаю, что у объектов в базе бесспорно больше преимуществ (при условии что подсистема уже встроена =).

Я все же попробую сделать отложенную отладку в мобильных ИР.
65. Сергей Старых (tormozit) 23.09.14 02:17
Реализовал в мобильных ИР 3.14.2 отложенную отладку для всех не тонких контекстов и всех режимов запуска http://www.youtube.com/watch?v=hiw_aYVOvFc&feature=youtu.be
66. Алексей Белый (mrstomak) 23.09.14 08:09
(65) tormozit, желательно еще передавать как-либо файл обработки на сервер, не всегда есть общий доступный ресурс. Например, разработать УФ у ИР, которая будет формировать строку отладки и перемещать файл, а саму отладку уже в ОФ.
67. Эдуард Зелинский (VasMart) 07.10.14 15:49
Спасибо за инструмент.
Для команды ОткрытьФайл определено сочетание ctrl+s - дублируется с СохранитьФайл.

PS update 2.0.12 03.10.2014 и ранее
68. Алексей Белый (mrstomak) 07.10.14 18:07
(67) VasMart, спасибо за ошибку, поправлю
69. Сергей Галюк (dj_serega) 28.10.14 10:16
1.
Ошибка вот такая при получении плана запроса:

{Форма.ФормаУпр.Форма(2480)}: Ошибка при вызове метода контекста (ПолучитьИзВременногоХранилища)
СтруктураБД = ПолучитьИзВременногоХранилища(АдресХранилища);
по причине:
Недопустимое значение параметра (параметр номер '1')

Вот что там находится:

АдресХранилища "" Строка


Может стоит добавить проверку на "ЭтоВременноеХранилище"?
70. Сергей Галюк (dj_serega) 28.10.14 10:18
2. Сделать бы перед закрытием вопрос о закрытии.
71. Сергей Галюк (dj_serega) 28.10.14 10:19
3. Еще одна ошибка:
{Форма.ФормаУпр.Форма(2026,11)}: Процедура или функция с указанным именем уже определена (Отладить)
Процедура <<?>>Отладить(Команда) (Проверка: Толстый клиент (обычное приложение))
72. Сергей Галюк (dj_serega) 28.10.14 10:25
4. Еще бы кнопочки для отображения/скрытия панелей (Текста запроса и результата).

Если что могу доработанный под себя запросник скинуть в ЛС. Обновишь потом (если захочешь).
73. Алексей Белый (mrstomak) 28.10.14 13:24
(69) dj_serega, ошибка при получении плана связана с тем, что в хранилище не помещалась структура базы. Она помещается при первом нажатии галочки "включить получение плана запроса". В стандартном запроснике нельзя включить режим получения плана запроса каким-то другим способом, поэтому никаких проверок не делается. Кеширование структуры бд необходимо для ускорения парсинга запроса СУБД. Скорее всего, ты вывел реквизит "включеноПолучениеПлановЗапроса" на форму или используешь возможность сохранения его значения.

Проверка синтаксиса у меня проходит нормально в режиме обычного приложения, не понимаю, откуда у тебя эта ошибка.

Кнопочки открытия/скрытия и вопрос о закрытии добавлю в будущих версиях, спасибо за комментарий
74. Сергей Галюк (dj_serega) 29.10.14 16:25
(73) mrstomak,
Проверка синтаксиса у меня проходит нормально в режиме обычного приложения, не понимаю, откуда у тебя эта ошибка.

Ну конфигурации то разные. У моей уже ставшей самопиской вот такая беда.
Я себе то поправил. Но поделиться бы хотелось.

Кнопочки открытия/скрытия и вопрос о закрытии добавлю в будущих версиях, спасибо за комментарий

Я уже себе добавил :)

И еще:
Я там еще поправил "СЗ" в параметрах и еще что-то. Так что кидаю ЛС.
Код комментировал. Но изменения в элементах формы. Надеюсь как-то увидишь где менял :)

з.ы.: жди ЛС :)
75. Михаил Журавлев (Gmix) 03.11.14 16:25
Спасибо. Отличная разработка как на обычных формах так и на УФ.
76. Сергей К (i.c.h) 17.11.14 13:42
А как скачать версию 2.0.12 03.10.2014? При скачивании файла в комментарии написано версия от 08.08.2014 и основная форма отличается от картинки к публикации. Интересует дамп запросов
77. Алексей Белый (mrstomak) 18.11.14 15:33
(76) i.c.h, версия написана в заголовке окна, по ссылке последняя качается.
78. Сергей К (i.c.h) 19.11.14 11:28
(77) mrstomak, ни знаю-ни знаю, скачайте сами. проверьте
79. Алексей Белый (mrstomak) 20.11.14 09:48
(78) i.c.h, в комментарии не написана актуальная версия, она есть в заголовке и в истории изменений
80. rasswet (rasswet) 09.12.14 12:02
при попытке нажать на кнопку "конструктор" валится в ошибку "Неизвестное имя формы. Имя "ExternalDataProccessor.QueryWizard.Form"
на платформе 8.3.5.1186
на 8.3.5.1231 такой проблемы нет. Это к сведению.
81. Максим Гр. (MGraf) 12.12.14 08:04
(80) rasswet, Перешли с 8.3.4 сразу на 8.3.5.1231, вылазит такая же ошибка:

"Неизвестное имя формы. Имя "ExternalDataProccessor.QueryWizard.Form"
82. Алексей Белый (mrstomak) 12.12.14 11:31
Коллеги. У кого такая ошибка, пробуйте чистить кеш - судя по тексту, она явно связана не с обработкой, а с методом Показать() конструктора в платформе.
Возможно, добавление параметра /ClearCache в параметры запуска сможет помочь.
Я не могу воспроизвести данную ошибку ни на одной платформе.
83. Роман Хусяинов (rom-x) 29.01.15 16:43
(81) MGraf, (82) mrstomak, тоже самое на платформе 8.3.5.1248. Конфигурация Бухгалтерия 3.0 (3.0.36.21)
84. Сергей Пономарёв (izidakg) 11.02.15 01:44
очень пригодилась. удобно и быстро все
пока из неудобств наткнулся только на 1 момент
если условие длинное, например:
НЕ ПриходныйКассовыйОрдер.Ссылка В
					(ВЫБРАТЬ
						ПриходныйКассовыйОрдерДополнительныеРеквизиты.Ссылка
					ИЗ
						Документ.ПриходныйКассовыйОрдер.ДополнительныеРеквизиты КАК ПриходныйКассовыйОрдерДополнительныеРеквизиты
					ГДЕ
						ПриходныйКассовыйОрдерДополнительныеРеквизиты.Ссылка.Дата >= &ДатаНач
						И ПриходныйКассовыйОрдерДополнительныеРеквизиты.Ссылка.Дата <= &ДатаКон
						И ПриходныйКассовыйОрдерДополнительныеРеквизиты.Свойство = &ОтборСвойство)
...Показать Скрыть


при первом заполнении все хорошо, но если потом требуется изменить что угодно в этом условии, все отображается в одну строку с символом перевода строки и изменить условие можно убрав его и кучу пробелов
Прикрепленные файлы:
worker1c; +1 Ответить
85. Сергей Галюк (dj_serega) 27.02.15 12:51
Нашел неприятную фичу в форме ФормаТаблицыЗначенийУпр.
Если на заполнено имя колонки и перешел на тип то ругается что не заполнено и не дает отменить ввод строки.

Добавил проверку на отмену редактирования.
Если Не ОтменаРедактирования И (ПустаяСтрока(ТекДанные.ИмяКолонки) ИЛИ ТекДанные.ТипЗначения = Новый ОписаниеТипов) Тогда
86. Игорь Пашутин (Alien_job) 04.03.15 11:09
Если конфа своя можно еще такой бантик прикрутить чтобы отлаживать не сохраняя модуль:

//В общем модуле "отладка"
Функция СоздатьДампЗапроса(Запрос) Экспорт
	
	Попытка
		ВнешниеОбработки.Создать("E:\ITS\is\Запросник2_0.epf",Ложь).Дамп(Запрос);
		Возврат Истина;
	Исключение
		Возврат ОписаниеОшибки();
	КонецПопытки;
	
КонецФункции

//В табло на точке останова
отладка.СоздатьДампЗапроса(Запрос)
...Показать Скрыть
87. Алексей Белый (mrstomak) 04.03.15 11:20
Не понимаю, что сейчас мешает отлаживать не сохраняя модуль?
88. Игорь Пашутин (Alien_job) 11.03.15 10:20
(87) mrstomak, вот влез я в дебри какого-нибудь ПФР, а там запрос и хочу его дамп. Можно написать в модуле строчку "ВнешниеОбработки.создать().Дамп(Запрос)", сохранить обработку/конфигурацию, перепустить обработку/предприятие, вновь пройти отладкой проблемный участок и получить дамп (потом не забыть почистить и пересохранить). А можно сразу написать в табло "отладка.СоздатьДампЗапроса(Запрос)" и в отдельном сеансе сразу смотреть запрос.
89. Алексей Белый (mrstomak) 11.03.15 14:08
(88)
Странный ты.
Сразу пишешь ВнешниеОбработки.создать().Дамп(Запрос) в табло и смотришь.
Все написано как раз так, чтобы вставлять текст в код не нужно было.
90. Игорь Пашутин (Alien_job) 11.03.15 15:01
(89) mrstomak, ок. Мне не пришло в голову что это может сработать.
91. Андрей Киреев (FractonKireyev) 24.03.15 15:27
ВНИМАНИЕ!!! ОШИБКА!!!

Ядро 8.3.5.1482.
Интерфейс Такси.
В разделе "Совместимость" для "Режим использования синхронных вызовов расширений и внешних компонент" установлено "Не использовать".

При выполнении запроса получаю ошибку:
{Форма.ФормаУпр.Форма(280)}: Ошибка при вызове метода контекста (КаталогВременныхФайлов)
Файл = Новый Файл(КаталогВременныхФайлов()+"ZaprTemp.Sel");
по причине:
Использование синхронных методов на клиенте запрещено!


Дело в том, что в этом режиме совместимости вместо КаталогВременныхФайлов() надо использовать НачатьПолучениеКаталогаВременныхФайлов(<ОписаниеОповещения>) - это написано в справке.
Только в этой форме функция КаталогВременныхФайлов() вызывается 7 раз.
92. Алексей Белый (mrstomak) 24.03.15 15:48
(91) Катастрофа, как теперь жить!!!
stas1kbob; tormozit; +2 Ответить 1
93. Андрей Киреев (FractonKireyev) 31.03.15 22:32
(92) mrstomak,
Ну зачем-же так нервничать...
Достаточно просто исправить не сложную (в общем-то) ошибку...
94. Алексей Белый (mrstomak) 03.04.15 14:18
(93) Не могу с собой ничего поделать - днями и ночами думаю о написанной капслоком проблеме.

Ну вообще по теме:
1. Переписывание вызовов компоненты работы с файлами на асинхронные затронет не только "ПолучитьВременныйКаталог..", а вообще всё, что связано с файлами.
2. Переписывание вызовов на асинхронные "в общем-то несложно" при нулевом стеке вызовов. Когда у тебя функция на глубине 3 стеков лежит, то добавление там асинхронности подразумевает переписывание вообще нафиг всего и добавление 100500 дополнительных параметров для формирование правильного контекста продолжения работы.
3. Асинхронные вызовы компонент добавились только в релизе платформы 8.3.5.13хх, т.е. совместимость с 8.2 или 8.3.4 или старыми 8.3.5 летит к чёрту - это уже невозможно реализовать в рамках одной формы, нужно либо разные формы для разных релизов, либо разные обработки.
4. Включение упомянутого режима в конфигурации имеет смысл при её ориентированности на Chrome. Да и даже там запрещать синхронные компонентные вызовы имеет смысл только для контроля и симуляции "режима веб-клиента" в тонком клиенте 1С, который сам по себе работает в окружении операционной системы, а не ограничен средой javascript в браузере, и его никто никогда не будет вынуждать использовать асинхронные вызовы.

Вывод: доработка поддержки подобного режима на данный момент нецелесообразна.
95. Андрей Киреев (FractonKireyev) 12.05.15 13:11
Несколько ошибок и проблем в запроснике:

1. Если запрос в области редактирования запроса написан с ошибками, то при нажатии на кнопку "Конструктор" ничего не происходит (а очень хочется увидеть описание ошибки), а при нажатии на кнопку "Выполнить" выползает стандартное окошко о программной ошибке с предложением закрыть программу (такого тоже нельзя допускать - ошибка-то не в программе, а в запросе, и случайное закрытие программы может привести к большим потерям времени работы). А запросы бывают очень большие, и искать проблему глазами зачастую достаточно накладно.
Пример запроса с ошибкой:
Выбрать Номенклатура1.Ссылка
Из Справочник.Номенклатура КАК Номенклатура


2. Работаю в запроснике, что-то делаю, потом нажимаю на кнопку "Закрыть". При этом обработка просто закрывается, не выдавая никаких предупреждений и вопросов. А очень хочется увидеть вопрос типа "Сохранить изменения?". При чём независимо от того, сохранял я раньше результаты своей работы в файл или нет. Иначе можно случайно потерять достаточно большой объём работы.

3. В запросе есть условие:
Справочник1.СтатусВерсии В(&СтатусВерсии)
. При этом тип этого реквизита - перечисление. При попытке выбрать список значений с нужными значениями перечисления (в окне редактирования параметров кнопка "СЗ") ничего не получается - в этом списке нет перечислений.

4. При выборе типа параметра (в окне редактирования параметров при нажатии на кнопку "СЗ" или при определении типа колонки при нажатии на кнопку "ТЗ") идет список возможных типов без указания принадлежности типа к ветке конфигурации (справочник, документ, перечисление, ПВХ, и т.д.). Это очень не удобно, и чем больше конфигурация, тем неудобство больше. Во-первых, не всегда понятно где я сейчас нахожусь (в больших конфигурациях длина списка справочников занимает несколько экранов, то-же самое относится и к спискам документов, спискам регистров и т.д.); а во-вторых, не редкость одинаковые названия для справочников, документов, регистров, перечислений (когда одно имя элемента метаданных встречается в разных ветках). Поэтому ветку конфигурации надо как-то обозначать (или выводить пиктограмку, или писать "Справочник.Номенклатура", "Перечисление.ВидПрихода", или то и другое вместе).

5. В списке редактирования параметров кнопка "Удалить неиспользуемые" ведёт себя непредсказуемым образом - удаляет параметры каким-то случайным образом.

6. У меня идёт длительная работа по разработке запроса. Запрос пишется не весь сразу, а пишется и отлаживается по частям (меняется текст запроса, меняется список и значения параметров). При этом каждое действие накапливается в истории. При этом собственно история становится совершенно бесполезной из-за её большого размера. Очень хочется её почистить (или всю целиком, или оставить из всей истории несколько пунктов, при чём не обязательно последних). Но такой возможности нет. А для удобства работы очень хочется.
96. Алексей Белый (mrstomak) 13.05.15 03:10
(95) FractonKireyev, за замечания спасибо, в обновленной версии всё учтено
97. Андрей Киреев (FractonKireyev) 13.05.15 17:06
(96) mrstomak,

Не по всем пунктам всё нормально.

2. По поводу сохранения.
2.1. Открываю запросник, при этом автоматически открывается файл со списком запросов. Делаю какие-то действия (меняю существующий запрос, создаю новый запрос или удаляю существующий - действия любые, не важно какие но приводящие к появлению признака модифицированности данных), выполняю. Закрываю обработку, она закрывается без вопросов. Открываю повторно - изменений нет. Выполнение запроса сбрасывает пометку модифицированности данных.
2.2. Открываю запросник, при этом автоматически открывается файл со списком запросов и историей выполнения. Удаляю некоторые пункты истории. Закрываю. Закрывается без вопросов, при повторном открытии все удалённые пункты истории на месте.
2.3. Действия в списке параметров (добавление, удаление, изменение значения) не приводят к установке признака модифицированности (поменял что-то в параметрах, нажал на закрытие - всё закрылось без вопросов).

4. По поводу выбора типов.
4.1. Для списка значений при нажатии на кнопку "Добавить" - нормально.
4.2. Для списка значений при нажатии на кнопку "Подобрать" ничего не изменилось (всё тот-же бесконечный список без отметки о принадлежности к ветке дерева метаданных).
4.3. Для таблицы значений при определении типа значения для колонки таблицы ничего не изменилось. Такой-же бесконечный список без отметки о принадлежности к ветке дерева метаданных.

6. В том варианте, как сейчас сделан сервис с историей, множественное выделение в таблице со списком истории сбивает с толку. Здесь надо делать выделение только одной строки.

И попутно попалась ещё одна проблема (вроде и не ошибка, но как-то и не правильно):
Работаю с запросом, сохраняю запрос в файл, для одного из реквизитов (участвует в параметрах) в конфигураторе меняю тип данных (изменяю составной тип данных - добавляю несколько справочников), открываю запрос и в параметрах прежний список справочников. Что-бы обновился тип этого параметра - надо удалить параметр (кнопкой Del) и нажать на кнопку "Из запроса".
98. Андрей Антонов (DJRelax) 14.05.15 05:48
Очень не правильно сделано создание нового списка запросов. Если в обработке выбран файл с запросами и нажать на кнопку новый список, то происходит затирание ранее выбранного списка, это очень не гуд. Я уже такими действиями потерял огромную базу своих запросов!!!
99. Алексей Белый (mrstomak) 14.05.15 16:27
(97) FractonKireyev, учел замечания
(98) DJRelax, а как ты предлагаешь? Делать еще вкладки и на них хранить разные списки? Нафиг это не надо.
При создании нового списка он не затирает сохраненный файл с огромной базой запросов, можно его легко загрузить.
Кроме того, перед выполнением запроса выполняется принудительное сохранение во временный файл - на всякий случай (видно в команде "..." в файловом меню).
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа