|
|
|
Удаления большого количества элементов из справочника Волшебник, bolder, trdm, Гость из Мариуполя, avkend, Irbis, timurhv, Garykom, H A D G E H O G s, lEvGl, Мультук, runuts, Олдж, TTimur, Guk, rozer76, Amra, dedmoroz777, 1snik_d, X Leshiy, RomanYS, iolxrfsf, Bigbro, Vol71, ProxyInspector, Vostochnick, SleepyHead, Чужой, Tarzan_Pasha, ТДК, 2S, АНДР, kubik_live, АнализДанных, Mops1C, CepeLLlka, Dен, maxab72, Redaktor, Участковый, abfm, zenik, ads55, Timon1405, banco, Доминошник, Александр111, scanduta, YaFedor, boozin, LuckyStar, Hawk_1c
| ☑ | ||
|---|---|---|---|---|
|
0
Mops1C
01.11.25
✎
10:55
|
Надо реализовать удаление (полное) большого кол-ва элементов из справочника, примерно 20к элементов. Суть в том, что надо делать это быстро, так как после этого ещё будет примерно столько же записываться (записывается за минуты полторы, пойдёт). Код
&НаСервере Процедура ОчисткаСправочника() НачатьТранзакцию(); Попытка Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | ФедеральныеЛьготники.Ссылка КАК Ссылка |ИЗ | Справочник.ФедеральныеЛьготники КАК ФедеральныеЛьготники"; Выборка = Запрос.Выполнить().Выбрать(); МассивДляУдаления = Новый Массив; Счетчик = 0; Пока Выборка.Следующий() Цикл МассивДляУдаления.Добавить(Выборка.Ссылка); Счетчик = Счетчик + 1; Если Счетчик >= 1000 Тогда УдалитьПакет(МассивДляУдаления); МассивДляУдаления.Очистить(); Счетчик = 0; КонецЕсли; КонецЦикла; Если МассивДляУдаления.Количество() > 0 Тогда УдалитьПакет(МассивДляУдаления); КонецЕсли; ЗафиксироватьТранзакцию(); Сообщить("Справочник полностью очищен!"); Исключение ОтменитьТранзакцию(); Сообщить("Ошибка очистки: " + ОписаниеОшибки(), СтатусСообщения.Важное); ВызватьИсключение; КонецПопытки; КонецПроцедуры 1С:Предприятие 8.3 (8.3.27.1786) Медицина. Больничная аптека, редакция 3.0 (3.0.2.27) |
|||
|
1
maxab72
01.11.25
✎
10:57
|
Делай под полными правами, без всяких там "РАЗРЕШЕННЫЕ". будет быстрее
|
|||
|
2
Irbis
01.11.25
✎
10:59
|
Выделил всё и шифт+дел. Хотя конфа в которой часто приходится удалять условно-постоянную информацию не внушает уважения.
|
|||
|
3
Волшебник
01.11.25
✎
11:04
|
(0) Что-то не видно в Вашем коде собственно Объект.Удалить()
|
|||
|
4
zenik
01.11.25
✎
11:11
|
Я бы РС сделал и в нем статус хранил. И обработкой менял. Удалять справочник - такое себе занятие. А если ссылки?
|
|||
|
5
Timon1405
01.11.25
✎
11:11
|
разбить на порции и к каждой применить функцию ДлительныеОперации.ВыполнитьВФоне есть в БСП(3.*начиная с какой-то версии*)
|
|||
|
6
Климов Сергей
01.11.25
✎
11:12
|
(0) Перенесите транзакцию внутрь вашего УдалитьПакет()
|
|||
|
7
Волшебник
01.11.25
✎
11:15
|
(0) Удаляйте прямым запросом
DELETE FROM Catalog342 WHERE id IN (1,2,3) |
|||
|
8
Timon1405
01.11.25
✎
11:19
|
(7) угу и ловите потом битые ссылки в связанных данных
|
|||
|
9
Ёпрст
гуру
01.11.25
✎
11:19
|
(7) ему вроде весь нужен, сюдя по коду, тогда уж truncate table
|
|||
|
10
Ёпрст
гуру
01.11.25
✎
11:19
|
(8) при коде в (0) оне и так будут
|
|||
|
11
Волшебник
01.11.25
✎
11:19
|
(8) гулять так гулять
|
|||
|
12
Волшебник
01.11.25
✎
11:20
|
(9) у него в коде РАЗРЕШЕННЫЕ
|
|||
|
13
Ёпрст
гуру
01.11.25
✎
11:32
|
(12) это видать, конструктор ему пишет, сам он не ведует, что ОНО значит :)
|
|||
|
14
Маленький Вопросик
01.11.25
✎
11:44
|
(13) +
|
|||
|
15
Волшебник
01.11.25
✎
11:46
|
(13) Я бы таких программистов бил линейкой по рукам. Железной. Ребром.
|
|||
|
16
Fish
гуру
01.11.25
✎
11:49
|
А потом кто-то не получит льготы от таких удаляторов.
|
|||
|
17
Fish
гуру
01.11.25
✎
11:50
|
Ну и тема, с чем связано " надо делать это быстро" не раскрыта.
|
|||
|
18
Irbis
01.11.25
✎
11:53
|
(17) У тру-1Сников срок исполнения заказа — только вчера. Иначе можно отложить на неопределенное время, может и делать ничего не надо будет.
|
|||
|
19
timurhv
01.11.25
✎
11:54
|
1С добавило пакетное добавление, удаление, изменение записей в РС, интересно, через сколько десятков лет будет реализовано подобное для документов, справочников?
РежимЗамещения.Добавление РежимЗамещения.Обновление РежимЗамещения.Удаление |
|||
|
20
Fish
гуру
01.11.25
✎
11:56
|
(18) Настоящие Тру-1Сники в совершенстве владеют методом трёх гвоздей.
|
|||
|
21
Irbis
01.11.25
✎
11:57
|
(20) И трёх конвертов
|
|||
|
22
Fish
гуру
01.11.25
✎
11:58
|
(21) Не, метод трёх конвертов - это уровень выше. Это для начальников тех, кто владеет методом трёх гвоздей.
|
|||
|
23
Garykom
гуру
01.11.25
✎
12:04
|
(0) Глупость
Зачем удалять все когда надо обновить? Нужен реквизит "ДатаОбновления" в самом справочники или в отдельном РС При загрузке регистра льготников ищем в справочнике по СНИЛС, если нашли то обновляем данные и ставим дату обновления Затем всех прочих (со старой датой обновления) "закрываем", ставя дату окончания действия или помечая на удаление (можно еще в отдельную группу) |
|||
|
24
Garykom
гуру
01.11.25
✎
12:03
|
(23)+ Реально не понимаю тупизны, в рецептах же ссылки на льготников
|
|||
|
25
Irbis
01.11.25
✎
12:05
|
(22) Вот же мне не свезло, я и тем и тем владею. Но гвоздей в практике не меньше пяти, а конверт только один под №3.
|
|||
|
26
Bigbro
01.11.25
✎
14:10
|
ну во первых 20к это немного.
а если надо удалить реально много проще бахнуть в конфигурации объект скопировав его предварительно. и вставить обратно. если на него нет ссылок ниоткуда но если есть то тогда полное удаление под большим вопросом. |
|||
|
27
lEvGl
гуру
01.11.25
✎
14:14
|
(26) <
если на него нет ссылок ниоткуда конечно же ссылок нет, что вы, что вы! |
|||
|
28
ProxyInspector
01.11.25
✎
18:04
|
20К - это мелочи. Когда объектов миллионы или сотни миллионов тогда проблемы для 1С.
|
|||
|
29
ProxyInspector
01.11.25
✎
18:05
|
Грохнуть регистр сведений объемом 1 млрд записей и объемом 1 ТБ. Это проблемка
|
|||
|
30
timurhv
01.11.25
✎
18:16
|
(29) Уже нет
https://koder.by/rezhimzameshheniya_sliyanie_udalenie_obnovlenie.php Вот бы подобное на документы и справочники реализовали. Условно аналогично сразу 100к элементов справочника стали помечеными на удаление или заполнились реквизиты. По-сути это таже самая таблица в СУБД и обращения аналогичные, только контроль со стороны платформы нужно организовать. |
|||
|
31
Guk
01.11.25
✎
19:59
|
(29) в чем выражается проблемка?...
|
|||
|
32
Волшебник
01.11.25
✎
20:37
|
(29) пересоздать регистр в конфигураторе
|
|||
|
33
Garykom
гуру
01.11.25
✎
21:41
|
(30) В чем проблема посмотреть что делает 1С внутри СУБД
И реализовать это прямыми запросами? Ну кроме затрат времени спеца нужного уровня? |
|||
|
34
timurhv
01.11.25
✎
21:53
|
(33) я такое делал 12 лет назад) Сворачивал базы прямыми запросами под 1Тб с 2000 пользователями онлайн за выходные (ну да, 2 дня курили бамбук).
Пожелание 1С реализовала обновление записей в таблицах СУБД для регистров сведений, чуть добавить трудозатрат и сделать такой же апдейт записей по документам\справочникам. Хотя бы без удаления, просто изменения и добавления. |
|||
|
35
Волшебник
01.11.25
✎
22:11
|
(34) Не надо сворачивать базы. Просто добавьте место на дисках.
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |