Имя: Пароль:
1C
1С v8
Как изменить запись в регистре сведений?
0 Pentosh
 
26.07.14
15:58
Здравствуйте, великие и могучие умы!

Необходимо изменить записи в регистре, но почему то, не удаляет прошлую запись, в следствии чего, пишет ошибку что такая запись уже имеется.
Регистр периодический (в секундах), не подчинен регистратору, есть только ресурсы.
Явного ключа в данных нет, по этому сделал периодическим и стараюсь сделать отбор по периоду, что и привело меня в тупик.

НаборЗаписей = РегистрыСведений.тдПротоколПДКК.СоздатьНаборЗаписей();
         Для каждого стр Из ТабЧасть Цикл
        НаборЗаписей.Отбор.Период.Установить(стр.РСПериод);
        НаборЗаписей.Прочитать();
    
        НовЗапись = НаборЗаписей.Добавить();
        НовЗапись.Вопрос             = стр.Вопрос;
        Новзапись.Решение             = стр.Решение;
        Новзапись.Тема                 = стр.Тема;
        НовЗапись.ДатаВнесения         = стр.ДатаВнесения;
        НовЗапись.ДатаВыполнения     = стр.ДатаВыполнения;
        НовЗапись.Срок                 = стр.Срок;
        НовЗапись.Ответственный     = стр.Ответственный;
        НовЗапись.Примечание         = стр.Примечание;
        НовЗапись.Статус             = стр.УстановитьСтатус;
        НовЗапись.Период             = стр.РСПериод;
        ЗаполнитьЗначенияСвойств(НовЗапись, стр);
        НаборЗаписей.Записать();
      
    КонецЦикла;

Подсобите неокрепшему уму.

P.S. Поиск юзайл, но решения либо не нашел, либо не срабатывало.
1 zippygrill
 
26.07.14
16:01
После Прочитать()
Если НаборЗаписей.Количество()>0 Тогда
Для Каждого Запись Из НаборЗаписей Цикл
//меняешь существующую запись
КОнецЦикла;
Иначе
//Добавляешь запись
КонецЕсли;
2 Pentosh
 
26.07.14
16:05
(1) Спасибо, но тут дело в другом, какой код написать, чтобы заменило, ибо когда я использую то что я написал в 0м посте, то программа это расценивает как добавление второй записи, не меняя нужную.
3 alle68
 
26.07.14
16:10
Лишнее: "НаборЗаписей.Прочитать();"
4 Pentosh
 
26.07.14
16:14
(3) Спасибо за ответ. Но, в таком случае, пишет сообщение о том, что запись уже существует, либо если менять период  - за границей отбора, следовательно записи не происходит.
5 alle68
 
26.07.14
16:22
Не разглядел, где НЗ создаётся.
Заменить "Прочитать" на "Очистить".
6 GreatOne
 
26.07.14
16:23
если ты хочешь заменить запись, зачем создаешь новую?
7 GreatOne
 
26.07.14
16:23
(5) зачем очищать?
8 GreatOne
 
26.07.14
16:26
НаборЗаписей = РегистрыСведений.тдПротоколПДКК.СоздатьНаборЗаписей();
         Для каждого стр Из ТабЧасть Цикл
        НаборЗаписей.Отбор.Период.Установить(стр.РСПериод);
        НаборЗаписей.Прочитать();
    
Если НаборЗаписей.Количество() <> 0  Тогда
НаборЗаписей[0]. Вопрос = стр.Вопрос;
НаборЗаписей.Записать();
Иначе
//тут уже создаешь новую запись
НовЗапись = НаборЗаписей.Добавить();
КонецЕсли;      

    КонецЦикла;
9 GreatOne
 
26.07.14
16:29
кстати в (1) все написано
10 m-serg74
 
26.07.14
16:29
(0) что за нах есть стр.РСПериод?
11 alle68
 
26.07.14
16:29
(7) Встречный вопрос: зачем читать?
12 GreatOne
 
26.07.14
16:30
(2) "ибо когда я использую то что я написал в 0м посте, то программа это расценивает как добавление второй записи, не меняя нужную." Продолжай использовать свой неработающий код. Возможно с 40 раза он заработает.
13 m-serg74
 
26.07.14
16:30
+(10)  с учетом что  (0) написано:
"не подчинен регистратору, есть только ресурсы.
Явного ключа в данных нет"
14 GreatOne
 
26.07.14
16:31
(11) РегистрСведенийНаборЗаписей.<Имя регистра сведений> (InformationRegisterRecordSet.<Имя регистра сведений>)
Прочитать (Read)
Синтаксис:

Прочитать()
Описание:

Считывает записи из базы данных по установленному отбору.
15 m-serg74
 
26.07.14
16:31
(11), (12) - война разумов?
16 m-serg74
 
26.07.14
16:32
(14) Период в качестве Отбора и будучи единственным очень ох.уительный отбор
17 GreatOne
 
26.07.14
16:33
(16) да, действительно. Надо вообще всю обработку за ТС сделать
18 m-serg74
 
26.07.14
16:34
(17) надо просто ткунуть ТСа что подход в (0) в корне неверный и отправить читать мануалы)))
19 GreatOne
 
26.07.14
16:35
(18) ему в (1) ткнули. Но не смотря на это, код из (0) все равно не работает!
20 m-serg74
 
26.07.14
16:36
ваще не понимаю если записи беруться из какой то ТЧ отчего не сделать эту ТЧ в документе и не сделать РС Регистраторо-зависимым :)
21 m-serg74
 
26.07.14
16:37
(19) в (1) так же тупанули, если нет измерений то за один период(секунда) будет одна запись, вторую просто механика РС не даст записать
22 alle68
 
26.07.14
16:37
(14) Зачем тратить время на чтение, если в ЛЮБОМ случае набор будет записан?
23 КонецЦикла
 
26.07.14
16:37
(0) Сделай явный ключ и убери периодичность, зачем она упала?
24 КонецЦикла
 
26.07.14
16:38
... если нет регистратора и он не предвидится
25 m-serg74
 
26.07.14
16:38
(23) ваще не понятно зачем регистр, если работать с ним полноценно не желают... категорически
26 m-serg74
 
26.07.14
16:41
тупо писать в справочник с одним из реквизитов - Период
27 m-serg74
 
26.07.14
16:43
даже с одним единственным реквизитом Период, а все из (0) в ТабЧасть справочника
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой