Начиная с версии 2.1.13 зачем-то убрали рекомендуемые шаблоны. Теперь все в одном списке, и предопределенные, и настроенные для вида документа. Так жить нельзя.
Все три пункта независимы.
- Чтобы выделить рекомендуемые шаблоны и вывести их в начало списка помощника отправки, в расширение добавляем процедуру общего модуля ПомощникОтправки
&После("ДобавитьВДеревоОсновныеВариантыСозданияПроцесса")
Процедура рш_ДобавитьВДеревоОсновныеВариантыСозданияПроцесса(Помощник)
// Сдвинем рекомендуемые шаблоны в начало
Помощник.ДеревоВариантов.Колонки.Добавить("ВыделитьСтроку", Новый ОписаниеТипов("Булево"));
Для каждого элемент из Помощник.РекомендуемыеВариантыСозданияПроцессов Цикл
строка = Помощник.ДеревоВариантов.Строки.Найти(элемент.Ключ, "Вариант", Ложь);
Если строка = Неопределено Тогда Продолжить КонецЕсли;
строка.ВыделитьСтроку = Истина;
Помощник.ДеревоВариантов.Строки.Сдвинуть(Строка, -Помощник.ДеревоВариантов.Строки.Индекс(Строка));
КонецЦикла;
КонецПроцедуры
В расширение добавляем процедуру общей формы ПомощникОтправить
&НаСервере
&Перед("ЗаполнитьФормуПоДаннымПомощника")
Процедура рш_ЗаполнитьФормуПоДаннымПомощника(ПомощникНаСервере)
// Выделение строк рекомендуемых шаблонов
// Колонка дерева ВыделитьСтроку создается в ОбщийМодуль.ПомощникОтправить
// Создаём реквизит формы
МассивРеквизитов = Новый Массив;
МассивРеквизитов.Добавить(Новый РеквизитФормы("ВыделитьСтроку", Новый ОписаниеТипов("Булево"), "ВариантыОтправки"));
ЭтаФорма.ИзменитьРеквизиты(МассивРеквизитов);
// УО
Элемент = УсловноеОформление.Элементы.Добавить();
Поля = Элемент.Поля.Элементы;
Поля.Добавить().Поле = Новый ПолеКомпоновкиДанных("ВариантыОтправки");
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ВариантыОтправки.ВыделитьСтроку");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("Шрифт", Новый Шрифт("Arial",12,Истина));
КонецПроцедуры
- Чтобы убрать из списка все кроме предопределенных и рекомендуемых (т.е. другие варианты), в расширение добавляем процедуру общего модуля ПомощникОтправки
&Вместо("ДобавитьВДеревоОстальныеВариантыОтправки")
Процедура рни_ДобавитьВДеревоОстальныеВариантыОтправки(Помощник)
// ДРУГИЕ ВАРИАНТЫ недоступны
КонецПроцедуры
- Если нужно ограничить состав возможных процессов обработки документа, в расширение добавляем процедуру общего модуля ПомощникОтправки.
В формировании массива добавляем все нужные шаблоны процессов, которые нужно убрать.
&После("ЗаполнитьДеревоВариантовОтправки")
Процедура рш_ЗаполнитьДеревоВариантовОтправкиПосле(Помощник)
ШаблонЗапроса = "ВЫБРАТЬ
| Ссылка КАК Ссылка
|ИЗ
| Справочник.%1 КАК Шаблоны
|ГДЕ
| Ссылка В (&Варианты) %2"; // %2 И Предопределенный
ТекстОбъединения = "
|
|ОБЪЕДИНИТЬ ВСЕ
|
|";
массив = Новый Массив;
массив.Добавить(Новый Структура("Таблица, Предопределенный", "ШаблоныИсполнения", ""));
массив.Добавить(Новый Структура("Таблица, Предопределенный", "ШаблоныКомплексныхБизнесПроцессов", ""));
массив.Добавить(Новый Структура("Таблица, Предопределенный", "ШаблоныПоручения", ""));
массив.Добавить(Новый Структура("Таблица, Предопределенный", "ШаблоныПриглашения", ""));
массив.Добавить(Новый Структура("Таблица, Предопределенный", "ШаблоныРассмотрения", ""));
массив.Добавить(Новый Структура("Таблица, Предопределенный", "ШаблоныРегистрации", ""));
массив.Добавить(Новый Структура("Таблица, Предопределенный", "ШаблоныСогласования", "И НЕ Предопределенный"));
массив.Добавить(Новый Структура("Таблица, Предопределенный", "ШаблоныСоставныхБизнесПроцессов", ""));
массив.Добавить(Новый Структура("Таблица, Предопределенный", "ШаблоныУтверждения", ""));
Запрос.Текст = "";
Для каждого структура из массив Цикл
Запрос.Текст = ?(ПустаяСтрока(Запрос.Текст), ШаблонЗапроса, Запрос.Текст + ТекстОбъединения + ШаблонЗапроса);
Запрос.Текст = СтрШаблон(Запрос.Текст, структура.Таблица, структура.Предопределенный);
КонецЦикла;
СтрокиДерева = Помощник.ДеревоВариантов.Строки;
Запрос.УстановитьПараметр("Варианты", СтрокиДерева.ВыгрузитьКолонку("Вариант"));
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
СтрокаДерева = СтрокиДерева.Найти(Выборка.Ссылка, "Вариант", Ложь);
Если СтрокаДерева.ВыделитьСтроку Тогда Продолжить КонецЕсли; // рекомендуемый
СтрокиДерева.Удалить(СтрокиДерева.Найти(Выборка.Ссылка, "Вариант", Ложь));
КонецЦикла;
КонецПроцедуры