|
Как обратиться к функции модуля объекта обработки из общего модуля? | ☑ | ||
---|---|---|---|---|
0
VenikUltra Green
25.05.22
✎
14:16
|
Добрый день. Есть обработка, у которой в менеджере объекта прописана функция. К этой функции обращается общий модуль. И тут всё хорошо. Но когда возникает необходимость сохранить обработку как внешнюю (для тестирования и отладки), то модуль менеджера исчезает. Отсюда возникает необходимость перенести функцию из модуля менеджера в модуль объекта. Но тогда при обращении из общего модуля Обработка.НужнаяФункция() пишет, что функция не обнаружена. Хотя слово Экспорт поставили. Есть ли какие-нибудь варианты обойти менеджер объекта и чтобы нужная функция была в модуле объекта?
|
|||
1
Kassern
25.05.22
✎
14:20
|
беда у вас в понимании работы модулей и обращении к ним.
"Но когда возникает необходимость сохранить обработку как внешнюю" - вот у вас есть файл обработки, валяется на каком-то диске. Откуда модулю конфигурации знать, что там за функция находится? Если же вы получили предварительно это обработку в модуле, то уже можете обращаться к ее экспортным процедурам/функциям |
|||
2
Filin
25.05.22
✎
14:25
|
Что-бы обратиться к процедурам модуля объекта, этот объект нужно создать для начала.
ОбъектОбработки = Обработки.ВашаОбработка.Создать(); ОбъектОбработки.НужнаяФункция(); |
|||
3
Dmitry1c
25.05.22
✎
14:25
|
ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
ОбработкаОбъект.НужнаяФункция(); |
|||
4
Kassern
25.05.22
✎
14:26
|
(0) вот тут гляньте Как открыть (выполнить) внешнюю обработку программно ?
|
|||
5
Kassern
25.05.22
✎
14:27
|
(3) тут скорее всего дело в другом. У него кусок бизнес логики находится в модуле внешней обработки. Он к нему из конфигурации пытается обратиться. Когда обработка внутри конфы, то без проблем, а когда она стала внешней, вот ТС и не знает что делать)
|
|||
6
Filin
25.05.22
✎
14:28
|
(5) Ну и конечно вызывающему общему модулю то-же придется как-то объяснить, что концепция поменялась :)
|
|||
7
VenikUltra Green
25.05.22
✎
14:29
|
(1) Не, модулю конфигурации не обязательно знать, где там что валяется на диске каком-то. Обработка выгружается как внешняя только для отладки, а потом ставится обратно. И вот отладка ругается, что нет функции (она пропала вместе с менеджером). Функцию скопировал из менеджера. Доработал её (функцию) и потом нужно обратно её копипастить в менеджер. Можно конечно помнить, что нужно копипастить, но можно однажды забыть про это и в менеджере она останется старой. Гораздо удобнее было бы если бы она была постоянно в модуле объекта, но и общий модуль бы её видел.
|
|||
8
Kassern
25.05.22
✎
14:30
|
(7) еще бы не обрезалось, у внешней обработки нет модуля менеджера, поэтому он у вас становится пустым)
|
|||
9
Filin
25.05.22
✎
14:31
|
Ну нет проблем, можно сделать функцию в менеджере, которая просто будет вызывать функцию объекта.
|
|||
10
VenikUltra Green
25.05.22
✎
14:33
|
(9) Интересно. Можно кусок кода?
|
|||
11
Filin
25.05.22
✎
14:35
|
(10) Ну код выше. В менеджере создаете объект и вызываете его функцию. Но как правильно заметили уже - менеджер не сохраняется, и об этом придется помнить если загружать измененную обработку полностью.
|
|||
12
Kassern
25.05.22
✎
14:35
|
(10) вам это что ли надо?))
Обработка=Обработки.ВашаОбработка.Создать(); Обработка.ВашаЭкспортнаяПроцедура(); |
|||
13
Ryzeman
25.05.22
✎
14:36
|
(0) БСП
ВнешняяОбработкаСсылка = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("Моя обработка"); ВнешняяОбработкаОбъект = ДополнительныеОтчетыИОбработки.ОбъектВнешнейОбработки(ВнешняяОбработкаСсылка ); Результат = ВнешняяОбрботкаОбъект.МояКласснаяФункция(); |
|||
14
Kassern
25.05.22
✎
14:37
|
скорее всего ТС пытался вот так Обработки.ВашаОбработка.ЭкспортнаяПроцедура() - на что получал "функция не обнаружена"
|
|||
15
VenikUltra Green
25.05.22
✎
14:38
|
(11) "и об этом придется помнить если загружать измененную обработку полностью." там обычно через сравнение объединение
(12) если это написать в общем модуле, необходимость в менеджере обработки отпадёт? |
|||
16
Kassern
25.05.22
✎
14:40
|
(15) блин еще раз распишите, откуда и что вы хотите вызывать. Вам уже привели примеры как вызвать экспортые функции у внешней обработки и у встроенной в конфу.
|
|||
17
VenikUltra Green
25.05.22
✎
14:44
|
(16) из общего модуля хочу вызывать функцию из модуля объекта обработки в конфигурации (не внешней).
|
|||
18
VenikUltra Green
25.05.22
✎
14:45
|
(16) ...дабы избавиться от менеджера
|
|||
19
Ryzeman
25.05.22
✎
14:46
|
(17) Эммм... Ответ в (12)
|
|||
20
VenikUltra Green
25.05.22
✎
14:46
|
Я понял. Сейчас попробую.
|
|||
21
Kassern
25.05.22
✎
14:46
|
(17) ну так вам и написали в (12)
|
|||
22
Dmitrii
гуру
25.05.22
✎
14:46
|
Создать расширение.
В расширении создать обработку. У такой обработки будет модуль менеджера. |
|||
23
Kassern
25.05.22
✎
14:47
|
даже еще раньше написали) в (2)
|
|||
24
Kassern
25.05.22
✎
14:47
|
(22) только вот зачем это все? Динамически менять бизнес логику через расширения?)
|
|||
25
VenikUltra Green
25.05.22
✎
14:55
|
как в (12) работает. Спасибо. Одна проблема. При срабатывании Создать() там в этой обработке ещё куча всего ненужного отрабатывает. Ну без этого видимо уже ни как.
|
|||
26
Filin
25.05.22
✎
14:59
|
(18) Избавиться от менеджера - понятие растяжимое. Тут как минимум два варианта - если есть возможность поменять код в общем модуле, то проще сразу переделать на вызов функции объекта и избавиться от кода в менеджере совсем. Если менять общий модуль нельзя, или вызовов этой функции много в разных модулях, то тогда создаем прокси-функцию в менеджере, которая вызывает в свою очередь функцию объекта.
|
|||
27
kittystark
25.05.22
✎
15:03
|
а если тоже самое, но только БЕЗ обновления справочников внешних обработок/отчетов
а саму обработку запускать через Файл > Открыть будет работать, а? |
|||
28
Kassern
25.05.22
✎
15:07
|
(27) а разница какая? Вы либо ДД получите из хранилища справочника, либо по пути к внешней обработке
|
|||
29
Kassern
25.05.22
✎
15:08
|
в БСП же не чудеса происходят, а обычные методы работы с данными
|
|||
30
kittystark
25.05.22
✎
15:16
|
(28) вот сколько ни пытался БЕЗ обновления справочника и в тонком клиенте на управляемых формах
то открытие ПО ПУТИ ФАЙЛА дает полную хрень - вплоть до того, что добавил новый макет, сохранил файл, открыл, смотришь в отладчике на метаданные а нового макета НЕТУ |
|||
31
Ryzeman
25.05.22
✎
15:22
|
(29) в БСП же не чудеса происходят - спорное утверждение, для подавляющего большинства 1сников)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |