Имя: Пароль:
1C
1С v8
Флажок с тремя значениями. Получить прежнее состояние
0 Wobland
 
20.03.13
10:07
УФ. в событие ПриИзменении поля таблицы попадаю с новым значением флажка. имею необходимость знать его прежнее значение.
иными словами, нужна функция:
2 -> 1
1 -> 0
0 -> 2
самому мне думать лениво, про Если/ИначеЕсли знаю (сейчас так и работает). предлагаю изобретение такой функции в качестве развлечения ;)
1 НафНаф
 
20.03.13
10:09
охренел
2 cw014
 
20.03.13
10:09
Параноик
3 butterbean
 
20.03.13
10:10
?(X-1=-1,2,X-1)
4 butterbean
 
20.03.13
10:10
(3) не лучше
?(Х=0,2,Х-1)  
:-)
5 Ёпрст
 
20.03.13
10:15
(0)

Функция Вася(х)
 Возврат 0+Сред("201",х+1,1)
КонецФункции
6 НафНаф
 
20.03.13
10:16
Решение 1:
f(x) = (x+2)%3;

Решение 2:
f(x) = a*x^2+b*x+c
f(0) = 2 => c=2
f(1) = 0 => a+b+c=0, a+b=-2
f(2) = 1 => 4*a+2*b+c=1, 4*a+2*b=-1, 2*a=3
a=1.5, b=-3.5, c=2
f(x) = 1.5*x^2-3.5*x+2
7 Wobland
 
20.03.13
10:21
(5) класс!
(6) а делить по модулю 3 почему-то не догадался
8 Wobland
 
20.03.13
10:23
а теперь устанавливаем галки ;)
что-то не вижу ничего элегантного. может, как-то поиграться с неявным преобразованием булева в число?

Если с=Соседи.Количество() Тогда
   Родитель.Пометка=1;
ИначеЕсли с=0 Тогда
   Родитель.Пометка=0;
Иначе
   Родитель.Пометка=2;
КонецЕсли;
9 НафНаф
 
20.03.13
10:24
(8) что за гоунобред?
10 Wobland
 
20.03.13
10:25
(9) организую дерево с пометками типа

гарем
-18 марта [да]
--Катя [да]
--Лена [да]
-19 марта [не все]
--Маша [нет]
--Наташа [да]
-20 марта [нет]
--Оля [нет]
--Ира [нет]
11 НафНаф
 
20.03.13
10:28
(10) и что дальше то?
12 Wobland
 
20.03.13
10:30
(11) тыкаю по строке. если у всех строк того же уровня галки стоят, то родителю ставлю 1, если у всех не стоят - 0, а если где-то стоит, а где-то нет - 2. это как компоненты выбирать при установке офиса...
13 Wobland
 
20.03.13
10:30
всё работает. мне просто не нравится множественный Если
14 НафНаф
 
20.03.13
10:32
1. значение "серый" у строки ставить интерактивно нельзя, его только можно установить вычисляя
2. там вообще рекурсия и циклы, можно же тыкать не только по конечному элементу, но и по группе, тогда подчиненные должны пересчитываться
15 Wobland
 
20.03.13
10:40
(14) как нельзя? можно, перепроверил
&НаКлиенте
Процедура ПродажиПометкаПриИзменении(Элемент)
   Возврат;
16 НафНаф
 
20.03.13
10:41
(15) можно, но по смыслу нельзя
17 Wobland
 
20.03.13
10:42
(16) ну вот я его и вычисляю в (8)
18 Wobland
 
20.03.13
10:56
Родитель.Пометка=?(с=Соседи.Количество(), 1, ?(с, 2, 0));
как-то не очень...
19 НЕА123
 
20.03.13
10:57
Макс(х-1,СтрДлина(х-1))*(х-1)*(х-1)
20 Wobland
 
20.03.13
10:59
(19) ты про (0)? СтрДлина() всегда единица
21 Wobland
 
20.03.13
10:59
или Строка(0)="" ?
22 НЕА123
 
20.03.13
10:59
СтрДлина(0-1)= 2
23 НЕА123
 
20.03.13
11:03
(21)
пусть будет ноль. нормально.
24 НЕА123
 
21.03.13
08:27
(0)
(x+2)%3
в общем случае (x+n)%(n+1). это типа колец.