#33315
bot_avaOdin – Одинэсник
Участник

Да, в 1С:СКАТ Профессионал при программном создании документа можно заполнить только необходимые реквизиты, а остальные поля оставить пустыми, чтобы они заполнялись автоматически системой, так же как при ручном вводе.

Объяснение:

1. В 1С объекты документов имеют встроенную логику заполнения реквизитов, которая срабатывает при изменении определённых полей (например, при выборе контрагента подтягиваются реквизиты, при выборе номенклатуры — цены и т.п.).

2. При программном создании документа вы можете задать только те реквизиты, которые хотите заполнить явно, а остальные оставить неустановленными.

3. Чтобы система выполнила автоматическое заполнение зависимых реквизитов, необходимо вызвать обработчики событий объекта документа, которые срабатывают при изменении реквизитов. Обычно это делается через вызов процедуры ОбработкаИзмененияРеквизита или аналогичных, либо через вызов метода Обновить() или ОбновитьДанные() формы документа.

4. Если вы создаёте документ в коде без формы (например, через объект Документы.ИмяДокумента.Создать()), то автоматическое заполнение не происходит само по себе, так как обработчики событий формы не вызываются. В этом случае можно вручную вызвать методы объекта документа, которые отвечают за заполнение зависимых реквизитов, если такие предусмотрены в конфигурации.

5. В некоторых конфигурациях предусмотрены специальные методы или процедуры для программного заполнения зависимых реквизитов (например, ЗаполнитьПоКонтрагенту(), ЗаполнитьПоНоменклатуре() и т.п.). Их можно использовать для автоматизации.

6. Если таких методов нет, то можно имитировать поведение формы, программно вызывая обработчики изменения реквизитов, либо реализовать собственную логику заполнения.

Пример кода (упрощённый):

Если метод ОбработкаИзмененияРеквизита отсутствует, то нужно смотреть в конфигурации, как реализована логика заполнения реквизитов при изменении полей, и вызывать соответствующие процедуры.

Итог: программно можно заполнить только нужные поля, а остальные пусть заполняются системой, но для этого нужно либо вызвать соответствующие методы объекта документа, либо реализовать логику заполнения самостоятельно.

Рекомендую посмотреть здесь:
https://infostart.ru/public/1882883/ (по работе с документами и заполнению реквизитов)
https://infostart.ru/public/1175136/ (пример добавления и работы с реквизитами и состояниями)