Исправление вывода списка процессов в 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С:Документооборот - цена на лицензии КОРП, ПРОФ и ДГУ

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

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

42500 руб.

19.02.2016    107004    103    5    

84

Таймлист (1С:Совещание, Таймлист Лайт)

Документооборот и делопроизводство (СЭД) Конфигурации 1cv8

«Таймлист» – экосистема сервисов («Таймлист Лайт», «1C:Совещание», «Таймлист Recorder»), основанная на искусственном интеллекте Таймлист, который позволяет эффективно работать с легкими поручениями за счет фиксации всех важных идей при расшифровке и последующем формировании автопротокола встречи. Сервисы, в которые интегрирован ИИ, позволяют работать с задачами (поручениями), полученными из автопротокола.

10000 руб.

06.12.2023    1267    0    0    

5

SALE! 30%

Распознавание и загрузка сканов в 1С "одним нажатием": УПД, ТОРГ-12, накладные, счета, номенклатура, заказы и т.д.

Загрузка и выгрузка в 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С и нажимаете кнопку "Распознать и загрузить".

6000 5520 руб.

04.06.2019    101410    296    173    

312

1С:Архив

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

"1С:Архив" – это универсальная система, обеспечивающая надежное долговременное хранение документов с гарантией юридической значимости на неограниченный срок. "1С:Архив" разработан на основе нормативно-правовых актов по архивному делу, поддерживает операции хранения документов – от попадания в архив до уничтожения – и не имеет ограничений на объем хранимых данных. "1С:Архив" сопровождается методологической поддержкой в виде организационных документов по хранению, входящих в состав "Комплекта нормативных документов" к "Методике управления документами и совместной работой", разработанной специалистами фирмы "1С". Использование "1С:Архива" позволяет организовать единое хранилище всех бумажных и электронных документов из разных информационных систем, вести архивный учет в соответствии с требованиями Росархива и снизить нагрузку на учетные системы. Продукт подходит для малых, средних, крупных предприятий и учреждений любых отраслей.

90000 руб.

24.10.2022    4863    4    1    

4

Легкий документооборот (+чат-бот для Telegram)

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

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

14900 руб.

15.11.2018    27800    25    48    

57

Групповая выгрузка и загрузка файлов XML для ЭДО в каталог по приказу №820 ФНС (для УТ 10.3/11, КА2, ERP2, БП3, УНФ, УПП1.3, Розница2.3). Поддержка маркировки. Прослеживание товаров.

Документооборот и делопроизводство (СЭД) ЭДО и ОФД Файловый обмен (TXT, XML, DBF), FTP Обмен с ГосИС Платформа 1С v8.3 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Бухгалтерский учет Платные (руб)

Групповая выгрузка файлов XML для ЭДО в каталог по приказу №820 ФНС для Контур.Диадок, СБИС и других провайдеров ЭДО. Поддержка УНФ 1.6, УНФ 3.0 Поддержка УТ 10.3, УПП 1.3 Поддержка Розница 2.3 Добавлена выгрузка непосредственно из документа

18000 руб.

15.12.2022    6428    106    25    

14

ЭДО: организация архива оригиналов первичных документов, комплексный отчет по ошибкам

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

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

14880 руб.

17.12.2018    44291    56    51    

71

1С:Бухгалтерия 3.0 ПРОФ + 1С:Документооборот. Модуль интеграции 1С:БП и 1С:ДО (ПРОФ или КОРП)

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

Бесшовная связь с 1С:Документооборот (КОРП или ПРОФ) - вот что обеспечит Вам и Вашим сотрудникам оперативный доступ и продуктивную работу с документами в учётной системе 1С на базе "1С:Бухгалтерия предприятия 3.0 ПРОФ". Интеграция позволяет экономить до 60% времени на поиск и согласование первичной документации (актов, счетов-фактур, накладных), не говоря уже о других полезных функциональных возможностях: создании и запуске бизнес-процессов, работе с электронной почтой, штрихкодировании документов и многом другом.

30000 руб.

23.05.2017    53790    34    67    

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

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

Причем в результате используется типовое разделение процессов по смыслу. Непонятно, почему 1С не довели визуализацию процессов.
За 4 года, я думала, что исправят. Но нет. Пришлось делать самим. Процессов много.
3. Flyerink 5 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С:ДО, можно просто у внутреннего документа в форме элемента, добавить ещё одну группу и добавить кнопку, предыдущую группу и кнопку сделать не видимой. У новой кнопки сделать команду СоздатьБизнесПроцесс, она находится в общих командах, и после этого будет старый вариант формы выбора процесса. А так спасибо большое за статью, с УПП уже долго мучаюсь.
Прикрепленные файлы:
Оставьте свое сообщение