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

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

Директивный

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

Автозаполнение или подстановка реквизита («проставлять УПД», «подтягивать должность», «переносить водителя в накладную») проектируется по трём правилам:

  • Момент срабатывания задан явно и один. Заполнение при загрузке из источника, при интерактивном создании и при проведении — это разные точки; выбери нужную и не размазывай логику по всем сразу. Для загрузки — в обработке загрузки; для формы — в обработчике события реквизита; для гарантии на записи — при проведении.
  • Ручной ввод не перетирается молча. Если пользователь уже заполнил реквизит, автоподстановка либо не трогает его, либо перезаписывает осознанно и заметно. «Всегда Истина», «всегда из справочника» допустимо только там, где ручное значение по бизнесу невозможно — и это решение фиксируется в задаче.
  • Источник данных — устойчивая связь, а не совпадение представлений. Реквизит берётся по ссылке/ключу (из документа-основания, из связанного объекта), а не «найти по совпадающему наименованию». Учитывается, что источник может быть пустым (сотрудник другого юрлица, нет должности) — тогда явное значение по умолчанию, а не пустая строка и не исключение.

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

  • Реквизит всегда вводится только человеком (нет источника для автоподстановки) — автозаполнение не нужно; достаточно проверки заполнения.
  • Значение по бизнесу однозначно и ручной ввод недопустим — тогда «всегда подставлять» правильно, но перезапись всё равно делается видимой (не тихо поверх пользовательского значения при следующей записи).