Имя: Пароль:
1C
 
Отбор в ТЗ
0 Олеся999
 
21.04.17
10:20
Нужно оставить строки в таблице только те в которых: Количество будет равно 1 и 2 остальные удалить. Как это можно осуществить ?
пока только срабатывает условие :  
тзТаб = тз_Осн.Выгрузить();
ПараметрыОтбора = Новый Структура("Количество", 1);
ТЗ = тзТаб.Скопировать(ПараметрыОтбора);
тз_Осн.Очистить();    
тз_Осн.Загрузить(ТЗ);

пробовала так : ПараметрыОтбора = Новый Структура("Количество", 1 и 2); Но не работает
1 Живой Ископаемый
 
21.04.17
10:21
да, не работает. Надо применить последовательно.
Либо второй вариант - скормить ТЗ построителю запроса, и добавить отбор ему.
2 Живой Ископаемый
 
21.04.17
10:34
3 Живой Ископаемый
 
21.04.17
10:37
Если в исходной тз есть строки, в которых количество <0, то надо два элемента отбора.
4 Живой Ископаемый
 
21.04.17
10:37
тзТаб = мРезультатЗапроса.Выгрузить();
построитель = Новый ПостроительЗапроса;
Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(тзТаб);
ЭлементОтбора = Построитель.Отбор.Добавить("Количество");
ЭлементОтбора.Использование = истина;
ЭлементОтбора.Значение = 2;
ЭлементОтбора.ВидСравнения = ВидСравнения.МеньшеИлиРавно;
тзРез = Построитель.Результат.Выгрузить();
тзРез.ВыбратьСтроку();
5 Олеся999
 
21.04.17
11:06
(4) Странно у меня почему то все вываливает.
6 Олеся999
 
21.04.17
11:07
и 1 и 2 и 3 и 4 итд...
7 Живой Ископаемый
 
21.04.17
11:09
2(5) в 13-й строке ошибка у тебя
8 Олеся999
 
21.04.17
13:28
(7) в какой 13-ой ?)
9 СвинТуз
 
21.04.17
13:40
В цикле не пробовали удалять?
Долго?
10 Ganiev
 
21.04.17
13:44
Сделай Тз еще одну скопируй все с отбором "1" потом с отбором "2", и будет тебе счастье!
11 Олеся999
 
21.04.17
13:45
(9) я выполняю на сервере.  а текущие данные не прокатят только на клиенте
12 1dvd
 
21.04.17
13:46
Запросом
13 Олеся999
 
21.04.17
13:46
(10) А нельзя я не знаю отбор как то по нескольким условиям делать сразу?
14 FIXXXL
 
21.04.17
13:46
(13) запросом - можно
15 Олеся999
 
21.04.17
13:46
(12) так это же ТЗ а не ТЧ, или в ТЗ тоже запросом прокатит ?
16 1dvd
 
21.04.17
13:48
(15) Можно в Запрос засунуть ТЗ
17 Basilio
 
21.04.17
13:48
(15) да. только придется во временную таблицу выгружать. думаю проще в цикле.
18 Ganiev
 
21.04.17
13:48
(13) А РеквизитФормыВЗначение и передать не?
(15) а почему нет?
19 1dvd
 
21.04.17
13:49
(11) причем тут текущие данные?
20 FIXXXL
 
21.04.17
13:49
(15) типизируешь - прокатит
не хочешь типизировать - получай строки через НайтиСтроки и складывай их в новую таблицу
21 Олеся999
 
21.04.17
13:49
(19) Ну если в цикле делать, сравнивать с условием и если не выполняется удалять строку
22 1dvd
 
21.04.17
13:50
(21) да. Только удалять не сразу, а вторым циклом. И причем тут текущие данные?
23 Basilio
 
21.04.17
13:51
маСтрокиКУдалению = Новый Массив;
Для Каждого строка Из тз_Осн Цикл
Если строка.Количество = 1 Или строка.Количество = 2 Тогда
мастрокиКУдалению.Добавить(строка)
конеццикла;

Для каждого строка из маСтрокиКУдалению Цикл
тз_Осн.Удалить(строка);
конеццикла;
24 Ganiev
 
21.04.17
13:53
(23) Ну вот даже не дал ей самой разобраться
25 Ganiev
 
21.04.17
13:57
Можно одним циклом
н=1;
Пока н<= Тз_Осн.Количество Цикл
Если Тз_Осн[н].Количество =1 или Тз_Осн[н].Количество =2 Тогда
    Н=н+1;
Иначе
Тз_Осн.Удалить(н);
КонецЕсли;
КонецЦикла;
26 1dvd
 
21.04.17
14:00
(25) ерунда получится
27 Живой Ископаемый
 
21.04.17
14:04
Капец в (4) рабочий код, в (2) - пруф.
28 arsik
 
гуру
21.04.17
14:06
Вот такт надо
(25)
Инд=Тз_Осн.Количество()-1;
Пока Инд>=0 Цикл
    Если Тз_Осн[Инд].Количество =1 или Тз_Осн[Инд].Количество =2 Тогда
        Тз_Осн.Удалить(Инд);
    КонецЕсли;
    Инд = Инд-1;
КонецЦикла;
29 Basilio
 
21.04.17
14:06
(24) ты фото посмотри. не похоже что она способна в этом разобраться (если фото не фейк).
30 catena
 
