Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Использование последнего Formex и старой 1cp++ (2.0.1.2) (число прочтений - 14787 )
Graider
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 9
Зарегистрирован: 07. Декабря 2007
Использование последнего Formex и старой 1cp++ (2.0.1.2)
05. Декабря 2010 :: 01:38
Печать  
Проблема в следующем:
Использую 1cp++ (2.0.1.2) не первый год, именно в этой версии все методы работают так как надо - работаю через ODBC с MySQL, гоняю данные туда/обратно. В более поздних версиях, некорректно передавались некоторые типы в MySQL и пр. Все работает годами, отлажено и переходить на более свежие релизы, ну совсем нет резона.
Ну вот возникла задача отлова момента печати, это полезность оказалась в последней версии Formex 2.0.5.
Вот тут и нашла коса на камень Печаль Одновременно загрузить не могу - при любых порядках загрузки компонент вылетает 1С.
  
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #1 - 05. Декабря 2010 :: 06:31
Печать  
Ээ все таки попытаться понять что, по Вашему мнению, не так происходит при работе ODBC с mysql в последних версиях 1С++.
А также может все таки к нужным типам приводить в запросе?
  
Наверх
IP записан
 
Graider
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 9
Зарегистрирован: 07. Декабря 2007
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #2 - 05. Декабря 2010 :: 11:14
Печать  
Одна из проблем была в методе УстТипыКолонок1С, еще несколько моментов, сейчас я их просто не помню, ведь это было лет 5 назад (можеть больше). Вся конфа перерыта и во многих местах используется 1с++. Вообщем просто нереально сейчас все отлавить, поставив последню версию. А от Formexa всего-то надо отлов метода ПриПечати, остальные полезняшки пока не интересуют.
Мысли вслух - если бы Formex когда грузился не конфликтовал с 1с++ моей версии, ну типа, если метод Formex не пересекается с методом 1с++, то его подключать, иначе игнорировать. Ну это я так нафантазировал, чтобы получить обработчик ПриПечати Улыбка
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #3 - 05. Декабря 2010 :: 12:52
Печать  
Выложи архив.
  
Наверх
 
IP записан
 
Graider
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 9
Зарегистрирован: 07. Декабря 2007
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #4 - 05. Декабря 2010 :: 13:42
Печать  
эту длл ?
  

1CPP_007.rar ( 314 KB | Загрузки )
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #5 - 05. Декабря 2010 :: 18:53
Печать  
Graider писал(а) 05. Декабря 2010 :: 13:42:
эту длл ?

Я думаю конфигурацию все таки.
  
Наверх
IP записан
 
Graider
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 9
Зарегистрирован: 07. Декабря 2007
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #6 - 05. Декабря 2010 :: 19:26
Печать  
конфигурации более 10 лет, давно не типовая (для Украины), наворочено и классов кучу сделал, всю конфу нашпиговал обращениями к 1с++ и классам. Самому уже тяжело вспоминать что делал, прошло уж более 5 лет Улыбка
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #7 - 06. Декабря 2010 :: 02:07
Печать  
Знаешь, как это звучит?
"Я тут что-то сделал, что-то поменял, не помню уже что ... объясните, почему оно у меня теперь не работает?"
Реально думаешь, что кто-то сможет помочь?
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #8 - 06. Декабря 2010 :: 05:31
Печать  
(0) Переходи на новую 1с++   3.2

Версия 1с++  2.0 внутри себя уже содержит formex
поэтому загружать новый formex неправильно.

То что работает odbc к MYSQL в 2.0 и не работает в 3.2
не верю. Законченный пример приведи.
  
Наверх
 
IP записан
 
Graider
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 9
Зарегистрирован: 07. Декабря 2007
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #9 - 06. Декабря 2010 :: 09:50
Печать  
Учитывая вышесказанное подведу итог:
1) пробовал поставить версию 2.5 1с++, которая работает вместе с последним Formex - перестали работать или стали некорректно работать куски кода при работе с MySQL через ODBC. Как бы не смешно выглядело действительно сейчас сложно все перешерстить и найти такие проблемные места, ибо кода очень много.
Вообще на текущий момент все работает и работает более 5 лет. Здесь наверно будет уместным бородатый анекдот, в котором сын прграммиста отца спрашивал почему каждый день всходит и заходит солнце. Вот и я, как и отец в этом анекдоте считаю что "если все работает - ничего не трогай" Улыбка
2) Мне всего лишь нужна была возможность перехватывать печать, которая есть в последнем Formex - метод ПриПечати и которого нет (может ошибаюсь ?) последних версиях 1с++

А вообще я борюсь с такой известной проблемой, как дырка в защите печтаных форм, т.е. защита ставиться и "почти" всегда работает - не дает печатать, копировать, сохранять в файл. Правда нашлись умные пользователи, которые просто выделяют кусок таблицы и говорят - печать выделенного и все, защита здесь заканчивается Улыбка А у меня почти все управленяеские (самописные) отчеты на этой защите работали.

Вообщем всем спасибо за отклик, похоже не получилось "по-быстрому" решить вопрос. Пойду другим путем, может кому пригодится в двух словах скажу - после того как печ.форма сформирована, она не выводится, а передается обработке, в которой таблица для ввода данных. Обходя все ячейки исходной заполняю табл.ввода даных и показываю на экран. В форме обработки подключается обработчик, который следит за выделенными ячейками и если видит, что пользователь выделил блок, то сбрасывает такое выделение - первую ячейку в блоке делает активной. И все это для того чтобы нельзя было печатать выделенное. Завернуто конечно, но работает.
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #10 - 06. Декабря 2010 :: 10:01
Печать  
Я думаю тебе просто нужен Йоксель
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #11 - 06. Декабря 2010 :: 10:06
Печать  
chessman писал(а) 06. Декабря 2010 :: 10:01:
Я думаю тебе просто нужен Йоксель

У него проблемы с новой 1с++, а йоксель на старой не пойдет...
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #12 - 06. Декабря 2010 :: 13:33
Печать  
Короче, можно сделать так, что вообще нельзя будет распечатать.
Из требований - dynwrapx.dll
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #13 - 06. Декабря 2010 :: 14:38
Печать  
Не так красиво, как у Альфа, но вроде работает.
  

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


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #14 - 06. Декабря 2010 :: 15:33
Печать  
В копилку!  Улыбка
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #15 - 06. Декабря 2010 :: 16:42
Печать  
CaBaT писал(а) 06. Декабря 2010 :: 15:33:
В копилку!  Улыбка


Возможен еще вариант  с вызовом глобальной процедуры...пока без параметров.
  
Наверх
 
IP записан
 
Graider
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 9
Зарегистрирован: 07. Декабря 2007
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #16 - 06. Декабря 2010 :: 17:04
Печать  
chessman писал(а) 06. Декабря 2010 :: 14:38:
Не так красиво, как у Альфа, но вроде работает.


вот спасибки, помчался проверять и надеюсь прикручивать Улыбка
  
Наверх
 
IP записан
 
Graider
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 9
Зарегистрирован: 07. Декабря 2007
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #17 - 06. Декабря 2010 :: 21:29
Печать  
chessman писал(а) 06. Декабря 2010 :: 14:38:
Не так красиво, как у Альфа, но вроде работает.


проверил - работает, но есть одно НО. Проблема в том, что один отчет можно печтать, а другой нет и если оба сформировать, то получиться что или оба можно будет печатать, либо ни одного, т.е. приведенный пример глобально запрещает/разрешает печать. А вот можно ли как то запретить конкретный сформированый отчет печатать и чтобы этот запрет "запомнился" для этого уже сформированного отчета ?
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #18 - 07. Декабря 2010 :: 06:04
Печать  
Dmitry The Wing писал(а) 06. Декабря 2010 :: 10:06:
chessman писал(а) 06. Декабря 2010 :: 10:01:
Я думаю тебе просто нужен Йоксель

У него проблемы с новой 1с++, а йоксель на старой не пойдет...

Yksel будет работать и в 1сpp 2.0
Это же совершено другая бидлиотека со своим функционалом.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #19 - 07. Декабря 2010 :: 06:13
Печать  
Graider писал(а) 06. Декабря 2010 :: 09:50:
Учитывая вышесказанное подведу итог:
1) пробовал поставить версию 2.5 1с++, которая работает вместе с последним Formex - перестали работать или стали некорректно работать куски кода при работе с MySQL через ODBC. Как бы не смешно выглядело действительно сейчас сложно все перешерстить и найти такие проблемные места, ибо кода очень много.
Вообще на текущий момент все работает и работает более 5 лет. Здесь наверно будет уместным бородатый анекдот, в котором сын прграммиста отца спрашивал почему каждый день всходит и заходит солнце. Вот и я, как и отец в этом анекдоте считаю что "если все работает - ничего не трогай" Улыбка


Так зачем ставить сейчас 2.5
Надо ставить  3.2.3.4
Если есть ошибки то озвучивай их от исправления выиграют все.
Но то что ты называешь не верю что такие ошибки возможны так
как все основано на odbc и это давно бы всплыло.
Переход со 2.0 на 3.2.3.4 можно делать постепенно.Переведи человека 3-4 на новую версию пусть они поработают недели 2-3.Потом следующих.
  
Наверх
 
IP записан
 
Graider
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 9
Зарегистрирован: 07. Декабря 2007
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #20 - 07. Декабря 2010 :: 07:41
Печать  
Z1 писал(а) 07. Декабря 2010 :: 06:13:
Graider писал(а) 06. Декабря 2010 :: 09:50:
Учитывая вышесказанное подведу итог:
1) пробовал поставить версию 2.5 1с++, которая работает вместе с последним Formex - перестали работать или стали некорректно работать куски кода при работе с MySQL через ODBC. Как бы не смешно выглядело действительно сейчас сложно все перешерстить и найти такие проблемные места, ибо кода очень много.
Вообще на текущий момент все работает и работает более 5 лет. Здесь наверно будет уместным бородатый анекдот, в котором сын прграммиста отца спрашивал почему каждый день всходит и заходит солнце. Вот и я, как и отец в этом анекдоте считаю что "если все работает - ничего не трогай" Улыбка


Так зачем ставить сейчас 2.5
Надо ставить  3.2.3.4
Если есть ошибки то озвучивай их от исправления выиграют все.
Но то что ты называешь не верю что такие ошибки возможны так
как все основано на odbc и это давно бы всплыло.
Переход со 2.0 на 3.2.3.4 можно делать постепенно.Переведи человека 3-4 на новую версию пусть они поработают недели 2-3.Потом следующих.


а в 3.2.3.4 есть метод, который позвоялет отлавливать момент отправки (предв.просмотра) на печать, как в Formexe метод ПриПечати ?
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #21 - 07. Декабря 2010 :: 08:02
Печать  
Цитата:
а в 3.2.3.4 есть метод, который позвоялет отлавливать момент отправки (предв.просмотра) на печать, как в Formexe метод ПриПечати ?



начиная с 1с++ 2.5 надо отдельно загружать 1с++ и отдельно загружать formex
После это используйте или методы 1с++ и/или методы formex
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #22 - 07. Декабря 2010 :: 19:29
Печать  
Будут ли интересны мои "бредни Барри" с вызовом глобальной процедуры. Думаю одного параметра в виде таблицы будет достаточно, чтобы принять решение о ее печати?
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #23 - 08. Декабря 2010 :: 07:00
Печать  
chessman писал(а) 07. Декабря 2010 :: 19:29:
Будут ли интересны мои "бредни Барри"

Ну зачем так Улыбка
Твои решения обычно довольно изящны, кому-нибудь точно пригодится!
Даже хотя бы как иллюстрация того, что можно сделать с помощью dynwrap.
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #24 - 08. Декабря 2010 :: 11:34
Печать  
В архиве 2 класса, 1-й вспомогательный - добавляет функционал к DWX, 2-й реализация метода "ПриПечатиТаблицы", как в Формексе только с одним параметром Таблица.

ЗЫ:пользуясь случаем, хочу поблагодарить разработчиков 1c++ и Formex. Изучая исходники приходит понимание того, как 1С  функционирует изнутри.
« Последняя редакция: 09. Декабря 2010 :: 09:37 - chessman »  

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



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #25 - 08. Декабря 2010 :: 11:50
Печать  
Еще маленькое замечание, по использованию, в классе используется метод из DWX RegisterCallback, это предполагает, что объект класса будет глобальной переменной.
Дело в том, что этот метод (RegisterCallback) можно вызвать только 16 раз за сессию (это ограничение DWX).
Можно конечно, каждый раз проводить "раз-регистрацию" в деструкторе, но в данном случае я думаю это не принципиально.

Вообще это ограничение (16 вызовов) можно снять (я так думаю) - буду копать код, но пока 16-ти вызовов достаточно.

  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #26 - 09. Декабря 2010 :: 14:54
Печать  
Вопрос к chessman-у:
Как думаешь, реально ли с помощью dynwrap сделать подмену процедуры или функции модуля формы справочника или документа?

Т.е. с помощью перехватчика ловим открытие формы, получаем контекст, зная имя процедуры или функции в модуле формы меняем вызов на свою функцию/процедуру?
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #27 - 09. Декабря 2010 :: 16:05
Печать  
На сколько я понимаю, можно, подменяя вызов
CGroupContext::CallAsFunc/CallAsProc

