(1) Кому интересна тема многопоточности и хочет поэкспериментировать можете воспользоваться обработкой
PowerTools (https://infostart.ru/public/167865/). Умеет запускать в многопоток как различные операции обработки данных, так и произвольный код. Умеет распределять потоки по выбранным полям таблицы.
Действительно, плохо искали. Мало того имея БСП 2.3 с доработкой или 2.4 уже можно не рисовать на форме элементы а выводить прогресс отдельно и многопоточность тоже уже реализована! А перепроведение как уже говорилось не подойдет, потому что оно будет накладывать взаимоблокировки. Придется и их учесть при написании кода, что усложнит алгоритм на порядок.
(2)Многопоточность сама по себе ничего сверхестественного из себя не представляет. Интересен как раз сам механизм разбиения данных на блоки для выполнения в разных потоках. То-есть выделять группы документов, которые не будут мешать друг другу при проведении.
Можно добавить лепту? Если операции действительно длительные то для оптимизации можно бы подумать в сторону "шага процента" чтобы не долбить проверками каждые 0.3 секунд.
Мне кажется не очень хорошей идея - проверять прогресс каждые 0.3 сек через серверные вызовы. Ну тут можно долго спорить на тему оптимизации клиент-серверного взаимодействия, но от серверных вызовов тут никак не уйти (ну разве что всё взаимодействие не вынести во внешнюю Native-компоненту, которая будет подключена и в фоновом процессе и в клиенте, и будет производить обмен сообщениями через свой канал, например через TCP - но тут сложно искать универсальное решение), иначе всё сведётся лишь к увеличению периода опроса сервера
Немножко не в тему, но коль про многопоточность заговорили ... а в oscript можно ее как-то организовать и результаты в главную программу вернуть? Что-то не нашел ничего на вскидку...
А подскажите такую операцию, как запустить поток выборки в фоне и затем получить результат выборки. Например основная процедура занимается выборкой данных, получает некий набор номенклатура, выводит его на форму и в тоже время запускает фоновый процесс дополнительной выборки. Когда фоновый процесс завершается он возвращает результат дополнительной выборки и сообщает форме что завершился, получите результаты выборки.
немного запутался с ДополнительнаяОбработкаСсылка . Мне пришлось в внешнюю обработку добавить как реквизит формы, а вот тип у этого реквизита какой должен быть? оставил пока "строка". При создании формы в параметрах такого свойства нет. Я принудительно присваиваю ссылку из справочника ДопОтчетыОбработки, т.к. тоже добавил внешнюю обработку в это справочник.
В результате исполняется команда загрузки данных, а вот индикатор показывает только конечный результат (цифр 100 и фон этого поля ввода не окрашивается) и текст. Нет промежуточных показаний.