Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Обраотка ячейки таблицы
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
DAS_Alex
Здравствуйте. Из книжек: "Если данная процедура описана в модуле формы, то вызывается она, иначе система запускает одноименную процедуру из глобального модуля."
У меня происходит наоборот сначала запускается из глобального. Что не так делаю?
Ardi
вы перепутали какую-нибудь букву в имени процедуры.
DAS_Alex
Цитата(Ardi @ 24.01.11, 15:11) необходимо зарегистрироваться для просмотра ссылки
вы перепутали какую-нибудь букву в имени процедуры.


Исключено. Вытащил из помощника.
DAS_Alex
Закоментировал процедуру в глобальном модуле теперь при двойном нажатии на таблице появляется диалог: на нем изображен желтый треугольник с восклицательным знаком и значения поля расшифровка, которое я там запоминаю. Моя процедура ОбраоткаЯчейкиТаблицы не обрабатывается.
Flexy
А в каком режиме находиться Таблица?Если в режиме для ввода, то попробуйте выводить ее в Таб.ТолькоПросмотр(1).
Вот тут что-то подобное обсуждали необходимо зарегистрироваться для просмотра ссылки
Ardi
А - это процедура "Обработка ячейки таблицы". Вроде она так и работает - если есть в глобальнике - то далее как-то по хитрому.

Можнотак - тогда обе будут срабатывать:

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


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

Второй - при двойном нажатии на ячейке таблицы первого отчета, в модуле формы первого отчета срабатывает одноименная процедура:

Процедура ОбработкаЯчейкиТаблицы(_Знач)
ОткрытьФорму("Отчет.2-й отчет",_Знач);
КонецПроцедуры

Третий (с которым проблема) при двойном нажатии на ячейке таблицы второго отчета, но так как второй отчет формировался через ОткрытьФорму("Отчет.2-й отчет",_Знач);
в конце процедуры ПриОткрытии (2-й отчет) используется СтатусВозврата(0), чтобы не появлялся диалог пользователя 2-го отчета - здесь как Я понял теряется контекст формы и не выполняется локальная ОбработкаЯчейкиТаблицы().

Если второй отчет сформировать через дыалог пользователя - третий отчет выполняется без проблем. То есть два вложенных отчета из трех мне не получить или все таки.....?
dmiter
Можно получить - только параметры надо передавать так чтобы глобальная процедура ОбработкаЯчейкиТаблицы знала как его обрабатывать.
Поскольку контекст формы отчета (второго) потерян то можно сказать что печатная таблица второго отчета отцеплена от контекста - поэтому и вызывается
глобальная процедура обработки ячейки (локальной процедуры Формы нет).

Также можно - вызвать не сразу третий отчет - а последовательно:
Вызвать второй отчет (через глобальную процедуру ОбработкаЯчейкиТаблицы) с параметром что необходимо отработать локальную процедуру
Обработка ячейки таблицы с передаваемыми параметрами. Также необходимо учитывать что локальные переменные второго отчета также будут обнулены,
то есть необходимо все необходимые данные записывать в расшифровку
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.