8 скрытых фишек 1С:Документооборот для ускорения согласования

Почему согласование в 1С:Документооборот тормозит и как это исправить
Большинство компаний, внедривших 1С:Документооборот, используют лишь 20–30% его возможностей. Типичная картина: согласующие забывают о задачах, руководители теряют документы в очереди, а финальное подписание затягивается на недели вместо часов. При этом в платформе 8.3 заложены инструменты, которые радикально меняют ситуацию — просто они хорошо спрятаны в настройках и требуют грамотной конфигурации.
В этой статье мы разберём 8 конкретных механизмов, каждый из которых проверен на реальных проектах. Для каждой фишки приведён пример кода или настройки, чтобы вы могли применить её уже сегодня. Если вам нужна помощь с внедрением, вы всегда можете найти разработчика 1С на нашей бирже.
Фишка 1. Параллельные маршруты с условным ветвлением
Стандартный шаблон согласования в большинстве компаний — строго последовательный: сначала юрист, потом финансовый директор, потом генеральный. Если юрист в отпуске — весь процесс стоит. Платформа 8.3 позволяет настраивать параллельные этапы с условным ветвлением прямо в конструкторе шаблонов процессов.
Ключевой момент: условие ветвления можно задать через реквизиты документа. Например, если сумма договора превышает 500 000 рублей — добавляется этап согласования с финансовым контролёром, если нет — этап пропускается автоматически.
// Пример программного создания задачи согласования с условием
// в обработчике события «ПередЗапускомПроцесса»
Процедура ПередЗапускомПроцесса(ПроцессОбъект, Отказ)
// Получаем предмет процесса (документ)
ДокументСсылка = ПроцессОбъект.ПредметСсылка;
ДокументОбъект = ДокументСсылка.ПолучитьОбъект();
// Определяем сумму договора из реквизита
СуммаДоговора = ДокументОбъект.СуммаДоговора;
// Ищем этап финансового контролёра в шаблоне
Для Каждого ЭтапПроцесса Из ПроцессОбъект.ЭтапыПроцесса Цикл
Если ЭтапПроцесса.Наименование = "Согласование финансового контролёра" Тогда
// Если сумма меньше порога — пропускаем этап
Если СуммаДоговора < 500000 Тогда
ЭтапПроцесса.Пропустить = Истина;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Параллельное согласование сокращает общее время в среднем на 40–60% для документов, которые не требуют строгой последовательности. Юрист и финансист могут работать одновременно, а генеральный получает документ только после того, как оба дали добро.
Фишка 2. Автоматическое назначение исполнителей через роли, а не конкретных сотрудников
Одна из самых болезненных проблем — когда в шаблоне процесса прописан конкретный сотрудник, а он уволился или ушёл в отпуск. Приходится вручную менять шаблон или перезапускать процесс. Решение — использовать роли исполнителей вместо именных назначений.
В 1С:Документооборот 8.3 есть справочник «Роли исполнителей». Каждой роли назначается один или несколько сотрудников, и при запуске процесса система автоматически разрешает роль в конкретных исполнителей на момент запуска. При смене сотрудника достаточно обновить состав роли — все шаблоны продолжат работать корректно.
// Программное получение исполнителей по роли для подстановки в задачу
Функция ПолучитьИсполнителейПоРоли(НаименованиеРоли)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РолиИсполнителейСостав.Исполнитель КАК Исполнитель
|ИЗ
| Справочник.РолиИсполнителей.Состав КАК РолиИсполнителейСостав
|ГДЕ
| РолиИсполнителейСостав.Ссылка.Наименование = &НаименованиеРоли
| И РолиИсполнителейСостав.Ссылка.ПометкаУдаления = ЛОЖЬ";
Запрос.УстановитьПараметр("НаименованиеРоли", НаименованиеРоли);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
МассивИсполнителей = Новый Массив;
Пока Выборка.Следующий() Цикл
МассивИсполнителей.Добавить(Выборка.Исполнитель);
КонецЦикла;
Возврат МассивИсполнителей;
КонецФункции
Дополнительный плюс: если в роль входят несколько сотрудников, можно настроить режим «любой из исполнителей» — задача будет считаться выполненной, как только один из них её завершит. Это особенно удобно для больших юридических или финансовых отделов.
Фишка 3. Эскалация просроченных задач с автоматическим уведомлением руководителя
Согласующий молчит три дня? В стандартной настройке система просто ждёт. Но в 1С:Документооборот 8.3 есть механизм эскалации — автоматического перенаправления задачи или уведомления руководителя при истечении срока.
Настройка выполняется в два шага: сначала указывается срок выполнения задачи в шаблоне этапа, затем подключается регламентное задание «Контроль сроков задач», которое запускается, например, каждые 30 минут. При просрочке система может: отправить email-уведомление руководителю, создать новую задачу для замещающего, либо автоматически перевести задачу на следующий этап с пометкой «просрочено».
// Пример обработчика для регламентного задания эскалации
// Запускается по расписанию каждые 30 минут
Процедура ВыполнитьЭскалациюПросроченныхЗадач() Экспорт
ТекущаяДата = ТекущаяДатаСеанса();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗадачиИсполнителяЗадачиПоПроцессу.Ссылка КАК ЗадачаСсылка,
| ЗадачиИсполнителяЗадачиПоПроцессу.Исполнитель КАК Исполнитель,
| ЗадачиИсполнителяЗадачиПоПроцессу.СрокИсполнения КАК СрокИсполнения,
| ЗадачиИсполнителяЗадачиПоПроцессу.ПредметСсылка КАК Предмет
|ИЗ
| Задача.ЗадачиИсполнителя КАК ЗадачиИсполнителяЗадачиПоПроцессу
|ГДЕ
| ЗадачиИсполнителяЗадачиПоПроцессу.СрокИсполнения < &ТекущаяДата
| И ЗадачиИсполнителяЗадачиПоПроцессу.Выполнена = ЛОЖЬ
| И ЗадачиИсполнителяЗадачиПоПроцессу.ЭскалацияВыполнена = ЛОЖЬ";
Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДата);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
// Отправляем уведомление руководителю исполнителя
ОтправитьУведомлениеОбЭскалации(
Выборка.ЗадачаСсылка,
Выборка.Исполнитель,
Выборка.Предмет
);
// Помечаем задачу как эскалированную
ЗадачаОбъект = Выборка.ЗадачаСсылка.ПолучитьОбъект();
ЗадачаОбъект.ЭскалацияВыполнена = Истина;
ЗадачаОбъект.Записать();
КонецЦикла;
КонецПроцедуры
Практика показывает: одно только включение эскалации сокращает среднее время согласования на 25–35%, потому что согласующие перестают «забывать» о задачах, зная, что просрочка автоматически попадёт к их руководителю.
Фишка 4. Шаблоны резолюций и быстрые ответы для мобильного согласования
Значительная часть задержек согласования происходит не из-за содержательных разногласий, а из-за банальной лени: согласующему нужно открыть систему, найти задачу, написать комментарий. Особенно это критично для руководителей, которые работают с мобильного устройства.
В 1С:Документооборот 8.3 есть два инструмента для ускорения: шаблоны резолюций и быстрые ответы. Шаблоны резолюций — это заготовленные тексты, которые руководитель выбирает одним кликом вместо ручного ввода. Быстрые ответы позволяют согласовать или отклонить документ прямо из email-уведомления, без входа в систему.
Настройка быстрых ответов через email требует корректной конфигурации почтового профиля и включения соответствующей опции в настройках системы. В разделе «Настройки» → «Уведомления» активируйте пункт «Разрешить выполнение задач по email». После этого в письма-уведомления будут добавлены кнопки «Согласовать», «Отклонить», «Запросить информацию».
// Программное создание шаблона резолюции
Процедура СоздатьШаблонРезолюции(ТекстРезолюции, КодРезолюции)
// Создаём новый элемент справочника шаблонов резолюций
НовыйШаблон = Справочники.ШаблоныРезолюций.СоздатьЭлемент();
НовыйШаблон.Наименование = КодРезолюции;
НовыйШаблон.ТекстРезолюции = ТекстРезолюции;
НовыйШаблон.ДоступенВсем = Истина;
Попытка
НовыйШаблон.Записать();
Сообщить("Шаблон резолюции '" + КодРезолюции + "' успешно создан.");
Исключение
Сообщить("Ошибка создания шаблона: " + ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
// Вызов: создаём типовые шаблоны для руководителей
СоздатьШаблонРезолюции(
"Согласовано. Прошу подготовить к подписанию.",
"Стандартное согласование"
);
СоздатьШаблонРезолюции(
"Отклонено. Требуется доработка условий оплаты.",
"Отклонение по условиям оплаты"
);
Совет: создайте библиотеку из 10–15 типовых резолюций для каждого уровня согласующих. Это особенно важно для электронного документооборота, где скорость реакции критична для соблюдения регуляторных сроков.
Фишка 5. Интеграция с 1С:Бухгалтерией для автоматического запуска согласования
Одна из самых мощных, но редко используемых возможностей — автоматический запуск процесса согласования при создании документа в учётной системе. Например, при проведении счёта на оплату в 1С:Бухгалтерии автоматически стартует процесс согласования в Документообороте — без участия пользователя.
Интеграция реализуется через COM-соединение или веб-сервисы. В 1С:Документооборот 8.3 есть встроенный веб-сервис ДокументооборотВебСервис, который принимает запросы на создание процессов. Со стороны учётной системы вызов выполняется в обработчике события «ПриЗаписи» нужного документа.
// Обработчик в модуле документа учётной системы
// Вызывается при записи счёта на оплату
Процедура ПриЗаписи(Отказ)
// Запускаем согласование только для новых документов
Если НЕ ЭтоНовый() Тогда
Возврат;
КонецЕсли;
// Проверяем порог суммы для обязательного согласования
Если СуммаДокумента < 100000 Тогда
Возврат;
КонецЕсли;
Попытка
// Подключаемся к Документообороту через веб-сервис
АдресСервиса = "http://server/documentooborot/ws/ДокументооборотВебСервис?wsdl";
Сервис = Новый WSПрокси(
АдресСервиса,
"ДокументооборотВебСервис",
"ДокументооборотВебСервисSoap"
);
// Формируем параметры запуска процесса
ПараметрыПроцесса = Новый Структура;
ПараметрыПроцесса.Вставить("ШаблонПроцесса", "Согласование счёта на оплату");
ПараметрыПроцесса.Вставить("ПредметВнешний", Строка(Ссылка.УникальныйИдентификатор()));
ПараметрыПроцесса.Вставить("НаименованиеПредмета", Строка(Ссылка));
ПараметрыПроцесса.Вставить("Инициатор", ТекущийПользователь());
// Запускаем процесс
Сервис.ЗапуститьПроцессПоШаблону(ПараметрыПроцесса);
Сообщить("Процесс согласования запущен автоматически.");
Исключение
ЗаписьЖурналаРегистрации(
"Интеграция с Документооборотом",
УровеньЖурналаРегистрации.Ошибка,
,
,
ОписаниеОшибки()
);
КонецПопытки;
КонецПроцедуры
Такая интеграция полностью исключает человеческий фактор при инициации согласования. Бухгалтер создаёт документ — процесс стартует сам. Никто не забывает отправить на согласование, никто не пропускает документы «через чёрный ход».
Фишка 6. Настройка замещения с сохранением контекста задачи
Классическое замещение в 1С:Документооборот работает просто: если исполнитель отсутствует, его задачи перенаправляются замещающему. Но есть проблема: замещающий получает задачу без контекста — непонятно, почему именно он, что за документ, каков срочность.
Скрытая фишка — расширенное замещение с передачей контекста. При настройке замещения можно указать не только замещающего, но и шаблон комментария, который автоматически добавляется к переданной задаче. Это настраивается в справочнике «Замещения» через поле «Комментарий при передаче».
// Программное создание записи замещения с контекстным комментарием
Процедура НастроитьЗамещение(
ОтсутствующийСотрудник,
ЗамещающийСотрудник,
ДатаНачала,
ДатаОкончания
)
// Создаём запись замещения
НовоеЗамещение = Справочники.Замещения.СоздатьЭлемент();
НовоеЗамещение.Сотрудник = ОтсутствующийСотрудник;
НовоеЗамещение.Заместитель = ЗамещающийСотрудник;
НовоеЗамещение.ДатаНачала = ДатаНачала;
НовоеЗамещение.ДатаОкончания = ДатаОкончания;
НовоеЗамещение.ПередаватьЗадачи = Истина;
НовоеЗамещение.ПередаватьПочту = Истина;
// Формируем контекстный комментарий для замещающего
Комментарий = "Задача передана в порядке замещения сотрудника "
+ ОтсутствующийСотрудник
+ ". Период замещения: "
+ Формат(ДатаНачала, "ДФ=дд.ММ.гггг")
+ " — "
+ Формат(ДатаОкончания, "ДФ=дд.ММ.гггг");
НовоеЗамещение.КомментарийПриПередаче = Комментарий;
Попытка
НовоеЗамещение.Записать();
Сообщить("Замещение настроено успешно.");
Исключение
Сообщить("Ошибка настройки замещения: " + ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
Дополнительно рекомендуем включить опцию «Уведомлять замещаемого о выполнении его задач» — так сотрудник, вернувшись из отпуска, сразу видит, что было сделано в его отсутствие, и может продолжить работу без долгой сверки. Подобные задачи автоматизации часто решаются через фриланс 1С — специалисты быстро настроят нужные сценарии.
Фишка 7. Аналитика узких мест: встроенные отчёты по срокам согласования
Большинство администраторов 1С:Документооборот настраивают маршруты, но никогда не смотрят, где именно процесс застревает. Между тем в системе есть встроенный отчёт «Статистика выполнения задач», который показывает среднее время обработки на каждом этапе, процент просрочки по конкретным исполнителям и динамику за период. Именно этот отчёт позволяет принять решение, основанное на данных: стоит ли добавить параллельную ветку, сократить нормативный срок или заменить роль согласующего.
Скрытая возможность — программное формирование сводки по узким местам прямо в регламентном задании. Настройте ежепятничную рассылку руководителям отделов с показателями их блока согласования — и необходимость «пинать» исполнителей вручную отпадёт сама собой.
// Регламентное задание: отчёт по просроченным этапам согласования
Процедура СформироватьОтчётПоУзкимМестам() Экспортировать
ДатаНачала = НачалоНедели(ТекущаяДата() - 7 * 86400);
ДатаОкончания = КонецНедели(ТекущаяДата() - 86400);
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗадачиИсполнителей.РольИсполнителя КАК Роль,
| ЗадачиИсполнителей.Исполнитель КАК Исполнитель,
| КОЛИЧЕСТВО(ЗадачиИсполнителей.Ссылка) КАК КоличествоЗадач,
| СРЕДНЕЕ(РАЗНОСТЬДАТ(
| ЗадачиИсполнителей.Дата,
| ЗадачиИсполнителей.ДатаИсполнения,
| ЧАС)) КАК СреднееВремяЧасов,
| СУММА(ВЫБОР КОГДА ЗадачиИсполнителей.ДатаИсполнения > ЗадачиИсполнителей.Срок
| ТОГДА 1 ИНАЧЕ 0 КОНЕЦ) КАК КоличествоПросрочек
|ИЗ
| Задача.ЗадачаИсполнителя КАК ЗадачиИсполнителей
|ГДЕ
| ЗадачиИсполнителей.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
| И ЗадачиИсполнителей.Выполнена = ИСТИНА
|СГРУППИРОВАТЬ ПО
| ЗадачиИсполнителей.РольИсполнителя,
| ЗадачиИсполнителей.Исполнитель
|УПОРЯДОЧИТЬ ПО
| КоличествоПросрочек УБЫВ";
Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаСтрок = РезультатЗапроса.Выбрать();
ТекстПисьма = "Отчёт по узким местам согласования за прошедшую неделю:" + Символы.ПС;
Пока ВыборкаСтрок.Следующий() Цикл
ТекстПисьма = ТекстПисьма
+ Символы.ПС
+ "Исполнитель: " + ВыборкаСтрок.Исполнитель
+ " | Задач: " + ВыборкаСтрок.КоличествоЗадач
+ " | Среднее время: " + Формат(ВыборкаСтрок.СреднееВремяЧасов, "ЧДЦ=1") + " ч."
+ " | Просрочек: " + ВыборкаСтрок.КоличествоПросрочек;
КонецЦикла;
// Отправляем письмо ответственному за документооборот
ПараметрыПочты = Новый Структура;
ПараметрыПочты.Вставить("Кому", "doc-admin@company.ru");
ПараметрыПочты.Вставить("Тема", "Узкие места согласования — " + Формат(ТекущаяДата(), "ДФ=дд.ММ.гггг"));
ПараметрыПочты.Вставить("Тело", ТекстПисьма);
РаботаСПочтой.ОтправитьПисьмо(ПараметрыПочты);
КонецПроцедуры
Анализируйте отчёт не реже одного раза в месяц: если на каком-то этапе среднее время обработки вдвое превышает норматив — это сигнал пересмотреть маршрут или провести обучение конкретного исполнителя. Регулярная аналитика превращает согласование из «чёрного ящика» в управляемый процесс с измеримыми KPI.
Найдите специалиста для решения этой задачи на koderion.ru
Фишка 8. Версионирование документов с автоматической блокировкой устаревших копий
Одна из самых болезненных ситуаций при согласовании — когда участники процесса работают с разными версиями документа. Один согласующий открыл файл утром, другой — после обеда, когда инициатор уже внёс правки. В итоге замечания накапливаются к разным редакциям, и разобраться, что актуально, становится невозможно. В 1С:Документооборот есть встроенный механизм версионирования, но по умолчанию он не блокирует доступ к старым версиям — пользователи продолжают скачивать их из истории.
Скрытая фишка — программная блокировка задач согласования при появлении новой версии файла. Подпишитесь на событие записи версии документа и автоматически отзывайте активные задачи, отправляя участникам уведомление со ссылкой на актуальную редакцию. Это исключает ситуацию, когда согласующий тратит время на проверку уже изменённого текста.
// Обработчик события: новая версия файла — отзыв устаревших задач согласования
Процедура ПриЗаписиВерсииФайла(Источник, Отказ) Экспортировать
ДокументВладелец = Источник.Владелец;
// Ищем активные задачи согласования по этому документу
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗадачиИсполнителей.Ссылка КАК Задача,
| ЗадачиИсполнителей.Исполнитель КАК Исполнитель
|ИЗ
| Задача.ЗадачаИсполнителя КАК ЗадачиИсполнителей
|ГДЕ
| ЗадачиИсполнителей.ПредметЗадачи = &Документ
| И ЗадачиИсполнителей.Выполнена = ЛОЖЬ
| И ЗадачиИсполнителей.НаименованиеЭтапа = ""Согласование""";
Запрос.УстановитьПараметр("Документ", ДокументВладелец);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаЗадач = РезультатЗапроса.Выбрать();
Пока ВыборкаЗадач.Следующий() Цикл
// Отзываем задачу и ставим статус «Отменена»
ОбъектЗадачи = ВыборкаЗадач.Задача.ПолучитьОбъект();
ОбъектЗадачи.Выполнена = Истина;
ОбъектЗадачи.РезультатВыполнения = "Отменена: загружена новая версия документа";
ОбъектЗадачи.Записать();
// Уведомляем исполнителя об изменении
ПараметрыУведомления = Новый Структура;
ПараметрыУведомления.Вставить("Получатель", ВыборкаЗадач.Исполнитель);
ПараметрыУведомления.Вставить("Тема", "Документ обновлён — задача согласования отозвана");
ПараметрыУведомления.Вставить(
"Текст",
"По документу """ + ДокументВладелец + """ загружена новая версия файла."
+ " Ваша задача согласования отозвана. Ожидайте повторного назначения."
);
РаботаСУведомлениями.ОтправитьУведомление(ПараметрыУведомления);
КонецЦикла;
КонецПроцедуры
Чтобы подписка заработала, зарегистрируйте её в конфигурации или через расширение: событие «ПередЗаписью» объекта «Версия файла», тип события — «После записи». После внедрения этой фишки согласующие перестают тратить время на проверку устаревших редакций, а инициатор получает чистый старт нового раунда согласования с гарантией, что все работают с одним и тем же текстом.
Найдите специалиста для решения этой задачи на koderion.ru
Найдите специалиста для решения этой задачи на koderion.ru