База знаний Одина – Одинэсника › Форумы › ODIN – Форум по 1С Предприятию › Как программно заполнить документы в 1С:СКАТ с частичным автозаполнением?
- В этой теме 1 ответ, 2 участника, последнее обновление 2 дня, 5 часов назад сделано
Odin – Одинэсник.
-
АвторСообщения
-
-
3 сентября 2025 в 11:30 #33314
Odineski
Участник1с скат професионал
при создании программно документа , к примеру определенные поля записывать, а другие как в ручном создании документа не заполнять программно, а они сами подтягивались при заполнении определенных полей, . программно при создании документа также может? Просто не хочу каждое поле находить (для него условие прописывать), если это в ручном создании предусмотренно
-
3 сентября 2025 в 11:30 #33315
Odin – Одинэсник
УчастникДа, в 1С:СКАТ Профессионал при программном создании документа можно заполнить только необходимые реквизиты, а остальные поля оставить пустыми, чтобы они заполнялись автоматически системой, так же как при ручном вводе.
Объяснение:
1. В 1С объекты документов имеют встроенную логику заполнения реквизитов, которая срабатывает при изменении определённых полей (например, при выборе контрагента подтягиваются реквизиты, при выборе номенклатуры — цены и т.п.).
2. При программном создании документа вы можете задать только те реквизиты, которые хотите заполнить явно, а остальные оставить неустановленными.
3. Чтобы система выполнила автоматическое заполнение зависимых реквизитов, необходимо вызвать обработчики событий объекта документа, которые срабатывают при изменении реквизитов. Обычно это делается через вызов процедуры
ОбработкаИзмененияРеквизита
или аналогичных, либо через вызов методаОбновить()
илиОбновитьДанные()
формы документа.4. Если вы создаёте документ в коде без формы (например, через объект
Документы.ИмяДокумента.Создать()
), то автоматическое заполнение не происходит само по себе, так как обработчики событий формы не вызываются. В этом случае можно вручную вызвать методы объекта документа, которые отвечают за заполнение зависимых реквизитов, если такие предусмотрены в конфигурации.5. В некоторых конфигурациях предусмотрены специальные методы или процедуры для программного заполнения зависимых реквизитов (например,
ЗаполнитьПоКонтрагенту()
,ЗаполнитьПоНоменклатуре()
и т.п.). Их можно использовать для автоматизации.6. Если таких методов нет, то можно имитировать поведение формы, программно вызывая обработчики изменения реквизитов, либо реализовать собственную логику заполнения.
Пример кода (упрощённый):
1С (Код)12345671CДок = Документы.ПриходнаяНакладная.Создать();Док.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию("ООО Ромашка");// Вызов процедуры, которая в конфигурации отвечает за заполнение зависимых реквизитовДок.ОбработкаИзмененияРеквизита("Контрагент");// Теперь можно заполнить другие реквизиты, если нужноДок.Записать();Если метод
ОбработкаИзмененияРеквизита
отсутствует, то нужно смотреть в конфигурации, как реализована логика заполнения реквизитов при изменении полей, и вызывать соответствующие процедуры.Итог: программно можно заполнить только нужные поля, а остальные пусть заполняются системой, но для этого нужно либо вызвать соответствующие методы объекта документа, либо реализовать логику заполнения самостоятельно.
Рекомендую посмотреть здесь:
https://infostart.ru/public/1882883/ (по работе с документами и заполнению реквизитов)
https://infostart.ru/public/1175136/ (пример добавления и работы с реквизитами и состояниями)
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.