Многопоточность. Универсальный «Менеджер потоков» 2.1

Публикация № 778905 07.02.18

Администрирование БД - HighLoad оптимизация

"Фоновые задания" потоки "менеджер потоков" фоновых заданий" распараллелить  "восстановление партий"  многопоточность 

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!
 
 Обновления
 
 Обновление "Менеджер потоков" 2.1.0

Изменения в сравнении с версией 2.0.7:
    Алгоритмы:

  • Увеличена скорость обработки зависимых объектов на 15-25%, в ряде случаев до 50%;
  • Полностью переписан весь код;
  • Код проверен с помощью АПК 1.2  (исправлено 350+ замечаний и не соответсвий стандартам 1С, осталось 9 :));
  • Работа с графом "неограниченного" размера;
  • Приоритезирована раздачи заданий потокам;
  • Реализована возможность в событиях (не во всех) дополнять "Параметры для объекта" - см. Руководство.
  • Теперь поток, а не менеджер контролирует количество попыток обработать объект;
  • События потоков теперь выполняются в "Попытка-Исключение" - позволяет избежать лишних перезапусков потоков;
  • Модуль "мпОсновнаяПрограмма" - изменил идентификатор на: "мпОсновнаяПрограммаВызовСервера";
  • Процедуры и функции уменьшены в размерах, для сокращения контекста (средний размер 17 строк; минимум 3 строки, максимум 73 строки);
  • Все алгоритмы разнесен по областям;
  • Шаблон модуля событий разработчика теперь выделен в отдельный модуль: "мпСобытияРазработчикаШаблон";

        Исключено:

  • механизм мониторинга (появится в след. релизах);
  • механизм "безпотокового" выполнения.
  • возможность написать весь код в модуле объекта обработки (противоречит работе в безопасном режиме).

    Транспорт:

  • Обмен данными теперь происходит пакетами;

    События:

  • Изменены:

            Изменен состав параметров всех событий (требуется корректировка событий разработчика). - см. Руководство.
            Имена:

  • ПриПолученииРесурсов             ->    ПриРасчетеРесурсов
  • ПриОбработкеДействияПотока   ->    ПриОбработкеПотоком
  • ПриОбработкеОтвета                 ->    ПриОбработкеРезультата
  • ПриОбработкеМассиваОбработанныхФагментовКоллекции     ->    ПриСборкеФрагментовКоллекции        
  • Добавлены:
    • ПриПроизвольнойОбработкеГрафа - см. Руководство.
    • ПриСохраненииГрафа - см. Руководство.
  • Исключены:
    •  ПриДобавленииВОчередьОбработки - теперь "Менеджер потоков" сам добавляет объект, если есть ресурсы, так же есть параметр "УчитыватьОбъектыБезРесурсов" - см. Руководство;
    •  ПриОбработкеДополненногоФагментаКоллекции - теперь и обработку, и дополнение можно осуществить через метод "Обработать коллекцию";
    •  ПриПолученииМестаХраненияФайловМониторинга - т.к. исключены механизмы мониторинга, данное событие утратило свою силу;

    Параметры "Менеджера потоков":

  • Изменены:
    • Структура хранения параметров (полная структура параметров предоставлена в общем макете "мпПолнаяСтруктураПараметров")
    • Имена:
      • КоличествоЭлементовКолекцииНаПоток ->    КоличествоЭлементовКолекцииНаОбъект
      • РазрезМенеджера                                  ->    ИдентификаторМенеджера
  • Добавлены:
    • Общие.КоличествоОбъектовВПакете;
    • Разработчик.Общие;
    • Разработчик.ПоСобытиям;
    • ОбработатьКоллекцию.СобратьКоллекциюИзФрагментов;
    • ОбработатьКоллекцию.КоличествоЭлементовКоллекцииНаОбъект;
    • ПолучитьГраф_Gephi.Каталог;
    • Граф.ОграничениеРазмера;
    • Граф.УчитыватьОбъектыБезРесурсов;
  • Исключены:
    • ДинамическийРассчетКоличестваПотоков              ->    Данный параметр больше не нужен, см. Руководство (параметр "КоличествоЭлементовКолекцииНаОбъект")
    • КоэффициентКратностиОчередиПотоковКПотокам -> теперь "Менеджер потоков" работает с полным графом;
    • ВестиМониторингМенеджераПотоков, т.к. механизм мониторинга исключен;
    • ВестиМониторингПорядкаОбработкиОбъектов, т.к. механизм мониторинга исключен;
    • ВестиМониторингОчередиНаОбработку, т.к. механизм мониторинга исключен;

    Прочие изменения:

  • добавлены методы и свойства формирования файлов для программ анализа графов;
  • обработки демонстрирующие возможности "Менеджера потоков" реализованы более наглядно и обособленно друг от друга;
  • Восстановление партий УПП (//infostart.ru/public/1119110/) так же поддерживает версию 2.1.0
 
 BagFix
  •  01.06.2020
    • Исправлена проблема с автосборкой "ТаблицЗначений"
 
 Обновление "Менеджер потоков" 2.0.7
 
 Обновление 12.03.2019
 
 Обновление "Менеджер потоков" 2.0.6
 
 Обновление "Менеджер потоков" 2.0.5
 
 Добавлена презентация с ISE 2018
 
 Другие статьи и разработки на данную тему:

Все, что было в первой версии, переработано, улучшено и дополнено. В связи с чем она (первая версия) переходит в разряд статьи с основными объяснениями и картинками.

Сразу договоримся, если в тексте будет указано «v1» - это отсылка к реализации в первой версии, если «v2.х» - к текущей.

 

Очень кратко, о чем речь…

Фреймворк в виде одного общего модуля, позволяющего при получении объектов на обработку запускать их в несколько потоков. Особенности:

  • Нет необходимости рассчитывать «порции» для обработки;
  • Нет необходимости организовывать файловый обмен между потоками;
  • Возможность запускать несколько менеджеров потоков одновременно, при этом потоки одного менеджера, могут запускать новые менеджеры со своими задачами и потоками;
  • Можно выстраивать граф зависимости объектов, что позволяет, например, избегать взаимоблокировок и/или организовать восстановление партий (на нашем предприятии удалось добиться 10х+ ускорения при 10 потоках в рабочее время – 200+ активных пользователей - Результаты работы механизма);
  • Все необходимые "вмешательство" в алгоритмы происходят с помощью событий;
  • Возможность описывать алгоритмы событий, как в модуле менеджера, так и в любом другом модуле БД (предпочтительно), а также во внешней обработке.
  • Автоматический рестарт потока в случае ошибок;
  • Контроль за количеством рестартов по каждому объекту;
  • Возможность получать «ответы» от потоков;
  • Возможность контролировать работу с помощью «Инструментов разработчика» или иных отчетов;
  • Возможность срочного прерывания работы;
  • И многое другое…

так было в «v1»

 
 Основные изменения v2.0 (расширение функционала v1):
 
 Основные изменения v2.1 (расширение функционала прошлых версий):
  • Увеличена скорость обработки зависимых объектов на 15-25%, в ряде случаев до 50% по сравнению с версией "v2.0";
  • Полностью переписан весь код;
  • Код проверен с помощью АПК 1.2  (исправлено 350+ замечаний и не соответсвий стандартам 1С, осталось 9 :));
  • Работа с графом "неограниченного" размера;
  • Объекты для обработки теперь передаются пакетами, а не по одному;
  • Приоритезирована раздача заданий потокам;
  • Реализована возможность в событиях (не во всех) дополнять "Параметры для объекта" для передачи в другие события - см. Руководство.
  • Теперь поток, а не менеджер контролирует количество попыток обработать объект;
  • События потоков теперь выполняются в "Попытка-Исключение" - позволяет избежать лишних перезапусков потоков;
  • Добавлены методы для формирования файлов с данными для построения и анализа графов;
    • ПолучитьГраф_Gephi();
    • ПроизвольнаяОбработкаГрафа().

ВАЖНО!!!
Изменен состав и имена событий, а так же переименованы некоторые экспортные методы, в связи с чем, Ваши «события  разработчика» реализованные на прошлых версиях «менеджера потоков» потребуют изменений, но незначительные. 
Для примера, корректировка событий разработчика для «Восстановления партий» заняла примерно 10-15 мин с учетом анализа (80%) и написанием кода(20%).

