|
Проблема в цикле | ☑ | ||
---|---|---|---|---|
0
Nenaviwu1c20
15.08.12
✎
14:27
|
Здраствуйте!Возникла проблема !!!Всю жизнь использовал детский кодик "Для каждого из"
Проблема возникла в документе Зарплата к выплате.Хочу проверить ТЗ на уволенных используя стандартный код для каждого из.При этом он опускает строку с конкретным ФизЛицом какой бы у нее индекс не был.При этом по итератору найти могу без проблем.Проблема в том что КАК!!!)))это же не логично чтоб пропускать конкретную строку.Могу даже кодик проверки предоставить. |
|||
1
Nenaviwu1c20
15.08.12
✎
14:28
|
Ап
|
|||
2
rbcvg
15.08.12
✎
14:28
|
"Могу даже кодик проверки предоставить" - будьте любезны.
|
|||
3
Fragster
гуру
15.08.12
✎
14:29
|
строки удаляешь небось в том же цикле? два подряд уволенных?
|
|||
4
Fragster
гуру
15.08.12
✎
14:29
|
(2) это лишнее
|
|||
5
Nenaviwu1c20
15.08.12
✎
14:30
|
Процедура ПроверитьНаУвольнениеСотрудника(Таблица)
Индекс = 0; для каждого стр из Таблица цикл Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПериодыРаботыРаботниковОрганизацийПоОсновномуМестуРаботы.ДатаОкончания КАК ДатаКонецРаботнику |ИЗ | РегистрСведений.ПериодыРаботыРаботниковОрганизацийПоОсновномуМестуРаботы КАК ПериодыРаботыРаботниковОрганизацийПоОсновномуМестуРаботы |ГДЕ | ТИПЗНАЧЕНИЯ(ПериодыРаботыРаботниковОрганизацийПоОсновномуМестуРаботы.Регистратор) = ТИПЗНАЧЕНИЯ(ЗНАЧЕНИЕ(Документ.УвольнениеИзОрганизаций.ПустаяСсылка)) | И ПериодыРаботыРаботниковОрганизацийПоОсновномуМестуРаботы.Физлицо = &ФизЛицо"; запрос.УстановитьПараметр("ФизЛицо",стр.Физлицо); Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Если ВыборкаДетальныеЗаписи.Следующий() Тогда Если ВыборкаДетальныеЗаписи.ДатаКонецРаботнику<= НачалоМесяца(ПериодРегистрации) Тогда таблица.Удалить(Индекс) ; ИначеЕсли ВыборкаДетальныеЗаписи.ДатаКонецРаботнику> НачалоМесяца(ПериодРегистрации) и ВыборкаДетальныеЗаписи.ДатаКонецРаботнику<= КонецМесяца(ПериодРегистрации) Тогда Сообщить("Работник "+ стр.Физлицо + " уволен в этом месяце.Требуется пересчет его аванса вручную"); стр.Сумма = 0; стр.Начислено = 0; КонецЕсли; КонецЕсли; индекс = Индекс + 1; КонецЦикла; //КонецЦикла; КонецПроцедуры |
|||
6
Nenaviwu1c20
15.08.12
✎
14:31
|
Клиент так заказал
|
|||
7
Fragster
гуру
15.08.12
✎
14:31
|
автору предлагаю воспользоваться выгрузкой в ТЗ, левым соединением в запросе с отбором, загрузкой результата в ТЧ без циклов вообще, да и по скорости быстрее сильно
|
|||
8
Nenaviwu1c20
15.08.12
✎
14:31
|
и удалить я мог просто по стр но выбрал изврщенческий способ (извените))))
|
|||
9
Fragster
гуру
15.08.12
✎
14:31
|
(6) заказал удалять строки в цикле?
|
|||
10
Nenaviwu1c20
15.08.12
✎
14:32
|
да согласен на сто процентов с вами просто он вообще не находит стр с определенной ссылкой.Это меня больше беспокоит
|
|||
11
forforumandspam
15.08.12
✎
14:32
|
Здраствуйте! Возникла проблемка !!! Всю жизнь использовал детский кодик "Для каждого из"
Проблемка возникла в документике "Зарплатка к выплате". Хочу проверить ТЗ на уволенных используя стандартненький кодик "для каждого и".... |
|||
12
Nenaviwu1c20
15.08.12
✎
14:34
|
(11)?
|
|||
13
Nenaviwu1c20
15.08.12
✎
14:35
|
Думаю (7) самый оптимальный вариант
|
|||
14
Nenaviwu1c20
15.08.12
✎
14:35
|
Просто я так и не понял как можно когда строк 6 выводить 5!?
|
|||
15
SanGvin
15.08.12
✎
14:38
|
(5) Вы удаляете в цикле. В этом то и проблема. Так делать низзя!
|
|||
16
Fragster
гуру
15.08.12
✎
14:55
|
(15) можно, просто следует понимать, что надо делать так, если очень хочется юзать Для каждого:
Для каждого Стр Из ТЗ Цикл Пока Удалять Цикл ТЗ.Удалить(Стр) КонецЦикла; КонецЦикла; |
|||
17
Fragster
гуру
15.08.12
✎
14:55
|
Ну и проверку на выход за границу ТЗ
|
|||
18
Fragster
гуру
15.08.12
✎
15:00
|
кстати, я фигню написал
|
|||
19
IBTM
15.08.12
✎
15:33
|
(0) в этом документе есть типовая кнопа "удальть пустые", присмотрись к ней внимательней...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |