zsap написал:
Если все же решите пойти сложным путем, стоит обратить внимание на следующие моменты:
1. Число процессов - не самая большая проблема. Наверное лучше сделать константой.
Как раз из-за п.3 количество свободных процессов нужно вычислять перед каждым запуском.
zsap написал:
Вычислить оптимально время обработки пакета довольно сложно, т.к. со временем это значение будет меняться из-за увеличения объема данных в таблицах, других работающих одновременно процессов, изменения настроек сервера, железа и т.д. Ну и сервера в продуктиве как правило намного мощнее тех что в системе разработки.
И опыт, сын ошибок трудных...

zsap написал:
2. Если процессы запускать в диалоговом режиме, их время работы и количество ограничено (в версии < 7.20 их вроде не может быть больше 6). Надежнее сделать фоновые процессы, но тут сложности возникают при передаче данных из основной программы.
Б
ольшие трудности возникают при возврате данных.
zsap написал:
3. Как правило необходимо предусмотреть блокировку от повторно запуска, т.к. если вы займете все диалоговые процессы, сервер скорее всего ляжет
4. Какие-либо коммуникации между процессами весьма затруднительны
А зачем в параллельных процессах коммуникации между собой? Отслеживанием выполнения должна заниматься запускающая программа.
zsap написал:
5. ...Если какой-то из процессов свалиться в дамп, необходимо его как-то перезапустить. Причем желательно с того момента, где произошла остановка
По какой причине процесс должен свалиться в дамп? При хорошем тестировании такой проблемы быть не должно
Тут важно знать тип обработки, которую нужно распараллелить:
-Если это создание документов, то логгирование обработки каждого документа просто необходимо, и продолжить процесс по результатам таблицы лога не составляет большого труда.
-Если это отчет, то при дампе не возвратится результат для всего пакета обработки (должна возникнуть ошибка при вызове RECEIVE RESULTS) и эиту ситуацию можно обработать в основной программе..