Имя: Пароль:
1C
 
Регистр сведение. Как получить запись по реквизиту?
0 VanoZZZ
 
21.08.07
13:19
Как?
1 ABCD
 
21.08.07
13:25
Запись регистра не имеет объектной сущности, следовательно ее нельзя "ПОЛУЧИТЬ".
скажи конкретно что тебе надо?
2 VanoZZZ
 
21.08.07
13:26
Мне нужно получить запись регистра сведений, по определенному реквизиту, с целью ее удаления
3 ABCD
 
21.08.07
13:29
Для этого
1)создай набор записей.
2) установи отбор по значениям измерений, равным значениям измерений в удаляемой записи.
3) прочитай этот набор записей.
4) очисти его
5) и запиши уже пустой набор записей
4 Регистратор
 
21.08.07
13:32
запросом получить, и не очевидно что будет одна запись, надо расчитывать что их может быть любое количество
5 VanoZZZ
 
21.08.07
13:36
(3) не очень конечно быстрый способ, но я что то другого пока не нашел
(4) запросом можно получить данные из регистра, а не сами записи, следовательно не удалить
6 уродина
 
21.08.07
13:39
(5) создать набор, потом - отбор, потом просто записать пустой. записи с данным отбором - удалятся.
7 VanoZZZ
 
21.08.07
13:45
(6) В отборе набора записей нельзя использовать реквизиты регистра, только измерения
НаборРегистраСведений.отбор[измерение].Установить(ЗначениеОтбора)

Мне не понятно, почему нет методов для поиска по реквизиту регистра
8 ABCD
 
21.08.07
13:57
>>Мне не понятно, почему нет методов для поиска по реквизиту регистра
Да потому что уникальность записей определется набором измерений + регистратор(если таковой определен)
9 уродина
 
21.08.07
13:59
(7) по реквизиту - только запросом... реквизит - это как бы просто для справки информация...
10 уродина
 
21.08.07
14:00
вы можете тогда выбрать запросом по реквизиту, определить регистраторы и уже отбор сделать по регистратору... а потом перебрать записи и удалить те, которые надо удалить. долгая история.
11 den_valley
 
04.09.07
11:31
Возникла ситуация, выкрутился следующим образом:
   Запрос = Новый Запрос;
   Запрос.Текст =
   "ВЫБРАТЬ
   |    *
   |ИЗ
   |    РегистрСведений.СкидкиКонтрагентов КАК СкидкиКонтрагентов
   |ГДЕ
   |    СкидкиКонтрагентов.Приказ = &Приказ";
   Запрос.УстановитьПараметр("Приказ", ЭтотОбъект.Ссылка);
   Запрос.Выполнить().Выгрузить().ВыбратьСтроку();
   Результат = Запрос.Выполнить();
   Выборка = Результат.Выбрать();
   Запись = РегистрыСведений.СкидкиКонтрагентов.СоздатьМенеджерЗаписи();
   
   Пока Выборка.Следующий() Цикл
       Запись.Период = Выборка.Период;
       Запись.Контрагент = Выборка.Контрагент;
       Запись.Прочитать();
       Если Запись.Выбран() Тогда
           Сообщить(Строка(Запись.Период) + " " + Строка(Запись.Контрагент) + " " + Строка(Запись.Приказ)+ " удалена");
           Запись.Удалить();
       КонецЕсли;
   КонецЦикла;
Регистр периодический, одно измерение контрагент, приказ соответственно - реквизит