|
v8: Цикл удаление из ТЧ не удаляет все с первого раза | ☑ | ||
---|---|---|---|---|
0
geka-geka
12.11.13
✎
09:26
|
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ | ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Сотрудник, | ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчета |ПОМЕСТИТЬ НаНачалоМесяца |ИЗ | РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций.СрезПоследних(&ПериодРегистрации, ) КАК ПлановыеНачисленияРаботниковОрганизацийСрезПоследних |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | НаНачалоМесяца.Сотрудник КАК Сотрудник, | НаНачалоМесяца.ВидРасчета |ИЗ | НаНачалоМесяца КАК НаНачалоМесяца |ГДЕ | НаНачалоМесяца.ВидРасчета = &ВидРасчета | |УПОРЯДОЧИТЬ ПО | Сотрудник"; Запрос.УстановитьПараметр("ВидРасчета", ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.СдельнаяОплата); Запрос.УстановитьПараметр("ПериодРегистрации", ДокументОбъект.ПериодРегистрации); ТЗ = Запрос.Выполнить().Выгрузить(); Для Каждого Начисление Из ДокументОбъект.Начисления Цикл Если ТЗ.Найти(Начисление.Сотрудник,"Сотрудник") = Неопределено Тогда ДокументОбъект.Начисления.Удалить(Начисление); Иначе КонецЕсли; КонецЦикла; Помогите разобраться |
|||
1
Галахад
гуру
12.11.13
✎
09:27
|
Цыкля зацыклявается, когда выборка сбивается.
|
|||
2
z80a
12.11.13
✎
09:27
|
выборка и удаление в одном цикле
|
|||
3
пипец
12.11.13
✎
09:28
|
обратную выборку делай
|
|||
4
geka-geka
12.11.13
✎
09:28
|
Смысл из общей массы сотрудников оставить сдельщиков
|
|||
5
catena
12.11.13
✎
09:32
|
Удаляй до упора.
|
|||
6
Sabbath
12.11.13
✎
09:34
|
(0) Добавляй строки в массив, а потом обходи его и удаляй, типичный косяк
|
|||
7
salvator
12.11.13
✎
09:34
|
НайтиСтроки используй
|
|||
8
Sabbath
12.11.13
✎
09:35
|
(7) да, и это, если сотрудник может быть несколько раз
|
|||
9
salvator
12.11.13
✎
09:37
|
Или так
ПараметрыОтбора = Новый Структура("Сотрудник","Сотрудник"); ТЗНов = ТЗ.Скопировать(ПараметрыОтбора); |
|||
10
roman52
12.11.13
✎
09:39
|
выгрузи в запрос, там наложи отбор, результат выгрузи обратно
|
|||
11
Aswed
12.11.13
✎
09:41
|
(10) +1
я бы так сделал. |
|||
12
geka-geka
12.11.13
✎
09:41
|
Пока надо быстро сделал так, потом правильно сделаю
ДокументОбъект = ДокОбъект; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.Сотрудник, | ПлановыеНачисленияРаботниковОрганизацийСрезПоследних.ВидРасчета |ПОМЕСТИТЬ НаНачалоМесяца |ИЗ | РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций.СрезПоследних(&ПериодРегистрации, ) КАК ПлановыеНачисленияРаботниковОрганизацийСрезПоследних |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | НаНачалоМесяца.Сотрудник КАК Сотрудник, | НаНачалоМесяца.ВидРасчета |ИЗ | НаНачалоМесяца КАК НаНачалоМесяца |ГДЕ | НаНачалоМесяца.ВидРасчета = &ВидРасчета | |УПОРЯДОЧИТЬ ПО | Сотрудник"; Запрос.УстановитьПараметр("ВидРасчета", ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.СдельнаяОплата); Запрос.УстановитьПараметр("ПериодРегистрации", ДокументОбъект.ПериодРегистрации); ТЗ = Запрос.Выполнить().Выгрузить(); сч = ДокументОбъект.Начисления.Количество() - 1; Пока сч >=0 Цикл Если ТЗ.Найти(ДокументОбъект.Начисления[сч].Сотрудник,"Сотрудник") = Неопределено Тогда ДокументОбъект.Начисления.Удалить(сч); Иначе КонецЕсли; сч = сч - 1; КонецЦикла; |
|||
13
Любопытная
12.11.13
✎
09:43
|
(12) потом не наступит никогда. Всегда надо делать правильно с первого раза. Или не делать вообще
|
|||
14
Нуф-Нуф
12.11.13
✎
09:43
|
удаление из табличных частей обычно делают в два цикла
|
|||
15
1dvd
12.11.13
✎
09:44
|
(14) о, как
|
|||
16
mikecool
12.11.13
✎
09:44
|
нельзя просто так взять и удалить строки таб части с одного раза!
|
|||
17
Lev292
12.11.13
✎
09:51
|
Попробуй так:
Сч=0; Пока Сч<=ДокументОбъект.Начисления.Количество()-1 Цикл Начисление = ДокументОбъект.Начисления[Сч]; Если ТЗ.Найти(Начисление.Сотрудник,"Сотрудник")= Неопределено Тогда ДокументОбъект.Начисления.Удалить(Начисление); Иначе Сч=Сч+1; КонецЕсли; КонецЦикла; |
|||
18
Lev292
12.11.13
✎
09:52
|
Может только в синтаксисе чего-нибудь напутал.
|
|||
19
catena
12.11.13
✎
09:56
|
(12)Я ж сказала до упора :)
|
|||
20
mikecool
12.11.13
✎
09:59
|
(19) сколько раз отжаться? ))
|
|||
21
skunk
12.11.13
✎
09:59
|
а что мешает через найтистроки найти все строки с "неопределенно" ... и в цикле уже удалить их
|
|||
22
skunk
12.11.13
✎
10:00
|
а еще правильнее в самом запросе отбрасывать ненужные строки
|
|||
23
mikecool
12.11.13
✎
10:01
|
(21) ну вот всю интригу спутал )
|
|||
24
AlexITGround
12.11.13
✎
10:25
|
(22) солидарен
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |