|
очистка регистра сведений за определённый период Ø (Волшебник 30.05.2017 12:53) | ☑ | ||
---|---|---|---|---|
0
Олеся999
30.05.17
✎
12:15
|
подскажите пожалуйста как очистить регистр сведений за определенный период
ДатаОт и ДатаДо ? НаборЗаписей = РегистрыСведений.КоллизииПриОбмене.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.ДатаКоллизии.Установить(ДатаОт ); НаборЗаписей.Отбор.ДатаКоллизии.Установить(ДатаДо); НаборЗаписей.Записать(); |
|||
1
Ц_У
30.05.17
✎
12:17
|
"Шэф, усе пропало!" (с)
|
|||
2
Волшебник
модератор
30.05.17
✎
12:17
|
так нельзя
|
|||
3
1dvd
30.05.17
✎
12:18
|
||||
4
Олеся999
30.05.17
✎
12:18
|
(2) ну понятно что так не работает и это не правильно
|
|||
5
Волшебник
модератор
30.05.17
✎
12:18
|
Нужно запросом выбрать данные, затем вы цикле по выборке из запроса устанавливать МенеджерЗаписи и вызывать Удалить()
|
|||
6
Timon1405
30.05.17
✎
12:19
|
РегистрСведенийНаборЗаписей.<Имя регистра сведений>.Загрузить (InformationRegisterRecordSet.<Имя регистра сведений>.Load)
РегистрСведенийНаборЗаписей.<Имя регистра сведений> (InformationRegisterRecordSet.<Имя регистра сведений>) Загрузить (Load) Синтаксис: Загрузить(<ТаблицаЗначений>) Параметры: <ТаблицаЗначений> (обязательный) Тип: ТаблицаЗначений. Таблица значений, по которой производится заполнение набора записей. Описание: Загружает набор записей значениями из переданной таблицы значений. При этом все прежние записи набора удаляются. Заполняются значения доступных для записи свойств записей регистра сведений, имена которых совпали c именами колонок таблицы значений. Доступность: Сервер, толстый клиент, внешнее соединение. Пример: Рег = РегистрыСведений.КурсыВалют; НаборКурсов = Рег.СоздатьНаборЗаписей(); Таб = Новый ТаблицаЗначений; // формирование таблицы значений // ... НаборКурсов.Загрузить(Таб); |
|||
7
Олеся999
30.05.17
✎
12:20
|
(5) без циклов , а то зависает
|
|||
8
1dvd
30.05.17
✎
12:20
|
не поможет (3). Там отбор только на равенство
|
|||
9
Heckfy
30.05.17
✎
12:21
|
Дергай запросом нужные записи.
Далее Пока РезультатЗапроса.Следующий Цикл МЗ=РегистрыСведений.ТвойРегистр.СоздатьМенеджерЗаписи(); ЗаполнитьЗначенияСвойств(МЗ,РезультатЗапроса); МЗ.Удалить(); КонецЦикла; Как то так...... |
|||
10
1dvd
30.05.17
✎
12:21
|
(7) не получится без циклов.
ДатаКоллизии - Дата или ДатаИВремя? |
|||
11
Волшебник
модератор
30.05.17
✎
12:21
|
(7) Чтобы не зависало, добавь ОбработкаПрерыванияПользователя внутрь цикла
|
|||
12
Timon1405
30.05.17
✎
12:22
|
(5) (9) да что там у менеджера медом намазано что ли?
https://its.1c.ru/db/metod8dev#content:2722:hdoc:_top |
|||
13
Heckfy
30.05.17
✎
12:24
|
(12) Ага, намазано. был у меня случай... Программисту поставили задачу почистить огромный (~100 млн записей) периодический регистр сведений. Ну он и наваял:
НЗ=РегистрыСведений.Регистр.СоздатьНаборЗаписей(); НЗ.Записать(); Стоит объяснять, к чему это привело? |
|||
14
Олеся999
30.05.17
✎
12:24
|
А без циклов то не как ?)
|
|||
15
Олеся999
30.05.17
✎
12:25
|
(13) А где ДатаОт и ДатаДо ?
|
|||
16
Волшебник
модератор
30.05.17
✎
12:25
|
(13) удалил весь регистр
|
|||
17
Волшебник
модератор
30.05.17
✎
12:26
|
(14) Программирование — это фантазия плюс умение крутить циклы.
|
|||
18
Timon1405
30.05.17
✎
12:26
|
(14)создать набор
циклом сделать таблицу загрузить из таблицы в набор очистить набор ничего сложного. если опасаетесь случаев как в (15) очищайте порциями |
|||
19
1dvd
30.05.17
✎
12:26
|
(15) ДатаКоллизии содержит время или нет?
|
|||
20
Heckfy
30.05.17
✎
12:27
|
(16) Ну, это и надо было сделать. Тут фишка в другом. :)
|
|||
21
Timon1405
30.05.17
✎
12:28
|
(16) ага, заблокировал сканом и регистр и его индексы. не надо давать таких заданий программистам
|
|||
22
dezss
30.05.17
✎
12:28
|
(20) ну так сразу фишку и выдавай...чего держишь драматическую паузу?
|
|||
23
Олеся999
30.05.17
✎
12:31
|
(19) содержит
|
|||
24
alkorolev
30.05.17
✎
12:31
|
(0) если не любите циклы, то получаете запросом записи регистра, которые НЕОБХОДИМО СОХРАНИТЬ, а дальше просто:
НаборЗаписей = РегистрыСведений.КоллизииПриОбмене.СоздатьНаборЗаписей(); НаборЗаписей.Загрузить(Запрос.Выполнить().Выгрузить()); НаборЗаписей.Записать(); |
|||
25
1dvd
30.05.17
✎
12:31
|
(23) тогда только построчно, как говорит Стас
|
|||
26
Heckfy
30.05.17
✎
12:31
|
(22) На серваке приложений кончился оператос. Он ушел в жеский своп и перестал реагировать на внешние раздражители. В общем, полдня простоя. А если бы программист подумал и использовал менеджерЗаписи, то все прошло бы без проблем.
|
|||
27
Волшебник
модератор
30.05.17
✎
12:32
|
(26) Можно было бы в Конфигураторе пересоздать регистр
|
|||
28
1dvd
30.05.17
✎
12:33
|
(24) глупости. Если там данных за 10 лет, а удалить надо пару дней, то бамбук курить придётся долго
|
|||
29
Timon1405
30.05.17
✎
12:34
|
(27) или сделать TRUNCATE TABLE
|
|||
30
Timon1405
30.05.17
✎
12:37
|
(26) >> А если бы программист подумал и использовал менеджерЗаписи
менеджер - просто оболочка для набора записей. если бы программист почитал ИТС, он бы понял, что используя менеджер, он делает вещи, аналогичные запросу в цикле |
|||
31
dezss
30.05.17
✎
12:40
|
(26) ну чем угодно надо пользоваться с умом.
просто надо было брать данные частями, а не все сразу. |
|||
32
Волшебник
модератор
30.05.17
✎
12:40
|
(30) Это же изменение данных. Изменение в цикле оправдано.
|
|||
33
Timon1405
30.05.17
✎
12:41
|
(32) 1000 удалений по 1 строке оправданнее 1 удаления 1000 строк?
|
|||
34
Волшебник
модератор
30.05.17
✎
12:41
|
(33) Да.
|
|||
35
1dvd
30.05.17
✎
12:43
|
(33) перезапись миллионов записей ради удаления десяти нельзя оправдать ничем
|
|||
36
Олеся999
30.05.17
✎
12:45
|
НаборЗаписей = РегистрыСведений.[Мой регистр].СоздатьНаборЗаписей();
НаборЗаписей.Отбор.[Мой регистр].Установить([как сюда засунуть диапазон ДатаОт и ДатаДо?]); НаборЗаписей.Записать(); ? |
|||
37
1dvd
30.05.17
✎
12:46
|
(36) упорная, молодец. Только всё-равно не поможет :)
|
|||
38
Олеся999
30.05.17
✎
12:48
|
(37) Почему ?
|
|||
39
1dvd
30.05.17
✎
12:51
|
(38) тебе уже 100500 раз сказали
http://savepic.ru/14188609.jpg |
|||
40
Волшебник
модератор
30.05.17
✎
12:53
|
Уже всё разжевали.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |