05.02.2007, 11:08
общий
это ответ
Здравствуйте, Centaur!
Если в ПринадлежитГруппе("А")=1: А - это и есть название группы, то читайте Синтаксис-помошник:
<Группа> - выражение со значением группы справочника.
ВЫРАЖЕНИЕ - не наименование а переменная, хранящая ссылку на элемент-группу справочника.
То есть:
Перем гр;
спр.НайтиПоНаименованию("А");
гр = спр.ТекущийЭлемент();
и вот теперь можно писать так:
ПринадлежитГруппе(гр)=1
А вашем случае это условие никогда не выполняется, а в случае сравнения с 0 наоборот - всегда выполняется.
(странно кстати что вообще ошибки не было)
По второму вопросу уже ответили - просто уточнение:
Когда вы делаете выборку - этот объект(выборка) это линейный список элементов.
То есть если вы во время прохода по нему удаляете текущий элемент, то указатель ("курсор") переходит на следующий за ним и соответсвенно на следующей итерации цикла при выполнении метода ПолучитьЭлемент() курсов переходит еще раз на следующий, пропуская тот который шел сразу за удаленным.
Таким образом выходы следующие:
- тот что предложили,
- после каждого удаления снова применять ВыбратьЭлементы() - это сильно замедлит работу
- либо примерно как сделали вы - сначала выбирать в ТЗ, а потом каждый элемент попадающий под условие удаления - находить в справочнике и удалять - тоже долго, но лучше предыдущего.
Впрочем нужно оценивать временные затраты в каждом конкретном случае.