13.08.2020, 21:12 [+3 UTC]
в нашей команде: 4 695 чел. | участники онлайн: 1 (рекорд: 21)

:: РЕГИСТРАЦИЯ

задать вопрос

все разделы

правила

новости

участники

доска почёта

форум

блоги

поиск

статистика

наш журнал

наши встречи

наша галерея

отзывы о нас

поддержка

руководство

Версия системы:
7.89 (25.04.2020)
JS-v.1.45 | CSS-v.3.39

Общие новости:
13.04.2020, 00:02

Форум:
02.08.2020, 11:21

Последний вопрос:
13.08.2020, 18:01
Всего: 152776

Последний ответ:
13.08.2020, 20:35
Всего: 260355

Последняя рассылка:
13.08.2020, 01:15

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
07.10.2011, 00:07 »
life
Подробная,грамотная,операт ивная помощь! Огромное спасибо! [вопрос № 184137, ответ № 268376]
03.07.2011, 21:08 »
Ольга Андреева
Спасибо. На Samsunge я сама остановилась, TOSHIBA Satellite L675D посмотрела, вроде бы не плохо, но поищу отзывы. [вопрос № 183741, ответ № 267878]

РАЗДЕЛ [неизвестная рассылка]

[администратор рассылки: [неизвестный]]

Лучшие эксперты в этом разделе


Перейти к консультации №:
 

Консультация онлайн # 74181
Раздел: [неизвестная рассылка]
Автор вопроса: Centaur
Отправлена: 05.02.2007, 10:44
Поступило ответов: 4

7.7
У меня 2 вопроса:
1. Необходимо перенести в документ сотрудников со справочника с таким условием:
Если (Сотрудник.ЭтоГруппа()=0)и(Сотрудник.ПринадлежитГруппе("А")=1) тогда
без этого условия переносит все нормально а с ним название группы не переносит но и сотрудников с группы А тоже. Если поставить (Сотрудник.ПринадлежитГруппе("А")=0) то переносит всех и из других групп тоже. Я так понял что я неправильно описую группу возможно надо по коду или еще как-то.
2. Почему если организовать цикл с пребором строк документа и в нем написать УдалитьСтроку(); то удаляет через 1 строку и половина остается при повторном нажатии удаляются тоже через 1 из оставшихся. Но если поставить условие которому сответствует токо одна строа то все нормально (на 2 или 3 я непробывал) а если болше половины строк то через одну и наплевать на условие. Эту проблему я решил через таблицу значений перенеся все строки туда потом УдалитьСтроки(); и перенося обратно строки которые соответствуют условию. Но хотелось бы узнать в чем проблема?

Состояние: Консультация закрыта

Ответ # 141308 от Starhan

Здравствуйте, Centaur!

Ответ на второй вопрос

Удалять надо с конца,
потому как при удалении с начала
после удаления первой строки меняются индексы всех строк т.е следующая строка с номером 3 (которую нужно допустим удалить) уже идет с номером 2


Консультировал: Starhan
Дата отправки: 05.02.2007, 10:50

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

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

По второму вопросу уже ответили - просто уточнение:
Когда вы делаете выборку - этот объект(выборка) это линейный список элементов.
То есть если вы во время прохода по нему удаляете текущий элемент, то указатель ("курсор") переходит на следующий за ним и соответсвенно на следующей итерации цикла при выполнении метода ПолучитьЭлемент() курсов переходит еще раз на следующий, пропуская тот который шел сразу за удаленным.
Таким образом выходы следующие:
- тот что предложили,
- после каждого удаления снова применять ВыбратьЭлементы() - это сильно замедлит работу
- либо примерно как сделали вы - сначала выбирать в ТЗ, а потом каждый элемент попадающий под условие удаления - находить в справочнике и удалять - тоже долго, но лучше предыдущего.
Впрочем нужно оценивать временные затраты в каждом конкретном случае.


Консультировал: Tek
Дата отправки: 05.02.2007, 11:08

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Ответ # 141313 от Palkin

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

2. Добавлю. Можно попробовать так:
ВыбратьСтроки();
Стр = 1;
Пока ПолучитьСтроку() = 1 Цикл
Если <Ваше условие> = Ложь Тогда
ПолучитьСтрокуПоНомеру(Стр);
УдалитьСтроку();
Иначе
Стр = Стр + 1;
КонецЕсли;
КонецЦикла;


Консультировал: Palkin
Дата отправки: 05.02.2007, 11:14

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Ответ # 141333 от BigHard

Здравствуйте, Centaur!
1. По моему, группы "А" у вас нет а есть переменная А, следовательно (Сотрудник.ЭтоГруппа()=0)и(Сотрудник.ПринадлежитГруппе(А)=1)
2. Вначале удаляется строка №1. Строка удалена, следовательно появляется другая строка №1, а цикл то пошел дальше, вот и все, делайте выводы...


Консультировал: BigHard
Дата отправки: 05.02.2007, 12:26

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.16667 сек.

© 2001-2020, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.89 от 25.04.2020
Версия JS: 1.45 | Версия CSS: 3.39