Ускоряем удаление объектов штатной обработки комментарием 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 не будет опубликован. Обязательные поля помечены *