Исправление вывода списка процессов в 1С:Документооборот с группировкой

24.05.21

Функциональные - Документооборот и делопроизводство (СЭД)

Начиная с версии 2.1.13.28 разработчики 1С:Документооборот изменили порядок отправки документа в обработку. Запуск процесса начинается с одной кнопки Отправить. Это здорово, так как не надо гадать, какой тип процесса настроен для документа, но список процессов неинтуитивный. Особенно, когда количество настроенных процессов более 1000. Все процессы выводятся в один список и сортируются по наименованию.

Предлагаемое решение выполнено на версии 1С:Документооборот 2.1.27.1

Список процессов разделен на группы:

  1. Рекомендованные (назначенные для документа)
  2. Произвольные (без шаблонов)
  3. Общие (все остальные, доступные пользователю)

Есть 2 места, которые нужно учесть при внесении изменений:

  1. Работа непосредственно в 1С:Документооборот
  2. Работа с 1С:Документооборот через бесшовную интеграцию (проверено на интеграции с ЗУП и УПП)

1. Работа в 1С:Документооборот 

Для исправления списка предлагаю группировку шаблонов процессов по логике разработчиков, но с явным разделением по настройкам (назначенные для запуска по документу, произвольные и все остальные).

Чтобы вывести группировку нужно в общий модуль ПомощникОтправить внести изменения.

Добавить Новую процедуру и заменить вызов типовой процедуры ДобавитьВДеревоОсновныеВариантыСозданияПроцесса на новую процедуру 


    //ДобавитьВДеревоОсновныеВариантыСозданияПроцесса(Помощник);
    рвк_ДобавитьВДеревоОсновныеВариантыСозданияПроцесса(Помощник);
    

Процедура рвк_ДобавитьВДеревоОсновныеВариантыСозданияПроцесса(Помощник)
    
    УстановитьПривилегированныйРежим(Истина);
    
    // Формируем общий список вариантов, добавляемых в корень дерева, из:
    // шаблонов по умолчанию, общих и рекомендуемых шаблонов.
    
    ВариантыСозданияПроцессаТ = Новый ТаблицаЗначений;
    ВариантыСозданияПроцессаТ.Колонки.Добавить("Представление");
    ВариантыСозданияПроцессаТ.Колонки.Добавить("Значение");
    ВариантыСозданияПроцессаТ.Колонки.Добавить("Группа");
    
    ЕстьПредметы = ЗначениеЗаполнено(Помощник.ПредметыПроцесса);
    
    Для Каждого КлючЗначение Из Помощник.РекомендуемыеВариантыСозданияПроцессов Цикл
        
        Если Не ВозможноДобавлениеВарианта(Помощник, КлючЗначение.Ключ)
            И Не ВозможноДобавлениеВарианта(Помощник, КлючЗначение.Значение) Тогда
            
            Продолжить;
        КонецЕсли;
        
        Если ЕстьПредметы И Помощник.ДопустимыеТипыВариантовДляПредметов[
            КлючЗначение.Значение] = Неопределено Тогда
            
            Продолжить;
        КонецЕсли;
        
        Если ЭтоВариантСозданияПроцессаОбработки(КлючЗначение.Значение)
            И Не ВозможноДобавлениеВариантовСозданияПроцессаОбработкиДокументов(Помощник) Тогда
            
            Продолжить;
        КонецЕсли;
        
        Строка = ВариантыСозданияПроцессаТ.Добавить();
        Строка.Значение = КлючЗначение.Ключ;
        Строка.Представление = Строка(КлючЗначение.Ключ);
        Строка.Группа = "!Рекомендуемые";
    КонецЦикла;
    
    Для Каждого КлючЗначение Из Помощник.ОбщиеВариантыСозданияПроцессов Цикл
        
        Если Не ВозможноДобавлениеВарианта(Помощник, КлючЗначение.Ключ)
            И Не ВозможноДобавлениеВарианта(Помощник, КлючЗначение.Значение) Тогда
            
            Продолжить;
        КонецЕсли;
        
        Если ЕстьПредметы И Помощник.ДопустимыеТипыВариантовДляПредметов[
            КлючЗначение.Значение] = Неопределено Тогда
            
            Продолжить;
        КонецЕсли;
        
        Если ЭтоВариантСозданияПроцессаОбработки(КлючЗначение.Значение)
            И Не ВозможноДобавлениеВариантовСозданияПроцессаОбработкиДокументов(Помощник) Тогда
            
            Продолжить;
        КонецЕсли;
        
        Строка = ВариантыСозданияПроцессаТ.Добавить();
        Строка.Значение = КлючЗначение.Ключ;
        Строка.Представление = Строка(КлючЗначение.Ключ);
        Строка.Группа = "Общие";
    КонецЦикла;
    
    Для Каждого КлючЗначение Из Помощник.ВариантыСозданияПроцессовПоУмолчанию Цикл
        
        Если Не ВозможноДобавлениеВарианта(Помощник, КлючЗначение.Ключ)
            И Не ВозможноДобавлениеВарианта(Помощник, КлючЗначение.Значение) Тогда
            
            Продолжить;
        КонецЕсли;
        
        Если ЕстьПредметы И Помощник.ДопустимыеТипыВариантовДляПредметов[
            КлючЗначение.Значение] = Неопределено Тогда
            
            Продолжить;
        КонецЕсли;
        
        Если ЭтоВариантСозданияПроцессаОбработки(КлючЗначение.Значение)
            И Не ВозможноДобавлениеВариантовСозданияПроцессаОбработкиДокументов(Помощник) Тогда
            
            Продолжить;
        КонецЕсли;
        
        Представление = ПредставлениеВариантаСозданияПроцессаПоУмолчанию(
            КлючЗначение.Ключ, Помощник);
        
        Строка = ВариантыСозданияПроцессаТ.Добавить();
        Строка.Значение = КлючЗначение.Ключ;
        Строка.Представление = Представление;
        Строка.Группа = "Произвольные";
    КонецЦикла;
    
    ВариантыСозданияПроцессаТ.Сортировать("Группа, Представление");
    
    Группа = "";
    Для Каждого ВариантСозданияПроцесса Из ВариантыСозданияПроцессаТ Цикл
        Если Группа <> ВариантСозданияПроцесса.Группа Тогда
            Группа = ВариантСозданияПроцесса.Группа;
            СтрокаГруппы = Помощник.ДеревоВариантов.Строки.Добавить();
            СтрокаГруппы.Представление = Группа;
            СтрокаГруппы.Вариант = Группа;
        КонецЕсли;
        Если ЗначениеЗаполнено(СтрокаГруппы) Тогда
            СтрокаВарианта = СтрокаГруппы.Строки.Добавить();
        Иначе
            СтрокаВарианта = Помощник.ДеревоВариантов.Строки.Добавить();
        КонецЕсли;
        СтрокаВарианта.Вариант = ВариантСозданияПроцесса.Значение;
        СтрокаВарианта.Представление = ВариантСозданияПроцесса.Представление;
    КонецЦикла;
    
КонецПроцедуры



2. Для изменения вывода в рамках бесшовной интеграции необходимо внести изменения в общий модуль ОбработкаЗапросовXDTOБизнесПроцессыИЗадачи в функцию ПолучитьДеревоШаблоновБизнесПроцессов

Есть один нюанс в реализации. При большом количестве процессов бесшовная интеграция не успевал формироваться список процессов за отведенное время и по таймауту отваливался. Поэтому в данном решении будут выводиться только Произвольные (без шаблона) и Рекомендованные процессы (назначенные для документа)

Полный текст функции ПолучитьДеревоШаблоновБизнесПроцессов ниже

// Получает дерево шаблонов бизнес-процессов, удовлетворяющих условиям отбора
//
// Параметры:
//   Сообщение - ОбъектXDTO типа DMGetBusinessProcessTemplatesTreeRequest
// Возвращаемое значение:
//   ОбъектXDTO типа DMGetBusinessProcessTemplatesTreeResponse 
//
Функция ПолучитьДеревоШаблоновБизнесПроцессов(Сообщение) Экспорт
    
    Ответ = СоздатьОбъектXDTO("DMGetBusinessProcessTemplatesTreeResponse");
    
    ПредметБП = Неопределено;
    Если Сообщение.Установлено("businessProcessTargetId") Тогда
        ПредметБП = ОбработкаЗапросовXDTO.ПолучитьСсылкуПоObjectID(Сообщение.businessProcessTargetId);
    КонецЕсли;
    
    Объекты = Новый Массив;
    Если ЗначениеЗаполнено(ПредметБП) Тогда
        Объекты.Добавить(ПредметБП);
    КонецЕсли;
    ВариантыОтправки = ВариантыОтправки(Объекты, Ответ);
    
    ГруппаРекомендованныеШаблоны = СоздатьОбъектXDTO("DMBusinessProcessTemplatesTreeGroup");
    ГруппаРекомендованныеШаблоны.name = НСтр("ru = 'Рекомендованные шаблоны'");
    ГруппаРекомендованныеШаблоны.hint =
        СформироватьСводкуПоГруппеЭлементов(ГруппаРекомендованныеШаблоны.name, Неопределено);
    ОстальныеГруппыШаблонов = Новый Массив;
    //rvk eryabova upd+ Было
    //Для Каждого Строка Из ВариантыОтправки.Строки Цикл
    //    Если Строка.Недоступен = Истина Тогда
    //        ГруппаДругиеВарианты = СоздатьОбъектXDTO("DMBusinessProcessTemplatesTreeGroup");
    //        ГруппаДругиеВарианты.name = Строка.Представление;
    //        ГруппаДругиеВарианты.hint = НСтр("ru = 'Группа шаблонов процессов.'");
    //        ГруппаДругиеВарианты.hintHTML = ПомощникОтправить.ОписаниеВарианта(Строка.Вариант);
    //        Для Каждого Подстрока Из Строка.Строки Цикл
    //            СтрокаШаблонов = СоздатьОбъектXDTO("DMBusinessProcessTemplatesTreeElement");
    //            СтрокаШаблонов.name = Подстрока.Представление;
    //            СтрокаШаблонов.hint = СформироватьСводкуПоШаблону(Подстрока.Вариант);
    //            СтрокаШаблонов.hintHTML = ПомощникОтправить.ОписаниеВарианта(Подстрока.Вариант);
    //            СтрокаШаблонов.businessProcessType = ПолучитьТипПроцессаXDTOПоШаблону(Подстрока.Вариант);
    //            
    //            ОбъектШаблонXDTO = СоздатьОбъектXDTO("DMBusinessProcessTemplate");
    //            ОбъектШаблонXDTO.name = Подстрока.Представление;
    //            ОбъектШаблонXDTO.objectId = ОбработкаЗапросовXDTO.ПолучитьObjectIDПоСсылке(Подстрока.Вариант);
    //            СтрокаШаблонов.template = ОбъектШаблонXDTO;
    //            
    //            ГруппаДругиеВарианты.elements.Добавить(СтрокаШаблонов);
    //        КонецЦикла;
    //        ОстальныеГруппыШаблонов.Добавить(ГруппаДругиеВарианты);
    //    ИначеЕсли ТипЗнч(Строка.Вариант) <> Тип("Строка") Тогда
    //        СтрокаШаблонов = СоздатьОбъектXDTO("DMBusinessProcessTemplatesTreeElement");
    //        СтрокаШаблонов.name = Строка.Представление;
    //        СтрокаШаблонов.hint = СформироватьСводкуПоШаблону(Строка.Вариант);
    //        СтрокаШаблонов.hintHTML = ПомощникОтправить.ОписаниеВарианта(Строка.Вариант);
    //        СтрокаШаблонов.businessProcessType = ПолучитьТипПроцессаXDTOПоШаблону(Строка.Вариант);
    //        
    //        ОбъектШаблонXDTO = СоздатьОбъектXDTO("DMBusinessProcessTemplate");
    //        ОбъектШаблонXDTO.name = Строка.Представление;
    //        ОбъектШаблонXDTO.objectId = ОбработкаЗапросовXDTO.ПолучитьObjectIDПоСсылке(Строка.Вариант);
    //        СтрокаШаблонов.template = ОбъектШаблонXDTO;
    //        
    //        ГруппаРекомендованныеШаблоны.elements.Добавить(СтрокаШаблонов);
    //    КонецЕсли;
    //КонецЦикла;
    
    //Ответ.businessProcessTemplatesTree.Добавить(ГруппаРекомендованныеШаблоны);
    //Для Каждого Группа Из ОстальныеГруппыШаблонов Цикл
    //    Ответ.businessProcessTemplatesTree.Добавить(Группа);
    //КонецЦикла;
    ////rvk eryabova upd- Было
    
    ////rvk eryabova upd+ Стало
    Группа = "";
    ГруппаВарианты = Неопределено;
    Отбор = Новый Структура("Вариант","!Рекомендуемые");
        
    Для Каждого Строка Из ВариантыОтправки.Строки Цикл
        Если Строка.Уровень() = 0 и ТипЗнч(Строка.Вариант) = Тип("Строка") Тогда
            Если Строка.Вариант = "!Рекомендуемые" или Строка.Вариант = "Произвольные" Тогда
            Иначе
                Если ПредметБП <> Неопределено Тогда
                    Продолжить;
                КонецЕсли;
            КонецЕсли;
            ГруппаВарианты = СоздатьОбъектXDTO("DMBusinessProcessTemplatesTreeGroup");
            ГруппаВарианты.name = Строка.Представление;
            ГруппаВарианты.hint = НСтр("ru = '"+ Строка.Представление + "'");
            Ответ.businessProcessTemplatesTree.Добавить(ГруппаВарианты);
            Для Каждого Подстрока Из Строка.Строки Цикл
                СтрокаШаблонов = СоздатьОбъектXDTO("DMBusinessProcessTemplatesTreeElement");
                СтрокаШаблонов.name = Подстрока.Представление;
                СтрокаШаблонов.hint = СформироватьСводкуПоШаблону(Подстрока.Вариант);
                СтрокаШаблонов.hintHTML = ПомощникОтправить.ОписаниеВарианта(Подстрока.Вариант);
                СтрокаШаблонов.businessProcessType = ПолучитьТипПроцессаXDTOПоШаблону(Подстрока.Вариант);
                
                ОбъектШаблонXDTO = СоздатьОбъектXDTO("DMBusinessProcessTemplate");
                ОбъектШаблонXDTO.name = Подстрока.Представление;
                ОбъектШаблонXDTO.objectId = ОбработкаЗапросовXDTO.ПолучитьObjectIDПоСсылке(Подстрока.Вариант);
                СтрокаШаблонов.template = ОбъектШаблонXDTO;
                Если ТипЗнч(ГруппаВарианты) = Тип("ОбъектXDTO") Тогда
                    ГруппаВарианты.elements.Добавить(СтрокаШаблонов);
                КонецЕсли;
            КонецЦикла;

            //ГруппаДругиеВарианты.hintHTML = ПомощникОтправить.ОписаниеВарианта(Строка.Вариант);
        КонецЕсли;
    КонецЦикла;
    ////rvk eryabova upd- Стало
    
    Возврат Ответ;
    
КонецФункции

 

Процессы шаблоны Документооборот

См. также

Документооборот и делопроизводство (СЭД) Типовые Бухгалтер Пользователь Руководитель проекта Платформа 1С v8.3 Управленческий учет Платные (руб)

Организуйте правильный оборот документов на вашем предприятии в 1С. Ведение учета и хранения документов. Управление потоками документации между подразделениями. Работа с договорами в компании. Автоматизация процессов подготовки, согласования и подписания документов. Сократите время и объем ошибок с 1С:ДО!

48500 руб.

19.02.2016    108547    121    5    

96

SALE! 30%

Загрузка и выгрузка в Excel Документооборот и делопроизводство (СЭД) Учет документов Распознавание документов и образов Бухгалтер Пользователь Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная программа для распознавания сканов или фото товарных документов в 1С. Не требует указания параметров и предварительной настройки. Просто выбираете файл (PDF, JPG, DOC, XLS, HTML) выбираете документ 1С и нажимаете кнопку "Распознать и загрузить".

8400 5880 руб.

04.06.2019    106906    313    173    

326

Документооборот и делопроизводство (СЭД) Бухгалтер Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Продукт "Апрель Софт: Бухгалтерия позаказного производства, ред. 3.0" предназначен для удобного и оперативного управления процессами производства, отгрузок и снабжения в производственных компаниях. Программный продукт открывает новые функциональные возможности для ведения документооборота.

11400 руб.

18.02.2016    22958    1    1    

5

Документооборот и делопроизводство (СЭД) Мессенджеры и боты Учет документов Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия государственного учреждения 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 Платные (руб)

Расширение для согласования справочников и документов в основных типовых конфигурациях. Ролевая адресация, условная маршрутизация, чат-бот telegram, интеграция с n8n, последовательное и параллельное согласование, уведомление о новых задачах на почту, блокировка объектов в зависимости от статуса, запрет проведения в зависимости от статуса, автозапуск процессов согласования, отчеты по исполнительской дисциплине. Не требуется снятие конфигурации с поддержки. Настройка без программирования. Версия для 1cfresh.com. Сертификат 1С-Совместимо.

14900 руб.

15.11.2018    30270    35    49    

71

Документооборот и делопроизводство (СЭД) ЭДО и ОФД Учет документов Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Мощный, единый инструмент для решения всех проблем, связанных с переходом на ЭДО. Экономит бумагу и время - организует архив оригиналов первичных документов прямо в базе 1С, в прикрепленных файлах к соответствующим документам. С помощью комплексного отчета по ошибкам в ЭДО позволяет выявить и исправить все возможные ошибки - ошибочно сопоставленные документы, не подписанные документы, подписанные, но не загруженные в 1С документы. Автоматически сопоставляет не сопоставленные между собой документы. Может работать по расписанию и присылать отчет о состоянии архива/по ошибкам на почту. Взаимодействует напрямую с сервисами Диадок/СБИС, имеет интуитивно понятный интерфейс и учитывает 3-х летний опыт 40+ клиентов.

