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