|
Как точечно почистить мусор в таблице Изменения регистра сведений? | ☑ | ||
---|---|---|---|---|
0
palpetrovich
29.10.21
✎
10:31
|
Такая вот ситуация:
ВЫБРАТЬ ПервоначальныеСведения.ОсновноеСредство ИЗ РегистрСведений.ПервоначальныеСведения КАК ПервоначальныеСведения ГДЕ ПервоначальныеСведения.ОсновноеСредство = &ОсновноеСредство // результат пустой ; ВЫБРАТЬ ПервоначальныеСведенияИзменения.ОсновноеСредство ИЗ РегистрСведений.ПервоначальныеСведения.Изменения КАК ПервоначальныеСведенияИзменения ГДЕ ПервоначальныеСведенияИзменения.ОсновноеСредство = &ОсновноеСредство // результат - с десяток записей Таких "Основных Средств" в РегистрСведений.ПервоначальныеСведения.Изменения - с десяток Можно эти изменения как-то зачистить не зачищая при этом другие, нормальные, если можно так выразится, изменения? |
|||
1
Ёпрст
29.10.21
✎
10:33
|
(29) можно чистить всё что угодно. Отбери все записи, создай набор записей, установи отбор по значениям из запроса, прочитай набор, удали регистрацию для узла, подсунув узел и этот набор
|
|||
2
palpetrovich
29.10.21
✎
10:56
|
(1) а как отобрать-то? если " результат пустой " ?
|
|||
3
palpetrovich
29.10.21
✎
11:01
|
может так?
НаборЗаписей.Отбор.ОсновноеСредство.Установить(Неопределено, Истина); |
|||
4
palpetrovich
29.10.21
✎
11:05
|
+ (3) не, не получилось. не ругнулось но и ничего не изменилось
|
|||
5
Галахад
гуру
29.10.21
✎
11:06
|
Хм. А присоединить слева к таблице изменений таблицу регистра где ПервоначальныеСведения.ОсновноеСредство есть null
|
|||
6
palpetrovich
29.10.21
✎
11:06
|
+(4) на всякий случай - делал так
НаборЗаписей = РегистрыСведений.ПервоначальныеСведения.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.ОсновноеСредство.Установить(Неопределено, Истина); НаборЗаписей.Прочитать(); ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена, НаборЗаписей); |
|||
7
palpetrovich
29.10.21
✎
11:09
|
(5) так и находил этот мусор собсвенно
ВЫБРАТЬ РАЗЛИЧНЫЕ ПервоначальныеСведенияИзменения.ОсновноеСредство КАК ОсновноеСредствоИзменения, ПервоначальныеСведения.ОсновноеСредство КАК ОсновноеСредство ИЗ РегистрСведений.ПервоначальныеСведения.Изменения КАК ПервоначальныеСведенияИзменения ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПервоначальныеСведения КАК ПервоначальныеСведения ПО ПервоначальныеСведенияИзменения.ОсновноеСредство = ПервоначальныеСведения.ОсновноеСредство ГДЕ ПервоначальныеСведения.ОсновноеСредство ЕСТЬ NULL // рез: ОсновноеСредствоИзменения - есть, ОсновноеСредство - пусто |
|||
8
palpetrovich
29.10.21
✎
11:15
|
попробовал так
ВЫБРАТЬ РАЗЛИЧНЫЕ ПервоначальныеСведенияИзменения.ОсновноеСредство КАК ОсновноеСредство ИЗ РегистрСведений.ПервоначальныеСведения.Изменения КАК ПервоначальныеСведенияИзменения ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПервоначальныеСведения КАК ПервоначальныеСведения ПО ПервоначальныеСведенияИзменения.ОсновноеСредство = ПервоначальныеСведения.ОсновноеСредство ГДЕ ПервоначальныеСведения.ОсновноеСредство ЕСТЬ NULL РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); Пока Выборка.Следующий() Цикл НаборЗаписей = РегистрыСведений.ПервоначальныеСведения.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.ОсновноеСредство.Установить(Выборка.ОсновноеСредство, Истина); НаборЗаписей.Прочитать(); ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена, НаборЗаписей); КонецЦикла; результат ожидаемо нулевой :( |
|||
9
Галахад
гуру
29.10.21
✎
11:24
|
А забэкапить нужные и убить всё? А потом разбэкапить?
|
|||
10
palpetrovich
29.10.21
✎
11:28
|
(9) идет постоянный обмен с другой базой, потому и хотелось-бы "точечно"
если ничего не придумаем - то при первой остановке на внедрение доработок - так и будет :) |
|||
11
Обработка
29.10.21
✎
11:33
|
Буквально на днях чистил изменения РС и при этом удялял сами записи тоже.
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | СинхронизацияКассаУпрощенная.Ссылка как Узел |ИЗ | ПланОбмена.СинхронизацияКассаУпрощенная КАК СинхронизацияКассаУпрощенная |ГДЕ | Не СинхронизацияКассаУпрощенная.Код = &Код"; Запрос.УстановитьПараметр("Код", "РО"); ТаблицаЗначений = Запрос.Выполнить().Выгрузить(); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | РС.Период, | РС.ЗаказНаПеремещение |ИЗ | РегистрСведений.СтатусыДоставкиТоваров КАК РС |ГДЕ | РС.Период <= &Период"; Запрос.УстановитьПараметр("Период",ДатаДо); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл ДатаРаб = Выборка.Период; Пока Истина Цикл Попытка //На случай блокировки. НаборЗаписей = РегистрыСведений.СтатусыДоставкиТоваров.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Период.Установить(ДатаРаб); НаборЗаписей.Отбор.ЗаказНаПеремещение.Установить(Выборка.ЗаказНаПеремещение); // НаборЗаписей.Отбор.Период.Использование = Истина; НаборЗаписей.Записать(ИСТИНА); Для каждого стр из ТаблицаЗначений Цикл ПланыОбмена.УдалитьРегистрациюИзменений(стр.Узел,НаборЗаписей); КонецЦикла; Прервать; Исключение //Можно добавить прерывание по количеству попыток КонецПопытки; КонецЦикла; //Прервать; КонецЦикла; |
|||
12
Обработка
29.10.21
✎
11:35
|
Вот еще:
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | СтатусыДоставкиТоваровИзменения.Период, | СтатусыДоставкиТоваровИзменения.Узел, | СтатусыДоставкиТоваровИзменения.ЗаказНаПеремещение |ИЗ | РегистрСведений.СтатусыДоставкиТоваров.Изменения КАК СтатусыДоставкиТоваровИзменения |ГДЕ | СтатусыДоставкиТоваровИзменения.Период < &Период |УПОРЯДОЧИТЬ ПО |Период, |Узел"; Запрос.УстановитьПараметр("Период", ДатаДо); ТЗ = Запрос.Выполнить().Выгрузить(); Для каждого стр из ТЗ Цикл НаборЗаписей = РегистрыСведений.СтатусыДоставкиТоваров.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Период.Установить(стр.Период); НаборЗаписей.Отбор.ЗаказНаПеремещение.Установить(стр.ЗаказНаПеремещение); ПланыОбмена.УдалитьРегистрациюИзменений(стр.Узел,НаборЗаписей); КонецЦикла; |
|||
13
Галахад
гуру
29.10.21
✎
11:37
|
(10) Ну, как вариант.
Создать набор. Удалить в таблице изменений. Удалить набор. Удалить удаление в таблице изменений. :-) |
|||
14
Ёпрст
29.10.21
✎
11:50
|
(8) Какие измерения есть в РС ? Он периодический ?
пихать в набор надо период, если последнее |
|||
15
palpetrovich
29.10.21
✎
11:51
|
(13) т.е. создать отсутствующую запись в РС по данным Изменений, а потом все грохнуть... вариант :)
|
|||
16
Ёпрст
29.10.21
✎
11:52
|
+
ВЫБРАТЬ РАЗЛИЧНЫЕ ПервоначальныеСведенияИзменения.ОсновноеСредство КАК ОсновноеСредство, ПервоначальныеСведенияИзменения.Узел как Узел ИЗ РегистрСведений.ПервоначальныеСведения.Изменения КАК ПервоначальныеСведенияИзменения ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПервоначальныеСведения КАК ПервоначальныеСведения ПО ПервоначальныеСведенияИзменения.ОсновноеСредство = ПервоначальныеСведения.ОсновноеСредство ГДЕ ПервоначальныеСведения.ОсновноеСредство ЕСТЬ NULL РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); Пока Выборка.Следующий() Цикл НаборЗаписей = РегистрыСведений.ПервоначальныеСведения.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.ОсновноеСредство.Установить(Выборка.ОсновноеСредство); НаборЗаписей.Прочитать(); ПланыОбмена.УдалитьРегистрациюИзменений(Выборка.Узел, НаборЗаписей); КонецЦикла; |
|||
17
Ёпрст
29.10.21
✎
11:53
|
ну и период воткнуть/регистратор, если периодический/подчинен регистратору
|
|||
18
Ёпрст
29.10.21
✎
11:53
|
(15) не надо этого денлать, всё и так оработает
|
|||
19
Ёпрст
29.10.21
✎
11:54
|
покажи картинку с конструктора запроса для таблички изменений этого регистра (все поля) и картинку Рс, какие там измерения есть
|
|||
20
youalex
29.10.21
✎
11:56
|
(14) Если основной отбор по периоду точнее
|
|||
21
Ёпрст
29.10.21
✎
12:04
|
Короче, в отбор набора пихай все поля с таблички изменений
|
|||
22
palpetrovich
29.10.21
✎
12:04
|
(19) измерение одно, рс непереодический и незавсимый
(16) не сильно отличается от (8) - разве нет? |
|||
23
Ёпрст
29.10.21
✎
12:09
|
(22) хз для какого узла ты в (8) пытался удалять регистрацию
|
|||
24
Ёпрст
29.10.21
✎
12:13
|
Проверь (16), это 150% рабочий код
|
|||
25
palpetrovich
29.10.21
✎
12:18
|
(24) насчет узла - понял, но в принципе - такие записи надо грохнуть независимо от узла
спасибо, проверю чуть позже. конфигуратор отобрали злые дядьки :) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |