Ускоряем удаление объектов штатной обработки комментарием 1 строчки кода

24.04.19

База данных - HighLoad оптимизация

У меня достаточно часто бывают случаи, когда нужно удалить более 1000 объектов, при этом в программе работают пользователи. Я пользуюсь типовой обработкой "Удаление помеченных объектов". Немного поразбирвашись в коде, нашел очень простое решение, как ускорить удаление объектов.

В типовой обработке Удаление помеченных объектов используются 2 механизма работы

1. в монопольном режиме выполняется процедура УдалитьОбъекты

2. в конкурентном режиме объекты удаляются в транзакции с проверкой ссылочной связи

Режим 2 подходит для повседневных задач, однако время удаления возрастает за счет того, что передается информация на клиент об удаляемых объектах

В модуле менеджера обработки я нашел такой код

// Регистрация сообщения для чтения из клиентского сеанса.
ДлительныеОперации.СообщитьПрогресс(Процент, Текст);

Который как раз отвечает за передачу информации в пользовательский сеанс

Код находится в процедуре ОтметитьПрогрессОбходаКоллекции(ПараметрыВыполнения, ИмяКоллекции), в начале которой есть строчки

Если Не ПараметрыВыполнения.Интерактивное Тогда
	Возврат;
КонецЕсли;

То есть для того, чтобы передача на клиент не осуществлялась, нужно установить ПараметрыВыполнения.Интерактивное = Ложь

Данный параметр устанавливается в процедуре ИнициализироватьПараметры(ПараметрыВыполнения)

ПараметрыВыполнения.Вставить("Интерактивное",          ПараметрыВыполнения.Свойство("ПериодЗаписи"));

Получается, что значение параметра определяется наличием ключа ПериодЗаписи в передаваемых параметрах в экспортную процедуру модуля УдалитьПомеченныеОбъектыИнтерактивно(ПараметрыВыполнения, АдресХранилища)

Поиск места, где этот параметр устанавливается, привели меня в модуль формы ОсновнаяФорма в функцию ЗапуститьФоновоеЗадание(Знач ПараметрыМетода) к строчке

ПараметрыМетода.Вставить("ПериодЗаписи", 3); // Секунд

Которую я просто закомментировал

// ПараметрыМетода.Вставить("ПериодЗаписи", 3); // Секунд

Теперь обработка стала удалять объекты быстрее

 

P.S. Если хотите, чтобы во время выполнения крутился бублик, как на скриншоте ниже

Нужно исправить строчку

ПоказыватьБублик = ПараметрыМетода.УдалятьПомеченные И Монопольно;

На

ПоказыватьБублик = ПараметрыМетода.УдалятьПомеченные;

В той же функции ЗапуститьФоновоеЗадание(Знач ПараметрыМетода)

Вступайте в нашу телеграмм-группу Инфостарт

См. также

HighLoad оптимизация Программист 1С 8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Использование оператора «В» для полей или данных составного типа (например, Регистратор) может приводить к неочевидным проблемам.

10.11.2025    7641    ivanov660    48    

52

HighLoad оптимизация Программист 1С:Предприятие 8 1C:ERP Бесплатно (free)

Приведем примеры использования различных в динамических списках и посмотрим, почему это плохо.

18.02.2025    9695    ivanov660    39    

61

HighLoad оптимизация Технологический журнал Системный администратор Программист Бесплатно (free)

Обсудим поиск и разбор причин длительных серверных вызовов CALL, SCALL.

24.06.2024    12194    ivanov660    13    

64

HighLoad оптимизация Программист 1С:Предприятие 8 Бесплатно (free)

Метод очень медленно работает, когда параметр приемник содержит намного меньше свойств, чем источник.

06.06.2024    18680    Evg-Lylyk    73    

46

HighLoad оптимизация Программист 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Анализ простого плана запроса. Оптимизация нагрузки на ЦП сервера СУБД используя типовые индексы.

13.03.2024    9143    spyke    29    

54

HighLoad оптимизация Программист 1С:Предприятие 8 Бесплатно (free)

Оказывается, в типовых конфигурациях 1С есть, что улучшить!

13.03.2024    12636    vasilev2015    22    

47
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. BigClock 24.04.19 15:15 Сейчас в теме
Для быстрого удаления помеченных уже есть обработка с альтернативным алгоритмом контроля
https://infostart.ru/public/557217/
С ее помощью можно ускорить удаление в несколько раз, единственное ограничение - работа только
в режиме толстого клиента.

Хотелось бы узнать, какое ускорение Вы получили с использованием предлагаемых доработок
стандартной обработки?
2. w.r. 655 24.04.19 20:20 Сейчас в теме
(1)

Обработка по вашей ссылке не подходит для большинства современных конфигураций, так как они на управляемых формах и работают в режиме тонкого клиента
3. BigClock 24.04.19 22:03 Сейчас в теме
(2) Рекомендуемая мной обработка как раз таки подходит для задачи однократного удаления большого количества помеченных на удаление объектов. Обработка работает на управляемых формах, но в режиме толстого клиента. По сравнению со стандартной обработкой ускорение в разы. Несколько тысяч объектов ей можно удалить в течение буквально одного-двух часов (в зависимости от количества), тогда как стандартная обработка над тем же количеством может работать целые сутки. Для регулярного удаления нескольких сотен объектов вполне подойдёт и стандартная обработка.
В связи с этим и хотелось узнать, проводили ли Вы какие-то замеры производительности Ваших доработок? На какое ускорение можно рассчитывать?
1cad_omsk; +1 Ответить
4. w.r. 655 25.04.19 04:04 Сейчас в теме
(3)

