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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

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

На

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

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

16 Comments

  1. BigClock

    Для быстрого удаления помеченных уже есть обработка с альтернативным алгоритмом контроля

    https://infostart.ru/public/557217/

    С ее помощью можно ускорить удаление в несколько раз, единственное ограничение — работа только

    в режиме толстого клиента.

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

    стандартной обработки?

    Reply
  2. w.r.

    (1)

    Обработка по вашей ссылке не подходит для большинства современных конфигураций, так как они на управляемых формах и работают в режиме тонкого клиента

    Reply
  3. BigClock

    (2) Рекомендуемая мной обработка как раз таки подходит для задачи однократного удаления большого количества помеченных на удаление объектов. Обработка работает на управляемых формах, но в режиме толстого клиента. По сравнению со стандартной обработкой ускорение в разы. Несколько тысяч объектов ей можно удалить в течение буквально одного-двух часов (в зависимости от количества), тогда как стандартная обработка над тем же количеством может работать целые сутки. Для регулярного удаления нескольких сотен объектов вполне подойдёт и стандартная обработка.

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

    Reply
  4. w.r.

    (3)

    Хорошо. Напишите какие конфигурации 1С сейчас работают в режиме толстого клиента на управляемых формах

    Reply
  5. mvk4d

    (4) , это же обработка не для всех пользователей. А кто, например, работает с инструментами разработчика (админы, программисты), практически всегда запускаются в толстом клиенте! Это например актуально для инструментов разработчика в виде расширения. Там толстый клиент и управляемые формы.

    То есть в чем проблема запустить любую современную конфигурацию в толстом клиенте, если эта обработка действительно сэкономит столько времени?

    PS. Это вы еще СКД в пользовательском режиме не настраивали для некоторых механизмов современных конфигураций (например, механизм планирования в ERP и др.). Там обязательно в толстом клиенте надо запускаться, по другому никак.

    Reply
  6. w.r.

    (5)

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

    Для экономии времени можно использовать удаление в монопольном режиме

    Reply
  7. mvk4d

    (6) , так вопрос ведь не в этом был. Вас 2 раза спросили:

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

    стандартной обработки?

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

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

    «Для экономии времени можно использовать удаление в монопольном режиме» — тогда непонятно зачем ваша обработка, если она не экономит время. Если экономит, по сравнению с типовой, то смотрите вопросы выше, тоже хотелось бы знать ответы на них. Если не измеряли ускорение, то так и напишите.

    Reply
  8. melis

    (4) Любую типовую конфигурацию от 1С можно запустить в этом режиме, вот доработки могут его порой не поддерживать… но и это решаемо

    Reply
  9. rovenko.n

    «ПоказыватьБублик» — отличное название 🙂

    Reply
  10. Xershi

    (4) все конфигурации на УФ работают в толстом клиенте, похоже вы не в теме=))

    Reply
  11. w.r.

    (11)

    Точно знаю, что были ошибки в некоторых конфигурациях при работе в толстом клиенте. По моему связанные с параметрами сеанса, но точно не помню

    Reply
  12. Xershi

    (12) наверно перепутали с ОФ.

    Reply
  13. w.r.

    (13)

    Точно не перепутал. Запускал УФ + толстый клиент

    Reply
  14. jaroslav.h

    (9) Вася, ты научись читать между своей не понятной злостью и аргументированными вопросами. Кто тебя, как ты пишешь «тролит»?! Тебе вопрос задали, который, и меня интересует, а ты сразу «воюешь».

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

    Напиши вроде «На 100000000000 объектов, до было Так, стало Так», че сложного?!

    Reply
  15. w.r.

    (15)

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

    Reply
  16. jaroslav.h

    (16) как ты так и к тебе

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

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *