Переключение на Главную Страницу Страницы: 1 [2] 3  ОтправитьПечать
Очень популярная тема (более 25 ответов) Подмена объектов метаданных (Документ,Справочник) (число прочтений - 31394 )
Chieftain
Senior Member
****
Отсутствует


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Re: Подмена объектов метаданных (Документ,Справочн
Ответ #15 - 04. Апреля 2007 :: 08:25
Печать  
Deb писал(а) 04. Апреля 2007 :: 08:02:
Chieftain писал(а) 04. Апреля 2007 :: 05:31:
Вполне возможно...
Но меня устраивает "подмена" и на таком уровне.
Поможешь с обходом "ТипЗначенияСтр"?

Функция _ПолучитьКод()
Возврат "МоеИмяТипаКласса";



Не то - эта функция используется для получения строкового представления объекта. В пробной базе я ее определил для "подменных классов" на представление документа или справочника.
А "ТипЗначенияСтр" возвращает полное наименование класса.

ЗЫ: пока что сделал подменой ресурсов и процедур, но буду надеяться на разработчиков по решению этого вопроса
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Подмена объектов метаданных (Документ,Справочн
Ответ #16 - 05. Апреля 2007 :: 03:22
Печать  
artbear писал(а) 04. Апреля 2007 :: 08:06:
Черт, и как я мог забыть про эту фичу Печаль

УПС Печаль
  

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


I Love YaBB 2!

Сообщений: 127
Зарегистрирован: 29. Января 2007
Re: Подмена объектов метаданных (Документ,Справочн
Ответ #17 - 12. Апреля 2007 :: 20:09
Печать  
Переопределение Документов и Сравочников работает!!!!!!

Открываются охрененные возможности Улыбка

Как бы ТипЗначенияСтр() обмануть?
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Подмена объектов метаданных (Документ,Справочн
Ответ #18 - 13. Апреля 2007 :: 03:35
Печать  
Chieftain писал(а) 03. Апреля 2007 :: 08:26:
Хотя можно в 1crcrus.dll можно заменить в ресурсе "106" "ТипЗначенияСтр" на "ТипЗначенияСтрокой" и определить глобальную функцию "ТипЗначенияСтр", которая и будет разбирать типы.

Пока можно использовать подобное решение.
  

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


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Re: Подмена объектов метаданных (Документ,Справочн
Ответ #19 - 13. Апреля 2007 :: 05:21
Печать  
artbear писал(а) 13. Апреля 2007 :: 03:35:
Chieftain писал(а) 03. Апреля 2007 :: 08:26:
Хотя можно в 1crcrus.dll можно заменить в ресурсе "106" "ТипЗначенияСтр" на "ТипЗначенияСтрокой" и определить глобальную функцию "ТипЗначенияСтр", которая и будет разбирать типы.

Пока можно использовать подобное решение.



Это конечно хорошо, но в таком случае подменную процедуру "ТипЗначенияСтр" надо добавлять во всех конфигурациях, которые работают с измененной 1crcrus.dll

Boris_1c писал(а) 12. Апреля 2007 :: 20:09:
Переопределение Документов и Сравочников работает!!!!!!

Открываются охрененные возможности Улыбка

Как бы ТипЗначенияСтр() обмануть?


Тока ты учти, что с классами 1С++ типа "Документ.ХХХ" и т.п. работа немного медленнее - замеры времени на выбрать+получить давало где-то 20% прироста времени обработки
  
Наверх
ICQ  
IP записан
 
Boris_1c
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 127
Зарегистрирован: 29. Января 2007
Re: Подмена объектов метаданных (Документ,Справочн
Ответ #20 - 13. Апреля 2007 :: 10:28
Печать  
artbear писал(а) 13. Апреля 2007 :: 03:35:
Chieftain писал(а) 03. Апреля 2007 :: 08:26:
Хотя можно в 1crcrus.dll можно заменить в ресурсе "106" "ТипЗначенияСтр" на "ТипЗначенияСтрокой" и определить глобальную функцию "ТипЗначенияСтр", которая и будет разбирать типы.

Пока можно использовать подобное решение.


Попробуй объясни клиенту, что ему во все конфы надо добавить процедуру...
и библиотеку надо использовать именно эту а не родную Плачущий
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Подмена объектов метаданных (Документ,Справочн
Ответ #21 - 13. Апреля 2007 :: 12:15
Печать  
Все равно этот подход я считаю не очень удобным и универсальным.

Между прочим, я давно планирую развивать свой Перехватчик в направлении перехвата стандартных 1С-методов для документов и справочников (типа Новый, Записать, Провести и т.д.)
Но есть скользкие моменты -
1) самый больной, наверное, вопрос - это быстродействие подобного перехвата
2) пока не решил, добавить возможность перехвата всех методов или только указанных.
и т.д.

ЗЫ Кстати, перехват событий ОбработкаПроведения/ОтменаПроведения у меня сделана почти до конца.
Т.е. для конкретного объекта, созданного через СоздатьОбъект, я уже могу вызывать данные события, применив перехват к данному объекту.
Но пока не реализован перехват этих событий, когда контекст документа не передается, т.е. документ создается произвольным кодом, к которому нет доступа.
Например, хотелось бы выполнить перехват, затем запустить какой-то код/обработку, который/которая работает с документами данного вида, например, проводит их и т.д, а выполнение проведения попадало бы в перехватчик.
  

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


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Re: Подмена объектов метаданных (Документ,Справочн
Ответ #22 - 13. Апреля 2007 :: 13:39
Печать  
artbear писал(а) 13. Апреля 2007 :: 12:15:
Между прочим, я давно планирую развивать свой Перехватчик в направлении перехвата стандартных 1С-методов для документов и справочников (типа Новый, Записать, Провести и т.д.)


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

Значит ждем от тебя решения этого вопроса в будующем...
  
Наверх
ICQ  
IP записан
 
Sergey
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 135
Зарегистрирован: 18. Октября 2006
Пол: Мужской
Re: Подмена объектов метаданных (Документ,Справочн
Ответ #23 - 13. Апреля 2007 :: 15:16
Печать  
И ОткрытьФорму("Элемент.Номенклатура") таким способом получаеться?
  
Наверх
 
IP записан
 
Chieftain
Senior Member
****
Отсутствует


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Re: Подмена объектов метаданных (Документ,Справочн
Ответ #24 - 17. Апреля 2007 :: 07:06
Печать  
artbear писал(а) 13. Апреля 2007 :: 12:15:
Между прочим, я давно планирую развивать свой Перехватчик в направлении перехвата стандартных 1С-методов для документов и справочников (типа Новый, Записать, Провести и т.д.)
Но есть скользкие моменты -
1) самый больной, наверное, вопрос - это быстродействие подобного перехвата
2) пока не решил, добавить возможность перехвата всех методов или только указанных.
и т.д.


А не возникало мыслей по поводу перехвата стандартных методов объектов "Регистр" - ДвижениеВыполнить,ДвижениеПриходВыпонить и т.п. в контексте документа?
Было бы очень неплохо иметь возможность корректировать созданные движения перед выполнением движения
  
Наверх
ICQ  
IP записан
 
Valet
Full Member
***
Отсутствует



Сообщений: 141
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Подмена объектов метаданных (Документ,Справочн
Ответ #25 - 19. Апреля 2007 :: 06:17
Печать  
А просто наличие такой процедуры не избавит от подмены ресурсов.
Может фокус с англ. и русскими названиями методами это тоже самое.
Единственный нехороший момент если в конфе написано по английски.

Код
Выбрать все
Процедура ТипЗначенияСтр(Значение)  Экспорт
   Тип=ValueTypeStr(Значение);
   Если Найти(Тип,"Документ")>0 Тогда
	 Возврат "Документ";
   ИначеЕсли  Найти(Тип,"Справочник")>0 Тогда
	 Возврат "Справочник";
	 .....
   КонецЕсли;
КонецПроцедуры 

  

/ Лень - двигатель прогресса. /
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Подмена объектов метаданных (Документ,Справочн
Ответ #26 - 19. Апреля 2007 :: 07:14
Печать  
Метод ТипЗначенияСтр нельзя переопределить ни в глобальнике, ни в любом другом модуле.
Синтакс-контроль ругается.
  

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


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Re: Подмена объектов метаданных (Документ,Справочн
Ответ #27 - 19. Апреля 2007 :: 12:39
Печать  
artbear писал(а) 19. Апреля 2007 :: 07:14:
Метод ТипЗначенияСтр нельзя переопределить ни в глобальнике, ни в любом другом модуле.
Синтакс-контроль ругается.

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

Может попробовать перехватить метод по имени - и замениь его нужным методом, все равно ведь опримизация через "TurboBl" должна искать по имени метода?
  
Наверх
ICQ  
IP записан
 
pavlo
1c++ donor
1c++ power user
Отсутствует



Сообщений: 712
Местоположение: г. Новосибирск
Зарегистрирован: 10. Ноября 2006
Пол: Мужской
Re: Подмена объектов метаданных (Документ,Справочник)
Ответ #28 - 27. Февраля 2010 :: 12:20
Печать  
походу окончательная идея эта загнулась? Печаль
  

1с++     3.2.4.1
Formex  2.0.5.99b
Наверх
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Подмена объектов метаданных (Документ,Справочн
Ответ #29 - 04. Июля 2011 :: 02:39
Печать  
Valet писал(а) 19. Апреля 2007 :: 06:17:
Код
Выбрать все
Процедура ТипЗначенияСтр(Значение)  Экспорт
   Тип=ValueTypeStr(Значение);
   Если Найти(Тип,"Документ")>0 Тогда
	 Возврат "Документ";
   ИначеЕсли  Найти(Тип,"Справочник")>0 Тогда
	 Возврат "Справочник";
	 .....
   КонецЕсли;
КонецПроцедуры 



Только парсинг немного неправильный:
Например, класс ТСправочник.ДатыЗапретаРедактированияДокументов он у тебя определит как Документ Подмигивание
Правильнее будет сравнивать Лев(Тип, 9) = "Документ." etc
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 3 
ОтправитьПечать