14880 руб.

17.12.2018    45653    65    59    

79

Печатные формы Документооборот и делопроизводство (СЭД) Учет документов Бухгалтер Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x Бухгалтерский учет Управленческий учет Платные (руб)

Приложение для быстрого создания макетов печатных документов, заполняемых из 1С:Предприятие, без привлечения программистов и запуска конфигуратора. Шаблон готовится в редакторе MS Word, отлично освоенном офисными служащими. Так, на подготовку нового шаблона договора купли продажи со спецификацией потребуется 25 минут. Приложение будет полезно, если Вы работаете со множеством Word-шаблонов или если Вам надо часто создавать новые шаблоны. Есть сертификат "1С: Совместимо!". Версия ПРОФ доступна в виде расширения.

2000 руб.

05.09.2017    92530    66    98    

100

Документооборот и делопроизводство (СЭД) Роли и права Системный администратор Платформа 1С v8.3 1С:Документооборот Управленческий учет Платные (руб)

Внешняя обработка позволит быстро добавить участников в любое количество документов, заменить целиком набор участников или удалить лишь некоторых из них для одного объекта или группы документов.

3000 руб.

23.10.2015    63607    113    25    

127
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. rpgshnik 3795 25.05.21 04:02 Сейчас в теме
Подобное уже встречал на инфостарте, но там было выделение жирным начертанием рекомендуемых и вывод их на самый верх, в целом как альтернатива тоже не плохо. Спасибо за публикацию. Не понимаю, почему 1С ушла от рекомендуемых процессов и не дала возможность пользователю самостоятельно на это влиять.
2. Xleo777 48 25.05.21 11:32 Сейчас в теме
(1) Добрый день!
Спасибо за отзыв!

Да. Видела публикацию про выделение рекомендуемых шаблонов жирным шрифтом. Но пошла по пути наименьшего изменения типового кода.
И не стала выносить в расширение, так как при обновлении также можно получить вопросы по адаптации.

Причем в результате используется типовое разделение процессов по смыслу. Непонятно, почему 1С не довели визуализацию процессов.
За 4 года, я думала, что исправят. Но нет. Пришлось делать самим. Процессов много.
3. Flyerink 6 25.05.21 18:07 Сейчас в теме
Елена, спасибо большое за такую полезную статью! Помогли сэкономить прилично времени. Обновились со старой версии (живу по принципу - лучшее враг хорошего, а тут из-за ЭДО пришлось обновляться). Пользователи кучу процессов позапускали неправильных, т.к. привыкли нажимать верхние рекомендуемые..
На релизе 2.1.28.14 ваш код работает без изменений!
4. Xleo777 48 26.05.21 09:43 Сейчас в теме
(3) Спасибо за отзыв! Рада, что пригодилось решение!
5. VOPOH 23.09.21 16:34 Сейчас в теме
В 1С:ДО, можно просто у внутреннего документа в форме элемента, добавить ещё одну группу и добавить кнопку, предыдущую группу и кнопку сделать не видимой. У новой кнопки сделать команду СоздатьБизнесПроцесс, она находится в общих командах, и после этого будет старый вариант формы выбора процесса. А так спасибо большое за статью, с УПП уже долго мучаюсь.
Прикрепленные файлы:
6. user1958927 01.08.24 09:18 Сейчас в теме
Огромное спасибо за статью! Столкнулся с проблемой, в ERP не возможно было запустить бизнес-процесс, так как список шаблонов был пуст (данные не поступали из Документооборота). Из вашей статьи понял, что проблема в количестве шаблонов бизнес-процессов. Использовав ваш код, исправил проблему.
Оставьте свое сообщение