|
Определить наличие реквизита в строке ТЧ | ☑ | ||
---|---|---|---|---|
0
mzelensky
07.06.13
✎
08:28
|
Доброго всем.
Есть процедура в которую передается строка ТЧ. Эта входящая строка может быть либо от ТЧ1, либо от ТЧ2. Разница алгоритма процедуры заключается в использовании 1 реквизита ТЧ. В одном случае (у ТЧ1) реквизит есть, а в другом (у ТЧ2) реквизита нет. Как можно проверить наличие реквизита в строке ТЧ (естественно не имею доступа к самой ТЧ)? |
|||
1
Wobland
07.06.13
✎
08:29
|
по второму параметру процедуры?
|
|||
2
mzelensky
07.06.13
✎
08:30
|
(1) это понятно ,что можно еще уточняющий параметр передать. А вот без него можно?
Т.е. имеем только строку ТЧ. Можно определить наличие или отсутствие определенного реквизита в ней или нет?! |
|||
3
andreymongol82
07.06.13
✎
08:30
|
Попытка или второй параметр процедуры
|
|||
4
mzelensky
07.06.13
✎
08:31
|
(2) или как вариант через строку ТЧ выйти на саму ТЧ, а уже в ней проверить?!
|
|||
5
Wobland
07.06.13
✎
08:31
|
у метаданных спросить можно
|
|||
6
Поросенок Петр
07.06.13
✎
08:31
|
Одна процедура - одно действие. Флаги в параметрах, определяющие ход процедуры, или хуже того, разбор типа параметра - это всё копание в г*код.
|
|||
7
mzelensky
07.06.13
✎
08:31
|
(5) а как ты через метаданные хочешь это сделать?!
|
|||
8
mzelensky
07.06.13
✎
08:32
|
(6) это лишь твое мнение. А я не сторонник пложить километры строк одного и того же кода лишь из-за одного параметра!
|
|||
9
Aleksey
07.06.13
✎
08:33
|
например найти колонку
|
|||
10
andreymongol82
07.06.13
✎
08:34
|
(4) РеквизитЕсть = Истина;
Попытка кк = СтрокаТЧ.РекизитЭтот Исключение РеквизитЕсть = Ложь; КонецПопытки; Если реквизит есть тогда бла-бла-бла |
|||
11
andreymongol82
07.06.13
✎
08:35
|
(10) А вообще, лучше конечно или второй параметр или другая процедура
|
|||
12
Wobland
07.06.13
✎
08:36
|
(6) ага. и в случае чего переписать код в трёх местах
|
|||
13
Defender aka LINN
07.06.13
✎
08:36
|
(0) "естественно не имею доступа к самой ТЧ" - ты, естественно, не имеешь. А кто читал СП - тот имеет.
(8) А так же, смотрю, не сторонник давать реквизитам нормальные имена |
|||
14
mzelensky
07.06.13
✎
08:37
|
(10) это я уже рассматривал. Использовать "попытку" не хотелось.
|
|||
15
mzelensky
07.06.13
✎
08:37
|
(9) ты как всегда гениален, а твои советы как всегда прозаичны.
Найти колонку в чем? |
|||
16
Mitriy
07.06.13
✎
08:38
|
УИ = Новый УникальныйИдентификатор();
СтруктураПроверки = Новый Структура("ИмяПроверяемогоПоля", УИ); ЗаполнитьЗначенияСвойств(СтруктураПроверки,СтрокаТЧ); Если Структура.ИмяПроверяемогоПоля = УИ Тогда Сообщить("Нет такого поля"); Иначе Сообщить("Есть такое поле"); Конец |
|||
17
Поросенок Петр
07.06.13
✎
08:39
|
(8) Хорошего кода не бывает километры в одной процедуре.
(12) Кто сказал что нужно дублировать код? Наоборот, когда у него изменится одна из двух ТЧ, он опять будет г*кодить в этой процедуре. |
|||
18
mzelensky
07.06.13
✎
08:39
|
(13)
"ты, естественно, не имеешь. А кто читал СП - тот имеет." - ткни в СП. "А так же, смотрю, не сторонник давать реквизитам нормальные имена" - это тут причем?! |
|||
19
Defender aka LINN
07.06.13
✎
08:39
|
(15) А у тебя избыток вариантов?
|
|||
20
mzelensky
07.06.13
✎
08:40
|
(17) ты сказал: "Одна процедура - одно действие". А у меня два действия, которые сходытся в одну процедуру.
|
|||
21
mzelensky
07.06.13
✎
08:41
|
(19) тебе сегодня жена не дала или просто хреновое настроение в связи с погодой?! Хочешь что-то сказать по существу - говори. В противном случае чего пишешь? Толку с таких сообщений 0.
|
|||
22
Defender aka LINN
07.06.13
✎
08:43
|
(18) Если у тебя процедура делает одно и то же с разными реквизитами, то есть неплохие шансы, что эти реквизиты означают одно и то же в разных ТЧ. Но называются, ЧСХ, по-разному.
|
|||
23
Поросенок Петр
07.06.13
✎
08:43
|
(20) Общие для табличных частей поля, обрабатывай одной (считай как базовый класс) процедурой. Особенности каждой ТЧ в своей. Я понимаю 1С отнекивается от ООП, но надо хотя бы понимать принципы...
|
|||
24
Defender aka LINN
07.06.13
✎
08:44
|
(21) Тебя забыл спросить, где мне писать,а где нет
|
|||
25
shuhard
07.06.13
✎
08:44
|
(21) не тупи
Defender aka LINN ответил по делу, как и всегда |
|||
26
mzelensky
07.06.13
✎
08:45
|
(22) хреново быть плохим экстасенсом. Ты сделал абсолютно неверные выводы (причем из-за того, что плохо прочел (0))!!! Давай ты не будешь угадывать, а просто ответишь на поставленный вопрос в (0).
|
|||
27
mzelensky
07.06.13
✎
08:46
|
(25) не вижу тут никакого дела.
|
|||
28
Defender aka LINN
07.06.13
✎
08:48
|
(26) В (0) спрашивается, как сделать самопридуманый костыль. Хочешь помощи - потрудись описать ЗАДАЧУ, а не изобретенный твоей левой пяткой метод ее решения.
|
|||
29
mzelensky
07.06.13
✎
08:51
|
(28) Остальные отписавшиеся меня вполне поняли. Если ты подтупливаешь, то это уже твои проблемы. Что-то тут объяснять, расписывать и учить тебя никто не просил.
|
|||
30
НЕА123
07.06.13
✎
08:52
|
"" + строкатч
|
|||
31
Defender aka LINN
07.06.13
✎
08:53
|
(29) То-то я эту тему создал...
|
|||
32
Defender aka LINN
07.06.13
✎
08:55
|
Вообще, ответ тебе в (5) еще дали. Хренли ты тут до сих пор делаешь - мне непонятно. Наверное, нравится, когда тебя пинают.
|
|||
33
mzelensky
07.06.13
✎
08:57
|
(32) прочти (24)
|
|||
34
НЕА123
07.06.13
✎
08:59
|
мне, лично, (16) нравится.
|
|||
35
mzelensky
07.06.13
✎
08:59
|
(32) Просто меня бесят упыри, подобные тебе, которые считают себя пупами земли, считая, что они знают все лучше всех.
Можешь помочь советом - помоги, а расплескивать сопли по поводу "Я такой крутой" нафиг не надо! |
|||
36
mzelensky
07.06.13
✎
08:59
|
(34) Да, красиво!
нужно будет запомнить. |
|||
37
Stormicon
07.06.13
✎
09:02
|
Пятница? Самый простой вариант - Попытка Исключение КонецПопытки, без обращения к метаданным и т.д.
|
|||
38
mzelensky
07.06.13
✎
09:04
|
(37) Честно говоря с метаданными не могу догнать.
Как имея одну строку ТЧ через метаданные определить наличие определенного реквизита в ней?! Ну так ,чисто ради любопытства вопрос. |
|||
39
Infsams654
07.06.13
✎
09:11
|
(38) Имя строки табличной части формируется следующим образом:
<Префикс полного имени объекта>ТабличнаяЧастьСтрока.<Имя прикладного объекта>.<Имя табличной части>. Например: СправочникТабличнаяЧастьСтрока.Номенклатура.Состав, где "Номенклатура" - имя справочника, как оно задано в конфигураторе, "Состав" - имя табличной части справочника "Номенклатура". Смотришь в метаданных реквизиты соответствующей табличной части объекта ... |
|||
40
Defender aka LINN
07.06.13
✎
09:15
|
(34) Жесть какая
|
|||
41
Defender aka LINN
07.06.13
✎
09:16
|
(39) Тип можно получить в разы проще
(33) Даже ответ не можешь сам придумать |
|||
42
mzelensky
07.06.13
✎
09:19
|
(41) я просто ответил тебе твоими же словами!
А ты давай, продолжай считать себя вершиной эволюции 1С-ка. |
|||
43
Mitriy
07.06.13
✎
09:26
|
(40) и что тут жестяного? Очень удобный способ проверить наличие чего-то, что другими способами проверить проблематично... Например, наличие реквизита обычной формы...
|
|||
44
Поросенок Петр
07.06.13
✎
09:27
|
Г*код победил. Ничего, рано или поздно силы бобра доберутся до него и (0) его перепишет.
|
|||
45
Defender aka LINN
07.06.13
✎
09:27
|
(43) Для строки ТЧ есть (5).
(42) Приступ попаболи? |
|||
46
Mitriy
07.06.13
✎
09:28
|
(45) ну боится человек этого слова...
|
|||
47
Mitriy
07.06.13
✎
09:35
|
Метаданные.НайтиПоТипу(ТипЗнч(СтрокаТЧ)).Реквизиты
|
|||
48
mzelensky
07.06.13
✎
09:40
|
(47) Спасибо.
искать метаданные по типу значения не догадался. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |