|
v7: оператор "если ..тогда.." ошибка в выражении | ☑ | ||
---|---|---|---|---|
0
Soul771
20.07.15
✎
19:01
|
Добрый день..
Че-то я сегодня вообще не дружу с 7.7... 2 строчки кода: уровень = 5; Для инд1 = -КолВоСтрок По -1 Цикл если (ТЗ.ПолучитьЗначение(-инд1,"Уровень")=уровень) и (ТЗ.ПолучитьЗначение(-инд1,"Конец")=0) Тогда //дальше еще кусок кода, что делать тогда КонецЕсли; КонецЦикла; лезу отладчиком, смотрю: ТЗ.ПолучитьЗначение(-инд1,"Уровень")=4 уровень = 5 ТЗ.ПолучитьЗначение(-инд1,"Уровень")=уровень = Ошибка в выражении! Что за фигня??... я в шоке... 2 числа вроде сравниваю, неужто таки нельзя?? |
|||
1
HawkEye
20.07.15
✎
19:04
|
(0) в отладчике нельзя
а зачем столько минусов? |
|||
2
Garykom
гуру
20.07.15
✎
19:05
|
(0) классный пример "женской" логики в программировании... я бы низачто не догадался сделать вместо цикла с 1 по КолСтрок (и потом для нужного номера строки делать КолСтрок-НумСтрокиОбратный)
сделать циклу с -КолСтрок по -1 |
|||
3
Soul771
20.07.15
✎
19:06
|
(1) - млин, а как тогда понять, почему он в "если" не заходит вообще?.. (должен бы...)
минусы - иду с конца таблицы значений... |
|||
4
Провинциальный 1сник
20.07.15
✎
19:06
|
Булевского типа в семерке внезапно нет
|
|||
5
Soul771
20.07.15
✎
19:07
|
(2) - ну вроде и с "женской" логикой должно работать, разве нет?..
|
|||
6
Soul771
20.07.15
✎
19:08
|
(4) - каак неееет?.... елы палы......
спасибо! |
|||
7
HawkEye
20.07.15
✎
19:10
|
(3) ну во первых ТЗ можно отсортировать...
во вторых КолСтрокТЗ = ТЗ.КоличествоСтрок(); для к = 1 по КолСтрокТЗ цикл текСТр = КолСтрокТЗ - к + 1; ... ну и т.д. |
|||
8
Soul771
20.07.15
✎
19:13
|
(7) - спасибо!
|
|||
9
HawkEye
20.07.15
✎
19:15
|
(8) в условие не заходит, потому что не выполняются заданные условия:
(ТЗ.ПолучитьЗначение(-инд1,"Уровень")=уровень) и (ТЗ.ПолучитьЗначение(-инд1,"Конец")=0) в отладчике же ТЗ.ПолучитьЗначение(-инд1,"Уровень")=4 уровень = 5 и 4 <> 5.... как же тогда в тут в условие попасть? ) |
|||
10
Soul771
20.07.15
✎
19:20
|
(9) - ну у меня дальше, внутри цикла, после "конецесли;" уровень = уровень -1;
я не стала писать, т.к. не поняла то, почему "4<>5" для него стало ошибкой в выражении.. а оказывается, как написал в (4) Провинциальный 1сник, в 7 булево нет.. печалька... |
|||
11
Soul771
20.07.15
✎
19:20
|
(10) - млин, не так написала... вот весь кусок кода, чтоб путаницы не было...
Уровень = 5; Пока уровень<>0 Цикл Для инд1 = -КолВоСтрок По -1 Цикл если (ТЗ.ПолучитьЗначение(-инд1,"Уровень")=уровень) и (ТЗ.ПолучитьЗначение(-инд1,"Конец")=0) Тогда Если уровень >1 Тогда для инд2 = инд1 по -1 цикл Если (ТЗ.ПолучитьЗначение(-инд2,"Уровень")=(уровень-1)) Тогда ТЗ.УстановитьЗначение(инд1,"Конец",ТЗ.ПолучитьЗначение(-инд2,"Начало")-1); прервать; КонецЕсли; конецЦикла; иначе ТЗ.УстановитьЗначение(инд1,"Конец",НачалоТаблицы+1); КонецЕсли; КонецЕсли; КонецЦикла; уровень = уровень -1; КонецЦикла; |
|||
12
HawkEye
20.07.15
✎
19:21
|
(10) в (0) нет булево... и с точки зрения 7.7, если не учитывать извращенную методику обхода строк - код рабочий
|
|||
13
HawkEye
20.07.15
✎
19:22
|
(10) ошибка выражении - в отладчике... нельзя в отладчике такие конструкции писать.
|
|||
14
HawkEye
20.07.15
✎
19:24
|
(11) я под конец рабочего дня код с такой логикой не пойму )))
сделай проще, для отладки Уровень = 5; Пока уровень<>0 Цикл Для инд1 = -КолВоСтрок По -1 Цикл Сообщить("" + ТЗ.ПолучитьЗначение(-инд1,"Уровень") " + " = " + уровень + "?"); Сообщить("И"); Сообщить("" + ТЗ.ПолучитьЗначение(-инд1,"Конец") + " = 0?"); если (ТЗ.ПолучитьЗначение(-инд1,"Уровень")=уровень) и (ТЗ.ПолучитьЗначение(-инд1,"Конец")=0) Тогда Если уровень >1 Тогда для инд2 = инд1 по -1 цикл Если (ТЗ.ПолучитьЗначение(-инд2,"Уровень")=(уровень-1)) Тогда ТЗ.УстановитьЗначение(инд1,"Конец",ТЗ.ПолучитьЗначение(-инд2,"Начало")-1); прервать; КонецЕсли; конецЦикла; иначе ТЗ.УстановитьЗначение(инд1,"Конец",НачалоТаблицы+1); КонецЕсли; КонецЕсли; КонецЦикла; уровень = уровень -1; КонецЦикла; |
|||
15
0wl
20.07.15
✎
19:38
|
Булево в отладчике можно с помощью тринарного оператора проверять: ?(ТЗ.ПолучитьЗначение(-инд1,"Уровень")=уровень, "истина", "ложь")
Вообще, похоже, уровни от 0 до 4 идут, потому и не заходит |
|||
16
Soul771
20.07.15
✎
19:40
|
(14), (15) - спасибо вам! сижу, разбираюсь))) про сортировку ТЗ не знала, намудрила с минусами похоже...
|
|||
17
Mr_Rm
22.07.15
✎
10:37
|
(11) с минусами напутано в двух местах:
ТЗ.УстановитьЗначение(инд1,... - должно быть ТЗ.УстановитьЗначение(-инд1,... |
|||
18
Vladal
22.07.15
✎
11:38
|
(16) С минусами очень даже интересное решение.
Всегда писал в семерке конструкцию "КолвоСтрок - Индекс + 1". |
|||
19
HawkEye
22.07.15
✎
11:59
|
(18) зачем минусы если есть Сортировка()?
вообще использовать ПолучитьЗначение(), установитьЗначение() - нужно только когда надо выбрать что-то из середины ТЗ, и то можно использовать ПолучитьСтрокуПОНомеру(), но если выбираешь с краю (любого) надо использовать ВыбратьСтроки(),получитьСТроку() - хотя бы по тому, что банально удобнее писать и обращаться к значениям в ТЗ. |
|||
20
1Сергей
22.07.15
✎
12:03
|
(19) сортировка занимает некоторое количество времени
|
|||
21
1Сергей
22.07.15
✎
12:06
|
(16) интересно, разобралась? В чем проблема была?
|
|||
22
HawkEye
22.07.15
✎
12:07
|
(20) сомневаюсь, что это актуально для (0), да и вообще если вопрос производительности встает уже на уровне сортировки... надо менять подход и инструменты...
|
|||
23
1Сергей
22.07.15
✎
12:10
|
(22) ты лучше скажи, почему у нее фотку никто не попросил? сорри за офф
|
|||
24
HawkEye
22.07.15
✎
13:25
|
(23) стареет миста.... )))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |