|
Как увидеть все "Переменные окружения" в 1С | ☑ | ||
---|---|---|---|---|
0
И Р
02.03.19
✎
14:37
|
Здравствуйте! В различных языках есть возможность вывести полный список переменных окружения и процедур доступных вам внутри данного фрейма, процедуры, функции.
Возможно ли это сделать как то в 1С? Т.е. например есть процедура, где "ОпределитьЦену" в ней мне нужно увидеть из какого документа она была вызвана. Можно конечно в эту процедуру передавать в качестве параметра документ откуда она вызывается, НО учитывая характер 1С допускаю что эта информацию уже присутствует внутри этой функции. Как можно увидеть все метаданные, объекты и т.д. которые доступны внутри данной функции? |
|||
1
ДенисЧ
02.03.19
✎
14:40
|
Нет, рефлексии в 1с нет.
|
|||
2
Сияющий в темноте
02.03.19
✎
15:35
|
для каждого модуля вверху можно увидеть список процедур и функций в нем.
помошник автоподстановки умеет показывать то,что доступно,в процессе набора кода. |
|||
3
Alexor
02.03.19
✎
16:54
|
(0) при отладке, вызвать локальные переменные
|
|||
4
ДенисЧ
02.03.19
✎
17:01
|
(2) (3) И как программно вызвать стек вызовов? Расскажите мне тупому...
|
|||
5
Лефмихалыч
02.03.19
✎
19:59
|
(0) метаданные доступны решительно все. Все остальное - согласно области видимости модуля, в котором лежит метод.
Тебе зачем это все? |
|||
6
И Р
11.03.19
✎
14:03
|
(5) В принципе описал зачем это всё в первом сообщении.
Но вот ещё пример заходишь значит в модуль где определяется цена. Тебе в зависимости от того из какого документа была вызвана функция нужно вернуть либо рассчитанную цену, либо фиксированную. Но функция была вызвана через 4-15 скачков. Соответственно интересно есть ли в окружении этой процедуры данные о том из какого документа она в итоге была вызвана или нет, чтобы не городить огород на 4-15 промежуточных скачках. |
|||
7
rsv
11.03.19
✎
14:17
|
(6) вот и ходить отладчиком ф11 по этому огороду.Кто кого вызывает.
|
|||
8
И Р
11.03.19
✎
14:21
|
(7) хорошо, ты узнал кто кого вызывает, допустим это будет 10 скачков.
Вопрос зачем эти данные через 10 скачков тягать, если они и так есть где то? Это не целесообразно ни с точки зрения производительности, ни с точки зрения трудозатрат. Например в php есть суперглобальный массив $_ENV. |
|||
9
Xapac
модератор
11.03.19
✎
14:31
|
(8)Зачем с точки зрения практики?
|
|||
10
Жан Пердежон
11.03.19
✎
14:55
|
(8) ставишь точку останова,
а дальше Отладка - Стек вызовов Отладка - Локальные переменные Всё, тему можно закрывать |
|||
11
Xapac
модератор
11.03.19
✎
15:00
|
я не понимаю "чтобы было" вы хотите?
Или есть какой-то практичный смысл? |
|||
12
Жан Пердежон
11.03.19
✎
15:04
|
(11) практический смысл: говнокодить как на пхп
|
|||
13
Лефмихалыч
11.03.19
✎
15:39
|
(6) >Тебе в зависимости от того из какого документа была вызвана функция нужно вернуть либо рассчитанную цену, либо фиксированную
это называется говнокод и непрофессионализм ДОлжно быть два разных метода для получения двух разных цен. Вызывающий контекст должен сам решать, что вызывать. Тогда вот эта вся иеромантия из сабжа не нужна. |
|||
14
Лефмихалыч
11.03.19
✎
15:39
|
(8) функционирование НЕ ДОЛЖНО зависеть от вызывающей стороны. Ни когда. Единственное, от чего можно зависеть - это входные параметры и данные в БД. Всё.
|
|||
15
И Р
11.03.19
✎
15:41
|
(10) Точка останова стоит в Общем модуле под названием "орОтраслевыеРешения"
в окне "Локальные переменные" присутствует переменная ЭтотОбъект, но при попытке обратиться к ней с позиции точки останова ошибка, что переменная не определена. |
|||
16
И Р
11.03.19
✎
15:48
|
(14) Давай так, есть функция которая возвращает цену, которая в свою очередь рассчитывается из множества факторов.
В этой функции прописано что если у номенклатуры установлен реквизит "ФиксированнаяЦена" то нужно вернуть именно её. Однако проблемы с документом Приход товаров, где из-за этого проставляется ФиксированнаяЦена вместо предыдущей цены закупки. И тут можно либо поставить в самой функции "Если документ Приход товаров, то не обращать внимания на ФиксированнаяЦена" либо что вы предлагаете? |
|||
17
Вафель
11.03.19
✎
15:51
|
добавь парам в функцию ; игнорировать фикс цену
|
|||
18
И Р
11.03.19
✎
15:54
|
(17) да, это можно вот только тащить этот парам через 4-15 скачков до непосредственного вызова этой функции. Поэтому и интересуюсь может ли эта информация храниться уже где-то в окружении её вызова.
|
|||
19
Мимохожий Однако
11.03.19
✎
16:04
|
(15) Конкретизируй ситуацию:платформа, модуль, директивы. Есть определенные стандарты. Их не просто так придумали
|
|||
20
И Р
11.03.19
✎
16:30
|
Мне уже интересно почему в окне "Локальные переменные" присутствует переменная ЭтотОбъект, но при попытке обратиться к ней с позиции точки останова ошибка, что переменная не определена. )))
|
|||
21
Asmody
11.03.19
✎
16:54
|
(16) Тебе знакома концепция "чистых функций"?
|
|||
22
VladZ
11.03.19
✎
17:04
|
(0) Отладчик в руки - и вперед!
|
|||
23
И Р
12.03.19
✎
14:47
|
(21) Если то что переменные используемые внутри функций не доступны вне их, пока не указано Экспорт то да. Или вы что то другое имеете в виду?
|
|||
24
Вафель
12.03.19
✎
14:50
|
(23) нет, функция опирается только на параметры и не делает никаких сайд эффектов
|
|||
25
Лефмихалыч
12.03.19
✎
21:51
|
(16) все что ты написал, означает "мне нужно два разных метода - один я буду вызывать везде, а второй - в приходной накладной". Все, что у методов общее, они тоже должны вызывать откуда-то, а не дублировать внутри себя. Это и называется "программирование". А вот это вот "рассчитывается из множества факторов" и "проблемы с документом Приход товаров, где из-за этого" - это всё от недостатка опыта и понимания происходящего.
|
|||
26
Лефмихалыч
12.03.19
✎
21:53
|
(20) потому, что на клиенте не существует типа, который лежит в реквизите, который на клиенте виден.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |