Подсистема ДлительныеОперации, функции ВыполнитьФункциюВНесколькоПотоков
, аналогично процедуру. Параметры порционно складывать в соответствие. #надоСделать найти инфо про динамическое создание порций.
Обязательно передавать внешку как двоичные данные. Сколько бы ни было порций, все выполняется в ограниченном (дефолт 3) числе потоков, рулится константой. Один поток - управляющий, так что реально идет в константа - 1
поток.
Интерфейс менялся, как минимум брейкинг чейндж был в 3,1,17
В возвращаемом значении лежит адрес результата управляющего потока, в котором лежит структура со статусами каждого из потоков.
Статьи:
- https://wiki.programstore.ru/ispolzovanie-tipovogo-mexanizma-mnogopotochnosti-bsp/
- https://xn----1-bedvffifm4g.xn--p1ai/articles/%D0%BA%D0%B0%D0%BA-%D1%83%D1%81%D0%BA%D0%BE%D1%80%D0%B8%D1%82%D1%8C-1%D1%81-%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE%D0%BF%D0%BE%D1%82%D0%BE%D1%87%D0%BD%D0%BE%D1%81%D1%82%D1%8C/
Для сообщения прогресса нужно 2 момента:
- внутри процедуры фонового задания нужно вызывать
ДлительныеОперации.СообщитьПрогресс(процент, текст, допы);
- к стандартному ожиданию завершения:
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания)
добавляется обязательное заполнение реквизита
ПараметрыОжидания.ВыводитьПрогрессВыполнения = Истина;
Не забывайте, на стандартной форме ожидания прогресс бара нет, но она готов вывести текст в виде "процент (текст)" например
15.325 (153 из 1018)
Найти вид КИ по идентификатору для формул: Судя по проверке уникальности допустимо указания одинаковых ИД для разных верхних папок, поэтому в 2 параметра.
Функция ВидКонтактнойИнформацииПоИдентификатору(Идентификатор, РодительВерхнегоУровня)
Перем Запрос, ТЗ;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| Таблица.Ссылка
|ИЗ
| Справочник.ВидыКонтактнойИнформации КАК Таблица
|ГДЕ
| И Таблица.Ссылка В ИЕРАРХИИ (&РодительВерхнегоУровня)
| И Таблица.ИдентификаторДляФормул = &ИдентификаторДляФормул";
Запрос.УстановитьПараметр("ИдентификаторДляФормул", Идентификатор);
Запрос.УстановитьПараметр("РодительВерхнегоУровня", РодительВерхнегоУровня);
ТЗ = Запрос.Выполнить().Выгрузить();
Если ТЗ.Количество() = 0 Тогда
Рез = Справочники.ВидыКонтактнойИнформации.ПустаяСсылка();
Иначе
Рез = ТЗ[0].Ссылка;
КонецЕсли;
Возврат Рез;
КонецФункции
ОбщийМодуль.ФайловаяСистема
[Встраивание подсистемы] (https://its.1c.ru/db/bsp313doc#content:53:hdoc)
БСП орава изварщенцев, на клиенте они делают массив структур, и в модуле УправлениеПечатьюКлиент
нужно использовать массив, который готовится так:
КоллекцияПечатныхФорм = УправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм("БланкАнкетыЭлектронногоИнтервью");
А вот в серверный метод "печать" в объектах нужно готовить таблицу значений:
КоллекцияПечатныхФорм = УправлениеПечатью.ПодготовитьКоллекциюПечатныхФорм("ПФ_MXL_Т2");
Почему в одном месте "новая", а в другом "подготовить" - на совести авторов БСП.
Разработка печатных форм с использованием макетов в формате офисных документов Office Open XML
Шаблон для разработки внешней ПФ
Настрока (из Главы 3) Интерфейс Из главы 4 Пользователям гл. 5