Имя: Пароль:
1C
1C 7.7
v7: Таблица значений удалить строку
,
0 work92
 
29.02.16
14:05
Подскажите как сделать чтобы  удалить строку 2 так как в этом месяце есть ВзносВрем

Датанач----- дата кон -----ВР-----ВД
1 строка 01.01.2015----- 25.01.2015 -----По окладу-----ВзносВрем
2 строка 01.01.2015----- 25.01.2015 -----Индексация-----Индекс
3 строка 01.02.2015----- 25.03.2015 -----Больничный-----БЛ
4 строка 01.02.2015----- 13.02.2015 -----Индексация-----Индекс
5 строка 01.04.2015----- 30.04.2015 -----По окладу-----ВзносВрем
1 work92
 
29.02.16
14:10
Может у кого есть пример кода
2 Mikeware
 
29.02.16
14:13
Если (этом месяце есть ВзносВрем) Тогда
тз.получитьСтокуПоНомеру(2)
3 Mikeware
 
29.02.16
14:14
Если (этом месяце есть ВзносВрем) Тогда
тз.получитьСтокуПоНомеру(2);
тз.УдалитьСтроку();
конецЕсли
4 Rie
 
29.02.16
14:15
(0) Если просто строку 2, то так и пишешь:

ТЗ.УдалитьСтроку(2);

Если все строки, где ВзносВрем, то

Для н=-ТЗ.КоличествоСтрок() По -1 Цикл
    Если ТЗ.ВД=ВзносВрем Тогда
        ТЗ.УдалитьСтроку(н);
    КонецЕсли;
КонецЦикла;
5 aka AMIGO
 
29.02.16
14:16
Для ы=-ТЗ.КоличествоСтрок по -1 Цикл
ТЗ.ПолучитьСтрокуПоНомеру(-ы);
Если ТЗ.ВД = "ВносВрем" Тогда
ТЗ.УдалитьСтроку(-ы);
КонецЕсли;
КонецЦикла;
6 work92
 
29.02.16
14:16
Строка постоянна меняется
7 aka AMIGO
 
29.02.16
14:17
(6) поясни.
8 Rie
 
29.02.16
14:18
(4) Тьфу, уже нюх теряю... Условие:
ТЗ.ПолучитьЗначение(-н,"ВД")=ВзносВрем;
9 work92
 
29.02.16
14:18
Мне нужно написать условие  если в месяце есть ВзносВрем и Индексация тогда удалить индексацию иначе оставить индексацию
10 aka AMIGO
 
29.02.16
14:18
(8) Ой! ты что пишешь? :)
11 Mikeware
 
29.02.16
14:19
(9) ну так напиши
12 work92
 
29.02.16
14:20
Это условие  подскажите как правильно его выполнить
13 Rie
 
29.02.16
14:26
(10) Исправленное условие для оператора Если в Цикле из (4).
14 Rie
 
29.02.16
14:31
(9) Что такое "удалить индексацию"? Варианты ответа:
а) удалить всю строку из таблицы значений;
б) очистить поле ВР соответствующей строки;
в) сделать что-то ещё, пока что не названное.

Если а) - (4)+(8) или в (5), но в условие добавь ещё и проверку на ВР.

Если б) - тогда
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку()=1 Цикл
    Если (ТЗ.ВР="Индексация") И (ТЗ.ВД="ВзносВрем") Тогда
        ТЗ.ВР = "";
    КонецЕсли;
КонецЦикла;

Если в) - то кто ж знает, что тебе надо.
15 Builder
 
29.02.16
14:37
(14) Условие не выполнится никогда :)
16 Mikeware
 
29.02.16
14:40
(15) нужно это в бесконецный цикл обернуть.
подулим неопределенность класса "невыполняемое условие в бесконечном цикле" :-)
Ну а дальше по правилу лопиталя....
17 Garykom
 
гуру
29.02.16
14:43
(16) по правилу буравчика интереснее
18 Mikeware
 
29.02.16
14:52
(17) по правилу лопиталя мы определяем, какие строик нужно удалить. а по правилу буравчика - уже, собственно, удаляем...
19 Rie
 
29.02.16
17:45
(15) "То ли лыжи не едут, то ли я ..." (хм, правила форума не позволяют мне дать себе характеристику в таком случае).
Однако попрошу всё же объяснить, почему такое условие "не выполняется никогда". Ибо у меня есть контрпример: таблица значений со строкой:
(датанач: '01.04.2015', датакон: '01.04.2014', ВР: "Индексация", ВД: "ВзносВрем")
Не знаю, существует ли такая строка у топикстартера - но она вполне возможна. Что не так?
20 HawkEye
 
29.02.16
18:37
(19)
выполнится, выполнится... не переживай
21 Garykom
 
гуру
29.02.16
20:24
(0) Правильное решение это раскидать разные ВР/ВД по разным таблицам и затем собирать как нуна по ключу "период"

Простое-тупое решение два цикла, сначала берем все "По окладу-----ВзносВрем" и для каждого перебираем все строки и если период совпадает то меняем "Индексация-----Индекс" на "По окладу-----ВзносВрем"
осталось Свернуть("Датанач, дата кон, ВР, ВД", ""); - и оппа строчки одинаковые того - удалилися
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.