|
Удалить записи РС (Непериодический,Независимый) за период | ☑ | ||
---|---|---|---|---|
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) Откройте для себя универсальную обработку редактирования регистров сведений на всем известном сайте. Понадобится не один раз в жизни.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |