Программнно выполнить процедуру формы документа из обработки

1. Scar_rus 19.06.23 14:02 Сейчас в теме
Задача сформировать программнно документ.

У документа есть две ТЧ. Первую обычно заполняет человек, вторая заполняется сама по нажатию кнопки исходя из информации в первой ТЧ и шапке документа. Заполнить программнно шапку и первую ТЧ не так сложно. Но вот как заполнить вторую? Процедура кнопки заполняющей вторую ТЧ лежит в модуле формы. Копипастить и адаптировать 250 строк ее кода не очень хочется. Можно ли как-то простым способом обратиться к ней или придется танцевать с бубном?

З.Ы. Речь об обычных формах
По теме из базы знаний
Найденные решения
10. Oldsad 20.06.23 07:50 Сейчас в теме
(9) Имеется ввиду, что надо просто скопипастить процедуру из формы документа к себе в обработку заполнения (то что вы изначально не хотите делать).
А "адаптация" занимает от силы 10-15 минут, проходитесь по всем ошибкам, если не хватает еще процедур - копипастите, для реквизитов документа спереди добавляете что то типа "ДокОбъект.", все что работает с формой напрямую (видимость/доступность и т.п.) комментируете, в 99% случаев этого хватает для корректной работы

П.С. Чуть не забыл Ссылка в обязательном порядке заменить на "ДокОбъект.Ссылка", это важно не забыть т.к. не вызывает ошибок при проверке.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. soft_wind 19.06.23 14:26 Сейчас в теме
к процедуре формы слово Экспорт добавьте и смело вызывайте!
3. Scar_rus 19.06.23 14:27 Сейчас в теме
(2) Ага, а оно будет (Кнопка) ждать
4. soft_wind 19.06.23 14:35 Сейчас в теме
ВашаФорма.ОбработкаКнопкиЗаполненияТЧ(0);

а бы что передайте туда, как правило кнопка не используется,
5. Scar_rus 19.06.23 15:07 Сейчас в теме
(4) Окей, да работает.

Но, есть один нюанс. Форма документа открывается в предприятии. А соответсвенно при обработке всех записей это будет 500+ открытых окон. Если закрывать их программно то это будет 500+ всплывающих предупреждений просящих подтвердить изменение данных.

Если документ не открывать вовсе, то вылезает ошибка, которая говорит, что не может преобразовать СтавкаДисконтированияЗаДень к типу Чило (там округление стоит) в модуле формы.

Можно как-то закрывать форму без вплывающих окон?
6. user5300 1055 19.06.23 15:17 Сейчас в теме
(5)
Форм = ПолучитьФорму("ВнешняяОбработка.ФормаТакаяТо.Форма");
Форм.ЭкспортнаяКнопкаНажать();
7. soft_wind 19.06.23 15:20 Сейчас в теме
Эххх, не владеете вы методом Копи-Паста!
а все так элементарно!
просто копируете функционал формы к себе в обработку и вызываете его, без открытия форм (вообще)!

для обработки документа, нужна только его Ссылка, по которой вы получаете Объект!!!
8. Scar_rus 20.06.23 07:09 Сейчас в теме
(7) Должно получиться что-то в духе...

НовыйДокумент = Документы.ГрафикПлатежейПоАренднойПлате.СоздатьДокумент();
ДокОбъект = НовыйДокумент.Ссылка.ПолучитьОбъект();
ДокОбъект.НазваниеНужнойПроцедуры();
где НазваниеНужнойПроцедуры() находится в одном модуле с ее вызывом?

Или не то?
9. Scar_rus 20.06.23 07:28 Сейчас в теме
(8) Или мне в процедуру передать объект и просто из него данные для нее тянуть?
10. Oldsad 20.06.23 07:50 Сейчас в теме
(9) Имеется ввиду, что надо просто скопипастить процедуру из формы документа к себе в обработку заполнения (то что вы изначально не хотите делать).
А "адаптация" занимает от силы 10-15 минут, проходитесь по всем ошибкам, если не хватает еще процедур - копипастите, для реквизитов документа спереди добавляете что то типа "ДокОбъект.", все что работает с формой напрямую (видимость/доступность и т.п.) комментируете, в 99% случаев этого хватает для корректной работы

П.С. Чуть не забыл Ссылка в обязательном порядке заменить на "ДокОбъект.Ссылка", это важно не забыть т.к. не вызывает ошибок при проверке.
11. Scar_rus 20.06.23 07:54 Сейчас в теме
(10) С тем что придется копипастить я смирился
12. nomad_irk 76 20.06.23 09:22 Сейчас в теме
(8)
НовыйДокумент = Документы.ГрафикПлатежейПоАренднойПлате.СоздатьДокумент();
ДокОбъект = НовыйДокумент.Ссылка.ПолучитьОбъект();

Мсье знает толк в извращениях!
Оставьте свое сообщение

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