Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Вызов ОбработкаЯчейкиТаблицы для таблицы из класса (число прочтений - 11980 )
jbond
Full Member
***
Отсутствует


1С++ Programmer

Сообщений: 140
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Вызов ОбработкаЯчейкиТаблицы для таблицы из класса
28. Сентября 2006 :: 05:50
Печать  
В ЕРТ-реализации класса с таблицей-шаблоном формирую таблицу

Рез = Таб.ИсходнаяТаблица("АктСверкиДень",Сам.ПолучитьПуть());

и т.п.

Можно ли обработать вызов
ОбработкаЯчейкиТаблицы(Значение, ФлагСтандОбраб, Таблица, Адрес)
в самом классе?
  
Наверх
 
IP записан
 
jbond
Full Member
***
Отсутствует


1С++ Programmer

Сообщений: 140
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вызов ОбработкаЯчейкиТаблицы для таблицы из кл
Ответ #1 - 28. Сентября 2006 :: 06:02
Печать  
Вроде бы обработчик ОбработкаЯчейкиТаблицы, расположенный в классе, в котором создавалась таблица не вызывается.
Все-таки прийдется эту процедуру в глобальный модуль засунуть?
А как потом различать таблицы?

А перенаправление сделать реально?
  
Наверх
 
IP записан
 
jbond
Full Member
***
Отсутствует


1С++ Programmer

Сообщений: 140
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вызов ОбработкаЯчейкиТаблицы для таблицы из кл
Ответ #2 - 28. Сентября 2006 :: 06:34
Печать  
У кого-нибудь есть идеи по этому поводу?
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вызов ОбработкаЯчейкиТаблицы для таблицы из кл
Ответ #3 - 28. Сентября 2006 :: 06:40
Печать  
Интересная тема, но идей пока нету Печаль
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
jbond
Full Member
***
Отсутствует


1С++ Programmer

Сообщений: 140
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вызов ОбработкаЯчейкиТаблицы для таблицы из кл
Ответ #4 - 28. Сентября 2006 :: 06:49
Печать  
Самое главное - функцию класса можно вызвать (в моем конкретном случае это выход - выводить детализацию по несовпадающим строкам)

Зы. Эх если бы Таб.ИсходнаяТаблица умела указывать на путь в котором нужно искать предпределенные процедуры....

А общее решение - перенос в глобальник + как различать таблицы?
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вызов ОбработкаЯчейкиТаблицы для таблицы из кл
Ответ #5 - 28. Сентября 2006 :: 06:57
Печать  
Ты можешь сделать так
создать менеджер событий, создать событие по обработке
подписать нужный класс на событие
в глоб.обработчике ячеек таблицы вызывать событие
и класс получает управление.

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

ЗЫ имхо этот рекомендованный нормальный путь
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вызов ОбработкаЯчейкиТаблицы для таблицы из кл
Ответ #6 - 28. Сентября 2006 :: 07:00
Печать  
Добавление - можешь реализовать сериализацию класса в строку !!
Т.е при создании таблицы класс сериализуешь, полученную строку закидываешь в расшифровку, далее глоб. обработчик открывает расшифровку, получает класс из строки и передает ему управление Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вызов ОбработкаЯчейкиТаблицы для таблицы из кл
Ответ #7 - 28. Сентября 2006 :: 07:01
Печать  
artbear писал(а) 28. Сентября 2006 :: 06:40:
Интересная тема, но идей пока нету Печаль


Обалдеть, как быстро 2 неплохих варианта нарисовались Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
jbond
Full Member
***
Отсутствует


1С++ Programmer

Сообщений: 140
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вызов ОбработкаЯчейкиТаблицы для таблицы из кл
Ответ #8 - 28. Сентября 2006 :: 07:09
Печать  
OK. Но я пошел по другому пути - автоматом вызываю расшифровку, там где она имеет смысл.

Зы. А в багзиллу стоит добавлять этот Feature Request? Это ближе к чему: FormEx или 1С++ 2.5?
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вызов ОбработкаЯчейкиТаблицы для таблицы из кл
Ответ #9 - 28. Сентября 2006 :: 07:20
Печать  
1. А как ты решаешь проблему с работой над таблицей, когда форма, создавшая таблицу, уже закрыта?

