Консоль скриптов 1С v3.1.
Применение:
-Написание и выполнение программного кода без захода в Конфигуратор.
Данная обработка выполняет код 1С в режиме работа 1С:Предприятие.
Для получения значений переменных после выполнения кода, их можно добавить в табло формул.
-Написание и выполнение программного кода без захода в Конфигуратор.
Работает на Толстом клиенте, не в управляемых формах. Время выполнения показывает только при выполнении на клиенте под Windows.
Спасибо всем, кто комментировал первую версию моей обработки. За сегодня по части замечания я подготовил исправления.
Версия 1.0(УФ)
Создана версия для Управляемых форм. Будьте внимательны — Обработки Версии 3.3 и Версии 1.0 (УФ) и файлы сохранения не совместимы.
Версия 3.3
Сохранение и восстановление изменений при открытии и закрытии обработки
Версия 3.2
Доработанная часть обработки запросов:
— автоматическое подставление типов значений параметров запросов
— удобное открытие значений результатов запросов
Версия 3.1
Теперь консоль скриптов совмещена с консолью скриптов
— Выполнение запросов в консоли
— Выполнение JavaScript в консоли
— Выполнение VBS в консоли
— Выполнение CMD в консоли
— Добавлено поле «Тип» — устанавливается тип модуля — Код 1С, Запрос 1С, VBS, JS, CMD. Рекомендую скачать сохраненный файл проверки работоспособности для версии 3.1 для ознакомления с возможностями.
— Удобное выполнения только необходимого части запроса ( можно выполнять подзапросы не создавая отдельных модулей). Для этого нужно — 1. Установить галку «Выполнять выделенный участок» (Действия -> Выполнять выделенный участок) 2. Выделить необходимую к выполнения часть запроса. 3. Нажать выполнить.
Версия 2.3
— Добавлена возможность сохранения и загрузки написанных файлов.
— Добавлена возможность использовать Возврат; (Не стабильная работа)
Версия 2.0
-Добавлено дерево модулей. Есть возможность добавлять/удалять неограниченное количество модулей, переходить между ними во время работы.
-Текст кода теперь с подсветкой кода 1С.
-Облегчилась возможность добавлять переменные в табло формул. Теперь добавить в табло можно выделив переменную мышкой, кликнуть правой кнопкой -> «Добавить в табло».
-Возможность выполнения выделенного кода модуля. Для этого необходимо включить в настройках возможности выполнения выделенных кусков кода (Верхнее меню: Настройка->Выполнять выделенный участок). После этого будет выполняться выделенный мышкой участок (если такой имеет) или же весь код (если выделенного участка нету).
-Вывод времени выполнения участка кода с разбиением до 0.01 сек.
(0) Вот, я бы подкорректировал этот текст в статье на месте автора:
Какая отладка в команде Выполнить()? Путаница небольшая получается в понятиях. Отладка — как технический процесс выполнения отладки кода и отладка — как «творческий» процесс исправления собственных косяков и уточнения алгоритмов.
Тут уж как «творческий» процесс исправления собственных косяков и уточнения алгоритмов.
(0) Этих консолей-выполнялок кода на сайте как грязи со времён 8.1.
Все довольно таки странно 🙂
(3) Поручик, ага, пойдешь лазить — не отмоешься!!!
Но тут покрайней мере некое табло формул имеется — и то оригинально.
😉
В общем автору плус — в качестве моральной поддержки.
(2)
млин!!!
а ну «отлаживай» текст статьи!
нативной процедурой «Вполнить()«.
а то морально демотивирую !!!
😉
(1)(2)
Вместо «Таблица отладки»
наверное более уместно в форме было бы написать «Табло формул».
—
Штатным таблом я довольно часто пользуюсь.
(6) yuraos, вспомнилось: фигуры бывают выпуклые и впуклые… )
(5) yuraos, спасибо, это мой дебют здесь. надеюсь дальше будет лучше)
(3) Поручик, а мне на глаза как-то не попадались, самому в голову в процессе работы пришла идея такую обработку сделать. И как я заметил достаточно удобная штука для определенных задач.
Интерпритатор замените, плииз, на Интерпретатор, глаза режет заголовок 🙁
Табла — это интересная идея, спасибо. Выполнялку себе давно сделала, но без каких-либо фишек.
Удобнее сделать тип значения колонки «Значение» составным — позволит просматривать найденные объекты.
(9)
могу подсказать хороший «отладчик» для текста статьи.
MS WORD называется.
🙂
Можешь сначала набивать текст в ворде, а
потом через буфер вставить его в содержание публикации.
там в командной панельке есть специальная кнопка
«Вставить из ворда» — специально для этого.
Можно еще навернуть синтактический контроль
консоли .
как в этой
Правда контроль бестолковый получается:
на любую ошибку пишет — «Ошибка компиляции модуля» — и больше ничаго…
🙁
(15)
Так уж устроеная эта самая
«нативная процедура Вполнить()»…
***
PS
К стати о причках …
что получится если в тексте модуля в консоли
написать такой такой простой код:
?????
(11) makfromkz, спасибо за замечание, обязательно исправлю в следующей версии
(15) yuraos, (13) catena, спасибо, буду исправляться и дополнять обработку
(16) yuraos
Ошибка компиляции кода
Если честно, не понимаю для чего может быть нужна данная обработка. Длинный код так не отладить (отсутствие синтаксис контроля, точек остановки и т.д.), результат выполнения небольшого кода — не сложно посчитать в голове. Лично меня не напрягает выполнить отладку кода (алгоритма) конфигуратором. Были бы еще какие-нибудь «фишки» — например замер времени исполнения, передача параметров, имхо, пользы от обработки было бы гораздо больше.
Еще можно добавить кнопку Добавить в табло (выделенный кусок кода) и попытку вычисления выражения. Есть где поиграться 🙂
(20) SkorikA,
Поддерживаю, Вас.
Решительно не могу понять практическую пользу данной обработки.
пользы то и нету, а вот 20 плюсов наплюсовали 🙂
В подсистеме «Инструменты разработчика» в консоли кода есть
— удобный синтакс контроль (показываются ошибки компиляции и выполнения прямо в тексте)
— опциональная генерация динамической внешней обработки по написанному коду и даже ее быстрое открытие в конфигураторе, что позволяет производить полноценную отладку конфигуратором написанного кода в виде внешней обработки с точками останова и всеми пряниками
— замер времени исполнения
— трасса техножурнала
— передача параметров при программном вызове, в т.ч. из точки останова в режиме отладки
— автозаполнение параметров с учетом их направления вход/выход
— сохранение и загрузка в/из элемент справочника или файл
— более умная контекстная подсказка, чем в конфигураторе
— более умный контекстный синтакс-помощник, чем в конфигураторе
— указание контекста выполнения кода клиент/сервер
— любые значения (таблицы значений и др. сложные объекты) параметров можно исследовать/редактировать
— автовосстановление сессии консоли после аварийного завершения
— удобная вставка ссылки на объект БД прямо в текст в виде внутреннего параметра
Поддерживает весь функционал кода 1С, то есть сам код выполняется нативной процедурой «Выполнить()».
В табло формул можно добавить переменные, которые использовались в вы
вполняемом коде.По нажатии кнопки «Выполнить» происходит выполнение кода и пересчет значений переменных.
И как только модераторы пропустили такое описание обработки ?
А «аФФтору» не помешало бы научиться пользоваться Word-ом, если не в состоянии сам проверить орфографию.
(25) nikolega, от чего столько негатива? все печатают выстро и многие не смотрят на текст, всякое бывает, но я никак не пишу «Отчетег» или «Документег»…
(26)
Не отрицаю, и специально для такого случая есть программы, проверяющие правильность написания текста.
Не бойся, а радуйся , когда тебя критикуют , — критика в семь раз полезней похвалы.
Но сам не упрекай и не критикуй , особенно бесплатно.
Я не критикую тебя, а подсказываю пути к самосовершенствованию.
Удачи в разработках)
(19) MarSeN,
как ты наверное догадался вопрос был риторическим…
🙂
А что должно быть на самом деле при выполнии такого фрагмента кода??
Почему нельзя внутри оператора Выполнить() использовать оператор Возврат ???
—
Правда это больше вопросы к Борису Нуралиеву…
;)))
(28)
к стати это ограничение приводит к заморочкам
при программировании кода фактически выполняемого в 1С оператором Выполнить().
К примеру такой фрагмент не канает:
Показать
(29)
приходится извращаться вот таким стилем написания кода:
Показать
Не знаю кому как …
но я бы предпочел первый вариант, если бы он работал.
(27) nikolega, Спасибо)
Поставьте метку Конец и тогда можно будет вместо Возврат использовать Перейти к метке.
(32) pumbaE, спасибо за идею.
хочешь сказать вот такой вариант пройдет:
Показать
???
(33)
Подтверждаю, что вариант рабочий!
Ну хоть так!!!
:)))
(33) yuraos, (32) pumbaE, супер идея. Такую штуку можно и в обработку включить, и делать через СтрЗаменить из Возврат переход по метке;
(7) yuraos, (21) catena, Спасибо за замечания, обработка была дополнена и выложена в новой версии (ссылка недействительна, так как выложил на этой странице) . С вашими замечаниями самому стало удобней работать.
(36) Новую версию можно было и в этой публикации выложить…
(37) KonstB, Спасибо, я не в курсе еще как сайт работает, буду знать
неплохо попробуем проверим отпишимся по факту, идея неплохая посмотрим реализацию
(30) yuraos,
можно так
Показать
(40) pm74,
конечно дело вкуса,
но вариант (32) pumbaE мне кажется более лаконичней.
PS:
—1—
к тому же
// ЛяЛяЛя1
и
// ЛяЛяЛя2
в примере это не просто комментарии, а некоторые потоки исполнения.
—2—
и не всега удобно (или даже возможно) выполнить все проверки вначале.
Что-же делать тем несчастным…
…кто до сих пор по каким-то причинам
«варится» под 1с-8.1 и
хотит воспользоваться этой чудо-консолью???
:)))
(16)
ииииище к стати о птичках
——-
что получится если в тексте модуля в консоли
написать такой … чуть менее простой код:
;)))
(43) yuraos, (42) yuraos,
Выполнить(«Выполнить(«»…»»)») — работает, только не надо забывать про двойные-двойные ковычки,
А вот под 8.1 никак, да и большинство перешло уже на 8.2 с конфигурацией запущенной с совместимостью 8.1
(44) Ну я надеюсь, если хоть кому-нибудь понадобиться под 8.1 эта обработка, то он напишет это в комментариях и я выложу версию под 8.1
(42)А в чем проблема? Я тоже под 8.1. Аааткрываем и копируем.
(44) ты не понял.
попробуй буквально набрать в своей консоли
вот этот код,
как тут написано:
🙂
(46) catena,
правила вежливого тона предполагают
предостовлять версии продукта для всех
используемых версий платформы
(в пределах совместимости),
а не предлагать делать даун-грэйд обработки.
Конечно в данном случае
(обработка можно сказать очень проста, если не примитивна)
СДАУНГРЭЙДИТЬ ЭТУ КОНСОЛЬ ОСОБЫХ ПРОБЛЕМ НЕ СОСТАВЛЯЕТ…
…но все же…
(48)Ну так в описании к публикации
Так-то по Вашей логике и клюшечную версию надо делать 😉
у tormozit и правда все поинтересней
(47) yuraos, Бесконечная рекурсия)
Спасибо, буду править, и выложу вместе с возможностью использовать слова «Возврат;», которую уже сделал. Как раз выложу для всех 8-ок
В консоли кода ИР кстати возврат возможен через «Перейти ~Конец;» (переход к предопределенной метке за последним оператором). Для быстрой вставки такого фрагмента кода в подменю Вставка есть команда «Возврат».
(51)
правильно!
Бесконечная рекурсия которая убивает 1С-ку.
***
Я смотрю ты сделал в консоли «ДеревоСкриптов»
наподобие дерева запросов из консоли запросов.
…
сделано на скорую руку,
там например нельзя сменить родителя у текущей строки
и выполнить скрипт при клике по строке
ну да ладно
…
Расмотрим ситуацию:
Нарисовал я много кода в разных строках ветвистого дерева
(блин! сохранить бы это добро — да ладно!)
и взял сдуру и решил в какой-то из строк выполнить следующий
достаточно простой код:
И что мы получим в итоге ?????
(53)
для большей эффектности
рекомендую насоздавать в дереве много строчек
ну и для полного кайфа дополнить
исполняемый код следующим образом:
😉
Так-то по Вашей логике и клюшечную версию надо делать 😉
(49) Катя, ты меня уважаешь ???
(55)
у нас в конторе главная база на 1с-8.1 вертится
…
и знаешь, не то чтобы мой начальник не хочет ее на 8.2 перевести,
но как толь-ко мы подумаем в какой это геммор может вылиться…
сразу появляются более приоритетные задачи
вроде переезда отдела с 8-го этажа на 5-тый
(52) tormozit, а я сделал СтрЗаменить(ТекстВыполнения, Символ.ПС + «Возврат;», МеткаНаКонец)
(57) Неплохое решение, но не будет правильно работать на собственном коде.
(58) tormozit, отчего же работать не будет? просто сначала надо сделать набор «СтрЗаменить»
СтрЗаменить(ТекстВыполенения, Символ.Тб(Не помню как табуляция будет, вроде так), » «(пробел));
СтрЗаменить(ТекстВыполенения,» «(два пробел), » «(один пробела)); — пока все двойные пробелы не уберутся,
СтрЗаменить(ТекстВыполнения, Символ.ПС + «Возврат;», Переход на конец);
СтрЗаменить(ТекстВыполнения, Символ.ПС + » Возврат;»,Переход на конец);
И Это уже описывает уже 99% случаев. Для любителей писать все в одну строчку можно сделать.
СтрЗаменить(ТекстВыполнения, «; Возврат;»,Переход на конец);
но тут уже не сделаешь Сообщить(«Выполняется код; Возврат;»)
(59) Да, согласен. Строго говоря конкретно эта строка кода не подвергнется нежелательному изменению. Однако этот 1%, о котором речь, мне в практике встречался не раз. Поэтому я не сторонник таких «легких» путей. К тому же после возврата может быть сколько угодно каких угодно символов, включая печатные, например «Возврат (23+23)
;». В общем я считаю, что лучше делать видимые преобразования, т.е. сделать кнопку для явной замены всех возвратов на «Перейти ~Конец», чем невидимые. Тогда пользователь хотя бы сможет быстро разобраться где консоль некорректно обрабатывает текст.
(60) tormozit,
полностью согласен.
задача усложняется еще возможностью
использования в коде вариаций с регистром символов,
например такой: ВОзврАТ;
вряд ли стоит городить свой парсер и изменять выполнямый код.
при неудачном изменении кода может быть получен совсем не тот результат,
который ожидается.
🙂
(47)(54)
собственно к чему я привел эти примеры кода ???
А к тому, что выполнение произвольного кода оператором Выполнить()
потенциально опасно для данных самой обработки.
как для пользовательских данных (в нашем случае самого набранного кода)
так и для системных данных (в нашем случае структуры таблиц формы консоли).
в примере (47) исполняемый код просто убивает сеанс 1С с потерей набранного кода.
в примере (54) получается более обидно:
теряем набранный код и имеем в результате нерабочую консоль.
(62)
tormozit в (24),
ну и мораль всей этой истории заключаеся в том,
ЧТО, как верно заметил
АКТУАЛЬНО
— автовосстановление сессии консоли после аварийного завершения
По поводу применения грязного контекста — очень распространенная ошибка при работе с методом Выполнить. В консоли кода ИР код выполняется в гораздо более изолированном контексте (общего модуля) с минимальными рисками выполнить незапланированные действия.
(63)
PS
при этом желательно,
чтобы при восстановлении работоспособности консоли
так же восстанавливались из какой-нибудь резервной
копии пользовательские данные (в нашем случае исполняемый код).
(64) tormozit,
несомненно в общем модуле можно обеспечить более безопасное выполнение кода.
как вариант — можно выполнять его и в контексте модуля объекта обработки.
что менее безопасно, но это делает обработку более универсальной,
Консоли запросов 1С + ADO «.
как это сделано в «
Так же в этой обработке реализовано восстановление пользовательских данных
из резервной копии во временном файле при аварийном завершении работы консоли.
Как уже написали, таких выполняльщиков очень много.
Сам грешу ими 🙂 половина «ленивых» обработок пишется в предприятии.
Из явных неудобностей таких реализаций:
-рекурсия (можно реализовать через замудрённый goto, есть размыЩления на форуме);
-отсутствие функций (можно реализовать через некое «табло методов» и глобальные переменные);
-отсутствие контекстных подсказок (левые приложения);
Тем не менее теститровать кусок кода или некую конструкцию очень удобно. 🙂
Совершенно ничего нового, хоть бы мою публикацию насчёт произвольных алгоритмов взять. Формульная механика тоже уже на ИС публиковалась. Не осознаю причниы такого количества плюсов за такой баян. Дерево алгоритмов худо-бедно даже в старом УПОб было. А уж что за «подсветка» кода — и вовсе не понимаю, достаточно нужное расширение указать. Или вы сделали всплывающие подсказки?
Или вот если б вы, автор, отладку или хоть «переход к определению» сделали, тогда да.
Переделывай на управляемые формы и отправляй в 1С
(69) Спасибо, но думаю в 1С и без меня обработок хватает. Сейчас работа. над версией 3.0, уже добавил возможность переключать режим между «консоль кода»/»Консоль запросов». То есть один или несколько отдельных модулей из дерева модулей можно делать запросами. Планах добавить возможность выполнения в обработке javascript(уже почти закончил), vbs или же dos command.
После этого уже приступлю и к работе в тонком клиенте/уф.
Так же хотел добавить возможность вызывать другие модули.
(70) интересно как Вы реализуете:
Переключатели? — это vbs, это javascript
или реально будете парсить написанный код и «понимать» что написано (вот это интересно…)
А переключатели — пфф..
Вот еще: Есть ли возможность получить какю нибудь «переменную» и вызвать другой код, передав «переменную» в него?
Наппример (Ваш скрин):
Выполняем текст из «ЗапросТоваров» результат которого дает нам ТЗ товаров (тзТоваров) и далее вызываем текст «Запрос контрагентов» у которого на входе будет (тзТоваров) (что-то типа Вызвать.ЗапросКонтрагентов(тзТоваров)).
Вопрос, для tormozit, а в Ваших «Инструменты Разработчика» это возможно (что-то давно ими не пользовался)?
А так по сути ничего нового, наверное каждый для себе писал нечто подобное…
(71) KonstB, здесь видимо справочник ирАлгоритмы и функции для выполнения кода из его элементов подходят
http://devtool1c.ucoz.ru/index/spravochnik_algoritmy/0-9 , тема форума по похожему вопросу http://devtool1c.ucoz.ru/forum/3-45-1#196
(72) tormozit, ага, то что доктор прописал 🙂 Спсаибо.
«Если что-то придумал — проверь, быть может это придумано до тебя»
(71) KonstB, Передача переменных пока не осуществлена, но я думаю о написании парсера, который сможет парсить нечто «Функция <Название модуля>(<структура параметров>)», сейчас подготавливаю процедуры с чем-то на подобие «регулярных выражений».
А тип модуля будет переключаться переключателем. Парсинг — хорошая идея, но все равно его надо оставить только как советчик или первое переключение, а решение все равно должен принимать пользователь. Уверен найдутся тысячи случаев когда определить тип кода будет не так уж и просто или даже невозможно (если брать в учет и js и vbs).
(73) В любом случае я делаю это «для себя», а если это кому-либо будет полезным, то почему бы и нет =) тем более в комментариях море полезных советов и замечаний =)
*задумчиво
Неужели подсистема настолько менее удобна, чем внешняя обработка, что моя, почти аналогичная, хренечка удостоилась 8 плюсов, а эта — ажно целых уже 46?
Автор, слабо задействовать команду «Выполнить» в com-соединении?
(76) Yashazz,
Я могу ответить почему мне удобней внещняя обработка — мне надо что-либо делать с конфигурацией, чтобы применить обработку. Я ее всегда смогу запустить и на чужих базах и там где закрыт доступ в конфигуратор
(77) Это очевидно. А все тексты алгоритмов, сохранённые в дереве, тоже будете туда-сюда таскать?
(78) Yashazz, дерево в файлик. В зависимости от задачи открываю нужный файлик и работаю.
Вот лично по мне, это не доставляет неудобства. Еще раз повторюсь, что обработку эту делаю так, как удобно мне самому, потому что сам ею пользуюсь. Лично мне намного удобней перекинуть файлик с текстами, чем думать каким образом уговорить заказчика добавить лишнюю подсистему в его базу.
(79) У tromozit-f есть комплект и без подсистемы:
http://infostart.ru/public/145611/
Мобильные «Инструменты Разработчика»
см.
А вообще не вижу смысла публиковать подобное.
У самого есть такая же поделка, да еще и в управляемом интерфейсе работает и на сервере может выполнять
и на клиенте.
Понятное дело, что при урезанных правах с сервером и вызовом из привелигированных модулей могут быть траблы из-за защищенного режима.
(80) Как видите, кому-то она оказалась полезной. Отчего ж тогда не стоит выкладывать?
Может блогодаря этой статье люди узнают о подсистеме tromozit-f и будут ей пользоваться, если именно эта не нравится.
Или я интернет захломляю? 😉
Вышла новая версия обработки.
Теперь есть возможность выполнять:
— Код 1С
— Запросы 1С
— JS
— VBS
— CMD
Обработка действительно стоящая. Автор продолжай её развивать, а на критику не обращай внимания. Спасибо!
Автору ОГРОМНОЕ спасибо. Пару раз спасала ОЧЕНЬ сильно. Развивайте проект, удачи!
Ставлю твердый ПЛЮС!
Отличная обработка, скиньте версию 3.3 а то баксов не хватает.
(86) Eugeneer, Подсветка синтаксиса в текущей версии 1С в УФ отсутствует. Тут ничего не поделать
Спасибо, очень хорошая вещь.
Да вещь приятная
где в уф 1.0
Теперь консоль скриптов совмещена с консолью скриптов
— Выполнение запросов в консоли
— Выполнение JavaScript в консоли
— Выполнение VBS в консоли
— Выполнение CMD в консоли
?