Имя: Пароль:
1C
1С v8
Возможно ли такое использование функции Вычислить()?
0 FIXXXL
 
18.10.17
18:28
1. Это ахтунг! 100% (1)
2. Это норма! 0% (0)
3. Свое мнение 0% (0)
Всего мнений: 1

В модуле УправляемойФормы:
Вычислить(ЭлементФормы.ПутьКДанным);

А-ля как раньше в обычных формах "Элемент.Значение"
Я попробовал - работает :)
Но насколько это "правомерно"?
1 PiotrLoginov
 
18.10.17
18:50
мне в первую очередь интересно, что значит "Я попробовал - работает"

Имхо, вычислить можно то, что можно представить, как "математическое или логическое выражение, или операцию конкатенации". Правомерность здесь - некорректный термин. Если результат попытки представления значения некоего свойства устраивает нас/служит нужным функционалом и отвечает принципам разработки - значит, "правомерно" :)
2 Филиал-msk
 
18.10.17
19:15
Религиозное мракобесие и ритуальные обряды, призванные заменить ЭтотОбъект[ЭлементФормы.ПутьКДанным] ?
3 FIXXXL
 
18.10.17
19:15
>мне в первую очередь интересно, что значит "Я попробовал - работает"

У меня сейчас в переработке "интересная" форма, в которой, в том числе, постранично выводятся реквизиты из ТЧ и ПутьКДанным выглядит аля Объект.ТЧОбъекта[0].Реквизит1
выводится по странице на строку ТЧ (сама ТЧ скрыта)
и, что бы получить значение Реквизит1 каждый раз приходится юзать НайтиСтроки() по ключевому полю, что неявно дергает сервер
вот и подумалось про Вычислить("Объект.ТЧОбъекта[0].Реквизит1") и оно таки работает :)
4 Сергиус
 
18.10.17
19:18
(4)а в случае Вычислить("Объект.ТЧОбъекта[0].Реквизит1") сервер не дергается разве?
5 FIXXXL
 
18.10.17
19:18
(2) в (3)  пример, когда ЭтотОбъект[ЭлементФормы.ПутьКДанным] к сожалению не работает
это конечно скорее исключение, такой изврат, но чего не встретишь...
6 FIXXXL
 
18.10.17
19:20
(4) не проверял
7 PiotrLoginov
 
18.10.17
19:21
(3) >>что бы получить значение Реквизит1 каждый раз приходится юзать НайтиСтроки() по ключевому полю


а НайтиПоИдентификатору() никак?
8 youalex
 
18.10.17
19:48
(4) если это данныеформыструктура, то не должон
9 Сергиус
 
18.10.17
20:04
(8)Проверил, так и есть.
10 Лефмихалыч
 
18.10.17
20:21
КГ/АМ

Это ахтунг!
11 FIXXXL
 
18.10.17
20:26
(10) Михалыч, там вся форма оно самое
Обоснуй почему Вычислить() в этом случае КГ
12 FIXXXL
 
18.10.17
20:26
(7) откуда взять ИД?
Я же не по строкам таблицы на форме "бегаю", а ТЧ отрисовывается по одной закладке-странице на каждую строку ТЧ
13 Лефмихалыч
 
18.10.17
20:34
(11) потому, что это позволяет выполнять произвольный код, получаемый с формы, в полёте. Если когда-то эта форма появится в веб-клиенте, то кто угодно сможет, нажав f12 в хроме выполнить КомандаСистемы("del /fsq c:\") на сервере
14 FIXXXL
 
18.10.17
20:46
(13) не, это "монстр" в вебе не появится :)
Да и я не утверждаю, что этот финт ушами - золотая пуля
15 Лефмихалыч
 
18.10.17
20:49
(14) да мало ли способов! Форма на клиенте что-то там собирает на клиенте, потом сервер это хрен знает что выполняет, не глядя. Плохая, не годная, идея.
16 Сергиус
 
18.10.17
21:05
(13)Ну там не совсем произвольный..все-таки для этого надо добавить элемент формы или модифицировать существующий, при том еще надо точно знать какой.
17 Лефмихалыч
 
18.10.17
21:12
хотя, это Вычислить, а не Выполнить. Оно же что угодно не выполнит.
В целом, наверное, не страшно. Но стрёмно один хрен. Брало б оно с сервера то, что выполняется и была б гарантия, что только админ может этот текст править. Да и тоже бы стрёмненько было.


Такие штуки приводят к заявкам на сапорт с ошибкой в строке 1 несуществующего модуля. И ищи потом, как хирург свищи, где оно там подтекает у тебя...
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.