ЗЫ можешь добавить в багзиллу. только поставь раздел ФормЕкс - имхо туда ближе Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
jbond
Full Member
***
Отсутствует


1С++ Programmer

Сообщений: 140
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вызов ОбработкаЯчейкиТаблицы для таблицы из кл
Ответ #10 - 28. Сентября 2006 :: 07:38
Печать  
artbear писал(а) 28. Сентября 2006 :: 07:20:
1. А как ты решаешь проблему с работой над таблицей, когда форма, создавшая таблицу, уже закрыта?


Вообще-то хороший вопросец...
Ведь стандартная обработка работает только при открытой форме...
  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Вызов ОбработкаЯчейкиТаблицы для таблицы из кл
Ответ #11 - 28. Сентября 2006 :: 20:06
Печать  
По идее открытая таблица - это тоже какой-то там контекст. Не зря таблица выдается методом Сервис::АктивныйКонтекст().

И, по идее, его можно подписать на события этого контекста. Было бы замечательно, если бы таким образом объект с набором данных (например, режимов формирования таблицы) можно было бы привязать к произвольной таблице, и он бы выполнял все действия, необходимые этой таблице.

Правда, останется проблемка - где должна храниться ссылка на этог объект, и когда уничтожать этот объект? Хотя, наверное, и это можно решить, если обрабатывать событие контекста таблицы ПриЗакрытии().
  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Вызов ОбработкаЯчейкиТаблицы для таблицы из кл
Ответ #12 - 28. Сентября 2006 :: 20:07
Печать  
Круто. Тут то и начинается настоящий ООП!

(Вот размечтался!)  Очень довольный
  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Вызов ОбработкаЯчейкиТаблицы для таблицы из кл
Ответ #13 - 28. Сентября 2006 :: 20:30
Печать  
artbear писал(а) 28. Сентября 2006 :: 07:00:
далее глоб. обработчик открывает расшифровку, получает класс из строки и передает ему управление Улыбка


Объект (не класс) - это не только ценный код, но и три-четыре, этих, реквизита.
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вызов ОбработкаЯчейкиТаблицы для таблицы из кл
Ответ #14 - 29. Сентября 2006 :: 05:36
Печать  
sedmin писал(а) 28. Сентября 2006 :: 20:06:
По идее открытая таблица - это тоже какой-то там контекст. Не зря таблица выдается методом Сервис::АктивныйКонтекст().

И, по идее, его можно подписать на события этого контекста. Было бы замечательно, если бы таким образом объект с набором данных (например, режимов формирования таблицы) можно было бы привязать к произвольной таблице, и он бы выполнял все действия, необходимые этой таблице.

Правда, останется проблемка - где должна храниться ссылка на этог объект, и когда уничтожать этот объект? Хотя, наверное, и это можно решить, если обрабатывать событие контекста таблицы ПриЗакрытии().

Не совсем верные размышления. Для получения Таблицы методом Сервис::АктивныйКонтекст() в нем реализовано куча дополнительного кода. И контекст этот совсем не то, что групповой контекст. Хотя, наверное, можно как-то извратиться и проделать все это. Но совсем не тривиальная задача получается.
  

FormEx developer
Наверх
www  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Вызов ОбработкаЯчейкиТаблицы для таблицы из кл
Ответ #15 - 29. Сентября 2006 :: 05:42
Печать  
Цитата:
Не совсем верные размышления. Для получения Таблицы методом Сервис::АктивныйКонтекст() в нем реализовано куча дополнительного кода. И контекст этот совсем не то, что групповой контекст. Хотя, наверное, можно как-то извратиться и проделать все это. Но совсем не тривиальная задача получается.

Никогда не применял Сервис::АктивныйКонтекст() для Таблицы.
А как это можно использовать вообще?
  
Наверх
ICQ  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вызов ОбработкаЯчейкиТаблицы для таблицы из кл
Ответ #16 - 29. Сентября 2006 :: 06:05
Печать  
vip писал(а) 29. Сентября 2006 :: 05:42:
Цитата:
Не совсем верные размышления. Для получения Таблицы методом Сервис::АктивныйКонтекст() в нем реализовано куча дополнительного кода. И контекст этот совсем не то, что групповой контекст. Хотя, наверное, можно как-то извратиться и проделать все это. Но совсем не тривиальная задача получается.

Никогда не применял Сервис::АктивныйКонтекст() для Таблицы.
А как это можно использовать вообще?

Например, для отправки текущей таблицы мылом по клику на кнопку тул-бара (с вызовом глобальной процедуры).
  

FormEx developer
Наверх
www  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Вызов ОбработкаЯчейкиТаблицы для таблицы из кл
Ответ #17 - 29. Сентября 2006 :: 06:11
Печать  
Цитата:
Например, для отправки текущей таблицы мылом по клику на кнопку тул-бара (с вызовом глобальной процедуры).

Контекст Таблицы возвращает просто объект Таблица, что ли?
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вызов ОбработкаЯчейкиТаблицы для таблицы из кл
Ответ #18 - 29. Сентября 2006 :: 06:13
Печать  
Цитата:
Для получения Таблицы методом Сервис::АктивныйКонтекст() в нем реализовано куча дополнительного кода.


Что-то я пропустил - с каких это пор данный метод стал определять таблицу? Печаль
Не знал Печаль
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вызов ОбработкаЯчейкиТаблицы для таблицы из кл
Ответ #19 - 29. Сентября 2006 :: 06:14
Печать  
vip писал(а) 29. Сентября 2006 :: 06:11:
Цитата:
Например, для отправки текущей таблицы мылом по клику на кнопку тул-бара (с вызовом глобальной процедуры).

Контекст Таблицы возвращает просто объект Таблица, что ли?

Да.
  

FormEx developer
Наверх
www  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вызов ОбработкаЯчейкиТаблицы для таблицы из кл
Ответ #20 - 29. Сентября 2006 :: 06:14
Печать  
artbear писал(а) 29. Сентября 2006 :: 06:13:
Цитата:
Для получения Таблицы методом Сервис::АктивныйКонтекст() в нем реализовано куча дополнительного кода.


Что-то я пропустил - с каких это пор данный метод стал определять таблицу? Печаль
Не знал Печаль

Вроде в 2.0.3.1 это уже есть.
  

FormEx developer
Наверх
www  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Вызов ОбработкаЯчейкиТаблицы для таблицы из кл
Ответ #21 - 29. Сентября 2006 :: 06:20
Печать  
Цитата:
vip писал(а) 29. Сентября 2006 :: 06:11:
Цитата:
Например, для отправки текущей таблицы мылом по клику на кнопку тул-бара (с вызовом глобальной процедуры).

Контекст Таблицы возвращает просто объект Таблица, что ли?

Да.

То есть я могу получать Таблицу, окно которой в данный момент активно. Так?
  
Наверх
ICQ  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вызов ОбработкаЯчейкиТаблицы для таблицы из кл
Ответ #22 - 29. Сентября 2006 :: 06:22
Печать  
vip писал(а) 29. Сентября 2006 :: 06:20:
Цитата:
vip писал(а) 29. Сентября 2006 :: 06:11:
Цитата:
Например, для отправки текущей таблицы мылом по клику на кнопку тул-бара (с вызовом глобальной процедуры).

Контекст Таблицы возвращает просто объект Таблица, что ли?

Да.

То есть я могу получать Таблицу, окно которой в данный момент активно. Так?

Так.
  

FormEx developer
Наверх
www  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Вызов ОбработкаЯчейкиТаблицы для таблицы из кл
Ответ #23 - 29. Сентября 2006 :: 06:41
Печать  
Работает Улыбка
Если покопаться в недрах FormEx, мно-о-о-го чего можно обнаружить.
Мысли АЛьФа значительно опередили доку на FormEx Очень довольный
  
Наверх
ICQ  
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Вызов ОбработкаЯчейкиТаблицы для таблицы из кл
Ответ #24 - 30. Сентября 2006 :: 11:18
Печать  
До меня дошло, как это должно быть.

Нужен класс "ТаблицаРасширенная", который наследует "Таблица", и в котором есть разные события. В том числе ПриЗакрытии() и ПриВыбореЯчейки().
  
Наверх
 
IP записан
 
