Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема 7.7 Перехват вызова мета "Показать" для объектов типа "Таблица" (число прочтений - 2321 )
NekDmAl
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 2
Зарегистрирован: 28. Июня 2011
7.7 Перехват вызова мета "Показать" для объектов типа "Таблица"
28. Июня 2011 :: 16:50
Печать  
Имеется одна база 1С на платформе 7.7, конфигурация одна из стандартных БЕЗ ИЗМЕНЕНИЙ.
Требуется начать собирать информацию о том кто (какой пользователь 1С), когда, какой отчёт формировал в 1С. Причём желательно собирать информацию и о параметрах с которыми был сформирован отчёт, например по какому складу, ТМЦ и т.д.
Вариант со встраиванием кода перед всеми вызовами данного метода не оченьто радует. Хотелось бы в одном или чуть болше местах конфигурации вставить какой-нибудь код, который бы перехватывал все вызовы метода "Показать()" и при этом был бы доступен "ГрупповойКонтест" из точки где вызывался метод "Показать()". "ГрупповойКонтекст" думается использовать для сбора сведений о параметрах с которыми сформирована "Таблица". Можно ли реализовать желаемое с использованием "1С++" или ещё каких средств. И если можно то хотелось бы знать как.
Заранее благодарен. Подмигивание
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: 7.7 Перехват вызова мета "Показать" для объектов типа
Ответ #1 - 01. Июля 2011 :: 10:27
Печать  
Потестируй этот пример.
Если используешь 1С++ (я не сомневаюсь Улыбка ), то она должна быть загружена вперед, т.к. она тоже устанавливает перехват на
Код
Выбрать все
CTableOutputContext::CallAsProc 



После того, как нажмешь "Сформировать", обработку не закрывай -  после закрытия формы перехват отменяется.
Попробуй поформировать свои отчеты.

В глобальнике должны быть процедура "ПриПоказеТаблицы123", ей передается Контекст, откуда был вызван метод "Показать".
Что-то типа такой:


Код
Выбрать все
Процедура ПриПоказеТаблицы123(Конт)
	Message("Вызов функции ПриПоказеТаблицы123 из глобальника");

	РасшФорма = СоздатьОбъект("РасширениеФормы");
	РасшФорма.УстановитьФорму(Конт.Форма);
	For j = 0 To РасшФорма.КоличествоАтрибутов() - 1 Do
		текАтр = РасшФорма.ПолучитьАтрибут(j);
		Message(текАтр.Идентификатор + " = " + текАтр.Значение);
	EndDo;

КонецПроцедуры
 



PS. Для использования требуется компонента DynamicWrapperX, ищи в репозитории.
  

Proba.ert ( 8 KB | Загрузки )
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: 7.7 Перехват вызова мета "Показать" для объектов типа "Таблица"
Ответ #2 - 01. Июля 2011 :: 13:24
Печать  
Пока не смотрел, но как всегда Улыбка
  
Наверх
 
IP записан
 
lustin
1c++ power user
Отсутствует


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: 7.7 Перехват вызова мета "Показать" для объектов типа "Таблица"
Ответ #3 - 01. Июля 2011 :: 13:46
Печать  
NekDmAl писал(а) 28. Июня 2011 :: 16:50:
Имеется одна база 1С на платформе 7.7, конфигурация одна из стандартных БЕЗ ИЗМЕНЕНИЙ.
Требуется начать собирать информацию о том кто (какой пользователь 1С), когда, какой отчёт формировал в 1С. Причём желательно собирать информацию и о параметрах с которыми был сформирован отчёт, например по какому складу, ТМЦ и т.д.
Вариант со встраиванием кода перед всеми вызовами данного метода не оченьто радует. Хотелось бы в одном или чуть болше местах конфигурации вставить какой-нибудь код, который бы перехватывал все вызовы метода "Показать()" и при этом был бы доступен "ГрупповойКонтест" из точки где вызывался метод "Показать()". "ГрупповойКонтекст" думается использовать для сбора сведений о параметрах с которыми сформирована "Таблица". Можно ли реализовать желаемое с использованием "1С++" или ещё каких средств. И если можно то хотелось бы знать как.
Заранее благодарен. Подмигивание


http://infostart.ru/public/14768/

твоя задача переопределить метод Показать() стандартного класса Таблица.

порядок следующий:
0. для конфигурации определяется класс Таблица, наследник от Table (у 1С объекта есть же еще и псевдоним)
1. в своем классе реализуешь метод Показать()
1а. внутри своего метода Показать() вызываешь сохранение твоих отчетов с параметрами, а потом вызываешь метод Show() базового 1С-ного объекта.

Улыбка


  

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
NekDmAl
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 2
Зарегистрирован: 28. Июня 2011
Re: 7.7 Перехват вызова мета "Показать" для объектов типа "Таблица"
Ответ #4 - 02. Июля 2011 :: 17:39
Печать  
lustin писал(а) 01. Июля 2011 :: 13:46:
твоя задача переопределить метод Показать() стандартного класса Таблица.

порядок следующий:
0. для конфигурации определяется класс Таблица, наследник от Table (у 1С объекта есть же еще и псевдоним)
1. в своем классе реализуешь метод Показать()
1а. внутри своего метода Показать() вызываешь сохранение твоих отчетов с параметрами, а потом вызываешь метод Show() базового 1С-ного объекта.



Фянкс, метод переопределил, дальше дело техники.
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: 7.7 Перехват вызова мета "Показать" для объектов типа "Таблица"
Ответ #5 - 03. Июля 2011 :: 04:45
Печать  
lustin писал(а) 01. Июля 2011 :: 13:46:
http://infostart.ru/public/14768/
твоя задача переопределить метод Показать() стандартного класса Таблица.

порядок следующий:
0. для конфигурации определяется класс Таблица, наследник от Table (у 1С объекта есть же еще и псевдоним)
1. в своем классе реализуешь метод Показать()
1а. внутри своего метода Показать() вызываешь сохранение твоих отчетов с параметрами, а потом вызываешь метод Show() базового 1С-ног



Век живи, век учись- классный метод, я даже не задумывался,что так можно!
  
Наверх
 
IP записан
 
lustin
1c++ power user
Отсутствует


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: 7.7 Перехват вызова мета "Показать" для объектов типа "Таблица"
Ответ #6 - 04. Июля 2011 :: 06:08
Печать  
chessman писал(а) 03. Июля 2011 :: 04:45:
lustin писал(а) 01. Июля 2011 :: 13:46:
http://infostart.ru/public/14768/
твоя задача переопределить метод Показать() стандартного класса Таблица.

порядок следующий:
0. для конфигурации определяется класс Таблица, наследник от Table (у 1С объекта есть же еще и псевдоним)
1. в своем классе реализуешь метод Показать()
1а. внутри своего метода Показать() вызываешь сохранение твоих отчетов с параметрами, а потом вызываешь метод Show() базового 1С-ног



Век живи, век учись- классный метод, я даже не задумывался,что так можно!


он классный не до конца Подмигивание

есть два скользковатых момента

1. если где-то в конфигураторе используется конструкция с англицкими наименованиями типа СоздатьОбъект("Table") тогда подмена не сработает - для очистки совести необходимо прогуляться глобальным поиском по конфигурации

2. если используется событие FormEx - ПриПечатиТаблицы(): то надо знать что FormEx перехватит печать базового класса - то есть штатного объекта 1С. а не твоего класса.

P.S. С помощью этой методики я в свое время наблюдал, кто у нас меняет вручную текст ТОРГ-12 - по совету коммерческого директора оставил возможность редактирования и смотрел кто ею воспользовался.
  

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать