Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 08:04

Обход элементов табл части документа

Автор metalstorm_tlt, 10 сен 2010, 18:12

0 Пользователей и 1 гость просматривают эту тему.

metalstorm_tlt

Процедура ОбновлениеСпискаДопУслуг()
    //удаление недействующих элементов
   Спр=Справочники.ВидыДопУслуг.Выбрать();
   Для Каждого СтрокаДопУслуги Из ДопУслуги Цикл
      ЭлементНайден=Ложь;
      Пока Спр.Следующий() Цикл
         Если Спр.Наименование=СтрокаДопУслуги.Услуга И
         Спр.ОсновнаяУслуга=ЭлементыФормы.Услуга.Значение Тогда
            ЭлементНайден=Истина;
            Прервать;
         КонецЕсли;
      КонецЦикла; //обошли справочник
      Если ЭлементНайден=Ложь Тогда
         ДопУслуги.Удалить(СтрокаДопУслуги);
      КонецЕсли;
   КонецЦикла;
   //добавление новых
   Спр=Справочники.ВидыДопУслуг.Выбрать();
   Пока Спр.Следующий() Цикл
      Если Спр.ОсновнаяУслуга=ЭлементыФормы.Услуга.Значение И
      ДопУслуги.Найти(Спр.Наименование,"Услуга")=Неопределено Тогда
         НоваяСтрока=ДопУслуги.Добавить();
         НоваяСтрока.Услуга=Спр.Наименование;
      КонецЕсли;
   КонецЦикла;
КонецПроцедуры

Почему то цикл: Для Каждого СтрокаДопУслуги.... делает меньшее число итераций чем должен...то есть в табличной части документа остаются неудаленные строки. Помогите пожалуйста как исправить эту проблему. Буду очень благодарен :ehtwj:

metalstorm_tlt


Myti

1. Пока Спр.Следующий() Цикл - это нужно заменить на запрос,так быстрее и проще.
2. Меньшее количество итераций происходит из-за удаления строк.ДопУслуги.Удалить(СтрокаДопУслуги); - после этого индекс строки нужно возвращать к начальному значению, тогда пропусков перебора строк не будет.
Один из вариантов решения: Можно скопитьвать ТЧ в ТЗ, делать выборку в ТЗ а при соблюдении всех условий добавлять новую строчку в ТЧ. ))))

metalstorm_tlt

после этого индекс строки нужно возвращать к начальному значению
>>>
как это сделать скажи пожалуста?

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск