Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вызов одноименной предопределенной процедуры глобального модуля.
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
vadim007
Помню - делал, да забыл.
Нужно вызвать предопределенную процедуру, расположенную в глобальном модуле, из такой же, расположенной в модуле отчета.
Например, ОбработкаЯчейкиТаблицы().
Vofka
А в чем трудность? Имя процедуры пишем и все.
vadim007
Цитата(Vofka @ 21.10.09, 17:21) необходимо зарегистрироваться для просмотра ссылки
А в чем трудность? Имя процедуры пишем и все.


Суть проблемы в следующем. Если процедура описана в модуле формы, то вызывается она, иначе система запускает одноименную процедуру из глобального модуля. А если мы напишем в процедуре, определенной в модуле отчета, вызов с таким же именем, то рискуем попасть в безконечную рекурсию.
Vofka
А как называется процедура?
vadim007
Цитата(Vofka @ 21.10.09, 18:26) необходимо зарегистрироваться для просмотра ссылки
А как называется процедура?

ОбработкаЯчейкиТаблицы()
dmiter
Я делаю так:
1. В глобальном модуле процедура глОбработка .... которая вызывает предопределенную процедуру Обработка....
2. Потом вызываем из модуля контекста процедуру глОбработка... - переходим в глобальный модуль, а там уже вызывается предопределенная процедура глобального модуля Обработка....
vadim007
Цитата(dmiter @ 22.10.09, 8:49) необходимо зарегистрироваться для просмотра ссылки
Я делаю так:
1. В глобальном модуле процедура глОбработка .... которая вызывает предопределенную процедуру Обработка....
2. Потом вызываем из модуля контекста процедуру глОбработка... - переходим в глобальный модуль, а там уже вызывается предопределенная процедура глобального модуля Обработка....


Это нестандартное решение. Я же говорю, что делал так уже, но настолько давно, что забыл. Есть решение для вызова предопределенной процедуры, описанной в глобальном модуле, из любого модуля.
dmiter
Нашел в Инете еще один вариант:

в глобальнике

Процедура ОбработкаЯчейкиТаблицы(Зн,Фл,Таб,Адрес) Экспорт
Сообщить("глобальничег");
КонецПроцедуры // ОбработкаЯчейкиТаблицы()

в отчете:

Процедура SheetCellProcessing(Зн,Таб,фл,Адрес) //язык другой, вот в чем фишка...
Сообщить("Локальная");
ОбработкаЯчейкиТаблицы(Зн,Таб,фл,Адрес);
КонецПроцедуры // SheetCellProcessing()
vadim007
Цитата(dmiter @ 22.10.09, 17:09) необходимо зарегистрироваться для просмотра ссылки
Процедура SheetCellProcessing(Зн,Таб,фл,Адрес) //язык другой, вот в чем фишка...
Сообщить("Локальная");
ОбработкаЯчейкиТаблицы(Зн,Таб,фл,Адрес);
КонецПроцедуры // SheetCellProcessing()


Интересное решение - как то не подумал про такое.
Но я делал не так. Помнится, перед вызовом какое-то ключевое слово было, точка, и имя процедуры в глобальнике.
Это гарантировало, что если вдруг будет локальная процедура с таким же именем, гарантированно будет вызвана процедура из глобального модуля.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.