Имя: Пароль:
1C
1С v8
Обратиться к процедуре в модуле одного объекта из другого (обычн. формы)
,
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
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)
во-первых, задаться вопросом <> задать вопрос ТСу об этом,
во-вторых, это все есть в книжках, ИМХО, пусть ТС и читает, наступает на грабли и снова читает и так до тех пор пока...