Имя: Пароль:
1C
 
Удалить записи РС (Непериодический,Независимый) за период
0 na1kk
 
06.09.22
11:01
Как удалить записи РС за период?
1 na1kk
 
06.09.22
11:03
Пробовал запросом и потом

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        МЗ=РегистрыСведений.agroПУПФактИзМониторингаДляПЛ.СоздатьМенеджерЗаписи();
        ЗаполнитьЗначенияСвойств(МЗ,ВыборкаДетальныеЗаписи);
        МЗ.Прочитать();
        МЗ.Очистить();
        МЗ.Записать();
        
    КонецЦикла;      

Но на прочитать() ругается на конфикт блокировок
2 RomanYS
 
06.09.22
11:28
(1) ты путаешься. Это у набора записей есть Очистить(), у менеджера записи Удалить(). Читать ни там, ни там не нужно. Очищать набор тоже не нужно, нужно правильно установить отбор и записать
3 na1kk
 
06.09.22
11:40
(2) через набор записей?
4 na1kk
 
06.09.22
11:43
(2) пробовал так, но ничего не выбирает

    Результат=Запрос.Выполнить().Выгрузить();
    НаборЗаписей = РегистрыСведений.agroПУПФактИзМониторингаДляПЛ.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.ДатаНач.ЗначениеС = НачалоПериода;
    НаборЗаписей.Отбор.ДатаКон.ЗначениеПо = КонецПериода;
    НаборЗаписей.Записать();
5 Vaderonk
 
06.09.22
11:50
(4) НаборЗаписей.Отбор.ДатаНач.Установить(НачалоПериода)
6 na1kk
 
06.09.22
11:56
(5) только у меня 2 даты и ВидСравнения можно указывать только равно. а мне нужен период дат.
7 Vaderonk
 
06.09.22
12:01
(6) по названию темы "Непериодический за период" я улыбнулся, но если так все серьезно - можешь через цикл обхода по датам сделать.
8 na1kk
 
06.09.22
12:03
(7) пока это только единственная идея, которая приходит в голову. Подумал, может тут легче вариант подскажут)
9 RomanYS
 
06.09.22
12:05
(8) от ситуации зависит и объема регистра. Может проще весь регистр перечитать одним набором и записать только нужное
10 na1kk
 
06.09.22
12:06
7 GB регистр
11 na1kk
 
06.09.22
12:07
(9) записать ничего не нужно. его порезать нужно.
12 RomanYS
 
06.09.22
12:11
(10) Если порезать нужно больше половины, то (9) может быть вполне оптимально. При условии монопольного доступа
13 Vaderonk
 
06.09.22
12:14
(8) Ну у тебя как я понял в измерения ДатаНач, ДатаКон - а для набора записей (если использовать менеджер записей платформа все равно превратит это в набор) - можно установить только равенство при отборе. И получается если тебе нужно удалить весь текущий год, тебе нужно будет перебором вставлять сначала ДатаНач = 01.01.2022, а потом ДатаКон = 01.01.2022, 02.01.2022 и тд - что уже выглядит бредово.
В (9) совет что можно выбрать в наборе весь регистр, а там уже разбираться в нем
типо такого:
Набор = РегистрыСведений.*.СоздатьНаборЗаписей();
Набор.Прочитать();
    Для Индекс = 1 - Набор.Количество() По 0 Цикл
        Запись = Набор[- Индекс];
        Если Запись.ДатаНач > ДатаНачало И Запись.ДатаКон < ДатаКонца Тогда
            Набор.Удалить(- Индекс);
        КонецЕсли;
    КонецЦикла;
    Набор.Записать();
14 RomanYS
 
06.09.22
12:19
(4) Вообще забавно, по идее после выполнения такого кода регистр должен был очиститься целиком, т.к. Использование для отбора не установлено.
(13) возможно дата в регистре всё-таки одна, иначе бы он уже пустой был)
15 na1kk
 
06.09.22
13:11
всем спасибо!
16 Джинн
 
06.09.22
13:13
(0) Откройте для себя универсальную обработку редактирования регистров сведений на всем известном сайте. Понадобится не один раз в жизни.