Имя: Пароль:
1C
1С v8
Как в форме обработки вызывать экспортные процедуры модуля?
,
0 totparen
 
17.06.12
19:11
Ребята, подскажите решение - Пытаюсь открыть форму обработки из модуля обработки, но выдаёт ошибку, из за того что в модуле формы применяются экспортные процедуры из модуля обработки. Как это обходить?
1 totparen
 
17.06.12
19:13
Модуль обработки:

Процедура фыва() Экспорт
   Сообщить("фыва");
КонецПроцедуры
Форма = ПолучитьФорму("Форма");
Форма.Открыть();


Модуль формы:

Процедура ПриОткрытии()
   фыва();
КонецПроцедуры


Ошибка:
{Форма.Форма.Форма(3,2)}: Процедура или функция с указанным именем не определена (фыва)
   <<?>>фыва();
2 Neg
 
17.06.12
19:17
3 totparen
 
17.06.12
19:33
(2) Никак не помогло. Обработка внешняя, приложение обычное, не управляемое.
4 Эмбеддер
 
17.06.12
19:38
сильно не пинайте)))
обработка была создана копированием?
5 totparen
 
17.06.12
19:40
(4) Эм.... Создал с нуля обработку и открыл в 1С. Что за копирование вы имеете в ввиду?
6 Эмбеддер
 
17.06.12
19:44
бывает что в реквизитах тип формы остается старый или как-то по идентификатору 1С считает что это другая форма. хотя не факт что в этом случае будет именно так как у вас
в общем не угадал. но советую создать форму еще раз на всякий случай
7 totparen
 
17.06.12
19:50
Тут дело в том, что форма открывается как отдельный объект, не привязанный к обработке.
8 Живой Ископаемый
 
17.06.12
19:52
(7) а зачем она так делает? чтобы не мочь вызвать экспортные процедуры модуля объекта?
9 totparen
 
17.06.12
19:58
(8) Дык в этом и вопрос - мне такой эффект не нужен.

При коде

Форма = ВнешниеОбработки.ПолучитьФорму(ЭтотОбъект.ИспользуемоеИмяФайла,"Форма");
Форма.Открыть();

Система вешается (Запись дампа)


Хотя наверное это связано с рекурсией.
10 totparen
 
17.06.12
20:14
Поборол через дополнительную форму - основная форма открывается по умолчанию, передоткрытием она открывает вторую. Фокус-покус, блин...
11 Эмбеддер
 
17.06.12
20:23
я думаю причина в том, что в (0) Вы создаете форму в модуле обработки. модуль еще успел отработать инициализацию, а уже создаете форму
12 totparen
 
17.06.12
20:47
Блин. Проблема то всё-равно не решилась: Я обработку запускаю вручную, а нужно бы программно...
13 _Demos_
 
17.06.12
20:49
рекурсия однако
14 GROOVY
 
17.06.12
20:50
Все просто. нефиг из модуля объекта пытаться открыть форму которая при открытии инициализирует сам объект и как следствие его модуль.
15 Эмбеддер
 
17.06.12
20:55
что сделать то нужно?
16 kosts
 
17.06.12
20:57
Попробуй так открывать

ВнешняяОбработка = ВнешниеОбработки.Создать(ПолноеИмяФайла);
ВнешняяОбработка.ПолучитьФорму().Открыть();
17 totparen
 
17.06.12
21:16
(16) Да, всё ок.
18 Живой Ископаемый
 
17.06.12
21:31
2(11) нет, чтобы модуль инициализовровался, он должн быть откомпилирован. После этого процедура доступна
19 Живой Ископаемый
 
17.06.12
21:32
2(14)да ну нафиг... выглядеть конечно может странно, но работать слава богу обязано
20 GROOVY
 
17.06.12
21:36
(19) Ну тогда, наверно, имеет смысл не создавать новую копию объекта?!
21 Эмбеддер
 
18.06.12
05:43
(18) нет. раз модуль выполняется, значит он уже откомпилирован