Имя: Пароль:
1C
1С v8
очистить регистр
0 lamme
 
05.10.11
06:31
Есть независимый непериодический регистр сведений.
Хочу его очистить по опр значению:

НаборЗаписей=РегистрыСведений.ИмяРегистра.СоздатьНаборЗаписей();  
НаборЗаписей.Отбор.Сотрудник.Значение    = МойВыбрСуперСотр;
НаборЗаписей.Отбор.Сотрудник.Использование  = Истина;
НаборЗаписей.Очистить();
НаборЗаписей.Записать();

Очищает весь регистр.
Типы - в регистре и в МойВыбрСуперСотр - один - справочникссылка.физлица
1 chelentano
 
05.10.11
06:32
сначала надо бы отбор установить
2 lamme
 
05.10.11
06:33
это разве не установка отбора

НаборЗаписей.Отбор.Сотрудник.Значение    = МойВыбрСуперСотр;
НаборЗаписей.Отбор.Сотрудник.Использование  = Истина;
3 guitar_player
 
05.10.11
06:33
прочитать, очистить, записать
4 chelentano
 
05.10.11
06:33
(2) не проснулся ещё :)
5 lamme
 
05.10.11
06:36
(3)
НаборЗаписей.Отбор.Сотрудник.Значение    = МойВыбрСуперСотр;
НаборЗаписей.Отбор.Сотрудник.Использование  = Истина;

НаборЗаписей.Прочитать();
НаборЗаписей.Очистить();
НаборЗаписей.Записать();

тож не хочет.
все подряд очищает
6 lamme
 
05.10.11
06:37
такое ощущение
что не работает сам отбор

НаборЗаписей.Отбор.Сотрудник.Значение    = МойВыбрСуперСотр;

но тип поля и значения - одинаковы
7 chelentano
 
05.10.11
06:38
(6) НаборЗаписей.Отбор.Сотрудник.Установить(МойВыбрСуперСотр)
8 guitar_player
 
05.10.11
06:39
НаборДанных = РегистрыСведений.ИмяРегистра.СоздатьНаборЗаписей();
НаборДанных.Отбор.ИмяОтбора.Установить(Источник);
       
НаборДанных.Прочитать();
НаборДанных.Очистить();
НаборДанных.Записать();

Проверил, работает. в чем то другом у вас косяк..
9 guitar_player
 
05.10.11
06:39
причем прочитать и не нужно
10 chelentano
 
05.10.11
06:40
(6) а в твоем случае ещё надо добавить ВидСравнения.Равно, по видимому
11 guitar_player
 
05.10.11
06:40
(10) он вроде по умолчанию...
12 chelentano
 
05.10.11
06:41
(9) да, по моему, и Очистить() не надо, вроде бы при записи очищает на автомате
(11) не знаю, в СП не нашёл ничего насчёт по умолчанию
13 guitar_player
 
05.10.11
06:42
(12) +100500, Если не читать, то и очищать нечего - просто записать...
14 lamme
 
05.10.11
06:42
как его ВидСравнения.Равно - записать праивльно ?
всегда пользовался такой структурой:

НаборЗаписей=РегистрыСведений.Проценка.СоздатьНаборЗаписей();  
       НаборЗаписей.Отбор.ТекДок.Значение    = Док.Ссылка;
       НаборЗаписей.Отбор.ТекДок.Использование  = Истина;
       НаборЗаписей.Записать();
и работало (правда , на 8.1)


а тут (8.2)- хоть кол на голове чеши ..
15 guitar_player
 
05.10.11
06:47
НаборЗаписей.Отбор.ТекДок.Установить(Док.Ссылка);
16 lamme
 
05.10.11
07:44
никак не хочет ... чтоб ее ...
как моно очистить независимый непериод регистр по одному из измерений ?
Запросом - выбрать данные - а потом как удалить ?
17 БибиГон
 
05.10.11
07:54
Запросом выбрать все нужные данные, удалить все записи регистра и затем выбранные записи записать обратно.
18 Найч
 
05.10.11
07:54
(17)да гори оно конем =)
19 lamme
 
05.10.11
07:56
(17)
изврат - но тоже вариант ...
чтоб оно ...
20 БибиГон
 
05.10.11
07:58
мне пришлось так сделать :)
21 lamme
 
05.10.11
08:08
все. разобрался. сам дурак.
БЫЛО (весь код - не только удаление):

НаборЗаписей=РегистрыСведений.ИмяРегистра.СоздатьНаборЗаписей();  
НаборЗаписей.Отбор.Сотрудник.Установить(МойВыбрСуперСотр); НаборЗаписей.Записать();

// запись
НаборЗаписей = РегистрыСведений.ИмяРегистра.СоздатьНаборЗаписей();
   для каждого Стр из  ТЗ_П цикл
       НовЗапись = НаборЗаписей.Добавить();  
       НовЗапись.Сотрудник = МойВыбрСуперСотр;
       НовЗапись.Показатель = Стр.Показатель;
       НаборЗаписей.Записать(Истина);
   конеццикла;    


А НАДО БЫЛО:




НаборЗаписей=РегистрыСведений.ИмяРегистра.СоздатьНаборЗаписей();  
НаборЗаписей.Отбор.Сотрудник.Установить(МойВыбрСуперСотр); НаборЗаписей.Записать();

// запись
//ЛИШНЯЯ СТРОКА. НаборЗаписей = РегистрыСведений.ИмяРегистра.СоздатьНаборЗаписей();
   для каждого Стр из  ТЗ_П цикл
       НовЗапись = НаборЗаписей.Добавить();  
       НовЗапись.Сотрудник = МойВыбрСуперСотр;
       НовЗапись.Показатель = Стр.Показатель;
       НаборЗаписей.Записать(Истина);
   конеццикла;    


Убрал лишнюю строку - все заработало
22 lamme
 
05.10.11
08:09
пока это сделал
забыл - зачем вообще все это надо было
23 guitar_player
 
05.10.11
08:45
(21) мозг сломался... в (21) нет того, что в (0) спрашивал. Хорошо, что разобрался