jbond
Full Member
***
Отсутствует


1С++ Programmer

Сообщений: 140
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вызов ОбработкаЯчейкиТаблицы для таблицы из кл
Ответ #25 - 02. Октября 2006 :: 04:24
Печать  
sedmin писал(а) 30. Сентября 2006 :: 11:18:
До меня дошло, как это должно быть.

Нужен класс "ТаблицаРасширенная", который наследует "Таблица", и в котором есть разные события. В том числе ПриЗакрытии() и ПриВыбореЯчейки().


Для реализации этой возможности нужно дорабатывать функционал FormEx и 1C++?
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вызов ОбработкаЯчейкиТаблицы для таблицы из кл
Ответ #26 - 02. Октября 2006 :: 05:36
Печать  
sedmin писал(а) 30. Сентября 2006 :: 11:18:
До меня дошло, как это должно быть.

Нужен класс "ТаблицаРасширенная", который наследует "Таблица", и в котором есть разные события. В том числе ПриЗакрытии() и ПриВыбореЯчейки().

Для этого не надо что-то дорабатывать. Просто вместо таблицы надо использовать форму обработки с таблицей во все окно.
  

FormEx developer
Наверх
www  
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Вызов ОбработкаЯчейкиТаблицы для таблицы из кл
Ответ #27 - 02. Октября 2006 :: 08:33
Печать  
А представляешь, если объект Таблица используется в навороченном отчете и так и сяк, то сколько придется перепахивать?

Или достаточно получить таблицу не через СоздатьОбьект("Таблица"), а вызвать обработку, получить у нее таблицу, и дальше над ней изголяться?
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вызов ОбработкаЯчейкиТаблицы для таблицы из кл
Ответ #28 - 02. Октября 2006 :: 08:46
Печать  
sedmin писал(а) 02. Октября 2006 :: 08:33:
Или достаточно получить таблицу не через СоздатьОбьект("Таблица"), а вызвать обработку, получить у нее таблицу, и дальше над ней изголяться?

Вот именно.
  

FormEx developer
Наверх
www  
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Вызов ОбработкаЯчейкиТаблицы для таблицы из кл
Ответ #29 - 02. Октября 2006 :: 09:17
Печать  
Не очень здорово. Первое, что на ум приходит - это Показать().

Думаю, что и другие неприятные фишки найдутся. Например, нужены элементы диалога, хотя это и не всегда плохо.
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вызов ОбработкаЯчейкиТаблицы для таблицы из кл
Ответ #30 - 02. Октября 2006 :: 09:18
Печать  
sedmin писал(а) 02. Октября 2006 :: 09:17:
Не очень здорово. Первое, что на ум приходит - это Показать().

Думаю, что и другие неприятные фишки найдутся. Например, нужены элементы диалога, хотя это и не всегда плохо.

А что не так с Показать() в этом случае?
ИМХО при таком подходе больше приятных фишек, чем неприятных.
  

FormEx developer
Наверх
www  
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вызов ОбработкаЯчейкиТаблицы для таблицы из кл
Ответ #31 - 04. Октября 2006 :: 07:57
Печать  
Цитата:
Для этого не надо что-то дорабатывать. Просто вместо таблицы надо использовать форму обработки с таблицей во все окно.

Кстати в 8-ке нестандартная расшифровка возможна только для ПоляТабличногоДокумента и невозможна для ТабличногоДокумента.

Это "ж-ж-ж" неспроста - само дерево жужжать не может (с) Винни-пух
  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Вызов ОбработкаЯчейкиТаблицы для таблицы из кл
Ответ #32 - 04. Октября 2006 :: 09:13
Печать  
Цитата:
А что не так с Показать() в этом случае?


А то, что переделывать придется. И не факт, что в одном месте.
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вызов ОбработкаЯчейкиТаблицы для таблицы из кл
Ответ #33 - 04. Октября 2006 :: 09:32
Печать  
sedmin писал(а) 04. Октября 2006 :: 09:13:
Цитата:
А что не так с Показать() в этом случае?


А то, что переделывать придется. И не факт, что в одном месте.

В смысле? Что переделывать? На открытие формы вместо просто Показать ?
  

FormEx developer
Наверх
www  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать