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