Поиск и замена значений многопоточно

03.10.23

Задачи пользователя - Поиск данных

Обработка для конфигураций на БСП, выполняет замену в несколько потоков. Только клиент-серверный вариант

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Поиск и замена значений многопоточно
.epf 26,51Kb ver:2023.10.03
145
145 Скачать (2 SM) Купить за 2 150 руб.

Еще один поиск и замена значений, только работает в несколько потоков

Разработано на основе Пример многопоточной обработки (БСП)

 

 

За основу взята обработка из этой статьи 

Тестировалось на платформе 8.3.18.1957

Конфигурации: КА 2.5.7.402.

См. также

Поиск данных Системный администратор Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Обработки помогут Вам легко и, главное, быстро (в 5 раз и быстрее штатной обработки 1С), выполнить поиск дублирующих данных в Ваших базах 1С на платформах 8.1-8.3. Это позволит уменьшить объем лишней информации в справочниках и документах, планах видов характеристик и др., упростит работу с данными пользователям. А так же можно, одним нажатием, узнать в каких ссылочных объектах есть вообще дубли! Понятное расположение команд и настроек, в сочетании с описанием и справкой, еще упростят процесс. А так же обновления Вы получаете бесплатно в течение года с момента приобретения данных обработок! (Обновление от 27.11.2023, версия 6.12)

10800 руб.

14.05.2012    159476    339    253    

573

Подбор и обработка объектов Платформа 1С v8.3 1С:Зарплата и Управление Персоналом 3.x Россия Платные (руб)

Обработка позволяет установить конкретную организацию в качестве головной для записей регистров всех организаций, у которых изменилась головная организация. Изменяет записи всех регистров. Например, у вас было множество подчинённых организаций, связанных между собой какой-либо иерархией, и вы решили, что теперь все организации будут подчинены одной конкретной. Соответственно вам необходимо изменить все записи в регистрах. Обработка позволяет сделать это. Обычно такая обработка требуется на задачах слияния или поглощения организаций.

11880 руб.

20.11.2023    835    2    3    

1

ККМ Кассовые операции Подбор и обработка объектов Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Россия Платные (руб)

Модуль, ускоряющий подбор номенклатуры в 1С в чек ККМ и Заказе клиента. Оптимизированная форма подбора товаров с многократно ускоренным процессом поиска товаров в 1С в чек ККМ и Заказе клиента для конфигураций 1C:Управление торговлей 11.5, 1С:Комплексная Автоматизации 2.5 и 1С:ERP Управление предприятием 2.5

18000 руб.

30.10.2024    476    1    0    

3

Подбор и обработка объектов Бухгалтер Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

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

6000 руб.

29.06.2015    45586    92    18    

105

Математика и алгоритмы Инструментарий разработчика Универсальные функции Поиск данных Программист Платформа 1С v8.3 Конфигурации 1cv8 1С:ERP Управление предприятием 2 Абонемент ($m)

Несколько упакованных в один класс интерфейсов для обработки популярных универсальных коллекций. Для тех, кого раздражает отсутствие действительно единого интерфейса для универсальных коллекций.

5 стартмани

25.09.2024    2521    1    Артано    14    

19

Поиск данных Программист Платформа 1С v8.3 Россия Бесплатно (free)

В этой статье я хочу рассмотреть еще один кейс применения Clickhouse в связке с 1С - оптимизацию поиска в справочнике по ключевым словам. Здесь не будет готового решения, но будут описаны важные моменты, которые позволят легко применить данный кейс в реальности.

18.08.2024    2121    1cnik2    23    

14

Поиск данных Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Отображение и просмотр реквизитов справочника или документа - с бесконечным открытием подуровней.

1 стартмани

14.06.2024    3613    8    RustIG    29    

22

Подбор и обработка объектов Программист Пользователь Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Нужно быстро обработать какие-то данные, а подходящей многопоточной обработки нет?

2 стартмани

13.06.2024    5434    44    maslyann    5    

35
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. apatyukov 910 14.02.23 10:47 Сейчас в теме
Привет. Для старой УТ 10.3 Если ее запустить в управляемых формах будет работать? Или что то надо допилить?
8. echo77 1913 14.02.23 12:20 Сейчас в теме
(1) скорее всего не будет работать - обработка для современных конфигураций на БСП
apatyukov; +1 Ответить
16. apatyukov 910 16.02.23 06:38 Сейчас в теме
(8) Что будет стоить доработать ее до последних бсп?
17. echo77 1913 16.02.23 06:42 Сейчас в теме
(16) Тогда будет работать в режиме управляемого приложения. Но я бы пошел другим путём - разработал подобную для УТ10 на обычных формах. Придется немного доработать типовую.
2. Бэнни 210 14.02.23 11:07 Сейчас в теме
Спасибо, то что нужно!
3. RustIG 1833 14.02.23 11:27 Сейчас в теме
(0) Привет!
Идея крутая.
В БП Базовая валюту Руб* не заменяет на Руб. Ничего не происходит.
Прикрепленные файлы:
4. RustIG 1833 14.02.23 11:31 Сейчас в теме
(3) Сорри! Не сразу понял, что значит фраза
Только клиент-серверный вариант

Для файловых значит не работает.
5. RustIG 1833 14.02.23 11:51 Сейчас в теме
(0) Я думал, ты разработал обработку "Поиск и замена". Стал разбираться, оказалось, что ты только добавил потоковое выполнение в уже готовую обработку.
Но ты не указал первоисточник, откуда скачать "Поиск и замену".
Стал искать на ИТС - такой обработки на ИТС нет.
Стал искать на Инфостарт - нашел вот публикацию https://infostart.ru/public/1786080/
Стал искать в яндекс - вышел на сайт БухЭксперт - обработка от ноября 2020г.
Я в апреле 2020 г оказывается уже использовал обработку с первоисточника, но с тех пор забыл что у меня есть подобная обработка. Она кстати для файловой базы сработала - валюту заменила.
По ходу дела - это мое предположение, фирма 1С ранее на ИТС выкладывала, сейчас убрала - заменила на "Поиск и удаление дублей".
7. echo77 1913 14.02.23 12:19 Сейчас в теме
(5) в описании указано За основу взята обработка из этой статьи (ссылка)
9. RustIG 1833 14.02.23 12:31 Сейчас в теме
(7) теперь-то ясно, я же на днях видел твою другую статью - решил, что эта ссылка про многопоток . Не стал перепроверять.
твоя ссылка на статью от ноября 2020г, а я уже в апреле 2020г использовал ее
ДУмаю, 1с-ники ее разработали, найти ФИО разработчика не смог - наверное теперь она считается "общей". Не думаю, что БухЭксперт автор обработки.
6. SerVer1C 839 14.02.23 12:13 Сейчас в теме
Вот ещё бы вы привели замеры, чтобы понять, насколько (количественно) такая многопоточная замена будет быстрее стандартной замены.
semagin@gmail.com; +1 Ответить
13. starik-2005 3096 15.02.23 08:04 Сейчас в теме
(6) Так это от конкретного железа зависит. На пентиуме первом очень долго будет, и в один поток, т.к. у него одно ядро. Остальные варианты упрутся в i/o. Ну и чем больше потоков, тем быстрее (от количества ядер и нагрузки на систему). Но тот же гикбенч показывает, что многопоточная производительность процессора - это далеко не производительность потока, умноженная на их количество. Например, у меня I5-13600kf. Так вот однопоточная производительность у него в гикбенче с отрубленным HT 2165, а многопоточная (14 ядер, 6P/8E) - 14400. При том 2165 * 14 = 30310, что в два с лишним раза больше, чем на самом деле. Ну и дальше попытайтесь обнаружить связь между этими фактами и тем, о чем Ваш вопрос.
14. SerVer1C 839 15.02.23 09:00 Сейчас в теме
(13) Хотел бы я посмотреть на тех, у кого сервер 1с на первом пне. Синтетика - это понятно, тут вопрос именно на практике как будет, т.к. тут задействована СУБД.
15. starik-2005 3096 15.02.23 12:27 Сейчас в теме
(14)
т.к. тут задействована СУБД
Ну вот Вам кейс: я на прошлой работе рассказывал сотрудникам про многопоточность. Мы запилили конфу, сделали в ней документ, провели в один поток - 60 секунд с чем-то. Провели в 10 потоков - 4 секунды.
SQL рассчитан на многопоточную нагрузку. Именно поэтому рекомендация фирмы 1С в части параллельности касается установки в ЕДИНИЦУ параметра, который отвечает за количество потоков для выполнения запроса. Это связано с тем, что для каждого пользователя свой запрос, и каждому запросу свой поток. Ну и потом добрые и мягкие даже люди говорят, что вот, панимаешь, не тянет сервер - ядер не хватает на сто пользователей (по ядру на 10 штук, а ядер, например, всего 8, на 80 хватает, на 20 - мимо)))).