Разработка проводилось на 1С:Предприятие 8.3 (8.3.9.1850) 32x; Режим совместимости 8.2.15

Теперь обо всем по порядку в деталях и с картинками...

 
 
 Архитектура
 
 Способы обработки
 
 События разработчика
 
 Примеры
 
 Особенности при работе в транзакции (Обработка проведения)

Условия поставок:

Гарантия возврата денег

ООО "Инфостарт" гарантирует Вам 100% возврат оплаты, если программа не соответствует заявленному функционалу из описания. Деньги можно вернуть в полном объеме, если вы заявите об этом в течение 14-ти дней со дня поступления денег на наш счет.

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

Для возврата оплаты просто свяжитесь с нами.

Все

Наименование Файл Версия Размер
Руководство

.pdf 1,13Mb
76
.pdf 2.1.0 1,13Mb 76 Скачать бесплатно

Менеджер потоков

Наименование Файл Версия Размер
Многопоточность. Универсальный «Менеджер потоков» 2.1 (Демо): (Только демонстрационные обработки и модули событий разработчика к ним)

.zip 1,95Mb
91
.zip 2.1.0 1,95Mb 91 Скачать бесплатно
Многопоточность. Универсальный «Менеджер потоков» 2.1

.zip 1,98Mb
139
.zip 2.1.0(c) 1,98Mb 139 Скачать

2.1.0(с) 23 6000 руб. Запросить демо

Специальные предложения

Лучшие комментарии
31. olegtymko 750 25.10.18 07:25 Сейчас в теме
Доклад на IE огонь!) Спасибо, потестирую у себя систему!
awk; drmaxart; +2 Ответить
Остальные комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. tormozit 6436 08.02.18 09:30 Сейчас в теме
Опечатка "ОбработатьКоллекуию"
18. Evil Beaver 7180 08.02.18 18:09 Сейчас в теме
(6) Не везде. В примерах кода часто встречается.
19. Техподдержка 08.02.18 19:58
(18)видимо в спойлерах не ищет(( доберусь до компа перепроверю через "источник". В обработке поправлено, видимо пока готовил статью в Ворде не заметил). Спасибо.
2. Xershi 1268 08.02.18 09:50 Сейчас в теме
Нужны реальные примеры для чего это нужно. Первую версию не читал.
7. Техподдержка 08.02.18 13:05
(2) Реальные примеры - чтоб у всех работало, придумать толком не смог :)
Идею можно посмотреть Тут
10. Техподдержка 08.02.18 13:12
(2)
чего это нужно
С помощью "ОбработатьОбъект" распараллелил партии в УПП Вот результаты
3. infosoft-v 573 08.02.18 10:04 Сейчас в теме
Здравствуйте. Мощная работа.
Проект есть на GitHub? Можно ссылку?
8. Техподдержка 08.02.18 13:07
(3) Нет нету :( Еще с ним не разобрался :(
4. dandykry 6 08.02.18 10:32 Сейчас в теме
Однозначный плюс за разработку.
5. tsukanov 08.02.18 10:54 Сейчас в теме
Эх. Вот сделали бы в платформе возможность ожидать завершения хотя бы одного задания из массива,
и все эти извраты были бы не нужны.
9. Техподдержка 08.02.18 13:10
(5) Ну так запускайте не в массиве, а по одному :) Массив то зачем?
11. tsukanov 08.02.18 13:24 Сейчас в теме
(9) А как ожидать завершения? По таймеру проверять?

Суть то в том, чтобы запустить пачку заданий и при завершении хотя бы одного тут же выдать новое задание с новой порцией данных. Так можно максимально утилизировать процессор и управление потоками становится тривиальным
12. Техподдержка 08.02.18 13:25
(11) Можно по таймеру, можно по значению переменной (в текущей реализации она также сохраняется в общих настройках) и мониторить ее на каждой итерации.
13. tsukanov 08.02.18 13:26 Сейчас в теме
(12) Вот вот. Извращения. А все из-за дурацкой реализации ожидания в платформе

ps Посмотрите в Go оператор Select - вот там правильно сделано
DarkAn; starik-2005; +2 Ответить
14. Техподдержка 08.02.18 13:34
(13) На сколько я понимаю, в Вашей реализации вы предлагаете задействовать, недавние вирусы (meltdown и spectre), тогда возможно получиться получать ответ сразу как задание выполнено :)
15. tsukanov 08.02.18 13:35 Сейчас в теме
(14) Не понял о чем вы. В общем смотрите как сделано в Go
16. пользователь 08.02.18 13:39
Сообщение было скрыто модератором.
...
17. пользователь 08.02.18 14:01
Сообщение было скрыто модератором.
...
28. tsukanov 07.09.18 08:10 Сейчас в теме
(14) Вышла 13 платформа, в которой это стало возможно )
29. Техподдержка 07.09.18 10:49
(28)
ышла 13 платформа, в которой это стало возмож

А можно по подробнее? На что обратить внимание?
30. tsukanov 07.09.18 14:01 Сейчас в теме
(29) Там новый метод для ожидания появился. Вот пример использования как я описывал выше: gist.github.com/tsukanov-as/4a75e731d959017d7238e5ce456e6f28

Ждем изменения статуса хотя бы одного и подменяем сразу на новое задание.
20. izidakg 162 08.02.18 22:54 Сейчас в теме
развитие будет или все задуманное реализовано?
22. Техподдержка 09.02.18 09:06
(20) Есть еще несколько идей (осталось только время найти для их воплощения). Они пока не реализованы, т.к. реализуй я их, то текущую версию выложил бы еще не скоро. Так основные задумки все работают - можно смело пользоваться.
21. artemka 09.02.18 07:59 Сейчас в теме
А каким образом происходит восстановление партий в несколько потоков? Например, для того, чтобы восстановить партию, мне нужно знать остатки по номенклатуре на дату, а пока предыдущий поток не завершится этих данных не будет.
23. Техподдержка 09.02.18 09:09
(21) Артем, для ответа на Ваш вопрос, я рекомендую Вам ознакомится первым постом и с текущим. В первом посте вообще все рассказывалось отталкиваясь именно от этой задачи.
Для простоты понимания посмотрите примеры из первого поста
24. gubanoff 51 09.02.18 10:42 Сейчас в теме
(0) на какой версии платформы можно использовать?
25. Техподдержка 09.02.18 10:56
(24) 8.2 и 8.3. v1 тестировалась на 1С:Предприятие 8.3 (8.3.9.1850) обычные формы. Примеры имеют и обычную, и управляемую формы.
26. kauksi 211 06.04.18 09:24 Сейчас в теме
У меня когда то была идея для РАУЗ... передать матрицу через внешнюю компоненту и быстренько посчитать все через CUDA... тока вот руки так и не дошли
27. kote 526 06.07.18 23:21 Сейчас в теме
(26)

.. знаю таких 2 в своей организации - это кроме себя :)

Кто об этом еще задумывался?
31. olegtymko 750 25.10.18 07:25 Сейчас в теме
Доклад на IE огонь!) Спасибо, потестирую у себя систему!
awk; drmaxart; +2 Ответить
55. Cyberhawk 130 18.07.20 15:28 Сейчас в теме
(31) Чем-нибудь тестирование закончилось? Прижилось или нет?
33. dimbasbear 17 28.01.19 10:46 Сейчас в теме
Добрый день, очень интересная статья, спасибо за труд.

Скажите:

1. Применимо для восстановление партий + оценка стоимости по средней ?
2. Можно краткий пример как это все запустить для п1, в частности как и у вас для конфигурации УПП.
34. Техподдержка 28.01.19 17:18
Добрый день!

(33)
Добрый день, очень интересная статья, спасибо за труд.

Спасибо за отзыв.


(33)
1. Применимо для восстановление партий + оценка стоимости по средней ?

Применимо для любого учета, кроме разве что - РАУЗ (хотя может и там сработает не проверял).
Все процедуры восстановления - ТИПОВЫЕ с небольшими оговорками о них ниже...

Что у нас есть в типовом учете:
1. У нас есть обработка "Проведение по партиям". В ней процедура "КнопкаВыполнитьНажатие", которая в свою очередь, так или иначе, вызывает "ЗаполнениеДокументов.ВыполнитьВосстановление".

