Имя: Пароль:
1C
1C 7.7
v7: Как правильно поставить отметку на удаление элемента в справочнике
0 Izuchayu1C7
 
28.04.15
08:48
Нужно удалить 10 элементов с Наименованием Новый555 из справочника

Пишу простую процедуру

Процедура ПриОткрытии()
СправочникСотрудники=СоздатьОбъект("Справочник.Сотрудники");    
ФлагПоиска=0;                                              
Режим=0;
Пока СправочникСотрудники.НайтиПоНаименованию("Новый",Режим,ФлагПоиска)=1
Цикл СправочникСотрудники.Удалить(0);    
КонецЦикла;
КонецПроцедуры

В результате 1с в режиме предприятия виснет намертво при открытии Справочник Сотрудники.
Что не так? Как сделать правильно?
1 фобка
 
28.04.15
08:58
На одной ссылке стоишь все время. Делай выборку
2 Дотошный
 
28.04.15
08:59
(0) Оно не висит. Оно постоянно находит один и тот же (первый из) элемент. По Esc - просит подтвердить прерывание обработки.
3 Дотошный
 
28.04.15
09:12
(0) Если любишь риск, то напиши в своей конструкции
СправочникСотрудники.Удалить();

Сработает ;)
4 User_Agronom
 
28.04.15
09:15
(0) Бесконечный цикл. Вот истинное лицо программиста 1С. От статыщ и не знает о теории циклов ;(
5 Izuchayu1C7
 
28.04.15
09:17
(1)
СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.ВыбратьЭлементы();
Пока СпрСотр.ПолучитьЭлемент()=1
Цикл
    Если СпрСотр.Наименование = "Новый" Тогда
    СпрСотр.Удаление(0);
    КонецЕсли;
КонецЦикла;

Находит первый попавшийся, помечает и прерывает цикл
6 User_Agronom
 
28.04.15
09:18
(5) Ещё и слово "выборка" не понял. Жуть.
7 Herby
 
28.04.15
09:21
(5) ну уж лучше тогда запрос написать по условию.
А так перелапачивать весь справочник слишком долго, ну если конечно в справочнике не 10 сотрудников...
8 Масянька
 
28.04.15
09:21
Каждый программист должен в своей жизни сделать 2 вещи: написать бесконечный цикл и вирус.
9 Дотошный
 
28.04.15
09:23
(5) И таки да - нет такого слова "Удаление" в русском языке ;)
(7) >>долго>> проверял ? ;)
10 User_Agronom
 
28.04.15
09:23
Запрос = новый Запрос;
Запрос.Текст = "выбрать ссылка из Справочник.Сотрудники где Наименование = ""Новый""";
РезЗапроса = Запрос.Выполнить();
Выборка = Запрос.Выбрать();
Пока Выборка.Следующий() цикл
ОбъектСпр = Выборка.Ссылка.ПолучитьОбъект();
ОбъектСпр.УстановитьПометкуУдаления(Истина);
КонецЦикла;
11 Дотошный
 
28.04.15
09:25
(10) Товарищ, здесь "клюшками" торгуют ))
12 User_Agronom
 
28.04.15
09:27
(11) Тогда pardon, но нигде это не написано.
Актуальность поста (4), кстати, не изменилась.
13 Масянька
 
28.04.15
09:33
(12) Не "пардон" :) Секцию читать надо.
14 Дотошный
 
28.04.15
09:40
Попробуй вместо вот этого:
СпрСотр.Наименование = "Новый"
написать
Лев(СпрСотр.Наименование,5) = "Новый"

Должно взлететь.
И замени слово "Удаление" на единственно правильное "Удалить" (0 можешь оставить)
))
15 Дотошный
 
28.04.15
09:40
Предыдущее к (5), если что
16 Izuchayu1C7
 
28.04.15
10:25
(15) Дотошный! ты лучший!
СПАСИБО то что нужно!