Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   Как узнать Имя Таблицы Значений (http://forums.kuban.ru/f1040/kak_uznat-_imya_tablicy_znachenij-7280969.html)

volk13 27.10.2015 11:38

Как узнать Имя Таблицы Значений
 
Всем физкульт-привет!
Задача следующего плана:

в функцию в качестве параметра передаётся Таблица Значений, и нужно однозначно идентифицировать эту ТЗ, чтобы выполнить нужный алгоритм её обработки (так как ТЗ несколько, и на форме и временно создаваемых).

Прямым способом узнать Имя ТЗ, насколько я понимаю, невозможно.
1) Можно сравнивать целиком ТЗ, переданную в качестве параметра с имеющимися ТЗ и по совпадению идентифицировать
2) Можно сравнивать количество строк или колонок (но тут в разных ТЗ эти параметры могут случайно и совпасть)
3) Можно ввести во все таблицы дополнительно Первую "Спец"-колонку, уникальную для каждой таблицы, и пытаясь через Попытку/Исключение в ней получать значение, определять с каким именем колонки попытка будет успешной, значит и таблица идентифицирована...
Может ещё как можно?
Хотелось-бы определиться с оптимальным вариантом на ваш взгляд. Что посоветутете?

angro 27.10.2015 11:43

(0) добавить в функцию обработчик, первый параметр "ТипТЗ"

volk13 27.10.2015 11:53

ну да, самое простое
а заклинило меня из-за того, что параметр не хотел передавать :)

roma n 27.10.2015 12:21

(2) извращенец :)
Для первой (к примеру) колонки кроме имени/типа и т.п. можно определять "бесполезный" синоним, который и считывать в обработчике

VZ 27.10.2015 21:18

Надысь делал одну многотабличную обработку. Обработка одна, а выходных таблиц - несколько. И каждая имеет свою расшифровку. А расшифровка порождает свою таблицу. С "псевдокнопками" ;)
Чтоб не запутаться, все вызовы расшифровки в одну процедуру:
Раздел = Расшифровка.Получить("Раздел");
Если Раздел = "такойто" Тогда
......
ИначеЕсли Раздел = "Сякойто" Тогда
.....
Все в кучке ;)

А для ТЗ есть функция глПоказатьТЗ(ТЗ, НазваниеВШапке = "", Назначение="", ВывестиТаблицей = 0) Экспорт
Для отладки удобно: вызывает обормотку для показать эту самою ТЗ. Можно зафиксировать как Таблица, потом рассматривать цепочку...

qweqwe123123 27.10.2015 23:37

никак
имя переменной хранится в пределах процедуры/функции
либо соответствующего модуля
то есть в процедуру/функцию вообще никак не передаётся, но может быть доступно в ней, если объявлена в модуле, который распространяет свой контекст на данную процедуру/функцию, чего в общем случае естественно не случается.

qweqwe123123 27.10.2015 23:40

однозначно идентифицировать ТЗ можно сохранив е

qweqwe123123 27.10.2015 23:42

...ё в строку. по крайней мере с достаточной степенью однозначности.

только использовать это можно что для сравнения с однозначно заранее заготовленной ТЗ на предмет их однозначной идентичности или однозначной неидентичности.

qweqwe123123 27.10.2015 23:45

поэтому нужно передавать дополнительный параметр однозначно идентифицирующий вариант обработки предаваемой ТЗ, а не саму ТЗ.

ну или надо больше подробностей.


Текущее время: 03:44. Часовой пояс GMT +3.