Добрый день, подскажите пожалуйста можно ли выполнить в многопотоке получение данных пользователей?
Например есть несколько тысяч пользователей ИБ, по которым нужно получить расширенные данные и вернуть в http-сервис.

Идея заключается в параллельном заполнении массив Результат фоновыми заданиями, но это не работает. Результат так остаётся пустым, процедура в общем модуле его заполняет, но не возвращает заполненный массив.

PS делал по примеру с курсы-по-1с

Подскажите пожалуйста, возможно где ошибся или идея в корне не верная?

Код в сервисе:

```1c
    Для НомерПотока = 1 По ЧислоПотоков Цикл

    ИндексНачала = (НомерПотока - 1) * РазмерПорции;

    Если НомерПотока = ЧислоПотоков Тогда

    РазмерПорции = ЧислоСтрокВТаблице-(ЧислоПотоков*РазмерПорции)+РазмерПорции;

    КонецЕсли;

    НаборПараметров = Новый Массив;
    НаборПараметров.Добавить(МассивПользователейИБ);
    НаборПараметров.Добавить(ИндексНачала);
    НаборПараметров.Добавить(РазмерПорции);
    НаборПараметров.Добавить(Результат);

    Задание = ФоновыеЗадания.Выполнить("MultithReading.ПолучитьПользователейМногопоточный", НаборПараметров);

    МассивЗаданий.Добавить(Задание);

    КонецЦикла;

    Если МассивЗаданий.Количество() > 0 Тогда

    Попытка
    ФоновыеЗадания.ОжидатьЗавершения(МассивЗаданий);
    Исключение

    КонецПопытки;

    КонецЕсли;
```

В общем модуле:

```1c
    Процедура ПолучитьПользователейМногопоточный(МассивПользователейИБ, ИндексНачала, РазмерПорции, Результат) Экспорт

    Для Сч = 1 По РазмерПорции Цикл

    Индекс = ?(Сч=1, ИндексНачала, Индекс+1);

    ПользовательИБ = МассивПользователейИБ[Индекс];

    Результат.Добавить(ПолучитьПолныеДанныеПользователя(ПользовательИБ));

    КонецЦикла;

    КонецПроцедуры
```
---
Спасибо за верные наводки.
Ошибка была в том, что реализация проходила в файловой версии БД, и фоновые задания выполнялись оч долго или зависали. И результат нужно было поместить во временное хранилище, который заранее определялся в http-сервисе, потом остается пройтись по адресам и собрать данные.
---
https://its.1c.ru/db/v8std/content/642/hdoc
Там пример есть. Для выполнения не в несколько потоках, но механизм не сильно отличаться будет.
---
Через параметр "Результат" ничего не получите, т.к. эта переменная будет существовать только в контексте процесса фонового задания.
Посмотрите в любой конфигурации, где есть БСП и ОМ.ДлительныеОперации - там все делается через временное хранилище. Там все понятно.

 или идея в корне не верная
Вы бы хоть озвучили, что за расширенные данные такие, а то есть подозрение, что при получении неких расширенных данных вы делаете что-то плохое, типа неявного запроса в цикле - лезете в базу для каждого пользователя отдельно, а если отдаете все это по http то в базу 100% лезете, хотя бы для превращения ссылок в строки.
Поэтому и возникла вообще идея разбить все это по фоновым заданиям.
---
Спасибо за верные наводки.
Ошибка была в том, что реализация проходила в файловой версии БД, и фоновые задания выполнялись оч долго или зависали. И результат нужно было поместить во временное хранилище, который заранее определялся в http-сервисе, потом остается пройтись по адресам и собрать данные.
---
Смотрите функцию ДлительныеОперации.ВыполнитьФункциюВНесколькоПотоков
---
1. Результат - это в каждом потоке своя переменная.
2. Чтобы было по красоте, надо результат поместить во временное хранилище, а адрес передать вызывающему потоку через "Сообщить(Адрес/Результата)".
3. После завершения потока получить из временного хранилища данные результата и добавить в общий результат.
4. После завершения всех потоков общий результат вернуть вызывающему приложению.
---
Это вариант для конфигураций без БСП?
---
Гм. Интересно. Немного меняет "платформенный" подход, когда адрес хран результата изначально из родительского потока передается. Видимо, да, нужно было еще "между строк" прочитать про технику использования платформенного подхода и сделать свои выводы.
Но, имхо, особо ничего такой измененный подход не дает, кроме вопросов "а зачем так необычно".
Вероятно, основная "фишка" измененного подхода в том, что из ФЗ можно получать результаты постепенно, пачками, а не дожидаться окончания всего задания и всего объема результатов.
---
В БСП постепенная передача результатов предполагается через ДлительныеОперации.СообщитьПрогресс() и ДлительныеОперации.ПолучитьПрогресс()
---
Ну понятно... Сахар для Сообщить/ПолучитьСообщения.