С другой стороны, вот еще один кейс: есть такая штука, как список недействительных паспортов, который добрый ФМС до сих пор выгружает в CSV, а ленивые 1С-неги, которые не умеют в алгоритмы, ничего лучше не придумали, как засунуть это все в таблицу SQL (ага, регистр сведений) и каждый божЫй день грузить это все барахло туда, предварительно регистр очищая. Ну и вот если грузить по 50к, то от многопоточности сразу же пропадает хоть какой-то смысл, ибо паспортов таких 120кк++, а после 20кк уже SQL в эскалации блокировок валится. Но если писать по 100 строк, то все работает, но если писать по сто, то даже в двадцать потоков это проигрывает записи по 50к однопоточно. Фактически, 120кк++ паспортов в регистр пишутся в один поток (по 50к) всего лишь в 2 раза медленнее, чем в 10, но деградация начинается с 20кк - одна из 10-ти записей валится из-за ожидания спинлока SQL. К 100кк+ 9 из 10-ти записей валятся на ожидании. Так что все зависит от железа и задачи, порции данных и т.д.

С третьей стороны, есть алгоритм, который за 10 минут это все в 1С грузит без всякого SQL с поиском с эффективностью О(1), но это же надо в алгоритмы немного хоть вдупливать, а из 1с-негов таких мало, ибо для обычного 1С двух алгоритмов хватает - обход коллекции и поиск значения.

Но соглашусь, что средний 1С-нег ничего этого не умеет. Но ведь тут как? Не умеешь - учись! Это ведь никто у человека не может отобрать, кроме его самого. Так что учись, студент, а то всю жизнь ключи будешь подавать!
18. echo77 1913 16.02.23 07:10 Сейчас в теме
(6) Замеры

Выполнялось с отключенным контролем записи. Обработка каждого объекта выполнялась в транзакции. В конце обработки транзакция отменялась.

Исходные данные: 4984 строки данных для замены (состав по метаданным на скрине)
Замеры замены значений этой обработкой:
потоков 1 - 4:44
потоков 2 - 2:17
потоков 5 - 1:05
Прикрепленные файлы:
triviumfan; SerVer1C; +2 Ответить
10. Evg-Lylyk 4894 14.02.23 12:59 Сейчас в теме
Поиск ссылок наверное производится через НайтиСсылки без многопоточности? Многопоточно только замена?
11. echo77 1913 14.02.23 17:22 Сейчас в теме
(10) да, только замена многопоточно
12. RustIG 1833 14.02.23 22:08 Сейчас в теме
(11) так-то и поиск можно разбить на потоки - при желании
19. TMV 14 17.02.23 15:06 Сейчас в теме
(12) там метод платформы. сооружать свой предлагаете?
20. RustIG 1833 17.02.23 19:43 Сейчас в теме
21. triviumfan 97 20.02.23 17:24 Сейчас в теме
22. RustIG 1833 20.02.23 20:38 Сейчас в теме
(21) в октябре 2020 г выложил вот это Поиск ссылок на справочник в документах и в справочниках на УФ - почти никто не оценил.
при должном упорстве можно все объекты метаданных запрограммировать для прохождения анализа ( проанализировать) - то есть не только справочники и документы, но и регистры и все остальное.
также надо учесть, что никогда никому не надо в моменте универсальную обработку - всегда нужно под конкретную задачу - найти и заменить договора или еще что-то - под это дело можно реализовать супер быстрый поиск:
В этих обработках п.п.1)-3) дополнительно включена оптимизация алгоритма - подобного ни у кого не видел в публикациях - заранее указаны документы и в каких реквизитах и табличных частях искать конкретные справочники. Поэтому для больших баз подобная оптимизация будет существенно ускорять процесс поиска документов (но это в обработках п.1-3 - смотрите по ссылкам).
23. triviumfan 97 21.02.23 09:16 Сейчас в теме
(22)
при должном упорстве можно все объекты метаданных запрограммировать для прохождения анализа

Ну, можно и на луну улететь. Я думал у вас уже есть универсальное решение, а по факту запрос поиска по документам - локальная задача, такой динамический запрос кодится за 5 минут. Я такое обычно делаю в ИР Сергея: нашёл произвольным запросом все ссылки, далее передаю в работку замены.
Поэтому я и обошёл сию тему.
Evg-Lylyk; +1 Ответить
24. RustIG 1833 21.02.23 10:50 Сейчас в теме
(23) очень рад, что вы тоже такой умный.
если посмотрите картинку здесь http://forum.infostart.ru/forum9/topic293982/message2937143/#message2937143
то увидите поиск идет только по справочникам и документам - поиск шел 4 минуты (!!!)
из-за 4х минут надо было полдня-день потратить чтобы разобраться в многопотоке БСП, написать статью, максимально ее понятно оформив.
поиск 5000 объектов? у меня кажется за секунды это делается...
Потом, вы же не разобрались ни в моей обработке, ни в логике типовой замены (типовая - которая тут в статье используется) - при типовом алгоритме замены происходит перебор реквизитов и табличных частей в документе или справочнике, объект которого возвращает платформенная функция НайтиСсылки(). Происходит очередная потеря времени при поиске нужного реквизита.

В моем алгоритме поиск сразу выдает Объект + Реквизит (реквизит объекта или реквизит табл. части), то есть надо лишь чуть-чуть дописать алгоритм замены: ПолучитьОбъект, заменить значение реквизита - уже известного какого - и записать объект. Как раз из-за того, что такой код пишется в 5 минут я пока не дописал замену - ведь ядро уже готово - каждый сам допишет что ему нужно - кому-то замена нужна, кому-то поиск для анализа (без замены) - примеры я предоставил.

А вообще, вы дали обратную связь. Это бесценно.

Данный пост я писал более 5 минут.... Для информации... Тут некая философия возникает , куда утекает безвозвратно время и насколько ценно время и собственное внимание.... Иногда думаю об этом....
25. triviumfan 97 21.02.23 12:20 Сейчас в теме
(24) Вместо того, чтобы смотреть речь вождя, я зашёл на ИС, а тут опять пахнет токсичностью...
1. На картинке не поиск, а замеры замены.
2. Автор не использует многопоточность БСП (это я понял из предыдущей его статьи).
3. Да, я бегло ознакомился с твоей обработкой, Рустем. Но статья автора меня зацепила, а твоя нет.
На сей ноте давай закончим.
26. RustIG 1833 21.02.23 12:44 Сейчас в теме
(25) хорошо, нет так нет, сами спросили - а теперь мой ответ не понравился
27. niip 10.04.24 16:25 Сейчас в теме
Премного благодарен, обработка очень пригодилась!
Оставьте свое сообщение