Полная версия этой страницы:
Обраотка ячейки таблицы
Здравствуйте. Из книжек: "Если данная процедура описана в модуле формы, то вызывается она, иначе система запускает одноименную процедуру из глобального модуля."
У меня происходит наоборот сначала запускается из глобального. Что не так делаю?
вы перепутали какую-нибудь букву в имени процедуры.
Цитата(Ardi @ 24.01.11, 15:11) необходимо зарегистрироваться для просмотра ссылки
вы перепутали какую-нибудь букву в имени процедуры.
Исключено. Вытащил из помощника.
Закоментировал процедуру в глобальном модуле теперь при двойном нажатии на таблице появляется диалог: на нем изображен желтый треугольник с восклицательным знаком и значения поля расшифровка, которое я там запоминаю. Моя процедура ОбраоткаЯчейкиТаблицы не обрабатывается.
А в каком режиме находиться Таблица?Если в режиме для ввода, то попробуйте выводить ее в Таб.ТолькоПросмотр(1).
Вот тут что-то подобное обсуждали необходимо зарегистрироваться для просмотра ссылки
А - это процедура "Обработка ячейки таблицы". Вроде она так и работает - если есть в глобальнике - то далее как-то по хитрому.
Можнотак - тогда обе будут срабатывать:
в глобальнике
Процедура ОбработкаЯчейкиТаблицы(Зн,Фл,Таб,Адрес) Экспорт
Сообщить("глобальничег");
КонецПроцедуры // ОбработкаЯчейкиТаблицы()
в отчете:
Процедура SheetCellProcessing(Зн,Таб,фл,Адрес) //язык другой, вот в чем фишка...
Сообщить("Локальная");
КонецПроцедуры // SheetCellProcessing()
Если закрыть форму - то контекста формы нет - значит нет и модуля, т.е. нашей процедуры - следовательно вызывается из глобального модуля. А если форма открыта тогда вначале должна вызываться та которая в форме.
Расскажу подробней. Есть три отчета. Первый формируется при нажатии на кнопку диалога отчета.
Второй - при двойном нажатии на ячейке таблицы первого отчета, в модуле формы первого отчета срабатывает одноименная процедура:
Процедура ОбработкаЯчейкиТаблицы(_Знач)
ОткрытьФорму("Отчет.2-й отчет",_Знач);
КонецПроцедуры
Третий (с которым проблема) при двойном нажатии на ячейке таблицы второго отчета, но так как второй отчет формировался через ОткрытьФорму("Отчет.2-й отчет",_Знач);
в конце процедуры ПриОткрытии (2-й отчет) используется СтатусВозврата(0), чтобы не появлялся диалог пользователя 2-го отчета - здесь как Я понял теряется контекст формы и не выполняется локальная ОбработкаЯчейкиТаблицы().
Если второй отчет сформировать через дыалог пользователя - третий отчет выполняется без проблем. То есть два вложенных отчета из трех мне не получить или все таки.....?
Можно получить - только параметры надо передавать так чтобы глобальная процедура ОбработкаЯчейкиТаблицы знала как его обрабатывать.
Поскольку контекст формы отчета (второго) потерян то можно сказать что печатная таблица второго отчета отцеплена от контекста - поэтому и вызывается
глобальная процедура обработки ячейки (локальной процедуры Формы нет).
Также можно - вызвать не сразу третий отчет - а последовательно:
Вызвать второй отчет (через глобальную процедуру ОбработкаЯчейкиТаблицы) с параметром что необходимо отработать локальную процедуру
Обработка ячейки таблицы с передаваемыми параметрами. Также необходимо учитывать что локальные переменные второго отчета также будут обнулены,
то есть необходимо все необходимые данные записывать в расшифровку
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.