При настройке и использовании «1С:Документооборот 3.0» (1С:ДО) мы часто сталкиваемся с задачей оптимизации работы пользователей. Одна из типичных ситуаций: сотрудник создает документ определенного вида, например, «Дополнительное соглашение», и хочет сразу же внутри этого документа создать файл-приложение, используя шаблон, который уже настроен для вида документа «Договор».
Однако при попытке выбрать шаблон (команда «Добавить файл по шаблону»), система предлагает только те заготовки, которые привязаны к текущему виду документа («Дополнительное соглашение»). Шаблоны от «Договоров» или других видов документов в списке отсутствуют. Давайте разберем подробно, почему так происходит, какие есть архитектурные ограничения и как мы можем решить эту задачу, используя штатные возможности конфигурации.
В третьей редакции «1С:Документооборота» логика работы с файлами и их шаблонами тесно связана с настройками Вида документа. Это сделано не случайно.
Когда мы привязываем шаблон файла (например, .docx) к виду документа, мы часто настраиваем правила автозаполнения. Мы указываем системе: «Возьми реквизит Сумма из карточки документа и вставь его в поле Summa в файле Word».
Если бы система позволяла свободно брать шаблон от «Договора» и применять его к «Доп. соглашению», механизм автозаполнения сломался бы, так как состав реквизитов (и их имена скриптов) в разных видах документов может отличаться. Поэтому платформа ограничивает выбор только теми шаблонами, которые явно разрешены для текущего вида документа.
Если ваша цель — позволить пользователю в рамках одной карточки «Доп. соглашения» добавлять разные файлы (само соглашение, приложение 1, приложение 2), которые базируются на шаблонах других документов, нам необходимо явно «разрешить» эти шаблоны для нашего вида документа.
Рассмотрим пошагово, как это сделать администратору системы:
Важно: В 1С:ДО 3.0 один и тот же физический файл шаблона (элемент справочника ШаблоныФайлов) можно привязать к нескольким видам документов. Вам не обязательно загружать файл с диска заново, создавая дубль.
Однако, просто добавить файл недостаточно. Самое важное — настроить автозаполнение. Поскольку контекст изменился (теперь мы заполняем файл данными из «Доп. соглашения», а не из «Договора»), старые правила могут не сработать.
Нам необходимо зайти в настройки автозаполнения для этого шаблона именно в контексте вида документа «Дополнительное соглашение» и сопоставить поля. Если в доп. соглашении есть все необходимые реквизиты (Контрагент, Организация), то настройка будет простой.
Часто возникает ситуация, когда в «Приложении», которое мы прикрепляем к «Доп. соглашению», нужно вывести данные из Основного договора (например, «к Договору №... от ...»). Но в самой карточке Доп. соглашения этих реквизитов может не быть (или они есть только в виде ссылки на документ-основание).
В этом случае при настройке автозаполнения шаблона (когда он уже добавлен в настройки вида документа «Доп. соглашение») нам придется использовать встроенный язык 1С в полях замены.
В таблице настройки автозаполнения вместо прямого выбора реквизита мы можем написать выражение на встроенном языке. Рассмотрим примерную логику, как получить данные родительского договора:
// Примерный алгоритм для поля скрипта автозаполнения
// Предполагаем, что в Доп.Соглашении есть реквизит "ВГруппеС", указывающий на Договор
// Или ищем через связи документов
Если ЗначениеЗаполнено(Документ.ВГруппеС) Тогда
Результат = Документ.ВГруппеС.РегистрационныйНомер;
Иначе
// Попытка найти через связи, если прямой ссылки нет
// Это псевдокод, реальные методы API 3.0 могут отличаться
Связанные = СвязиДокументов.ПолучитьСвязанныеДокументы(Документ);
Для Каждого Связь Из Связанные Цикл
Если Связь.ТипСвязи.Имя = "ОтноситсяКДоговору" Тогда
Результат = Связь.Документ.РегистрационныйНомер;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Таким образом, мы настраиваем один вид документа («Доп. соглашение»), в который добавляем множество шаблонов файлов от других видов, и для каждого настраиваем скрипты получения данных из документа-основания.
Разработчики 1С и методологи рекомендуют не перегружать один вид документа множеством разнородных файлов, если они логически являются отдельными сущностями. Если «Приложение» — это юридически значимый документ, который может иметь свой жизненный цикл, лучше использовать связи.
Схема работы будет следующей:
Этот путь кажется более долгим для пользователя (больше кликов), но он обеспечивает порядок в учете документов.
В процессе обсуждения данной темы пользователи заметили интересный нюанс. В окне выбора шаблона (команда «Файл» — «Создать по шаблону») есть группа или вкладка «Недавние».
Если пользователь недавно создавал «Договор» и использовал там шаблон «Приложения», то этот шаблон попадет в список «Недавних». Если затем этот же пользователь зайдет в «Доп. соглашение» и откроет «Недавние», он увидит там шаблон от «Договора» и даже сможет его выбрать.
Почему не стоит на это полагаться?
Чтобы добавить файл по шаблону из другого вида документа в 1С:Документооборот 3.0, нельзя просто выбрать его из общего списка. Необходимо выполнить настройку на уровне администратора:
Использование обходных путей через список «Недавние» не рекомендуется, так как это не гарантирует корректного формирования текста документа.