Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Вызов одноименной предопределенной процедуры глобального модуля.          
vadim007 Подменю пользователя
сообщение 21.10.09, 15:02
Сообщение #1

Почти крутой
Иконка группы
Группа: Местный
Сообщений: 1298
Из: Донецк
Спасибо сказали: 208 раз
Рейтинг: 0

Помню - делал, да забыл.
Нужно вызвать предопределенную процедуру, расположенную в глобальном модуле, из такой же, расположенной в модуле отчета.
Например, ОбработкаЯчейкиТаблицы().

Vofka Подменю пользователя
сообщение 21.10.09, 15:21
Сообщение #2

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4613 раз
Рейтинг: 3750.1

А в чем трудность? Имя процедуры пишем и все.

vadim007 Подменю пользователя
сообщение 21.10.09, 15:40
Сообщение #3

Почти крутой
Иконка группы
Группа: Местный
Сообщений: 1298
Из: Донецк
Спасибо сказали: 208 раз
Рейтинг: 0

Цитата(Vofka @ 21.10.09, 17:21) *
А в чем трудность? Имя процедуры пишем и все.


Суть проблемы в следующем. Если процедура описана в модуле формы, то вызывается она, иначе система запускает одноименную процедуру из глобального модуля. А если мы напишем в процедуре, определенной в модуле отчета, вызов с таким же именем, то рискуем попасть в безконечную рекурсию.

Vofka Подменю пользователя
сообщение 21.10.09, 16:26
Сообщение #4

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4613 раз
Рейтинг: 3750.1

А как называется процедура?

vadim007 Подменю пользователя
сообщение 22.10.09, 7:30
Сообщение #5

Почти крутой
Иконка группы
Группа: Местный
Сообщений: 1298
Из: Донецк
Спасибо сказали: 208 раз
Рейтинг: 0

Цитата(Vofka @ 21.10.09, 18:26) *
А как называется процедура?

ОбработкаЯчейкиТаблицы()

dmiter Подменю пользователя
сообщение 22.10.09, 7:49
Сообщение #6

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 108
Из: Киев
Спасибо сказали: 16 раз
Рейтинг: 0

Я делаю так:
1. В глобальном модуле процедура глОбработка .... которая вызывает предопределенную процедуру Обработка....
2. Потом вызываем из модуля контекста процедуру глОбработка... - переходим в глобальный модуль, а там уже вызывается предопределенная процедура глобального модуля Обработка....

vadim007 Подменю пользователя
сообщение 22.10.09, 14:30
Сообщение #7

Почти крутой
Иконка группы
Группа: Местный
Сообщений: 1298
Из: Донецк
Спасибо сказали: 208 раз
Рейтинг: 0

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


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

dmiter Подменю пользователя
сообщение 22.10.09, 15:09
Сообщение #8

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 108
Из: Киев
Спасибо сказали: 16 раз
Рейтинг: 0

Нашел в Инете еще один вариант:

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

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

в отчете:

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

vadim007 Подменю пользователя
сообщение 22.10.09, 15:35
Сообщение #9

Почти крутой
Иконка группы
Группа: Местный
Сообщений: 1298
Из: Донецк
Спасибо сказали: 208 раз
Рейтинг: 0

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


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

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 22.06.25, 18:21
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!