Как в УФ при программном заполнении документа из другого объекта заполняют реквизиты?

1. Domovoi 4 15.10.20 12:25 Сейчас в теме
Попросили написать несколько строк на УФ БП. Нужно было создать документ из обработки. Мне понадобились процедуры ПриИзмененииВидаОперации(ЭтотОбъект), ПриИзмененииКонтрагента(ЭтотОбъект) и т.д. В обычных формах эти процедуры были в модуле объекта, я устанавливал значение реквизита, вызывал потом нужную такую процедуру и все необходимые реквизиты дозаполнялись. На УФ как я увидел все аналогичные процедуры хоть и пишется что на сервере, но в них передается форма а не объект. Тогда я полез в процедуру "Обработка заполнения" и удивился: прописано заполнение каждого реквизита. Я конечно в УФ ничего не понимаю. Где теперь модульные процедуры заполнения реквизитов документа? Или теперь их нет, или есть какая-то своя фишка тут? Как мне при программном указании реквизита, например, ДоговораКонтрагента из другого объекта сразу заполнить все необходимые реквизиты и сделать необходимые пересчеты не вникая в них?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. FatPanzer 15.10.20 12:33 Сейчас в теме
Дело не в ОФ или УФ. Дело в том, процедуры ПриИзмененииВидаОперации(ЭтотОбъект) и ПриИзмененииКонтрагента(ЭтотОбъект), которые якобы находились в модуле объекта - это точно такие же кастомные процедуры, не имеющие никакого отношения к платформе или типу приложения (обычное или управляемое). Это просто разработчики одной конфигурации выбрали один вариант поведения системы и реализовали его через модуль объекта, а разработчики другой конфигурации - выбрали иной вариант поведения системы при изменении реквизитов.

Что осталось неизменно - так это то, что и те и другие варианты стартуют в модуле формы в обработчике ПриИзменении() у элемента формы.
3. Domovoi 4 15.10.20 12:43 Сейчас в теме
(2) Я это понимаю. Просто для ясности ситуации описывал. А как теперь заполнять реквизиты? Все руками?
4. FatPanzer 15.10.20 12:46 Сейчас в теме
(3) Что значит как? Точно так же, как и раньше. Я уже написал - есть обработчики событий. Если в них заложена логика изменения связанных реквизитов - то её надо просто найти в новой конфигурации. Точно так же, как вы её находили в модуле объекта раньше.
Искать пробовали?
5. Domovoi 4 15.10.20 12:52 Сейчас в теме
(4) Искать пробовал. Нажимаю реквизит на форме, событие при изменении. И хожу по процедрам которые передают в параметр форму. А где процедуры которые передают в параметр объет я не могу найти.
6. FatPanzer 15.10.20 12:55 Сейчас в теме
(5) И что дальше происходит с этой формой?
7. Domovoi 4 15.10.20 13:22 Сейчас в теме
Например. Документ: ПоступлениеНаРасчетныйСчет.
Допустим хочу программно заполнять реквизит ВидОперации и соответственно чтоб автоматом какие надо реквизиты заполнялись.
Нахожу форму: ФормаДокументаОднострочная.
Нахожу на форме реквизит: ВидОперации
Выбираю событие: ПриИзменении. Захожу в процедуру.
Оттуда меня отправляет в процедуру в модуле формы

&НаСервере
ВидОперацииПриИзмененииСервер();


Оттуда меня отправляет в общий модуль

ПоступлениеНаРасчетныйСчетФормы.ВидОперацииПриИзмененииСервер(ЭтотОбъект);
где ЭтотОбъект - это форма.

Дальше меня отправляет в этом же модуле в процедуру:

ВидОперацииОбработатьИзменение(Форма, Новый Массив);


В которой первой же строкой идет

Объект = Форма.Объект;


Ну дальше уже нет смысла думаю копать.
Т.е. получается что ты на сервер заходишь, что не заходишь все равно с формой работаешь. Может мне как-то при программном заполнении документа надо тоже форму подсовывать? Может это новая метода касаемая исключительно УФ?
8. RocKeR_13 1409 15.10.20 13:59 Сейчас в теме
(7)
Ну дальше уже нет смысла думаю копать.

Рано сдались) Форма.Объект содержит как раз данные документа.
9. starjevschik 15.10.20 14:44 Сейчас в теме
Ха-ха. Да, так устроены базы 1с. Оставь надежду всяк сюда входящий. Все ручками, ручками.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот