Главная | О сайте | Новости | Документация | Программы | OLAP | Ссылки |
|
||||||||||||||
Вопрос:
Можно ли вызвать функцию (например Контроль()) находящуюся в модуле формы документа1
из модуля формы документа2 ? Если можно то как? Т.е. я в документе2 создаю (открываю)
документ1 и вызываю его функцию. Не обязательно чтоб она что-нибудь вернула, главное чтобы
выполнилась.
...Делал так:
ОткрытьФорму(
"Документ.Счет",
Конт,
"");
_ВычислитьОбъект("Конт.Контроль()"); // ни чего
_ВычислитьОбъект("Конт.ЛокальнаяПерем"); // тоже ни чего
...
Ответ:
ИМХО проблема заключается в том, что видимость локального
модуля в глобальном с помощью функции Шаблон(), будет
достигнута только в случае, если из открытой локальной формы передано управление
в гл. модуль. В данном случае все ровно наоборот, из гл. модуля открывается
локальная форма. Таким образом, в процедуре ПриОткрытии
()
локальной форме придется вернуть управление в гл. модуль, что не очень удобно.
На мой взгляд, гораздо эффективнее и универсальнее будет поступить следующим образом...
Вот краткий пример реализации для подобных случаев:
В локальном модуле открываемого объекта (в данном случае это "Счет") анализируем переданный
параметр и выполняем нужные действия:
Процедура ПриОткрытии
()
Параметр
=Форма
.Параметр
;
Если ТипЗначенияСтр(
Параметр)="СписокЗначений"
Тогда
Если Параметр
.Получить
("СлужебноеОткрытие")=1
Тогда
Для Индекс
=2 По
Параметр.
РазмерСписка() Цикл
Действие=
Параметр.
ПолучитьЗначение(
Индекс);
Параметр.
УстановитьЗначение(
Индекс,
_ВычислитьОбъект(
Действие));
КонецЦикла;
КонецЕсли;
КонецЕсли;
// ...а дальше остальное тело процедуры
КонецПроцедуры