Как реализовать создание контрагента на основании заявки в 1С:Документооборот

Бизнес-аналитик 1С v8.3 (Управляемые формы) 1С:Документооборот IT и автоматизация бизнеса
← На главную

В крупных и средних компаниях процесс внесения новых контрагентов в информационную базу часто жестко регламентирован. Прежде чем внести нового партнера в систему, его должна проверить служба безопасности, юристы должны согласовать проект договора, а бухгалтерия — подтвердить корректность реквизитов. Для решения этой задачи идеально подходит программный продукт «1С:Документооборот» (1С:ДО).

Однако у начинающих разработчиков и аналитиков часто возникает ступор: как связать документ-заявку и элемент справочника Контрагенты? Ведь в «1С:Документооборот» сами «документы» (внутренние, входящие, исходящие) физически хранятся в справочниках конфигурации. Разберем детально, как спроектировать и внедрить этот процесс с нуля.

Архитектурная концепция: Документы как Справочники

Прежде чем перейти к настройкам, проанализируем важную особенность архитектуры «1С:Документооборот». В отличие от учетных решений (таких как «1С:Бухгалтерия» или «1С:ERP»), где документы делают движения по регистрам бухгалтерии и накопления, в 1С:ДО документы — это инструменты для организации процессов, хранения файлов и реквизитов.

В версиях 1С:ДО 2.1 документы физически хранятся в иерархическом справочнике ВнутренниеДокументы. В версии 1С:ДО 3.0 концепция была модернизирована, и теперь они располагаются в едином справочнике ДокументыПредприятия. Таким образом, создание нового «вида документа» в пользовательском режиме — это фактически создание новой логической категории внутри единого справочника документов.

Для реализации нашей задачи мы можем пойти тремя путями:

  1. Стандартный сценарий (No-code): Настройка силами аналитика без изменения конфигурации.
  2. Автоматизированный сценарий (Low-code): Использование обработчиков бизнес-событий в пользовательском режиме.
  3. Интеграционный сценарий (Интеграция с учетной системой): Согласование заявки в 1С:ДО с последующей выгрузкой контрагента в «1С:Бухгалтерию» или «1С:ERP».

---

Вариант 1. Реализация стандартными средствами (No-code)

Рассмотрим самый простой способ реализации, который не требует программирования и отлично подходит для базового внедрения функционала.

Шаг 1. Настройка нового вида документа

Перейдем в раздел НСИ — Виды документов и создадим новый вид документа:

Шаг 2. Создание шаблона процесса

Для того чтобы заявка не просто висела в системе, а двигалась по регламентированному маршруту, настроим шаблон комплексного процесса (в 1С:ДО 2.1) или правило обработки документов (в 1С:ДО 3.0):

  1. Этап 1. Согласование (Юристы / Служба безопасности): Направляем документ ответственным сотрудникам для проверки благонадежности потенциального контрагента.
  2. Этап 2. Исполнение (Ответственный за НСИ / Бухгалтер): После успешного согласования задача переходит исполнителю, который должен завести карточку в справочнике Контрагенты.

Шаг 3. Создание контрагента исполнителем

Когда исполнителю приходит задача «Внести контрагента в базу», он открывает согласованную заявку, копирует из нее ИНН, переходит в справочник Контрагенты и нажимает кнопку Создать. Благодаря встроенному сервису «1С:Контрагент», система автоматически заполнит все реквизиты по ИНН из базы ФНС (ЕГРЮЛ/ЕГРИП).

После создания карточки исполнитель прикрепляет созданного контрагента к исходному документу-заявке (в качестве связанного объекта или заполняет стандартный реквизит «Контрагент» в документе) и закрывает задачу исполнения.

---

Вариант 2. Автоматическое создание через программные обработчики (Low-code)

Если ручной ввод контрагента исполнителем кажется вам неэффективным, мы можем автоматизировать этот шаг. Выясним, как сделать так, чтобы система сама создавала элемент справочника Контрагенты в момент согласования заявки.

Для этого воспользуемся механизмом Обработчиков бизнес-событий (вкладка «Настройка и администрирование» — «Бизнес-события»). Этот функционал позволяет писать код на встроенном языке 1С непосредственно в пользовательском режиме, не снимая конфигурацию с поддержки.

Рассмотрим пример программного кода, который можно привязать к событию выполнения задачи согласования или к этапу автозапуска процесса:


// Получаем объект документа-заявки
ДокументОбъект = СсылкаНаОбъект.ПолучитьОбъект();

// Извлекаем ИНН из дополнительных реквизитов документа
ИННКонтрагента = "";
Для Каждого СтрокаРеквизита Из ДокументОбъект.ДополнительныеРеквизиты Цикл
    Если СтрокаРеквизита.Свойство.Наименование = "ИНН" Тогда
        ИННКонтрагента = СокрЛП(СтрокаРеквизита.Значение);
        Прервать;
    КонецЕсли;
КонецЦикла;

Если ПустаяСтрока(ИННКонтрагента) Тогда
    ЗаписатьВЖурналРегистрации("СозданиеКонтрагента", УровеньЖурналаРегистрации.Предупреждение, , , "В заявке не заполнен ИНН!");
    Возврат;
КонецЕсли;

// Проверяем дубли в базе, чтобы избежать хаоса в НСИ
НайденныйКонтрагент = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", ИННКонтрагента);

Если ЗначениеЗаполнено(НайденныйКонтрагент) Тогда
    // Если контрагент уже существует, просто связываем его с документом
    ДокументОбъект.Контрагент = НайденныйКонтрагент;
    ДокументОбъект.Записать();
Иначе
    // Создаем новый элемент справочника Контрагенты
    НовыйКонтрагент = Справочники.Контрагенты.СоздатьЭлемент();
    НовыйКонтрагент.Наименование = ДокументОбъект.Наименование;
    НовыйКонтрагент.ИНН = ИННКонтрагента;
    
    // Заполняем прочие реквизиты по умолчанию
    НовыйКонтрагент.ЮридическоеФизическоеЛицо = Перечисления.ЮридическоеФизическоеЛицо.ЮридическоеЛицо;
    
    Попытка
        НовыйКонтрагент.Записать();
        
        // Связываем созданную карточку с нашей заявкой
        ДокументОбъект.Контрагент = НовыйКонтрагент.Ссылка;
        ДокументОбъект.Записать();
        
        ЗаписатьВЖурналРегистрации("СозданиеКонтрагента", УровеньЖурналаРегистрации.Информация, , , "Успешно создан контрагент: " + НовыйКонтрагент.Наименование);
    Исключение
        ЗаписатьВЖурналРегистрации("СозданиеКонтрагента", УровеньЖурналаРегистрации.Ошибка, , , "Ошибка записи контрагента: " + ОписаниеОшибки());
    КонецПопытки;
КонецЕсли;

Этот скрипт автоматически проверит базу на наличие дубликатов по ИНН, создаст новую карточку партнера и привяжет её к исходной заявке. Таким образом, юрист или исполнитель получит уже готовую карточку контрагента в один клик.

---

Вариант 3. Интеграционный сценарий (Бесшовная интеграция)

В реальной практике контрагенты чаще всего нужны не в самом Документообороте, а в финансовой системе предприятия — например, в «1С:Бухгалтерии» (БП) или «1С:ERP Управление предприятием». В таком случае рекомендуется использовать механизм Бесшовной интеграции.

Проанализируем оптимальную схему работы при такой архитектуре:

  1. Обычным пользователям в учетной системе (ERP/БП) запрещается напрямую создавать элементы в справочнике Контрагенты (настраиваются соответствующие права доступа).
  2. Для добавления нового контрагента пользователь создает документ Заявка на контрагента непосредственно в ERP.
  3. Благодаря бесшовной интеграции, на стороне ERP нажимается кнопка «Отправить на согласование». В этот момент в «1С:Документооборот» автоматически создается связанный внутренний документ и запускается процесс согласования (с участием службы безопасности и юристов).
  4. Пока идет согласование в ДО, в ERP карточка контрагента заблокирована для использования в хозяйственных операциях.
  5. Как только в «1С:Документооборот» процесс завершается успешным согласованием, статус заявки в ERP автоматически меняется на «Согласовано», карточка контрагента разблокируется и становится доступной для выписки счетов, оформления накладных и договоров.

Резюме и рекомендации

Мы рассмотрели различные варианты решения задачи. Какой из них выбрать — зависит от масштаба вашей автоматизации:

← На главную