21.04.17
14:09
(29)Дискриминация по зеленым кофточкам?
31 Timon1405
 
21.04.17
14:10
(27) садись, два. не учтены отрицательные числа

тзТаб= новый ТаблицаЗначений;
тзТаб.Колонки.добавить("Количество",Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(0, 0, ДопустимыйЗнак.Любой)));
Для сч=-1 по 3 цикл
    Стр = тзТаб.Добавить();
    Стр.Количество=Сч;
КонецЦикла;

построитель = Новый ПостроительЗапроса;
Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(тзТаб);
ЭлементОтбора = Построитель.Отбор.Добавить("Количество");
ЭлементОтбора.Использование = истина;
ЭлементОтбора.Значение = 2;
ЭлементОтбора.ВидСравнения = ВидСравнения.МеньшеИлиРавно;
тзРез = Построитель.Результат.Выгрузить();
тзРез.ВыбратьСтроку();
32 Живой Ископаемый
 
21.04.17
14:18
2(31) читай (3)
33 1dvd
 
21.04.17
14:18
(32) а ноль?
34 1dvd
 
21.04.17
14:19
+ и разве можно делать два отбора по одному полю?
35 Живой Ископаемый
 
21.04.17
14:20
2(33) капец...

Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(тзТаб);
ЭлементОтбора = Построитель.Отбор.Добавить("Количество");
ЭлементОтбора.Использование = истина;
ЭлементОтбора.Значение = 2;
ЭлементОтбора.ВидСравнения = ВидСравнения.МеньшеИлиРавно;

ЭлементОтбора = Построитель.Отбор.Добавить("Количество");
ЭлементОтбора.Использование = истина;
ЭлементОтбора.Значение = 0;
ЭлементОтбора.ВидСравнения = ВидСравнения.Больше;
36 Живой Ископаемый
 
21.04.17
14:20
ленивые животные.
:)
37 Timon1405
 
21.04.17
14:20
(32) или использовать
ЭлементОтбора.ВидСравнения = ВидСравнения.ВСписке;
)))
38 Живой Ископаемый
 
21.04.17
14:21
2(37) Ну... если количество не дробное, то наверное можно.
39 catena
 
21.04.17
14:21
(35)Сейчас скажут про полтора...
40 dezss
 
21.04.17
14:23
(39) в постановке только 1 и 2
41 1dvd
 
21.04.17
14:23
(35) см (34)
42 catena
 
21.04.17
14:24
(40)Вот именно. А код в (35) и полтора возьмет.
43 dezss
 
21.04.17
14:27
так ты прочитай (37) и (38)
44 Живой Ископаемый
 
21.04.17
14:27
окей, тогда в списке
45 catena
 
21.04.17
14:29
(43)Да я вообще не понимаю, что можно после (4) обсуждать. Там уже автор должен сам под свои нужды модифицировать. А у нее ошибка в 13 строке...
46 Timon1405
 
21.04.17
14:32
(45) так пятница же, можно и пообсуждать)
47 dezss
 
21.04.17
14:32
(45) да то ископаемый протелепатировал
48 catena
 
21.04.17
14:33
(46)Да тут скучно, автор на контакт не идет же.
49 Живой Ископаемый
 
21.04.17
14:34
(47) у меня хрустальный шар, купленный на алиэкспрессе. Когда мне 1Сники говорят что у них не вышло, я задаю ему вопрос "В какой строчке кода у них ошибка", и он всегда показывает.
50 Олеся999
 
21.04.17
14:37
(28) По циклу ходит но почему то не удаляет
51 Живой Ископаемый
 
21.04.17
14:37
ы...
52 Олеся999
 
21.04.17
14:37
(48) идет :)
53 Олеся999
 
21.04.17
14:38
(35) тоже пробовала не удаляет строки
54 dezss
 
21.04.17
14:38
(50) ужас...
столько советов и воспользовалась неправильным)))
там наоборот, удаляет те, где 1 или 2
55 Олеся999
 
21.04.17
14:38
нулевых и отрицательных нет не было и не будет
56 Олеся999
 
21.04.17
14:39
(54) и не удаляет
57 Живой Ископаемый
 
21.04.17
14:39
2(53) в (4) рабочий код. все что дальше написано - бред психов.
58 catena
 
21.04.17
14:39
(51)Что "ы", давай строчку. Будем предлагать варианты решения.
59 dezss
 
21.04.17
14:39
(53) этот код не удаляет, он отбирает нужные тебе строки...
и после него надо добавить

тзРез = Построитель.Результат.Выгрузить();
тзРез.ВыбратьСтроку();
60 arsik
 
гуру
21.04.17
14:41
(50) Поменяй условие
Если не (Тз_Осн[Инд].Количество =1 или Тз_Осн[Инд].Количество =2) Тогда
61 dezss
 
21.04.17
14:44
(60) один фиг лучше удалять после, а не в самом цикле
62 Олеся999
 
21.04.17
14:45
(60) Да я так и поставила, там в другом у меня ошибка была, заработало спасибо, всем спасибо )))
63 arsik
 
гуру
21.04.17
14:46
(61) Чем лучше?
64 dezss
 
21.04.17
14:48
(63) сложнее ошибку допустить
65 dezss
 
21.04.17
14:49
(64) хотя при цикле с конца, конечно, ошибки не будет