Хорошо. Напишите какие конфигурации 1С сейчас работают в режиме толстого клиента на управляемых формах
5. mvk4d 25.04.19 08:18 Сейчас в теме
(4) , это же обработка не для всех пользователей. А кто, например, работает с инструментами разработчика (админы, программисты), практически всегда запускаются в толстом клиенте! Это например актуально для инструментов разработчика в виде расширения. Там толстый клиент и управляемые формы.
То есть в чем проблема запустить любую современную конфигурацию в толстом клиенте, если эта обработка действительно сэкономит столько времени?

PS. Это вы еще СКД в пользовательском режиме не настраивали для некоторых механизмов современных конфигураций (например, механизм планирования в ERP и др.). Там обязательно в толстом клиенте надо запускаться, по другому никак.
6. w.r. 655 25.04.19 09:40 Сейчас в теме
(5)

В публикации описывается типовая обработка, входящая в состав БСП, соответственно во многие конфигурации формы 1С. Пользуются ей обычные пользователи

Для экономии времени можно использовать удаление в монопольном режиме
7. mvk4d 25.04.19 10:06 Сейчас в теме
(6) , так вопрос ведь не в этом был. Вас 2 раза спросили:

1. Хотелось бы узнать, какое ускорение Вы получили с использованием предлагаемых доработок
стандартной обработки?

2. В связи с этим и хотелось узнать, проводили ли Вы какие-то замеры производительности Ваших доработок? На какое ускорение можно рассчитывать?

Вы оба вопроса проигнорировали и предпочли начать дискуссию о том, что толстый клиент - это ограничение.

"Для экономии времени можно использовать удаление в монопольном режиме" - тогда непонятно зачем ваша обработка, если она не экономит время. Если экономит, по сравнению с типовой, то смотрите вопросы выше, тоже хотелось бы знать ответы на них. Если не измеряли ускорение, то так и напишите.
1cad_omsk; AmilKz; IgorS; jaroslav.h; +4 Ответить
9. w.r. 655 25.04.19 10:52 Сейчас в теме
(7)

Мне кажется уже пошла демагогия. Замеры можете провести сами, если хотите. Я вам приводить их не обязан. Если считаете, что передача информации из сеанса фонового задания в пользовательский сеанс не занимает время - тогда флаг вам в руки и барабан на шею

По монопольный режим уже писал - нужно выгонять пользователей. А удалить объекты, по крайней мере у меня, бывает нужно здесь и сейчас

p.s. я денег за информацию не беру, в отличие от альтернативных методов. Не хотите - не пользуйтесь, но и не тролльте
15. jaroslav.h 183 01.05.19 23:02 Сейчас в теме
(9) Вася, ты научись читать между своей не понятной злостью и аргументированными вопросами. Кто тебя, как ты пишешь "тролит"?! Тебе вопрос задали, который, и меня интересует, а ты сразу "воюешь".

Мне вот тоже интересно, на твоей системе узнать, как было до и после, что бы понимать, тратить мне время, на твои советы.

Напиши вроде "На 100000000000 объектов, до было Так, стало Так", че сложного?!
16. w.r. 655 02.05.19 06:25 Сейчас в теме
(15)

Меня тоже много что интересует. Но чтобы получить ответы на свои вопросы, я не наезжаю, а вежливо спрашиваю. И тебе советую делать так же
17. jaroslav.h 183 02.05.19 17:57 Сейчас в теме
(16) как ты так и к тебе


не борзей Васька, ты же понимаешь, что понос тут разводить толку мало, рукою с моника не достанишь по мягкому месту
8. melis 97 25.04.19 10:25 Сейчас в теме
(4) Любую типовую конфигурацию от 1С можно запустить в этом режиме, вот доработки могут его порой не поддерживать... но и это решаемо
user633533_encantado; +1 Ответить
11. Xershi 1550 01.05.19 19:16 Сейчас в теме
(4) все конфигурации на УФ работают в толстом клиенте, похоже вы не в теме=))
baranchikov; +1 Ответить
12. w.r. 655 01.05.19 19:36 Сейчас в теме
(11)

Точно знаю, что были ошибки в некоторых конфигурациях при работе в толстом клиенте. По моему связанные с параметрами сеанса, но точно не помню
13. Xershi 1550 01.05.19 19:45 Сейчас в теме
(12) наверно перепутали с ОФ.
14. w.r. 655 01.05.19 19:47 Сейчас в теме
(13)

Точно не перепутал. Запускал УФ + толстый клиент
10. rovenko.n 01.05.19 10:39 Сейчас в теме
"ПоказыватьБублик" - отличное название :-)
baranchikov; milov.aleksey; Daniayr; +3 Ответить
18. Andrey73 27.10.20 11:43 Сейчас в теме
Проверил с секундомером, минута и 25 секунд что с отображением прогресса, что без "передачи информация на клиент об удаляемых объектах". Нет никакой разницы, кроме того, что не видно сколько удалилось а сколько еще осталось.

Комп по ТРС тесту Гилева 77 попугаев, так что полторы минуты достаточно.

В мусорку.
user715379; Euroset1; tof; al.gerasimov; x.vts; +5 Ответить
19. x.vts 17.01.21 14:44 Сейчас в теме
(18) Можете в личку написать
20. user1074471 3 30.11.23 19:30 Сейчас в теме
Надо проверить еще раз:)
Для отправки сообщения требуется регистрация/авторизация