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

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