![]() |
![]() |
![]() |
|
Проверка программного кода в пользовательском режиме | ☑ | ||
---|---|---|---|---|
0
Shrek
23.12.09
✎
13:45
|
Всем привет. Есть справочник, в котором пользователь вводит программный код 1С. Как можна проверить этот код на правильность? То есть произвести синтаксический контроль как в Конфигураторе (Ctrl+F7). Заранее спасибо.
|
|||
1
Rie
23.12.09
✎
13:46
|
(0) Ну, пишешь свой синтаксический анализатор...
Или же с помощью FormEx пытаешься загрузить код как дополнительный модуль и смотришь, ругается или нет. |
|||
2
zbv
23.12.09
✎
13:51
|
попробывать выполнить.
|
|||
3
sam_sam
23.12.09
✎
13:52
|
(0) а зачем этот изврат? Пользователь он на то и пользователь, чтобы в кнопки пальцем тыкать, а не код писать.
|
|||
4
Shrek
23.12.09
✎
13:52
|
(2) Пробовал Выполнить(), но он возращает ошибку на модуль, в котором вызываю Выполнить().
|
|||
5
AndOne
23.12.09
✎
14:21
|
Все правильно. Вот и проверяйте, если есть ошибка, значит код не правильно написан.
|
|||
6
anatoly
23.12.09
✎
14:28
|
(4) проверь на простом заведомо рабочем коде - если опять ошибка, занчит ошибка в самом модуле какая то.
а синтакс-контроль это не гарантия что ошибок не будет при исполнении - не то поле не туда присвоил - вот и ошибка вылезет. а вообще по моему можно расшифровку ошибки получить, может в "служебные сообщения" что то пишется? |
|||
7
anatoly
23.12.09
✎
14:37
|
попробуй такой код:
=== Попытка Значение = неопределено; Выполнить("Значение = Строка("+ПроизвольныйАлгоритм+")"); Возврат Значение; Исключение Сообщить("Ошибка " +ОписаниеОшибки()+ " при попытке выполнить следующий код: "+Символы.ПС + "Значение = "+ПроизвольныйАлгоритм, СтатусСообщения.Важное); Возврат ""; КонецПопытки; === здесь "ПроизвольныйАлгоритм" - строка с выполняемым кодом, вытащил из своей рабочей конфы. |
|||
8
PowerBoy
23.12.09
✎
14:42
|
ТекстДляВыполнения = ТекстДляВыполнения + "Если Ложь Тогда " + Символы.ПС + Алгоритм + " КонецЕсли";
Попытка Выполнить(ТекстДляВыполнения); Исключение Сообщить("Ошибка синтаксиса"); КонецПопытки; |
|||
9
Jolly Roger
23.12.09
✎
14:45
|
||||
10
Jolly Roger
23.12.09
✎
14:49
|
(7) а если "ПроизвольныйАлгоритм" удаляет все данные в базе?
|
|||
11
anatoly
23.12.09
✎
14:59
|
(10) а если юзеру надо именно удалить все данные в базе?
как я уже писал выше - проверка синтаксиса не гарантирует что код выполнится без ошибок. |
|||
12
Stepa86
23.12.09
✎
15:16
|
(8) прикольно =) *записал в блокнотик*
а если НачатьТранзакцию(); Выполнить( ТекстАлгоритма ); ОтменитьТранзакцию(); можно утверждать, что код отработает без последствий для базы? |
|||
13
Jolly Roger
23.12.09
✎
16:04
|
(11) сомневаюсь, что юзер ожидает, что это произойдет в момент проверки синтаксиса...
|
|||
14
Jolly Roger
23.12.09
✎
16:05
|
(8) одна фигня: с процедурами не работает...
|
|||
15
Jolly Roger
23.12.09
✎
16:06
|
(12) можно, только если юзер никуда не торопится...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |