Имя: Пароль:
1C
1C 7.7
v7: Переопределение методов объектов
,
0 tpmi
 
22.09.11
14:07
Можно сделать во внешней обработке замену метода? Мне нужно поменять алгоритм поиска документа по номеру. Можно увидеть код метода и слегка его изменить, не выходя за пределы внешней обработки?
1 Ёпрст
 
22.09.11
14:13
можно.
2 tpmi
 
22.09.11
14:20
(1) Спасибо :-)
А как это сделать не подскажете?
3 Ёпрст
 
22.09.11
14:23
(2) самое простое - воткнуть условие в алгоритм поиска по номеру.
4 tpmi
 
22.09.11
14:24
(3) В объекте "Документ.Реализация" (тип для примера) есть метод НайтиПоНомеру. Его можно переопределить?
5 andrewks
 
22.09.11
14:29
ООП рулит
6 Ёпрст
 
22.09.11
14:29
(4) можно, только зачем ?
7 tpmi
 
22.09.11
14:30
(5) гениальное замечание. Число сообщений набиваем, товарищ?
8 andrewks
 
22.09.11
14:30
(7) в точку
9 tpmi
 
22.09.11
14:31
(6) Я пытаюсь изменить правила поиска в обработке, написанной на основе стандартного V77Imp.ert - переделано многое, к тому же, штатные средства КД не позволяют переопределять правила поиска в семёрке.
Так если можно, то подскажите, как?
10 andrewks
 
22.09.11
14:32
(9) изменить код самой обработки не предлагать?
11 tpmi
 
22.09.11
14:33
(10) Этот код, довольно объёмистый, использует поиск по номеру в трёх местах. Мне надо всего лишь научить его находить по номеру, не учитывая при этом ведущие нули. Предлагается для этого разобраться в логике работы 3000-строчной программы и всё написать с нуля?
12 Ёпрст
 
22.09.11
14:33
(0) НайтиПоНомеру - это штатный метод объекта документ. Переопределить его ты сможешь, только если переопределишь Документ своим Классом, в котором будет этот метод.
А так, слепи свой метод НайтиПоНомеруМоё и ищи, как хочешь.
13 palpetrovich
 
22.09.11
14:34
(9) HEX редактором наверное
14 andrewks
 
22.09.11
14:34
(11) вот интересно мне...
WinAPI в каждой новой версии с нуля переписывают?
или всё-таки изменяют и совершенствуют имеющийся код?
15 tpmi
 
22.09.11
14:36
(14) Изменяют и совершенствуют. Однако, это делают люди, в целом, которые его и писали. А эту обработку писал совсем не я. К тому же - как видно из обсуждения (не нужно вообще больше никуда смотреть, чтобы это увидеть), она использует стандартный объект, встроенный в объектную модель системы. И опять же видно, что переопределить часть этого объекта нельзя, тут вам не C#.
16 Дык ё
 
22.09.11
14:37
17 tpmi
 
22.09.11
14:38
(14) Я могу, наверное, влезть прямо в кишки системы и поменять всё прямо там, проблема в том, что обработка, которую я делаю, будет использоваться отнюдь не мной, а людьми, к которых я не знаю и которые работают далеко от меня - то есть в их систему я влезть не смогу, и ограничен одной только своей ertшкой, в которой всё должно работать.
18 tpmi
 
22.09.11
14:39
(16) Предлагается заставить аудиторов поставить себе 1C++?
19 andrewks
 
22.09.11
14:40
(17) извини за грубость, но это называется "выдирание гланд через *опу".

меняй код обработки, и не парь мозг
20 tpmi
 
22.09.11
14:40
(всем) в нулевом же посте сказано - "не выходя за пределы внешней обработки"
21 tpmi
 
22.09.11
14:41
(19) можно было просто сказать "нельзя такое сделать", и не оскорблять никого, и нервы лишние не тратить.
22 Mikeware
 
22.09.11
14:41
Одна тема пятничнее другой...
23 Дык ё
 
22.09.11
14:41
(18) а у них есть выбор? О_о
24 tpmi
 
22.09.11
14:42
(23) - да, сказать "давайте нам бумажную первичку, нам неохота разбираться в ваших программах"
25 Mikeware
 
22.09.11
14:42
(20) тебе русским языком сказали - напиши НайтиПоНомеруМоё(), и все....
26 Ёпрст
 
22.09.11
14:42
(20) а ты и не будешь выходить за пределы одной обработки
27 Mikeware
 
22.09.11
14:43
(21) а где ты увидел оскорбления?
28 andrewks
 
22.09.11
14:43
(21) а тут кто-то кого-то оскорбляет? в каком посте?
29 Медведик
 
22.09.11
14:43
(11) При условии "использует поиск по номеру в трёх местах", чем не устраивает вариант В ТРЕХ МЕСТАХ заменить вызов стандартного поиска на поиск вашей функцией?
Для этого не нужно разбираться в тысячах строк кода.
30 tpmi
 
22.09.11
14:43
(25) (26) а я с этим как раз и не спорю.
31 Медведик
 
22.09.11
14:44
(29) +не требуется изменения конфигурации, только функцию поиска добавить в саму внешнюю обработку.
32 tpmi
 
22.09.11
14:48
Ну а хотя бы увидеть код этого НайтиПоНомеру можно?
33 andrewks
 
22.09.11
14:48
(32) можно. используй SoftICE
34 tpmi
 
22.09.11
14:49
(33) толковый совет, но, извините, откажусь.
35 palpetrovich
 
22.09.11
14:52
(32) перечитай (12). переделать НайтиПоНомеру - это к разработчикам
36 Медведик
 
22.09.11
14:52
(32) "не выходя за пределы внешней обработки"? Нет
37 tpmi
 
22.09.11
14:55
(35) (36) ок, понятно, не поменять НайтиПоНомеру, написать вместо него свою функцию, и её использовать. Вопрос как её написать. Проще всего было бы посмотреть как устроена НайтиПоНомеру и на основе её сделать свою, добавив всего пару строк.
38 andrewks
 
22.09.11
14:55
троллинг детектед
39 chief accountant
 
22.09.11
14:57
(37) СП читай
40 Ёпрст
 
22.09.11
14:58
(37) открой профайлер и посмотри текст запроса
41 Медведик
 
22.09.11
15:01
(37) Есть версия, что оно написано на С или чем-то таком (на чем и вся платформа), кода на языке 1С вы не увидите никак.
42 tpmi
 
22.09.11
15:03
Работает, решает мою задачу.
Да, костыль.


Функция НайтиПоНомеру(Док, Номер, Дат)
   С = 0;
   Пока С < 9 Цикл
       Если Док.НайтиПоНомеру(Номер, Дат) = 1 Тогда
           Возврат 1;
       КонецЕсли;
       Номер = "0" + Номер;
       Сообщить(Номер);
       С = С + 1;
   КонецЦикла;
   Возврат 0;
КонецФункции
Независимо от того, куда вы едете — это в гору и против ветра!