2. В рамках этой процедуры обрабатывается последовательность документов и каждый документ последовательности обрабатывается с помощью "УправлениеЗапасамиПартионныйУчет.ДвижениеПартийТоваров(..." (по крайне мере основная масса документов списания).

Все, что необходимо сделать - это чтобы эта строка кода выполнялась в событии "ПриОбработкеДействияПотока" со всеми своими параметрами

для этого необходимо следующее:
1. Перед началом цикла "Пока ЕстьДокументы Цикл" получить параметры менеджера потоков, установить параметры и провести его инициализацию
2. В цикле вместо "УправлениеЗапасамиПартионныйУчет.ДвижениеПартийТоваров (..." вызвать метод менеджера потоков "ОбработатьОбъект", куда параметрами передать а) СтруктуруПараметровМенеджера, б) ссылку на документ в) Структуру (или любую другой коллекцию) со всеми параметрами из типовой "УправлениеЗапасамиПартионныйУчет.ДвижениеПартийТоваров (..."
3. После цикла вызвать метод "ДождатьсяОстановкиМенеджераПотоков" куда передать только СтруктуруПараметровМенеджера.
Все больше в типовой обработке ни чего править не надо.

Дальше идет работа с событиями, что использовалось у Нас:
1. "ПередЗапускомМенеджераПотоков" Создали массив(пустую) для учета документов восстановление по которым не получилось;
2. "ПриПолученииРесурсов" Это основное событие распараллеливания - тут по каждому документу необходимо собирать его ресурсы. Как? Смотрите примеры из презентации или статьи
3. "ПриДобавленииВОчередьОбработки" - тут все просто, если ресурсы есть - возвращаем "Истина", если их нет - "Ложь". Кода возвращается "Истина", объект помещается в граф и по нему рассчитываются связи в зависимости от ресурсов (следующее событие "ПриОбработкеДействияПотока"), а если "Ложь", то объект - пропускается (следующее событие "ПриОбработкеПропуска")
4. "ПриОбработкеДействияПотока" собственно вызываем нашу строчку кода "УправлениеЗапасамиПартионныйУчет.ДвижениеПартийТоваров(..." со всеми параметрами. Результатом данного метода могут быть произвольные данные (ловятся в событии "ПриОбработкеОтвета")

5. Надо зафиксировать факт НЕ обработки объекта - это можно сделать в 2х событиях: "ПриОбработкеОшибки" - если поток падал в момент обработки объекта (по умолчанию до 5 раз пытается обработать объект) и в событии "ПриОбработкеОтвета" можно, например, при обработке события "ПриОбработкеДействияПотока" возвращать значение переменной "Отказ" если оно "Истина", в этом случае мы заносим объект в структуру определенную в п1.

6. "ПослеЗавершенияМенеджераПотоков" собственно - это последнее событие в нем мы производим установку границы последовательности. Если массив из п1 - пуст, то на самый последний документ последовательности в периоде, а если в массиве есть хоть один документ, то границу устанавливаем на самый ранний.


Для примера:
Количество строк кода во всех событиях: ~400
Самое большое событие: "ПриПолученииРесурсов" ~ 150 строк
Самое маленькое событие: "ПриДобавленииВОчередьОбработки" - 1 строка (Возврат пПараметрыСобытия.СтруктураДанных.МассивРесурсов.Количество() > 0;)

P.S. Один из не маловажных моментов :)
Код написанный в цикле процедуры "ВыполнитьВосстановление" - выполняется в транзакции, так вот: перед выполнением метода "ОбработатьОбъект" рекомендуется ее зафиксировать, а сразу за ним Начать новую. Кроме того в событии "ПриОбработкеДействияПотока" строку "УправлениеЗапасамиПартионныйУчет.ДвижениеПартийТоваров(..." - наоборот заключить в транзакцию
P.P.S. У нас помимо "УправлениеЗапасамиПартионныйУчет.ДвижениеПартийТоваров(..." в событии "ПриОбработкеДействияПотока" вызывается еще и "УправлениеПроизводствомДвиженияПоРегистрам.ПровестиДокументПоПроизводственнымРегистрам(..."

Но так у Нас, у Вас возможно будет по другому :)
Cyberhawk; +1 Ответить
35. velsevur 29.01.19 09:10 Сейчас в теме
(34)
2. "ПриПолученииРесурсов" Это основное событие распараллеливания - тут по каждому документу необходимо собирать его ресурсы. Как? Смотрите примеры из презентации или статьи


Доброго дня.
А можно привести пример кода для формирования ресурса и как потом им пользоваться. Я в этом месте застрял.
36. Техподдержка 29.01.19 10:38
(35)
А можно привести пример кода для формирования ресурса и как потом им пользоваться.


Ресурсами ни как пользоваться не надо ими пользуется "менеджер потоков" главное правильно их сформировать (тут пример в примерах, на картинках, см. строку "Массивы" надо сформировать массив массивов)

Вот примерный код:
СтруктураДанных = пПараметрыСобытия.СтруктураДанных;
ОбрабатываемыйОбъект = СтруктураДанных.ОбрабатываемыйОбъект;
ПараметрыДляОбъекта  = СтруктураДанных.ПараметрыДляОбъекта;

МассивРесурсов = Новый Массив;
ТаблицаСписания = УправлениеЗапасамиПартионныйУчет.ПолучитьТаблицуСтрокДокументов(ОбрабатываемыйОбъект, 
				ПараметрыДляОбъекта.Упр, 
				ПараметрыДляОбъекта.Бух, 
				ПараметрыДляОбъекта.Нал);	
	
Для каждого СтрокаСписания из ТаблицаСписания Цикл
	МассивРесурса  = Новый Массив;
	МассивРесурса.Добавить(СтрокаСписания.Номенклатура);
	МассивРесурса.Добавить(СтрокаСписания.Склад);
		
	МассивРесурсов.Добавить(МассивРесурса);
КонецЦикла;

Возврат МассивРесурсов;
Показать
37. dimbasbear 17 29.01.19 16:11 Сейчас в теме
Дальше идет работа с событиями, что использовалось у Нас:
1. "ПередЗапускомМенеджераПотоков" Создали массив(пустую) для учета документов восстановление по которым не получилось;
2. "ПриПолученииРесурсов" Это основное событие распараллеливания - тут по каждому документу необходимо собирать его ресурсы. Как? Смотрите примеры из презентации или статьи
3. "ПриДобавленииВОчередьОбработки" - тут все просто, если ресурсы есть - возвращаем "Истина", если их нет - "Ложь". Кода возвращается "Истина", объект помещается в граф и по нему рассчитываются связи в зависимости от ресурсов (следующее событие "ПриОбработкеДействияПотока"), а если "Ложь", то объект - пропускается (следующее событие "ПриОбработкеПропуска")
4. "ПриОбработкеДействияПотока" собственно вызываем нашу строчку кода "УправлениеЗапасамиПартионныйУчет.ДвижениеПартийТоваров(..." со всеми параметрами. Результатом данного метода могут быть произвольные данные (ловятся в событии "ПриОбработкеОтвета")

5. Надо зафиксировать факт НЕ обработки объекта - это можно сделать в 2х событиях: "ПриОбработкеОшибки" - если поток падал в момент обработки объекта (по умолчанию до 5 раз пытается обработать объект) и в событии "ПриОбработкеОтвета" можно, например, при обработке события "ПриОбработкеДействияПотока" возвращать значение переменной "Отказ" если оно "Истина", в этом случае мы заносим объект в структуру определенную в п1.

6. "ПослеЗавершенияМенеджераПотоков" собственно - это последнее событие в нем мы производим установку границы последовательности. Если массив из п1 - пуст, то на самый последний документ последовательности в периоде, а если в массиве есть хоть один документ, то границу устанавливаем на самый ранний.


Дошел до событий, дабы не городить костыли - можно пример кода по каждому из событий для восст. по партиям?
38. Техподдержка 29.01.19 17:14
(37)
Дошел до событий, дабы не городить костыли - можно пример кода по каждому из событий для восст. по партиям?


В рамках данной статьи это не предусмотрено.
Постараюсь собраться с силами и выложить новую со всеми кодами для восстановления партий на нашем примере :)

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

Рекомендации:
0) Поднимите копию базы и сделайте там первое полное восстановление за месяц (это будет эталон для сравнения)
1) разработку рекомендую начать в отдельной базе с 1 потока;
2) восстановление делайте в рамках 1 дня;
3) для сверки пользуйтесь "Ведомость по партиям товаров на складах"
4) как добьетесь результата на 1 потоке увеличивайте их количество до 2-3, если и на них все будет гладко, то ставьте, то количество которое потянет ваш сервер :) (У нас восстановление делается на 10 потоках - этого для нас достаточно. Но была задача по непосредственному удалению документов из БД, там писали обработку и удаляли на 45 потоках. Все зависит от специфики, задачи, железа и т.д.)

Для восстановление выше приведенного кода(с расчетом ресурсов) не достаточно - все зависит от специфики Вашего предприятия. В нашем дополнительно еще собираются ресурсы по производственной части.

Так что, дерзайте!

P.S. Я надеюсь у Вас управляемый режим блокировок?
39. velsevur 30.01.19 10:59 Сейчас в теме
Подскажите, что нужно сделать, что-бы сработал механизм формирования ресурсов.
Запускаю потоки через "мпМенеджерПотоков.ОбработатьКоллекциюОбъектов".

2. "ПриПолученииРесурсов" Это основное событие распараллеливания - тут по каждому документу необходимо собирать его ресурсы. Как? Смотрите примеры из презентации или статьи
не срабатывает.
40. Техподдержка 30.01.19 11:13
Событие "ПриПолученииРесурсов" предназначено только для метода "ОбработатьОбъект" - когда по объектам необходимо строить граф.
Рекомендую посмотреть презентацию с IE2018 (ссылка есть в публикации) или тут.
Необходимый минимум для метода "ОбработатьКоллекциюОбъектов" показан тут.

Пока прикладываю схему доступности событий от методов
Прикрепленные файлы:
41. velsevur 01.02.19 12:09 Сейчас в теме
(40) Спасибо.

Подскажите что я делаю не так:
1. Получаю параметры "ПолучитьСтруктуруПараметровИнициализацииМенеджераПотоков"
2. Инициализирую МП "ИнициализироватьМенеджерПотоков"
3. В цикле обхожу выборку документов методом "ОбработатьОбъект"
4. После цикла ожидаю завершения МП "ДождатьсяОстановкиМенеджераПотоков"

Получаю ошибку:
Поле объекта не обнаружено (АлгоритмыРаботыСКоллекцией)
КодСоздания   = пСтруктураПараметров.ПараметрыИнициализации.ПараметрыОбработкиКоллекции.АлгоритмыРаботыСКоллекцией.КодСоздания;


В структуре "ПараметрыОбработкиКоллекции" действительно нет "АлгоритмыРаботыСКоллекцией".

Перед циклом дописал:
КодСоздания   = "КоллекцияПриемник = Новый СписокЗначений;";
		КодДобавления = "ЗаполнитьЗначенияСвойств(КоллекцияПриемник.Добавить(), КоллекцияИсточник[ИндексКоллекции]);";

		Структура = Новый Структура;
		Структура.Вставить("КодСоздания"  , КодСоздания);
		Структура.Вставить("КодДобавления", КодДобавления);
		
		СтруктураПараметромМП.ПараметрыИнициализации.ПараметрыОбработкиКоллекции.Вставить("АлгоритмыРаботыСКоллекцией", Структура);


А как нужно было сделать правильно?
42. Техподдержка 01.02.19 13:06
(41) пункты с 1 по 4 - правильные
Но вот код вызывающий у Вас ошибку срабатывать не должен. Он относится к методам работы с коллекциями.
И встречается в 2х местах:
Функция ПолучитьДанныеИзМенеджераПотоков 
...
ИначеЕсли РезультатОбработки = "ДополненныйФрагментКоллекции" Тогда
...

и
Функция ОбработатьКоллекцию

которая в свою очередь вызывается из метода "ОбработатьКоллекциюОбъектов" и "ДополнитьКоллекциюОбъектов"


Версия менеджера у Вас 2.0.5? (не могу определить дату скачивания - не вижу Вас среди скачавших)

Можете мне прислать замер производительности по работе ФЗ "менеджера потоков"? (например через вотсап - номер в профиле)
и Код используемой обработки или саму обработку.
43. velsevur 01.02.19 14:07 Сейчас в теме
(42) Не вижу номера в профиле, возможно нужно быть в друзьях. Версия 2.0.5. Скачивался МП с другого аккаунта "Cruciann".

		Сообщить("Обработка в потоках.");
		ВремяНачала = ТекущаяУниверсальнаяДатаВМиллисекундах();
		
		СтруктураПараметров = векМенеджерПотоков.ПолучитьСтруктуруПараметровИнициализацииМенеджераПотоков("ОбработатьКоллекциюДокументовОчередипереобеспечения","");
		векМодульМенеджераПотоков.ПолучитьПараметрыМП("ЗаказПоставщику",СтруктураПараметров);
		СтруктураПараметромМП = векМенеджерПотоков.ИнициализироватьМенеджерПотоков(СтруктураПараметров);
		
#Область Костыли
		КодСоздания   = "КоллекцияПриемник = Новый СписокЗначений;";
		КодДобавления = "ЗаполнитьЗначенияСвойств(КоллекцияПриемник.Добавить(), КоллекцияИсточник[ИндексКоллекции]);";

		Структура = Новый Структура;
		Структура.Вставить("КодСоздания"  , КодСоздания);
		Структура.Вставить("КодДобавления", КодДобавления);
		
		СтруктураПараметромМП.ПараметрыИнициализации.ПараметрыОбработкиКоллекции.Вставить("АлгоритмыРаботыСКоллекцией", Структура);
#КонецОбласти

		Для Каждого ДокументСсылка Из Коллекция Цикл 
			СтруктурапараметровОбъекта = Новый Структура;
			СтруктурапараметровОбъекта.Вставить("Период",ДокументСсылка.Период);
			
			векМенеджерПотоков.ОбработатьОбъект(СтруктураПараметромМП,ДокументСсылка.Документ,СтруктурапараметровОбъекта);
		КонецЦикла;
		векМенеджерПотоков.ДождатьсяОстановкиМенеджераПотоков(СтруктураПараметромМП);
		
		ВремяКонцаВыполнения = ТекущаяУниверсальнаяДатаВМиллисекундах();
		ВремяВыполненияВМиллисекундах = ВремяКонцаВыполнения - ВремяНачала;
		Сообщить("Окончание потоковой обработки: "+ВремяВыполненияВМиллисекундах / 1000);
Показать



Процедура ПолучитьПараметрыМП(ОбъектОбработки,СтруктураПараметров) Экспорт 
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	векНастройкиМногопоточности.МодульОбработкиСобытийРазработчика КАК МодульОбработкиСобытийРазработчика,
	|	векНастройкиМногопоточности.МинимальноеКоличествоКоллекции КАК МинимальноеКоличествоКоллекции,
	|	векНастройкиМногопоточности.КоличествоПотоков КАК КоличествоПотоков,
	|	векНастройкиМногопоточности.КоличествоЭлементовКолекцииНаПоток КАК КоличествоЭлементовКолекцииНаПоток,
	|	векНастройкиМногопоточности.КоэффициентКратностиОчередиПотоковКПотокам КАК КоэффициентКратностиОчередиПотоковКПотокам,
	|	векНастройкиМногопоточности.ПределКоличествоПопытокОбработатьОбъект КАК ПределКоличествоПопытокОбработатьОбъект
	|ИЗ
	|	РегистрСведений.векНастройкиМногопоточности КАК векНастройкиМногопоточности
	|ГДЕ
	|	векНастройкиМногопоточности.Активно
	|	И векНастройкиМногопоточности.ОбъектОбработки = &ОбъектОбработки";
	
	Запрос.УстановитьПараметр("ОбъектОбработки", ОбъектОбработки);
	
	РезультатЗапроса = Запрос.Выполнить();
	Выборка = РезультатЗапроса.Выбрать();
	
	СтруктураПараметров.ПараметрыОбщие.Вставить("Активно",Ложь);
	
	Если Выборка.Следующий() Тогда
		
		Если ЗначениеЗаполнено(Выборка.МодульОбработкиСобытийРазработчика) Тогда 
			СтруктураПараметров.ПараметрыИнициализации.МодульОбработкиСобытийРазработчика = Выборка.МодульОбработкиСобытийРазработчика;
		КонецЕсли;
		
		Если ЗначениеЗаполнено(Выборка.КоличествоПотоков) Тогда 
			Если ТипЗнч(Выборка.КоличествоПотоков) = Тип("Число") Тогда 
				СтруктураПараметров.ПараметрыИнициализации.КоличествоПотоков = Выборка.КоличествоПотоков;
			КонецЕсли;
			
			Если ТипЗнч(Выборка.КоличествоПотоков) = Тип("Булево") Тогда 
				СтруктураПараметров.ПараметрыИнициализации.ПараметрыОбработкиКоллекции.ДинамическийРассчетКоличестваПотоков = Выборка.КоличествоПотоков;
			КонецЕсли;
		КонецЕсли;
		
		Если ЗначениеЗаполнено(Выборка.КоличествоЭлементовКолекцииНаПоток) Тогда 
			СтруктураПараметров.ПараметрыИнициализации.ПараметрыОбработкиКоллекции.КоличествоЭлементовКолекцииНаПоток = Выборка.КоличествоЭлементовКолекцииНаПоток;
		КонецЕсли;
		
		Если ЗначениеЗаполнено(Выборка.КоэффициентКратностиОчередиПотоковКПотокам) Тогда 
			СтруктураПараметров.ПараметрыИнициализации.КоэффициентКратностиОчередиПотоковКПотокам = Выборка.КоэффициентКратностиОчередиПотоковКПотокам;
		КонецЕсли;
		
		Если ЗначениеЗаполнено(Выборка.ПределКоличествоПопытокОбработатьОбъект) Тогда 
			СтруктураПараметров.ПараметрыИнициализации.ПределКоличествоПопытокОбработатьОбъект = Выборка.ПределКоличествоПопытокОбработатьОбъект;
		КонецЕсли;
		
		СтруктураПараметров.ПараметрыОбщие.Активно = Истина;
		СтруктураПараметров.ПараметрыОбщие.Вставить("МинимальноеКоличествоКоллекции",Макс(Выборка.МинимальноеКоличествоКоллекции,1));
		
	КонецЕсли;
	
КонецПроцедуры
Показать


Если ИмяСобытия = "ПриПолученииРесурсов" Тогда				//Поток
			
			ОтветСобытия = ПриПолученииРесурсов(пПараметрыСобытия);
			//Сообщение = Новый СообщениеПользователю;
			//Сообщение.Текст = "Ресурс получен";
			//Сообщение.Сообщить();
		
		ИначеЕсли ИмяСобытия = "ПриОбработкеДействияПотока" Тогда		//Поток
			СтруктураДанных = пПараметрыСобытия.СтруктураДанных;
			ПараметрыДляОбъекта = СтруктураДанных.ПараметрыДляОбъекта;
			
			РегистрыСведений.векОчередьДляПереобеспечения.ОбработатьДокумент(ПараметрыДляОбъекта.Период, СтруктураДанных.ОбрабатываемыйОбъект);
Показать


Функция ПриПолученииРесурсов(пПараметрыСобытия)
	
	СтруктураДанных = пПараметрыСобытия.СтруктураДанных;
	ОбрабатываемыйОбъект = СтруктураДанных.ОбрабатываемыйОбъект;
	
	ТабличнаяЧастьДокумента = ПолучитьТабличнуюЧастьДокумента(ОбрабатываемыйОбъект);
	
	МассивРесурсов = Новый Массив;
	МассивРесурса  = Новый Массив;
	МассивРесурса.Добавить(векПолучитьЗначениеРеквизита(ОбрабатываемыйОбъект,"Склад"));
	
	Для каждого СтрокаТЧД из ТабличнаяЧастьДокумента Цикл
		МассивРесурса.Добавить(СтрокаТЧД.Номенклатура);
	КонецЦикла;
	
	МассивРесурсов.Добавить(МассивРесурса);
	
	Возврат МассивРесурсов;
	
КонецФункции
Показать
Прикрепленные файлы:
44. velsevur 01.02.19 16:15 Сейчас в теме
(43)
Благодаря помощи автора темы проблема была решена путем правки модуля МП,

Строки с 1514-1516 необходимо обернуть в условие

Если РезультатОбработки = "ДополненныйФрагментКоллекции" Тогда


Спасибо DarkAn
60. MURzzz 94 04.12.20 11:49 Сейчас в теме
(40) Подскажите, пожалуйста, я правильно понимаю, что ОбработатьОбъект() только для ссылочных объектов? То есть если например необходимо в многопотоке обрабатывать очередь из регистра сведений, то придется использовать либо метод "ДополнитьКоллекцию", либо "ОбработатьКоллекцию"? Хотелось задействовать расчет ресурсов для построения графов, чтобы при работе фоновых заданий добавлять в коллекцию новые события, появляющиеся в очереди (новые записи регистра сведений). Почитал, посмотрел, но вот с этими вопросами не доразобрался.
62. Техподдержка 04.12.20 14:09
(60)
Хотелось задействовать расчет ресурсов для построения графов, чтобы при работе фоновых заданий добавлять в коллекцию новые события, появляющиеся в очереди (новые записи регистра сведений)

Добрый день!
Если не сложно можете расписать задачу, чуть подробнее (желательно в личку, чтоб тут не засорять), возможно удастся предложить решение
45. rbdaurov 16.03.19 13:39 Сейчас в теме
Добрый день, получаю бесконечный цикл, соответственно не может завершиться менеджер потоков, что я могу упускать?
Функция ДождатьсяОстановкиМенеджераПотоков(пСтруктураПараметров) Экспорт
...
Пока ПолучитьЗначениеХранилищаОбщихНастроек(РазрезМенеджеров, "ИдФЗМенеджераПотоков") <> Неопределено Цикл
		Слипп(0.1);
КонецЦикла;
...
46. Техподдержка 28.03.19 09:28
(45)
соответственно не может завершиться менеджер потоков, что я могу упускать

Добрый день! Прошу прощения за задержку - был в отпуске.
Предоставленных данных не достаточно для однозначного ответа.

Дабы не загромождать форум - жду Вашего ответа в "личке"
47. izidakg 162 17.05.19 16:14 Сейчас в теме
что в архиве за 10 см, кроме файлов выложенных отдельно?
48. Техподдержка 20.05.19 09:46
(47) Конфигурация с общим модулем, где собственно и содержаться все методы для работы с менеджером потоков.
49. izidakg 162 20.05.19 11:20 Сейчас в теме
(48) развитие предполагается или только работа по оптимизации?
50. Техподдержка 20.05.19 12:15
(49) Идеи для развития еще есть.
Пока больше проблем со временем их реализации.

Но текущего функционала уже достаточно для многих задач
51. Ulus 282 26.06.19 04:24 Сейчас в теме
(50) выложите за стартмани пример, где вы в УПП партионку восстанавливаете через многопоточность.
Определенному кругу лиц полезно будет.
52. Техподдержка 26.06.19 10:08
(51) Выложить данный функционал хочу уже давно, вот только времени все "в кучу" собрать пока не получается :(
Очень надеюсь, что до ИС все же получиться провернуть данный вариант.
53. bashorgin 27.09.19 04:17 Сейчас в теме
Вы в версии 2.0.7 разделили модуль на 4 шт, а обработку с примерами забыли обновить. В ней теперь передача мутабельного на сервер происходит. Например, тут:
НоваяКоллекция = мпМенеджерПотоков.ДополнитьКоллекциюОбъектов(СтруктураПараметров, Коллекция);
56. oldy 2 09.09.20 15:00 Сейчас в теме
Подскажите, как средствами МП организовать индикацию хода выполнения? Вот прямо на форму, из которой выполнен запуск МП в несколько потоков, выводить либо общий по всем потокам процент выполнения, либо обновлять индикатор. Потупил какое-то время в документацию, но не увидел подходящего. Подробно не прошу объяснять, просто идею. Спасибо!
57. Техподдержка 09.09.20 15:53
(56) Добрый день.
На текущий момент данного функционала не предусмотрено. Есть идеи по реализации, но пока руки не доходят :(
Так же один из клиентов МП - данный функционал реализовал (https://infostart.ru/profile/890948/). Думаю он не откажет в помощи.
58. MURzzz 94 03.12.20 19:11 Сейчас в теме
В руководстве написано, что взаимодействие с платформой 1С:Предприятие для Windows. При использовании Linux, какие необходимо внести изменения в Менеджер потоков?
59. Техподдержка 04.12.20 09:06
(58) Добрый день!
Все ограничение завязано на имитацию метода "sleep" - реализовано через "WScript.Shell"

мпОбщееСервер.Ожидание()
61. MURzzz 94 04.12.20 11:51 Сейчас в теме
(59) понял, спасибо, попробую заменить на что-то подобное: http://forum.infostart.ru/forum9/topic182004/message2115568/#message2115568
63. Kembreg 14.05.21 15:49 Сейчас в теме
Добрый день.

Версия 2.1.0.1 (скачивали с другого аккаунта, ppeskov)

Есть ли какие то ограничения по месту вызова мпОсновнаяПрограммаВызовСервера.ИнициализироватьМенеджерПотоков(ПараметрыМП); ?

При размещении данного кода в модуле объекта в предопределенной процедуре ОбработкаПроведения инициализации не происходит, падает с ошибкой

Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{ОбщийМодуль.мпОбщееСервер.Модуль(133)}: "Менеджер потоков" - прервал выполнение
ВызватьИсключение ТекстСообщения;

ясности не прибавляет. Перенесли пока функционал в команду формы, работает без нареканий.

"Исторически так сложилось" что на основании табличной части документа в процессе проведения происходят "волшебные вещи", распараллеливание вашей конфигурацией творит в этом плане чудеса, хотелось бы все-таки попробовать перенести распараллеливание в проведение, не сильно при этом меняя текущую логику
64. Техподдержка 14.05.21 16:21
(63) Добрый день!
Правильно ли я понял, что вы хотите распараллелить проведение документа?
Боюсь не получиться, по крайне мере я не смог найти решение. Первое с чем Вы можете столкнуться при такой реализации – это взаимоблокировки, т.к. фоновые задания (потоки) генерируют другие транзакции.
На прошлой конференции ИС-2019, я общался с Дмитрием Дудиным (https://infostart.ru/profile/198214/) (он обмолвился, что знает, как распараллелить проведение). В кулуарах он мне пытался объяснить, но я его объяснение не осилил ☹, может вам повезет больше 😊.

По поводу ограничений… Ограничений быть не должно ни каких сверх того, что накладывает сама платформа 1С.
По поводу сообщения об ошибке. Что написано в журнале регистрации?
По поводу «волшебные вещи» и «чудеса» - о чем речь?
65. Kembreg 14.05.21 16:46 Сейчас в теме
(64)
В Журнале регистрации:

Фоновое задание. Запуск
Фоновое задание. Ошибка выполнения
{ОбщийМодуль.мпОбщееСервер.Модуль(133)}: Общий модуль "" не найден.
Сеанс. Завершение
Ошибка выполнения
{ОбщийМодуль.мпОбщееСервер.Модуль(133)}: "Менеджер потоков" - прервал выполнение

Нет, мы не планируем распараллеливать проведение документа. Данный документ у нас по сути выполняет функции Бизнес процесса, выполняет определенные действия над объектами, ссылки которых содержатся в табличной части в определенной последовательности, а флаг "проведён" устанавливается после успешного выполнения всех действий. И хотя данный функционал находится в обработке проведения, движений он не формирует, лишь свидетельствует об успешности. Для того чтобы избежать взаимоблокировок в процессе обработки объектов и используем вашу обработку, с табличной частью 3000 строк и более она дает отличные результаты ускорение в 3-4 раза, но пока не получается "последняя миля", место вызова
Прикрепленные файлы:
66. Техподдержка 17.05.21 09:47
(65) Да, вроде у меня ситуация тоже повторяется, при проведении. Как разберусь - сообщу...
67. Техподдержка 17.05.21 11:49
(65) В общем разобрался с причиной.

Причина в следующем: В момент проведения активна транзакция (самого документа), в механизме обмена данными между «Основной программой» / «Менеджером потоков» и «Потоками» участвует «ХранилищеОбщихНастроек», для согласованности обмена между ФЗ, чтение из хранилища идет в транзакции. Тут и происходит проблема, при проведении происходит инициализация параметров и их передача в ФЗ менеджера потоков, но он их прочитать из хранилища не может, т.к. на стороне «Основной программы» - обработки проведения транзакция не завершена.

Решение (кратко - см. скрины): инициализацию и запуск менеджера потоков необходимо выполнить в отдельном ФЗ.

Надеюсь такое решение не вписывается в "не сильно при этом меняя текущую логику"
Прикрепленные файлы:
68. Kembreg 17.05.21 12:53 Сейчас в теме
(67) Отличный вариант, благодарю
69. Техподдержка 17.05.21 14:12
(68) Данную особенность отразил в статье
70. Kembreg 20.05.21 14:58 Сейчас в теме
(67) Пробую реализовать данный вариант - столкнулся с тем, что при данном варианте теряется часть "Обратной связи". Например перестают отрабатывать Сообщения пользователю в фоновом задании. В соответствующем окошке тишина. При вызове Функции ПриОбработкеПотоком(пПараметрыСобытия) если перед возвратом указываем

 Сообщение = Новый СообщениеПользователю;
			Сообщение.Текст = СтрШаблон("Создан возврат %1",Документы.ВозвратТоваровОтКлиента.ПолучитьСсылку(Новый УникальныйИдентификатор(XmlСтрокаНаВозврат)));
			Сообщение.Сообщить();
			
			Возврат Документы.ВозвратТоваровОтКлиента.ПолучитьСсылку(Новый УникальныйИдентификатор(XmlСтрокаНаВозврат));


То строка появляется только при "обычном" вызове из формы, если мы выносим многопоточность в отдельное фоновое задание из транзакции проведения, то в окне сообщений тишина.

Я правильно понимаю, что пока единственный вариант контроля за результатом в режиме запуска в транзакции проведения, это всё-таки использование коллекций с автосборкой и возвратом результатов работы в удобной форме, и мириться со взаимоблокировками ресурсов, не используя обработку объекта и функцию ПриРасчетеРесурсов? Или всё таки есть способ увидеть результаты по всем ФЗ после обработки всех потоков обработки объектов?
71. Техподдержка 20.05.21 17:23
(70) Думаю что можно, но надо проверить. Необходимо реализовать по аналогии с текущим механизмом.
Ваши сообщения выводятся, но только в фоновом задании в котором происходит инициализация МП.

В приведенном выше примере показано помещение во временное хранилище "КоллекцияПриемник", туда можно поместить структура с 2 значениями, "КоллекцияПриемник" и "СообщениеПользователю"

СообщениеПользователю получить как описано в функции мпПотокиСервер.ПолучитьСообщениеДляПользователя()

И уже в своей программе после ожидания ФЗ получить структуру и вывести сообщение.

Надеюсь смог донести мысль. Если возникнут проблемы - постараюсь на днях накидать пример :)
73. RPGrigorev 629 23.11.21 15:45 Сейчас в теме
(71)Покупал сегодня утром обработку с профиля "Астрея", можно добавить проверку на ОС? И изменить алгоритм?
Прикрепленные файлы:
74. RPGrigorev 629 23.11.21 15:46 Сейчас в теме
Как можно обойти это сейчас?
76. Техподдержка 23.11.21 16:28
(74) Можете написать свой метод задержки или закомментировать все тело процедуры.
77. RPGrigorev 629 23.11.21 17:53 Сейчас в теме
78. RPGrigorev 629 23.11.21 18:10 Сейчас в теме
(76)Клиент-сервер
Прикрепленные файлы:
79. RPGrigorev 629 23.11.21 18:28 Сейчас в теме
80. Техподдержка 23.11.21 19:15
(79) Что за база в которой выходит сообщение? Это база из поставки 1Cv8.cf, или это Ваша база куда Вы загрузили "Поставку"?

Работоспособность демо примеров просьба проверять на пустой базе из поставки 1Cv8.cf. При загрузки поставки в свою базу, часть объектов по умолчанию не переносятся (именно демо модули)
Прикрепленные файлы:
81. RPGrigorev 629 23.11.21 21:15 Сейчас в теме
(80) УПП 1.3, перенес все объекты из 1Cv8.cf, что самое интересное, демо примеры (обработки) отрабатывают, с точно таким же кодом инициализации...не отрабатывает вызов в модуле "ЗаполнениеДокументов", буду копать
82. RPGrigorev 629 23.11.21 22:36 Сейчас в теме
Первый день, пока не особо разобрался, что делаю не так, вызывается метод "ИнициализироватьМенеджерПотоков" и фоновые задания "бесконечно" (около часа наблюдал) бегают по процедурам и модулям, т.е. до точки останова дело даже не доходит, не выходит из процедуры этого метода...
Прикрепленные файлы:
Оставьте свое сообщение

См. также

Коннектор: удобный HTTP-клиент для 1С:Предприятие 8 Промо

Внешние источники данных WEB Универсальные функции Инструментарий разработчика Универсальные обработки Практика программирования v8 1cv8.cf Платные (руб)

Коннектор - библиотека для работы с HTTP запросами. Библиотека берет на себя всю рутину работы с HTTP запросами. Буквально в одну строку можно получать данные, отправлять, не заботясь о необходимости конструирования URL, кодирования данных и т.п.

2000 руб.

31.01.2019    81970    516    213    

Автоматизация труда программиста. Библиотека прикладных функций

Универсальные функции Прочие инструменты разработчика Рефакторинг и качество кода v8 Платформа 1C v8.2 Платформа 1С v8.1 1cv8.cf Платные (руб)

Программист - это человек, непрерывно принимающий решения. Написание кода не является процессом принятия решения - это всего лишь трансляция ваших желаний. Если вас периодически тяготит написание сотен строк кода ради решения задач, то прошу обратить внимание. Данный продукт позволит существенно сократить время на рутинные операции при разработке. За счет библиотечной реализации сокращается объём кода, а его читаемость повышается. К библиотеке прилагается документация API и шаблоны кода для наиболее популярных методов.

4200 руб.

16.04.2021    3880    0    2    

Конфигурация Session Monitor

HighLoad оптимизация v8 Россия Платные (руб)

Конфигурация Session Monitor предназначена для мониторинга сервера 1С с целью отслеживания чрезмерной нагрузки от конкретных сеансов и скорости реакции рабочих процессов.

1200 руб.

01.12.2020    5028    11    0    

Альтернативный способ записи в регистры

Конфигурирование 1С v8 Бесплатно (free)

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

20.10.2020    2872    DarkAn    30    

"Менеджер потоков 2.1": УПП: "Восстановление партий" Промо

Обработка документов v8 УПП1 Россия БУ УУ Платные (руб)

Как оптимизировать то, что, считалось, не поддается оптимизации? Как повысить доступность базы данных? Как проводить самую «времяемкую» операцию не по паре раз в неделю, а по несколько раз в день*? Ответ есть!

20000 руб.

12.09.2019    5783    2    9    

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Обмен данными и распределенная БД Инструментарий разработчика WEB v8 Платные (руб)

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

1500 руб.

24.09.2019    11668    5    7    

Мониторинг баз и серверов 1С

Журнал регистрации Статистика базы данных HighLoad оптимизация Администрирование СУБД Технологический журнал v8 Платные (руб)

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

7500 руб.

28.08.2019    17977    41    17    

[ЕХТ] Фреймворк для расширений

Инструментарий разработчика v8 v8::УФ Платные (руб)

«Фреймворк для Расширений» это универсальное решение, позволяющее обрабатывать в Расширениях любые события Конфигурации без заимствований форм, модулей и объектов. Фреймворк выполнен в виде расширения с открытым исходным кодом. Работает в любых Конфигурациях с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

2000 руб.

27.08.2019    10140    1    6    

Регби. Управление по методике Agile:Scrum с элементами Канбан Промо

Методология Управление услугами и сервисом СRM Производство готовой продукции (работ, услуг) Учет рабочего времени Производство готовой продукции (работ, услуг) Учет рабочего времени Инструментарий разработчика v8 1cv8.cf УУ Платные (руб)

Решение для автоматизации учёта работ по методике Agile:Scrum с элементами Канбан. Разработано на платформе 1С:Предприятие 8.3 (управляемое приложение) и Библиотеке стандартных подсистем. Имеет всё необходимое для полноценной работы небольшой команды разработчиков или отдела сопровождения. Помимо прочего, может применяться как канбан-доска для произвольного круга задач.

10500 руб.

04.04.2017    33212    6    17    

Менеджер потоков: реализация "любой" задачи в потоках

HighLoad оптимизация Инструментарий разработчика v8 Абонемент ($m)

Менеджер потоков – один их новых инструментов, который упрощает работу разработчиков. Насколько легко с ним, на конференции Infostart Event 2018 Education показал начальник отдела автоматизации 1С Иван Филимонов компании «Трансстроймеханизация».

01.08.2019    11538    DarkAn    7    

Многопоточное восстановление последовательностей

HighLoad оптимизация Математика и алгоритмы Универсальные функции Практика программирования v8 Бесплатно (free)

Универсальный алгоритм многопоточного фонового восстановления любой последовательности.

05.12.2018    15374    _ASZ_    33    

Многопоточная обработка данных

HighLoad оптимизация Инструменты администратора БД v8 v8::УФ 1cv8.cf Абонемент ($m)

Конфигурация "Универсальные механизмы: пакеты данных". Набор инструментов для быстрой организации отказоустойчивой многопоточной обработки данных.

1 стартмани

23.11.2018    30802    109    _ASZ_    17    

Эмулятор скриптов в 1С:Документооборот Промо

Документооборот и делопроизводство Инструментарий разработчика Документооборот и делопроизводство v8 ДО Платные (руб)

В 1С:Документообороте можно использовать программный код 1С в пользовательском режиме (не в конфигураторе). Однако если в конфигураторе есть отладчик, то в пользовательском режиме протестировать скрипт достаточно сложно. Внешняя обработка Эмулятор скриптов позволяет вывести результаты скрипта и проверить работу алгоритма на разных документах.

1000 руб.

13.12.2017    24932    106    0    

1С HTML Шаблоны / HTML Templates

Инструментарий разработчика Универсальные обработки WEB v8 1cv8.cf Платные (руб)

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

1000 руб.

27.12.2017    19956    2    10    

Система сбора и анализа информации по производительности работы баз данных, работающих  под связкой «кластер 1С 8.2/8.3 - Microsoft SQL server»

HighLoad оптимизация v8 Россия Платные (руб)

Инструмент в помощь специалисту по производительности sql-серверов с базами 1С. Программа (c#) собирает наиболее заметные (по времени исполнения, физическим / логическим чтениям / загрузке CPU ) запросы, группирует по обобщенным текстам запросов и контекстам исполнения 1С (если есть), предоставляет информацию в виде отчетов по наиболее заметным запросам и прочей информации (длительные запросы по данным техжурналов, содержимое буферпула в динамике, содержимое клерков памяти, ожидания сервера в разрезе бд, статистика ввода-вывода по файлам баз).

10000 руб.

12.12.2017    18937    85    8    

DataReducer — R-консоль для «1С:Предприятия»

Инструментарий разработчика Внешние источники данных WEB v8 v8::DataMining Платные (руб)

Программа для обработки, анализа и визуализации данных информационных баз «1С:Предприятия» с использованием возможностей языка программирования R.

1000 руб.

10.07.2017    24086    3    13    

Merlion Commander Версия 1.3.5.6 - январь 2021 г. (Интеграция с 1С: УT, редакция 11.4, 1С:Розница 2.3,1С:ERP Управление предприятием 2, УТ 10.3, редакция веб-сервиса MERLION API 3.0 от 24.12.2020) Промо

Оптовая торговля Розничная торговля Инструментарий разработчика WEB Оптовая торговля Розничная торговля v8 УТ11 Россия Платные (руб)

Расширении конфигурации "Управление торговлей, редакция 11" для работы с веб-сервисом Мерлион с помощью Merlion API. Расширение и набор подключаемых дополнительных обработок позволяет без изменения конфигурации получить возможность работы с API крупнейшего российского дистрибьютора http://merlion.com. Логика работы максимально приближена к работе веб-сервиса b2b. Вы сможете создать и исправить заказ, зарезервировать товар прямо из 1С, посмотреть актуальные остатки и цены, импортировать штрихкода EAN13 товаров, загружать заказ c автоматическим созданием номенклатуры в 1С и корректности создания. Можно выбирать характеристики по товарным группам и загружать товар с выбранными характеристиками, загружать изображения товара. Не требуется установки дополнительного ПО для работы с веб-сервисом. Кроссплатформенное решение для ОС Windows и Linux. Весь код модулей открыт и доступен для просмотра и внесения изменений.

6900 руб.

02.05.2017    29473    32    45    

Многопоточность. Универсальный «Менеджер потоков» (фреймворк) с отслеживанием зависимости объектов

Математика и алгоритмы Универсальные функции HighLoad оптимизация Практика программирования v8 1cv8.cf Россия Абонемент ($m)

Восстановление партий, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

26.05.2017    51613    DarkAn    87    

Универсальная подсистема для удаленного сопровождения конфигураций 1С

Инструментарий разработчика Инструменты администратора БД v8 БП2.0 ЗУП2.5 ЗКБУ БГУ Платные (руб)

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

5000 руб.

05.08.2016    22509    0    4    

1С:Автоматизированное обновление измененных конфигураций.

Инструментарий разработчика v8 1С:Франчайзи, автоматизация бизнеса Россия Платные (руб)

Продукт представляет собой инструмент для максимального облегчения процесса обновления измененных конфигураций на платформах «1С:Предприятие 8.2» и «1С:Предприятие 8.3». Он может применяться как для типовых конфигураций, так и для отраслевых решений, выпускаемых и издаваемых фирмой «1С», а также для уникальных конфигураций, разработанных непосредственно для конкретных организаций и пользователей на платформах «1С:Предприятие 8.2» и «1С:Предприятие 8.3».

85200 руб.

11.12.2015    19646    0    1    

Богатый редактор картинок, хранимых в базе, с возможностью РИСОВАНИЯ. Редактор внешних файлов картинок. Объект, расширяющий возможности работы с картинками из встроенного языка (Три в одном) + Обработка «Стандартизация картинок» Промо

Инструментарий разработчика Универсальные обработки v8 v8::УФ 1cv8.cf Платные (руб)

Обработка предназначена для редактирования картинок в режиме «Предприятие», с возможностью РИСОВАТЬ на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Это все позволяет существенно упростить работу с картинками. Также обработка может быть использована из встроенного языка как объект для редактирования картинок с набором экспортных процедур и функций для реализации иных бизнес задач (как пример в состав включена обработка "Стандартизация картинок"). Этот объект является альтернативой стандартного объекта «Картинка» с расширенными возможностями. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Это позволяет существенно упростить и автоматизировать работу с картинками. Данная обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

5000 руб.

16.01.2015    49630    31    49    

Оптимизация запросов 1С - от теории к практике

HighLoad оптимизация Математика и алгоритмы v8 1cv8.cf Платные (руб)

Желаете повысить свой уровень разработки? Не знаете, как оптимизировать работу тяжелых запросов 1С? Или знаете методы оптимизации, но на практике не получаете результат? Тогда эта интерактивная обучающая программа для Вас! Оптимизация запросов прямо в программе 1С:Предприятие 8. Несколько десятков практических заданий, рассматривающих методы оптимизации на практике. От Вас требуются реальные решения - оптимизация представленных запросов. Автоматизированная система оценит Ваш запрос и представит результат проверки.

1500 руб.

06.07.2015    62202    103    5    

Комплект интерактивного обучения и тестирования 1С

Математика и алгоритмы Управленческий учет (прочее) Бухгалтерский учет v8 1cv8.cf БУ Госбюджет НУ УУ Платные (руб)

Инструмент для организации корпоративного изучения программ 1С Предприятие 8 и механизмов платформы. Средство оценки знаний пользователей, консультантов и разработчиков 1С. Возможность управления списком учащихся. Вывод статистики обучения 1С и тестирования. Экономный доступ к материалам всех интерактивных курсов для пользователей и разработчиков. Интерактивная технология обучения и тестирования сертифицирована "1С:Совместимо!".

3500 руб.

25.02.2015    27523    0    1    

Консоль СКД - программа интерактивного изучения Системы компоновки данных

Решение задач на 1С:Специалист Математика и алгоритмы Практика программирования v8::СКД 1cv8.cf Платные (руб)

Изучение системы компоновки данных с самого начала: - Практические задания с различным уровнем сложности; - Методические материалы по работе с СКД; - Описание конструктора схем компоновки данных; - Методика решения реальных задач создания отчетов в 1С; - Автоматическая система проверки решений; - Инструкции по решению задач с разъяснениями; - Техническая поддержка пользователей. Подходит для начинающих и действующих разработчиков и консультантов 1С

1500 руб.

30.11.2014    55668    381    1    

Свертка базы SQL + Альтернативный контроль удаления помеченных Промо

Свертка базы Чистка данных HighLoad оптимизация v8 1cv8.cf Платные (руб)

Свертка базы 1с 8.1, 8.2, 8.3 (может использовать прямые запросы к MSSQL, PostgreSQL). Сворачивает документы, регистры накопления, сведений, бухгалтерии (но не регистры расчета). Универсальна, подойдет к любой конфигурации (обратите внимание на известные ограничения). Включает в себя нестандартный быстрый контроль удаления помеченных объектов и удаление помеченных объектов прямыми запросами. Поставляется с исходными кодами.

6500 руб.

13.06.2012    81967    81    108    

Дополнительные реквизиты и сведения в управляемом приложении - это просто... с БДРС

Инструментарий разработчика v8 v8::УФ 1cv8.cf Платные (руб)

Библиотека Дополнительных Реквизитов и Сведений (далее БДРС) – инструмент для настройки, записи, чтения дополнительных реквизитов (далее ДР) и дополнительных сведений (далее ДС) в конфигурациях, БСП которых поддерживает этот механизм. О ДР и ДС писал в http://infostart.ru/public/188152/, сейчас, наконец, оформился в виде внешней обработки инструмент, облегчающий работу с дополнительными реквизитами и сведениями (далее ДРС). Заполнять и использовать ДРС средствами типовой конфигурации конечно можно, но ИМХО, с помощью этой обработки гораздо комфортнее. Обработка написана в интерфейсе «Такси», нормально работает и в «старом» режиме управляемого приложения. Тестировалась на БП 3.0, БСО 3.0 и УТ 11. Убедительная просьба к купившим не тиражировать БДРС без моего согласия :-)

1000 руб.

24.06.2014    62985    0    40    

Многопоточность как способ ускорения некоторых процедур

Практика программирования v8 Бесплатно (free)

Платформа 1С:Предприятие 8 обладает необходимыми инструментами для обеспечения многопоточности, но на практике про эти инструменты незаслуженно забывают.

09.04.2013    65994    Aleksey.Bochkov    77    

Помощник разработчика внешних отчетов и обработок

Инструментарий разработчика Практика программирования v8 1cv8.cf Платные (руб)

Программный продукт создан на основе опыта работы с разнообразными видами внешних отчетов и обработок в управляемом приложении «1С:Предприятия 8.2» и предназначен для автоматизации их разработки.

5000 руб.

22.02.2013    19881    1    9    

Подсистема "Настройка контроля заполнения объектов в момент записи 3.1.3" для 1С: Предприятия 8.1 / 8.2 Промо

HighLoad оптимизация v8 1cv8.cf Россия Платные (руб)

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

1000 руб.

24.10.2009    28398    2    106    

Регистры правил - права доступа, запрет редактирования, автоподстановка реквизитов и т.д.

Инструментарий разработчика v8 1cv8.cf Россия Платные (руб)

Это гибкий инструмент для внедренцев и администраторов, определяющий поведение системы (определение прав доступа, запрет редактирования документов, автоподстановка значений реквизитов и т.д.) при выполнении тех или иных условий.

15700 руб.

05.11.2009    66212    4    40    

Набор профессиональных инструментов для программиста 1С: работа с технологическим журналом, конструктор запросов, анализ метаданных.

Инструментарий разработчика Технологический журнал v8 1cv8.cf Россия Платные (руб)

Enterprise Integrator (Ei) - набор профессиональных инструментов для специалистов, поддерживающих и разрабатывающих решения на платформе 1С:Предприятие 8.

7500 руб.

15.02.2007    102330    89    286