|
Обратиться к процедуре в модуле одного объекта из другого (обычн. формы) | ☑ | ||
---|---|---|---|---|
0
vitaliklibra
18.05.15
✎
18:01
|
Приветствую!
Скажите кто-нить, есть ли возможность в 1С (обычные формы) обратиться (вызвать) функцию или процедуру из модуля формы одного объекта из другого. Если можно, то как? Или как обычно, ткните пальцем, где можно про это почитать. Спасибо! |
|||
1
DirecTwiX
18.05.15
✎
18:02
|
Если процедура не экспортная, то нет.
|
|||
2
vitaliklibra
18.05.15
✎
18:06
|
(1) - ок, слово "Экспорт" я дописал к процедуре (если об этом шла речь). А как теперь к ней обратиться, подскажи! О_о
|
|||
3
DirecTwiX
18.05.15
✎
18:07
|
Получаешь форму, обращаешься.
|
|||
4
vitaliklibra
18.05.15
✎
18:11
|
(3) - пишу в модуле:
НовыйДоговор.ПолучитьФорму("ФормаЭлемента", НовыйДоговор.Ссылка) И насколько я понимаю, среди следующего выпадающего списка через точку должна быть команда, типа, "МодульФормы" или моя же экспортная процедура? Если так, то ничего подобного там нет( Что-то, чувствую, не то... |
|||
5
DirecTwiX
18.05.15
✎
18:26
|
(4) У 1С нет такого крутого интеллектуального ввода.
НовыйДоговор.ПолучитьФорму("ФормаЭлемента", НовыйДоговор.Ссылка).МояЭкспортнаяПроцедура(); |
|||
6
vitaliklibra
18.05.15
✎
18:33
|
(5) - снова все проверил - в списке моей функции нет.
Может дело в том, что я программно создаю сначала этот документ, записываю, а потом пытаюсь его же вызвать и к нему же обратиться? Но я и пробовал просто: Справочники.Договоры.ПолучитьФорму("ФормаЭлемента") Так тоже ничего не выходит...( Подчеркну: приложение ОБЫЧНОЕ! |
|||
7
GROOVY
18.05.15
✎
18:47
|
(6) Так ее и не будет, придется руками набирать.
|
|||
8
vitaliklibra
18.05.15
✎
18:50
|
(7) Ты имеешь в виду, эту же процедуру переносить туда же, где и нужно её использовать?
|
|||
9
GROOVY
18.05.15
✎
18:56
|
"в списке моей функции нет" - не и не будет, если ее нет в списке, это не значит что ее нельзя вызвать.
|
|||
10
vitaliklibra
18.05.15
✎
18:58
|
(9) Я рад это слышать!))) Но, думаю, как бы это странно не звучало, я тебя всё же спрошу: подскажи, КАК правильно задать обращение к процедуре, находящейся в модуле формы произвольного объекта (в моем случае справочника) конфигурации?
|
|||
11
Garykom
гуру
18.05.15
✎
19:06
|
vitaliklibra.ban("лень гуглить");
ЗЫ примерно так |
|||
12
Одинесю
18.05.15
✎
19:07
|
(10) Почитай про контексты, это даст очень многое для понимания взаимодействия модулей. Без сарказма.
|
|||
13
vitaliklibra
18.05.15
✎
19:14
|
(12) Ок, а где почитать или как гуглить-то? Я уже смотрел и искал - куча инфы по управляемых формах, а по обычных - голое дно( Находил только то, что такие процедуры можно вызвать, если они находятся в общем модуле. Если это и есть решение, то вопрос закрыт, но в (9) GROOVY написал, что как-то это сделать можно... Думаю, он не это имел в виду.
|
|||
14
GROOVY
18.05.15
✎
19:20
|
Мда...
ФормаЛюбая.МояПроцедура(); |
|||
15
GROOVY
18.05.15
✎
19:20
|
Форму вроде ты получаешь.
|
|||
16
Lama12
18.05.15
✎
19:24
|
(13) В (5) Прям пример написан. Что ж еще то надо :)
Ну нет в 1С супер-интеллектуального помощника. Эх... чувствуется молодежь... :) Не работала в старых редакторах. |
|||
17
vitaliklibra
18.05.15
✎
19:30
|
(14) и (16) - ребят, ну я всё понимаю!) Ну если её в ТОМ списке нет, я бы стал создавать 100500-ю тему на форуме и морочить мозги Вам? Реально не могу понять, че её там нету!.. Т_Т
|
|||
18
GROOVY
18.05.15
✎
19:35
|
(17) ЕЕ ТАМ НЕ БУДЕТ НИКОГДА это нормально.
|
|||
19
vitaliklibra
18.05.15
✎
19:40
|
(18) - не обязательно кричать. Я и так слышу! Просто если бы объяснил (9), а именно "если ее нет в списке, это не значит что ее нельзя вызвать.", я бы и не продолжал разговор. Плюс в (16) человек говорит, что даже пример написан. Но ведь он не работает! (у меня).
|
|||
20
vitaliklibra
19.05.15
✎
09:49
|
GROOVY! Прошу твоей помощи! Что нужно для того, чтоб обратиться к процедуре в модуле формы другого объекта. Эта процедура экспортная. Но тот описанный метод не даёт к ней доступ из модуля другого объекта. Подскажи, как правильно, или ткни пальцем, где можно об этом толково почитать?
|
|||
21
Одинесю
19.05.15
✎
10:06
|
вот почитай http://forum-mista.pro/topic.php?id=712686
|
|||
22
tznimble
19.05.15
✎
10:27
|
Обращение к экспортным процедурам имеет вид:
<модуль>.<имя процедуры> В данном случае <модуль> - это экземпляр Вашей формы Форма = МойЭлемент.ПолучитьФорму(); Форма.СделатьЧтоНибудь(); В Модуле формы Процедура СделатьЧтоНибудь () экспорт //что-нибудь КонецПроцедуры; Если у Вас не работает - напишите конкретно выдаваемую ошибку. |
|||
23
tznimble
19.05.15
✎
10:32
|
На предмет "что почитать". Например, встроенную справку
http://screencloud.net/v/qhGp |
|||
24
Serg_1960
19.05.15
✎
10:47
|
(шутка)
в форме "А" (в нужном месте): Оповестить("ЭйТыЗаразаЗапустиСвоюПроцедуру"); в форме "Б", в процедуре ОбработкаОповещения(ИмяСобытия, Параметр, Источник): Если ИмяСобытия = "ЭйТыЗаразаЗапустиСвоюПроцедуру" Тогда ЭтаФорма.ПроцедураКотораяВсехНахНужна(); КонецЕсли; |
|||
25
vitaliklibra
19.05.15
✎
11:50
|
Делаю по примеру (22). Также почитал (23). Результат написан в (4). Еще раз подчеркну.
В модуле формы "А" пишу: Процедура ЁМоё() Экспорт ... КонецПроцедуры В модуле формы "Б" пишу Справочники.Договоры.ПолучитьФорму("А"). А что дальше? Если через точку должна появиться процедура "ЁМоё()", то её там нет. Вот в этом и ест вопрос: что не так? |
|||
26
Рэйв
19.05.15
✎
11:52
|
(25)Ф= Справочники.Договоры.ПолучитьФорму("А");
Ф.ЁМоё(); |
|||
27
vitaliklibra
19.05.15
✎
11:59
|
||||
28
GROOVY
19.05.15
✎
12:00
|
"Ё" - не стоит использовать в коде по суеверным причинам.
|
|||
29
GROOVY
19.05.15
✎
12:00
|
(27) Да напиши ты ее руками!!!! ААААА!!!!
|
|||
30
Рэйв
19.05.15
✎
12:00
|
(27)Что ты такой трудный то? Тебе уже 10 раз сказали что в списке автоподбора твоих нетленок не будет!
Руками пиши |
|||
31
2083
19.05.15
✎
12:01
|
+ (26) когда ты напишешь Ф. в выпадающем списке не будет твоей процедуры. После того как нажмешь на клавиатуре . наберешь на клавиатуре руками ЁМоё();
Руками, Карл! Ее не будет в списке! Никогда, Карл! Руками набери! |
|||
32
Рэйв
19.05.15
✎
12:01
|
Ну если уж и сейчас не въедет- я начну сомневаться в человечестве!:-))
|
|||
33
Serg_1960
19.05.15
✎
12:09
|
Не впадай в пессимизм, начни с малого - начни сомневаться в принадлежности к человечеству :)
|
|||
34
vitaliklibra
19.05.15
✎
12:11
|
GROOVY, ну чё опять кричишь, а (27)? Надо ж как-то объяснять, что под словами "напиши ты ее руками" стОит понимать то, что после ТОЧКИ её нужно написать, не смотря на то, что её в списке нет.
ВСЕМ СПАСИБО ЗА ПОМОЩЬ! GROOVY - за терпение отдельное лайк!) (32) - можешь не сомневаться - всё получилось (человечество спасено!) :D |
|||
35
samozvanec
19.05.15
✎
12:18
|
(29) тебе стоит задуматься над случившимся, как педагогу)
|
|||
36
Сергиус
19.05.15
✎
12:25
|
А почему никто не задался вопросом - зачем так вообще делать - Вызывать из одной формы процедуру другой?.. Тут, ИМХО, на лицо ошибка проектирования.
|
|||
37
Serg_1960
19.05.15
✎
12:36
|
Не знаю насчет ошибок проектирования, но утечку памяти автор точно "запроектирует". Даже после закрытия форм, формы останутся в памяти. Перекрёстные ссылки надо очищать принудительно.
PS: а ведь я подсказывал тс "безопасный" метод общения открытых форм. С передачей параметров. Так можно работать даже с не экспортными процедурами и функциями форм, ибо вызов идёт из контекста самой формы. |
|||
38
GROOVY
19.05.15
✎
13:31
|
(35) Я не педагог, а преподаватель.
|
|||
39
2083
19.05.15
✎
13:56
|
(36)
во-первых, задаться вопросом <> задать вопрос ТСу об этом, во-вторых, это все есть в книжках, ИМХО, пусть ТС и читает, наступает на грабли и снова читает и так до тех пор пока... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |