|
Инициировать открытие формы на сервере | ☑ | ||
---|---|---|---|---|
0
trey1
17.11.22
✎
06:57
|
Всем привет! Такой вопрос, требуется в документе на сервере произвести определенные действия, весь механизм по сути описан в обработке, который инициируется с передачей параметра в неё. Пока нет времени и желания переносить весь функционал "при создании" обработки, требуется вызов именно с сервера. Возможны ли какие то варианты?
|
|||
1
Мимохожий Однако
17.11.22
✎
07:00
|
Да
|
|||
2
trey1
17.11.22
✎
08:19
|
(1) подскажешь?
|
|||
3
Галахад
гуру
17.11.22
✎
08:51
|
Через OLE открыть экземпляр базы с блекджеком и формами... ))
|
|||
4
trey1
17.11.22
✎
08:54
|
(3) Мне нужен быстрый и простой вариант)
|
|||
5
Мимохожий Однако
17.11.22
✎
08:54
|
(2) Сними покровы тайн с кода и задачи. С утра трудно понять контекст
|
|||
6
trey1
17.11.22
✎
09:04
|
(5) есть обработка вшитая в конфу, которая при передаче параметра (ссылки на док) при создании на сервере заполняет ТЧ (объект обработки) по своим алгоритмам. Задача состоит в том, чтобы вызвать её создание на сервере, я ей передаю ссылку параметром и она заполняет ТЧ и я эту ТЧ забираю
|
|||
7
Kassern
17.11.22
✎
09:15
|
(6) Отвязывайте бизнес-логику от форм. Перенесите это дело, либо в модуль объекта, либо в менеджер в зависимости от задачи. Тогда вы просто создаете программно обработку на сервере и вызываете ее экспортную функцию/процедуру.
|
|||
8
Мимохожий Однако
17.11.22
✎
09:16
|
У сервера нет глазок. Поэтому открыть форму обработки можно только на клиенте. Если код выполняется на клиенте, то его можно разместить в модуле менеджера обработки.
|
|||
9
Kassern
17.11.22
✎
09:17
|
И все будет быстро и красиво. Если вы загляните в типовую торговлю например, то увидите, что пересчет ТЧ происходит не на форме при изменении, а в общем модуле, куда передаются параметры заполнения и строка.
|
|||
10
FirstLine Support
17.11.22
✎
09:23
|
(7) пока нет времени и желания этим заниматься
|
|||
11
Kassern
17.11.22
✎
09:26
|
(10) Так пробовали?
ФормаГдеЧтоТоНужное = ПолучитьФорму("Обработки.НужнаяОбработка.НужнаяФорма"); ФормаГдеЧтоТоНужное.НужныйЭкспортныйМетод(); |
|||
12
Kassern
17.11.22
✎
09:30
|
Если посмотреть старую обработку от Диадока, то там как раз модульность организовывалась через формы обработки.
|
|||
13
Галахад
гуру
17.11.22
✎
09:44
|
(11) На сервере?
|
|||
14
НафНаф
17.11.22
✎
09:46
|
(9) только ОбработатьСтрокуТЧ в этих модулях ни разу не красиво и противоречит принципу расширяемости функционала
|
|||
15
Kassern
17.11.22
✎
09:55
|
(14) С чего это противоречит расширяемости? У вас множество форм с однотипными ТЧ. Завтра нужно добавить новое поле для расчетов, например скидку. Достаточно будет просто передать параметр "РассчитатьСкидку" и в одном месте, в общем модуле добавить логику расчета. Все красиво и опционально. Если бы логика расчета была на форме, то пришлось бы все формы ковырять и дублировать код. Так же были бы проблемы в программном создании документов в разрезе заполнения тч и т.д.
|
|||
16
НафНаф
17.11.22
✎
10:05
|
(15) это они молодцы - согласен, а теперь надо добавить новое действие, что будем делать? будем менять код этой процедуры, вот и противоречие принципу
вообще какого черта оно вызывает все подряд методы действий? почему я не могу управлять порядком вызовов этих методов? а если нужно вызвать действие до другого действия и повторно после него? |
|||
17
Kassern
17.11.22
✎
10:08
|
(16) " надо добавить новое действие" ->Добавляйте в общий модуль, а необходимость его выполнения передавайте через структуру действий с формы.
"вообще какого черта оно вызывает все подряд методы действий?" -> "Оно" вызывает только те действия, который вы передали в структуре. |
|||
18
Kassern
17.11.22
✎
10:09
|
"почему я не могу управлять порядком вызовов этих методов" - если есть необходимость, можете этот момент доработать, передав порядок выполнения и доработав общий модуль.
|
|||
19
НафНаф
17.11.22
✎
10:10
|
(17) 1. то есть метод ОбработатьСтрокуТЧ придется править
2. тем не менее вызываются ВСЕ методы, просто в каждом из них анализируются входящие параметры и если не подходит, то игнорируется, ну так себе идея |
|||
20
НафНаф
17.11.22
✎
10:11
|
(18) постоянно читаю "доработав общий модуль"
об этом противоречии и говорю если что я об этом https://ru.wikipedia.org/wiki/Принцип_открытости/закрытости |
|||
21
Kassern
17.11.22
✎
10:13
|
(20) Ну так, если этим модулем пользуется множество объектов, то наверное правильно доработать общий модуль, чем доработать 100500 копипастов кода в каждой форме, вы не находите?
|
|||
22
Kassern
17.11.22
✎
10:14
|
мы же сейчас говорим за ОбработатьТЧ, как вы видите правильную реализацию данного метода? Без общего модуля и все в каждой форме?
|
|||
23
НафНаф
17.11.22
✎
10:23
|
(22) в 1С это маловероятно, нет вложенной модульности
в целом форма передает в ОбработатьТЧ массив объектов, поддерживающих единый интерфейс ОбработчикТЧ (например со своим методом ОбработатьТЧ) общий модуль проходит по массиву и вызывает метод этих объектов-обработчиков нужно вам новое действие - создали новый обработчик, лишь бы он соответствовал интерфейсу просто в форме поместите его в массив хотите вызвать обработчик дважды - поместите его в массив сколько угодно раз в итоге - текущий код мы не правим, а только расширяем новым кодом |
|||
24
Kassern
17.11.22
✎
10:26
|
(23) "в 1С это маловероятно" -> но мы тут как раз 1с обсуждаем, а не прочие языки
|
|||
25
Kassern
17.11.22
✎
10:27
|
Я примерно понимаю, что вы имеете в виду, что нужно создавать новые классы с функционалом и ими расширять функционал не правя общий модуль.
|
|||
26
НафНаф
17.11.22
✎
10:31
|
(24) (25) да, когда я увидел в УТ текущую реализацию - я понял, что разработчики сделали, что смогли в рамках платформы )))
|
|||
27
Kassern
17.11.22
✎
10:36
|
(26) Ждите Элемент, там вроде можно будет свои классы создавать)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |