На форме есть реквизит (флаг), от которого зависит выполнение определенной процедуры (в модуле объекта), вызывается эта процедура из формы, я передаю свой флаг параметром, все отлично. НО, кроме этого, данная процедура вызывается так же и из модуля менеджера. И вот как мне передать значение своего флага в модуль менеджера??
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(7) так какое значение реквизита формы собираетесь передавать, если и формы нет?
Это как: дома есть ключ от сейфа в банке. Когда иду в банк из дома, то ключ беру - открываю. Когда иду из офиса, то как открыть сейф в банке? Ключ только дома.
Смените маршрут бизнес логики.
Это как: дома есть ключ от сейфа в банке. Когда иду в банк из дома, то ключ беру - открываю. Когда иду из офиса, то как открыть сейф в банке? Ключ только дома.
Смените маршрут бизнес логики.
(9) Но модуль менеджера не видит эту форму)
В таком случае можно из форму передать значение в общий модуль, из общего модуля передать в экспортную процедуру модуля менеджера, из экспортной процедуры модуля менеджера передать в неэкспортную процедуру модуля менеджера, из которого Вы уже вызываете процедуру модуля объекта с нужным флагом).
Не проще ли сделать этот реквизит - реквизитом объекта?
В таком случае можно из форму передать значение в общий модуль, из общего модуля передать в экспортную процедуру модуля менеджера, из экспортной процедуры модуля менеджера передать в неэкспортную процедуру модуля менеджера, из которого Вы уже вызываете процедуру модуля объекта с нужным флагом).
Не проще ли сделать этот реквизит - реквизитом объекта?
Как вы сказали у вас:
Откуда вы знаете что в момент вызова процедуры из общего модуля, форма вообще находится в открытом состоянии может её еще никто не открывал?
И про какие объекты вообще идет речь а то сложно общаться настолько абстрактно, речь идет про форму объекта например элемента справочника? Тогда откуда вы знаете что этот элемент справочника и соответственно его форма не открыты в пяти экземплярах?
Если допустить что у вас форма всегда гарантировано открыта в одном экземпляре и вы можете отслеживать программно каждое изменение флажка, то можно пойти экстремальным путем, при каждом изменении флажка
ПоместитьВоВременноеХранилище(ЗначениеФлажка, "АдресФлажкаИзЗаКоторогоМнеЛеньПравильноПерестроитьПрограмму");
а в модуле менеджера считать значение флажка из хранилища
ЗначениеФлажка=ПолучитьИзВременногоХранилища("АдресФлажкаИзЗаКоторогоМнеЛеньПравильноПерестроитьПрограмму");
но это из серии "Мсье знает толк в извращениях"
Подумайте над тем фактом что модуль менеджера и предназначен для тех процедур которые не привязаны к конкретному объекту, которые можно исполнять для всех объектов данного типа. Если модуль менеджера хочет брать флажки именно из форм объектов данного типа и они еще не открыты то он сам должен открыть для каждого объекта форму, считать значение флажка и закрыть форму. Если форма уже открыта то та программа которая открывала форму и должна передать в модуль менеджера все ссылки на открытые формы. Если форма открывается руками и попадание в общий модуль является уже следствием открытия формы то форма должна где то регистрировать или ссылку на себя или на флажок вплоть до экстремального варианта указанного выше...
Поэтому вас и стали расспрашивать каким образом связаны этот самый модуль менеджера и общий модуль? Почему процедурам в общем модуле понадобились процедуры из модуля менеджера а тем в свою очередь флажок из формы? Идет какой-то перебор объектов? Или вся цепочка событий всё таки запускается из самой формы?
проц из модуля менеджера вызывается в другой процедуре модуля менеджера (экспортной), а эта экспортная вызывается из общего модуля уже.
Откуда вы знаете что в момент вызова процедуры из общего модуля, форма вообще находится в открытом состоянии может её еще никто не открывал?
И про какие объекты вообще идет речь а то сложно общаться настолько абстрактно, речь идет про форму объекта например элемента справочника? Тогда откуда вы знаете что этот элемент справочника и соответственно его форма не открыты в пяти экземплярах?
Если допустить что у вас форма всегда гарантировано открыта в одном экземпляре и вы можете отслеживать программно каждое изменение флажка, то можно пойти экстремальным путем, при каждом изменении флажка
ПоместитьВоВременноеХранилище(ЗначениеФлажка, "АдресФлажкаИзЗаКоторогоМнеЛеньПравильноПерестроитьПрограмму
а в модуле менеджера считать значение флажка из хранилища
ЗначениеФлажка=ПолучитьИзВременногоХранилища("АдресФлажкаИзЗаКоторогоМнеЛеньПравильноПерестроитьПрограмму
но это из серии "Мсье знает толк в извращениях"
Подумайте над тем фактом что модуль менеджера и предназначен для тех процедур которые не привязаны к конкретному объекту, которые можно исполнять для всех объектов данного типа. Если модуль менеджера хочет брать флажки именно из форм объектов данного типа и они еще не открыты то он сам должен открыть для каждого объекта форму, считать значение флажка и закрыть форму. Если форма уже открыта то та программа которая открывала форму и должна передать в модуль менеджера все ссылки на открытые формы. Если форма открывается руками и попадание в общий модуль является уже следствием открытия формы то форма должна где то регистрировать или ссылку на себя или на флажок вплоть до экстремального варианта указанного выше...
Поэтому вас и стали расспрашивать каким образом связаны этот самый модуль менеджера и общий модуль? Почему процедурам в общем модуле понадобились процедуры из модуля менеджера а тем в свою очередь флажок из формы? Идет какой-то перебор объектов? Или вся цепочка событий всё таки запускается из самой формы?
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот