Перейти к содержимому

Автосоздание документа на основании — идемпотентно, полно, с обработкой отказа

Директивный

#заполнение-документов#идемпотентность#проведение#надёжность

Механизм, который по документу-основанию или событию сам создаёт другой документ (Поступление услуг из счёта-фактуры, списание из выпуска, тикет из расхождения), обязан соблюдать пять правил:

  • Идемпотентность по связи «основание → результат». Повторный прогон по тому же основанию не создаёт второй документ. Связь хранится явно (реквизит «Основание»/«Документ-источник» или регистр соответствия), проверяется до создания — не «удалим дубли потом».
  • Полнота заполнения из основания. Все обязательные реквизиты берутся из источника (контрагент, суммы, НДС, статья, подразделение) — а не оставляются пустыми «пользователь дозаполнит». Пустой обязательный реквизит превращает автоматизацию в полуфабрикат, который всё равно открывают руками.
  • Автопроведение с обработкой отказа. Если документ проводится автоматически, отказ проведения (заполнение, закрытый период, контроль остатков) фиксируется и виден, а не теряется. Документ либо создаётся непроведённым с пометкой, либо не создаётся с внятной причиной — но никогда «молча никак».
  • Поведение при изменении основания определено. Что делать, если основание перепровели или изменили: обновить результат, создать новый, игнорировать — выбор осознанный и описанный, а не «как получится».
  • След в ЖР и права. Сколько документов создано, сколько пропущено и почему; под какими правами выполняется (техпользователь с минимально нужными, а не «полные, чтобы точно провелось»).

Автосоздание документов — самый частый вид автоматизации в учёте и самый частый источник дублей и «полупроведённых» документов. Триггер (загрузка, регламент, кнопка, событие) почти всегда может сработать дважды: повторная доставка, перезапуск, повторный клик. Без ключа идемпотентности это немедленно даёт задвоенные поступления и движения. А документ, созданный с пустыми реквизитами или без проведения и без сообщения об отказе, не экономит время бухгалтера — он добавляет ему разбор «почему висит непроведённым».

  • Черновик под ручную доработку (создаём заготовку, бухгалтер осознанно дозаполняет и проводит) — тогда автопроведение и полнота не обязательны, но идемпотентность и связь с основанием остаются: заготовки тоже задваиваются.
  • Единичное разовое создание по конкретному списку из задачи — идемпотентность можно заменить контролем списка, но след в ЖР сохраняется.