Написание и выполнение кода 1С в Режиме 1С:Предприятие (консоль скриптов)
Консоль скриптов 1С v3.1. Применение: -Написание и выполнение программного кода без захода в Конфигуратор. Данная обработка выполняет код 1С в режиме работа 1С:Предприятие. Для получения значений переменных после выполнения кода, их можно добавить в табло формул.
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
(3) Поручик, ага, пойдешь лазить - не отмоешься.
Но тут покрайней мере некое табло формул имеется - и то оригинально. ;)
В общем автору плус - в качестве моральной поддержки.
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
(9) могу подсказать хороший "отладчик" для текста статьи. MS WORD называется. :)
Можешь сначала набивать текст в ворде, а потом через буфер вставить его в содержание публикации. там в командной панельке есть специальная кнопка "Вставить из ворда" - специально для этого.
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
(29) приходится извращаться вот таким стилем написания кода:
Не знаю кому как . но я бы предпочел первый вариант, если бы он работал.
- Скопировать ссылку
- Перейти
(30) yuraos, можно так
- Скопировать ссылку
- Перейти
(40) pm74, конечно дело вкуса, но вариант (32) pumbaE мне кажется более лаконичней.
PS: ---1--- к тому же // ЛяЛяЛя1 и // ЛяЛяЛя2 в примере это не просто комментарии, а некоторые потоки исполнения. ---2--- и не всега удобно (или даже возможно) выполнить все проверки вначале.
- Скопировать ссылку
- Перейти
(16) ииииище к стати о птичках ------- что получится если в тексте модуля в консоли написать такой . чуть менее простой код:
- Скопировать ссылку
- Перейти
(43) yuraos, (42) yuraos,
Выполнить("Выполнить("". "")") - работает, только не надо забывать про двойные-двойные ковычки,
А вот под 8.1 никак, да и большинство перешло уже на 8.2 с конфигурацией запущенной с совместимостью 8.1
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
(44) ты не понял. попробуй буквально набрать в своей консоли вот этот код, как тут написано:
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
(51) правильно! Бесконечная рекурсия которая убивает 1С-ку. *** Я смотрю ты сделал в консоли "ДеревоСкриптов" наподобие дерева запросов из консоли запросов. . сделано на скорую руку, там например нельзя сменить родителя у текущей строки и выполнить скрипт при клике по строке ну да ладно . Расмотрим ситуацию: Нарисовал я много кода в разных строках ветвистого дерева (блин! сохранить бы это добро - да ладно!) и взял сдуру и решил в какой-то из строк выполнить следующий достаточно простой код:
- Скопировать ссылку
- Перейти
(53) для большей эффектности рекомендую насоздавать в дереве много строчек ну и для полного кайфа дополнить исполняемый код следующим образом:
- Скопировать ссылку
- Перейти
(47)(54) собственно к чему я привел эти примеры кода .
А к тому, что выполнение произвольного кода оператором Выполнить() потенциально опасно для данных самой обработки.
как для пользовательских данных (в нашем случае самого набранного кода) так и для системных данных (в нашем случае структуры таблиц формы консоли).
в примере (47) исполняемый код просто убивает сеанс 1С с потерей набранного кода. в примере (54) получается более обидно: теряем набранный код и имеем в результате нерабочую консоль.
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
Давно уже сам пользуюсь, удобно бывает выполнить участок кода не делая внешних обработок.
Поддерживает весь функционал кода 1С, то есть сам код выполняется нативной процедурой "В ы полнить()".
В табло формул можно добавить переменные, которые использовались в вы в п олняемом коде.
По нажатии кнопки "Выполнить" происходит выполнение код а и пересчет значений переменных.
И как только модераторы пропустили такое описание обработки ? А "аФФтору" не помешало бы научиться пользоваться Word-ом, если не в состоянии сам проверить орфографию.
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
Не отрицаю, и специально для такого случая есть программы, проверяющие правильность написания текста.
Не бойся, а радуйся , когда тебя критикуют , — критика в семь раз полезней похвалы. Но сам не упрекай и не критикуй , особенно бесплатно.
Я не критикую тебя, а подсказываю пути к самосовершенствованию. Удачи в разработках)
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
(32) pumbaE, спасибо за идею. хочешь сказать вот такой вариант пройдет:
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
(46) catena, правила вежливого тона предполагают предостовлять версии продукта для всех используемых версий платформы (в пределах совместимости), а не предлагать делать даун-грэйд обработки.
Конечно в данном случае (обработка можно сказать очень проста, если не примитивна) СДАУНГРЭЙДИТЬ ЭТУ КОНСОЛЬ ОСОБЫХ ПРОБЛЕМ НЕ СОСТАВЛЯЕТ. . но все же.
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
(49) Катя, ты меня уважаешь .
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
Конец;" (переход к предопределенной метке за последним оператором). Для быстрой вставки такого фрагмента кода в подменю Вставка есть команда "Возврат".
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
(58) tormozit, отчего же работать не будет? просто сначала надо сделать набор "СтрЗаменить" СтрЗаменить(ТекстВыполенения, Символ.Тб (Не помню как табуляция будет, вроде так) , " " (пробел) ); СтрЗаменить(ТекстВыполенения," " (два пробел) , " " (один пробела) ); - пока все двойные пробелы не уберутся, СтрЗаменить(ТекстВыполнения, Символ.ПС + "Возврат;", Переход на конец ); СтрЗаменить(ТекстВыполнения, Символ.ПС + " Возврат;", Переход на конец );
И Это уже описывает уже 99% случаев. Для любителей писать все в одну строчку можно сделать. СтрЗаменить(ТекстВыполнения, "; Возврат;", Переход на конец );
но тут уже не сделаешь Сообщить("Выполняется код; Возврат;")
- Скопировать ссылку
- Перейти
(59) Да, согласен. Строго говоря конкретно эта строка кода не подвергнется нежелательному изменению. Однако этот 1%, о котором речь, мне в практике встречался не раз. Поэтому я не сторонник таких "легких" путей. К тому же после возврата может быть сколько угодно каких угодно символов, включая печатные, например "Возврат (23+23)
;". В общем я считаю, что лучше делать видимые преобразования, т.е. сделать кнопку для явной замены всех возвратов на "Перейти
Конец", чем невидимые. Тогда пользователь хотя бы сможет быстро разобраться где консоль некорректно обрабатывает текст.
- Скопировать ссылку
- Перейти
(60) tormozit, полностью согласен.
задача усложняется еще возможностью использования в коде вариаций с регистром символов, например такой: ВОзврАТ;
вряд ли стоит городить свой парсер и изменять выполнямый код. при неудачном изменении кода может быть получен совсем не тот результат, который ожидается. :)
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
(64) tormozit, несомненно в общем модуле можно обеспечить более безопасное выполнение кода. как вариант - можно выполнять его и в контексте модуля объекта обработки.
что менее безопасно, но это делает обработку более универсальной, как это сделано в " Консоли запросов 1С + ADO ".
Так же в этой обработке реализовано восстановление пользовательских данных из резервной копии во временном файле при аварийном завершении работы консоли.
- Скопировать ссылку
- Перейти
Как уже написали, таких выполняльщиков очень много. Сам грешу ими :) половина "ленивых" обработок пишется в предприятии. Из явных неудобностей таких реализаций: -рекурсия (можно реализовать через замудрённый goto, есть размыЩления на форуме); -отсутствие функций (можно реализовать через некое "табло методов" и глобальные переменные); -отсутствие контекстных подсказок (левые приложения);
Тем не менее теститровать кусок кода или некую конструкцию очень удобно. :)
- Скопировать ссылку
- Перейти
Совершенно ничего нового, хоть бы мою публикацию насчёт произвольных алгоритмов взять. Формульная механика тоже уже на ИС публиковалась. Не осознаю причниы такого количества плюсов за такой баян. Дерево алгоритмов худо-бедно даже в старом УПОб было. А уж что за "подсветка" кода - и вовсе не понимаю, достаточно нужное расширение указать. Или вы сделали всплывающие подсказки?
Или вот если б вы, автор, отладку или хоть "переход к определению" сделали, тогда да.
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
Переключатели? - это vbs, это javascript
или реально будете парсить написанный код и "понимать" что написано (вот это интересно. )
А переключатели - пфф..
Вот еще: Есть ли возможность получить какю нибудь "переменную" и вызвать другой код, передав "переменную" в него?
Наппример (Ваш скрин):
Выполняем текст из "ЗапросТоваров" результат которого дает нам ТЗ товаров (тзТоваров) и далее вызываем текст "Запрос контрагентов" у которого на входе будет (тзТоваров) (что-то типа Вызвать.ЗапросКонтрагентов(тзТоваров)).
Вопрос, для tormozit , а в Ваших "Инструменты Разработчика" это возможно (что-то давно ими не пользовался)?
А так по сути ничего нового, наверное каждый для себе писал нечто подобное.