только зачем тебе это?  Подмигивание
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #28 - 09. Декабря 2010 :: 19:51
Печать  
CaBaT писал(а) 09. Декабря 2010 :: 14:54:
Вопрос к chessman-у:
Как думаешь, реально ли с помощью dynwrap сделать подмену процедуры или функции модуля формы справочника или документа?

Т.е. с помощью перехватчика ловим открытие формы, получаем контекст, зная имя процедуры или функции в модуле формы меняем вызов на свою функцию/процедуру?

Если идет локальный вызов процедуры из процедуры/функции этого же модуля, то тут совсем не просто, т.к. 1С юзает промежуточный P-код и вызывает процедуру в этом случае напрямую.
Нелокальный вызов через контекст формы модуля можно перехватить. ИМХО Перехватчик неявным образом это может разрулить. Правда, насчет Перехватчика это только мои подозрения, т.к. специально перехват обычных методов контекста я не делал Улыбка проверить несложно, сами понимаете.
  

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


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #29 - 10. Декабря 2010 :: 07:24
Печать  
chessman писал(а) 09. Декабря 2010 :: 16:05:
только зачем тебе это?  Подмигивание

Да просто хотел изменить логику работы процедуры не меняя конфигурацию, из перехватчика...
Ну это все таки извращение, так подумалось просто, на волне твоих последних ковыряний с dynwrap и внутренностями 1cpp Улыбка
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #30 - 10. Декабря 2010 :: 07:30
Печать  
artbear писал(а) 09. Декабря 2010 :: 19:51:
Если идет локальный вызов процедуры из процедуры/функции этого же модуля

Да, вызов будет локальный, и я его хотел перенаправить на свой код..
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #31 - 10. Декабря 2010 :: 17:06
Печать  
CaBaT писал(а) 10. Декабря 2010 :: 07:30:
artbear писал(а) 09. Декабря 2010 :: 19:51:
Если идет локальный вызов процедуры из процедуры/функции этого же модуля

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


А приведи конкретный пример, чтоб было проще копать
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #32 - 13. Декабря 2010 :: 07:10
Печать  
Простой пример:

Есть форма элемента справочника, в модуле формы есть процедура, которая вызывается в самом модуле.
Хотел не меняя код процедуры, подменить своей, что бы при вызове в модуле вызывалась моя.

Поразмыслив, пришел к выводу, что озорство все это.
Слишком много гемора ради того, что бы не трогать конфигурацию.

Просто подумалось, что это позволило бы дальше развить идею перехвата - вообще исключить необходимость трогать конфиг, если вдруг есть такая необходимость Улыбка
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #33 - 13. Декабря 2010 :: 08:36
Печать  
CaBaT писал(а) 13. Декабря 2010 :: 07:10:
Просто подумалось, что это позволило бы дальше развить идею перехвата - вообще исключить необходимость трогать конфиг, если вдруг есть такая необходимость Улыбка

Не выйдет. Уже потому, что в коде может не быть процедуры, которую хочется перехватить...

Я делаю проще - выношу весь код в класс, оставляя в документе только предопределенные процедуры по максимуму, перенаправляя вызов в класс. Таким образом, изменение конфы требуется только раз, а затем менется только класс ... до тех пор, пока не потребуется изменить набор реквизитов справочника или документа.
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #34 - 13. Декабря 2010 :: 09:11
Печать  
Dmitry The Wing писал(а) 13. Декабря 2010 :: 08:36:
Я делаю проще - выношу весь код в класс, оставляя в документе только предопределенные процедуры по максимуму, перенаправляя вызов в класс. Таким образом, изменение конфы требуется только раз, а затем менется только класс ... до тех пор, пока не потребуется изменить набор реквизитов справочника или документа.


Гениально! Улыбка
Тоже последнее время так делал, но к сожалению, в настоящий момент работаю с конфигурацией, в которой пока не все могу сделать так, как привык, приходится крутится Улыбка
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #35 - 13. Декабря 2010 :: 09:14
Печать  
CaBaT писал(а) 13. Декабря 2010 :: 07:10:
Просто подумалось, что это позволило бы дальше развить идею перехвата - вообще исключить необходимость трогать конфиг, если вдруг есть такая необходимость Улыбка


Как сказал Артур, при вызове локальной функции (а именно это и требуется перехватить) 1С напрямую обращается к уже откомпилированному P-коду и как с ним бороться, я на данный момент просто не знаю.
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #36 - 13. Декабря 2010 :: 09:24
Печать  
chessman писал(а) 13. Декабря 2010 :: 09:14:
Как сказал Артур, при вызове локальной функции (а именно это и требуется перехватить) 1С напрямую обращается к уже откомпилированному P-коду и как с ним бороться, я на данный момент просто не знаю.

Да, это понятно, поэтому и написал - проще забить, ибо затраты на реализацию превышают эффект - в конце концов проще код поменять в конфигурации..
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #37 - 13. Декабря 2010 :: 09:38
Печать  
Да, работать с байткодом сложно и вообще лениво, но для данной задачи это и не нужно.
Можно ограничиться заменой текста модуля перед компиляцией.
Другое дело, что отлаживать, да и просто осознавать эту механику может оказаться непростым делом.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #38 - 13. Декабря 2010 :: 10:18
Печать  
kms писал(а) 13. Декабря 2010 :: 09:38:
Можно ограничиться заменой текста модуля перед компиляцией.


А как это сделать, что перехватывать нужно?
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #39 - 13. Декабря 2010 :: 10:26
Печать  
Возможно, подойдет CBLModule::Compile
Можно глянуть, как оно обрабатывается в TurboBL
  

De quelle planète es-tu?
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #40 - 16. Декабря 2010 :: 12:04
Печать  
kms писал(а) 13. Декабря 2010 :: 10:26:
Возможно, подойдет CBLModule::Compile


kms, спасибо за подсказку.
Пример на dwx, как можно перехватить компиляцию и заменить текст модуля.
Меняем процедуру "Сформировать" в любом модуле.



  

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


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #41 - 16. Декабря 2010 :: 13:41
Печать  
Круто! Освобожусь - потестирую!
А в перехвате "ПриОткрытии" можно будет подменить функции/процедуры.
И кстати, да, а функцию можно - что бы параметры возвращала?
Или это уже слишком? Улыбка
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #42 - 16. Декабря 2010 :: 14:06
Печать  
Там происходит контекстная замена текста всей процедуры.
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #43 - 16. Декабря 2010 :: 14:59
Печать  
Не совсем понял - это к п.1 (замена в "ПриОткрытии") или к п.2 (подмена функции)?
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #44 - 16. Декабря 2010 :: 20:10
Печать  
CaBaT писал(а) 16. Декабря 2010 :: 14:59:
Не совсем понял - это к п.1 (замена в "ПриОткрытии") или к п.2 (подмена функции)?


Я тебя тоже не совсем понял...
"Перехватывается" весь текст модуля контекста перед компиляцией. Ты с ним можешь сделать что угодно, в данном случае мы делаем контекстную замену процедуры "Сформировать" (если находим ее) и передаем исправленный код на компиляцию.
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #45 - 17. Декабря 2010 :: 06:34
Печать  
А можно будет сделать замену в перехватчике для переданного контекста?
Т.е. получается:
1. При открытии например формы элемента справочника перехватываем его в "СозданиеКонтекста"
2. Подменяем нужную процедуру/функцию в перехватчике для перехваченного контекста
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #46 - 17. Декабря 2010 :: 06:58
Печать  
CaBaT писал(а) 17. Декабря 2010 :: 06:34:
А можно будет сделать замену в перехватчике для переданного контекста?
Т.е. получается:
1. При открытии например формы элемента справочника перехватываем его в "СозданиеКонтекста"
2. Подменяем нужную процедуру/функцию в перехватчике для перехваченного контекста


Я пока не знаю порядка прохождения "событий" создания внутренних объектов, поэтому с уверенностью не скажу, как это будет функционировать. Дай немного времени, буду разбираться.

ЗЫ:пошли в курилку болтать, а то мы не в своей ветке все это обсуждаем. Создашь там тему?  Подмигивание
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #47 - 17. Декабря 2010 :: 07:21
Печать  
CaBaT писал(а) 17. Декабря 2010 :: 06:34:
А можно будет сделать замену в перехватчике для переданного контекста?
Т.е. получается:
1. При открытии например формы элемента справочника перехватываем его в "СозданиеКонтекста"
2. Подменяем нужную процедуру/функцию в перехватчике для перехваченного контекста

Это можно сделать Перехватчиком с помощью события ФормЕкс по загрузке модуля формы.
Т.е. ловим это событие Перехватчиком, подменяем модуль, и прога идет дальше.
И никакого dwx Улыбка

ЗЫ ага, тему нужно новую создавать, только не в Курилке, а в "1С++, ТурбоМД и прочие" Улыбка
  

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



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Использование последнего Formex и старой 1cp++ (2.0.1.2)
Ответ #48 - 17. Декабря 2010 :: 07:57
Печать  
artbear писал(а) 17. Декабря 2010 :: 07:21:
И никакого dwx Улыбка


Убил  Подмигивание
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать