Имя: Пароль:
1C
1С v8
Вызов процедуры одной формы из другой.
0 Креатив
 
13.04.21
17:05
Предположим есть у меня две формы. Похожие друг на друга.
И хочу я вызвать процедуру, написанную в модуле второй формы, при работе первой формы с контекстом первой формы.
Есть такая возможность?
1 Kondarat
 
13.04.21
17:07
(0) ПолучитьФорму(), вызвать экспортную процедуру
2 vicof
 
13.04.21
17:09
Но лучше пересмотреть архитектуру решения.
3 Fedor-1971
 
13.04.21
17:12
(0) Помещаешь процедуру в общий модуль типа так ТвояНужнаяПроцедура(контФормы) Экспорт,
дальше, выполняешь контекстный вызов сервера и вызываешь общМодуль.ТвояНужнаяПроцедура(ЭтаФорма)

Просто задумайся, что будет, если в Форме1 исправят алгоритм работы процедуры, а в Форме2 будет расчёт на старый
4 Fedor-1971
 
13.04.21
17:13
(1) контекст Фрормы2 в ПолучитьФорму практически не получится
5 Kondarat
 
13.04.21
17:15
(4) Если вызвать клиентскую процедуру, то получится.
6 Fedor-1971
 
13.04.21
17:15
4+ Хотя, для ОФ может прокатить
7 Kondarat
 
13.04.21
17:16
+5 и передать в нее параметрами вызывющую форму
8 Fedor-1971
 
13.04.21
17:20
(7) не факт, полный контекст формы есть только НаСервере.
То, что есть НаКлиенте - мало пригодно к работе процедур. Кроме того, ТС может захотеть обработать ТЧ по алгоритму "как в другой форме"

Поэтому, самый корректный способ - положить такую процедуру в общий модуль и отдать ей контекст формы с сервера
9 Kondarat
 
13.04.21
17:21
(8) Согласен. Конечно с ограничениями.
10 Креатив
 
13.04.21
17:22
(3)В форме1 такой процедуры не будет.
Уточнение: формы управляемые.
11 Fedor-1971
 
13.04.21
17:26
(10) тебе в (3) изложили схему "как можно сделать вызов процедуры с контекстом формы" - процедура будет одна и вызывай её где тебе нужно
12 Креатив
 
13.04.21
17:28
Или даже более интересный вопрос. Могу ли я добавить процедуры в модуль формы программно? ПриСозданииНаСервере, например.
13 Креатив
 
13.04.21
17:33
(12)+команды с их обработчиками?
14 Fedor-1971
 
13.04.21
17:34
(12) Посмотри в типовых как реализована кнопка Печать в документах
15 Fedor-1971
 
13.04.21
17:36
14+ саму кнопку пришпандорить не проблема,
проблема в том, что обработчику нужен контекст формы + код нужно скомпилировать не на один раз
16 Креатив
 
13.04.21
17:36
(14)Как-то недавно долго искал, как это всё реализовано. Надо будет ещё посмотреть. Правда опять искать придётся.
17 Fedor-1971
 
13.04.21
17:39
(16) там что-то типа Подключаемый_.... у процедуры + она в самом модуле формы
18 Rovan
 
гуру
13.04.21
17:49
(0) Фирма Контур так делает...не знаю какие чудаки там программируют обработку 1С, но в ней условно 30 форм и 25 из них служебные (пользователю не отображаются)
19 polosov
 
13.04.21
18:14
(18) Вполне себе нормальная архитектура заточенная на совместную разработку и допиливание. Поначалу немного смущает, правда.
20 Kassern
 
13.04.21
18:15
(18) ага и куча макетов, в которых хранятся еще обработки)
2 + 2 = 3.9999999999999999999999999999999...