|
Общий код &НаКлиенте для нескольких управляемых форм | ☑ | ||
---|---|---|---|---|
0
klis
16.04.15
✎
18:35
|
Есть внешняя обработка с несколькими управляемыми формами. Все управляемые формы помимо всего прочего используют одинаковые механизмы. Кол-во форм и кода разрослось настолько, что поддерживать этот общий код (копипастить между формами) становится крайне не комфортно.
Насколько корректно будет создать еще одну форму, прописать экспортом нужные процедуры туда и пользовать из остальных форм? Может быть изобретено какое-то более адекватное решение? |
|||
1
H A D G E H O G s
16.04.15
✎
18:36
|
(0) ОбщийМодуль
|
|||
2
klis
16.04.15
✎
18:39
|
(1) Обработка внешняя без привязки к конфигурации.
|
|||
3
Kookish
16.04.15
✎
19:35
|
(0) В качестве бреда: оставить одну форму, но менять видимость ее элементов (групп элементов) в зависимости от ситуации.
|
|||
4
RomaH
naïve
16.04.15
✎
20:47
|
(0) пример
|
|||
5
Ma3eIIa
16.04.15
✎
20:51
|
а не проще в модуле обработке ?
|
|||
6
Котокот
16.04.15
✎
20:53
|
(0) Через веб-сервисы ломиться к себе на сервак, там обрабатывать всю инфу и возвращать во внешние формы результат.
|
|||
7
Ник080808
16.04.15
✎
20:57
|
(0) самый оптимальный вариант в (3)
|
|||
8
Ma3eIIa
16.04.15
✎
20:59
|
а если подумать. то все что одинаковое оставить. все остальное создавать динамически. и не мучать себе мозг. форма одна. но да кода много
|
|||
9
Ma3eIIa
16.04.15
✎
21:00
|
(8) прикрутить макеты. где будут расписано формы. ммм. загнул
Хотя 1 раз сделать. а потом тупо скопировал макет и новая форма |
|||
10
Ник080808
16.04.15
✎
21:17
|
(9) вот тоже о макете подумал) только как код обработчиков динамически формировать
|
|||
11
Ma3eIIa
16.04.15
✎
22:17
|
(10) молча. разметка. где группа где элементы. тип данных. можно и без гемера все в таблицу. только типы подставлять. ну тут так же макет в помощь
|
|||
12
H A D G E H O G s
16.04.15
✎
22:21
|
Сделать еще одну, общую форму - хранитель клиентского кода, без элементов управления.
|
|||
13
Ma3eIIa
16.04.15
✎
22:23
|
(12) так я же писал. что (8). а вот что по динамике. написать норм алгоритм. который из шаблона или шаблонов будет рисовать форму. я для проектирование мебли делал. то там было на толстом переписывал на тонкий. то вот рисовл. поле ввода и таблицу с параметрами. что было задано в параметре мебели
|
|||
14
klis
16.04.15
✎
22:40
|
(3)(8) Есть некоторые формы, экземпляры которых открываются произвольное количество раз (одновременно) с разными параметрами. В таких условиях, думаю, не прокатит. Генерить формы полностью динамически будет накладно...
(5) Нет у меня &НаКлиенте модуля обработки(( (12) Я это в (0) и предложил и как раз хотел бы уточнить, насколько это адекватно с точки зрения клиент-серверной философии) |
|||
15
Ma3eIIa
16.04.15
✎
22:41
|
(14) почему накладно ?
|
|||
16
Ma3eIIa
16.04.15
✎
22:41
|
тыкаешь что тебе надо. а по параметрам создаешь ее...
|
|||
17
Ma3eIIa
16.04.15
✎
22:42
|
что бы не делать. мега сложную и дурную форму. при том. там на n количестве она падала на 8.2
|
|||
18
RomanYS
16.04.15
✎
22:49
|
(15) потому что внутри каждой процедуру придется создавать эту общую форму, а это вызов сервера
Или есть способы хранить на клиенте экземпляр другой формы? |
|||
19
H A D G E H O G s
16.04.15
✎
22:53
|
(14) Генерить тонкие формы динамически вообще нельзя.
|
|||
20
H A D G E H O G s
16.04.15
✎
22:54
|
(18) Ты не поверишь.
|
|||
21
Лефмихалыч
16.04.15
✎
22:54
|
(0) если код общий, то накохер надо было разные формы делать? Объединяйте в одну форму со страничками да и всё
|
|||
22
H A D G E H O G s
16.04.15
✎
22:54
|
(21) Нельзя, загнется.
|
|||
23
Ma3eIIa
16.04.15
✎
22:56
|
(19) почему ? создание на сервере ? или я что то упустил
|
|||
24
Ma3eIIa
16.04.15
✎
22:56
|
(22) та да я ловил на 8.2
|
|||
25
Лефмихалыч
16.04.15
✎
22:59
|
(22) скуяли?
|
|||
26
Ma3eIIa
16.04.15
✎
22:59
|
(25) количество объектов. при более 40 падало
|
|||
27
Ma3eIIa
16.04.15
✎
23:00
|
(26) хотя видимость у 10-20. а ей пофиг
|
|||
28
H A D G E H O G s
16.04.15
✎
23:00
|
(25) Схерали.
|
|||
29
H A D G E H O G s
16.04.15
✎
23:01
|
(23) Кэширование на клиенте отключается тогда. Форма начинает гоняться при контекстных вызовах сервера.
|
|||
30
Fragster
гуру
16.04.15
✎
23:03
|
а что, разве в макет загнать обработку с формой с общими методами не получится?
|
|||
31
Ma3eIIa
16.04.15
✎
23:05
|
(30) +1 :)
|
|||
32
H A D G E H O G s
16.04.15
✎
23:05
|
(30) И дальше что?
|
|||
33
Ma3eIIa
16.04.15
✎
23:06
|
(29),(30) при создание создали и забыли. все остальное общие. где траблы ?
|
|||
34
Fragster
гуру
16.04.15
✎
23:06
|
(32)
ПриОткрытии ОбщаяФорма = ПолучитьФорму.. ОбработкаКоманды ОбщаяФорма.ЭкспортныйКлиентскийМетод(Параметры) |
|||
35
Ma3eIIa
16.04.15
✎
23:08
|
(34) та можно все. в менеджер запихнуть. ну ... вы че. и там определять что открывать и когда и при каких параметрах. ну ужас
|
|||
36
Ma3eIIa
16.04.15
✎
23:12
|
(35) опять мимо.... ну ладно. упустим менеджер. но идея такая же :) все живет на сервере и в шаблонах. при создание формы. все равно сидим на сервере. вот там все и создаем. клиент отображает. и все
|
|||
37
Ma3eIIa
16.04.15
✎
23:12
|
(36)
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) //Вставить содержимое обработчика КонецПроцедуры есть же такая штука.... |
|||
38
Лефмихалыч
16.04.15
✎
23:13
|
(36) вас там сколько за одним ником?
|
|||
39
Ma3eIIa
16.04.15
✎
23:14
|
(38) пока не плодились,а что?
|
|||
40
klis
16.04.15
✎
23:15
|
(21) Не код общий, а одинаковые механизмы. Самый тупой пример (выдуманный): есть процедура, которая умножает цену на количество и помещает результат в сумму по строке табличной части. Если есть колонка "Скидка", то и ее учитывает, но ее может и не быть. Могут быть разные формы - Товары, Услуги и т.п., но сумма у всех считается одинаково. Я вот про такой случай. А потом если вдруг хочу добавить, например, комиссию в расчет, мне надо по всем формам размножать это изменение вручную вручную.
|
|||
41
Ma3eIIa
16.04.15
✎
23:16
|
(38) пока не Амёба
|
|||
42
Ma3eIIa
16.04.15
✎
23:16
|
(40) а что с обработки это нельзя получить с сервера ?
|
|||
43
Ma3eIIa
16.04.15
✎
23:18
|
НаСервере
Функция пМакет() Возврат РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет"); КонецФункции и все будет работать,а вы тут сказки |
|||
44
Ma3eIIa
16.04.15
✎
23:18
|
(43) а тут .ПолучитьМакет("Макет"); ваше нужное...
|
|||
45
Лефмихалыч
16.04.15
✎
23:18
|
(40) то, что ты описываешь, хранить во внешней обработке как-то не логично. Ну, а ежели уж решил хранить, то не хнычь, т.к. у тебя только два варианта - промышленная копипаста или дополнительная форма без элементов и с туевой хучей экспортных методов.
ЗЫ Но мне даже отсюда видно, что это уже сейчас тормозит и глючит |
|||
46
Лефмихалыч
16.04.15
✎
23:20
|
(42) в функции может передаваться то, чего на сервере не существует и что туда передать технически не возможно. По этому ему нужен общий код &НаКлиенте
|
|||
47
klis
16.04.15
✎
23:24
|
(45) Спасибо за заботу, но я вроде не хныкал) Я как раз эти же оба варианта в (0) и расписал. Первый реализуется сейчас, второй пришел в голову в момент написания поста и я вот пытаюсь поинтересоваться, насколько он адекватен)
(42) См. (46) Да, Я говорю чисто про клиентский код. |
|||
48
Fragster
гуру
16.04.15
✎
23:25
|
кстати, кто-нибудь знает, как правильно с данныеформыколлекция (таблица, дерево) работать во внеконтекстном вызове правильно? только перегонять в структуру со структурами и обратно?
|
|||
49
Лефмихалыч
16.04.15
✎
23:28
|
(48) на кой кол во внеконтекстном вызове данныеформыколлекция? ИМХО, весь смысл внеконтекстности теряется, когда ты начинаешь мегатонны данных на сервер гонять руками.
|
|||
50
RomanYS
16.04.15
✎
23:31
|
(20) как именно?
(34) не работает без уточнения, что там "ОбщаяФорма" |
|||
51
RomanYS
16.04.15
✎
23:55
|
(50) как в контексте формы хранить экземпляр другой формы?
- переменные формы не работают - для реквизита формы нет подходящего типа - во временное хранилище не засунешь - нет представления (20) скажи как - может всё таки поверю |
|||
52
klis
17.04.15
✎
00:08
|
(51) Переменные не нужны, нужны только методы. Эдакая эмуляция модуля менеджера.
|
|||
53
RomanYS
17.04.15
✎
00:12
|
(52) понятно, что нужны методы
Только как обойтись без создания этой общей формы при каждом вызове команды? Каждый раз создавать форму = вызов сервера. |
|||
54
Euguln
17.04.15
✎
00:21
|
В порядке бреда: код в макет и Выполнить()
|
|||
55
H A D G E H O G s
17.04.15
✎
00:32
|
(53) Засунуть в глобальную переменную модуля формы реципиента
|
|||
56
RomanYS
17.04.15
✎
08:10
|
(55) проверил первым делом - не работают глобальные переменные формы. Даже экспортные, 8.2 УФ.
Перем ОбщаяФорма Экспорт; &НаКлиенте Процедура Команда1(Команда) Сообщить(ОбщаяФорма._1()); КонецПроцедуры &НаКлиенте Процедура ПриОткрытии(Отказ) ОбщаяФорма = ПолучитьФорму("ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма1"); КонецПроцедуры {Форма.Форма.Форма(5,11)}: Переменная не определена (ОбщаяФорма) Сообщить(<<?>>ОбщаяФорма._1()); (Проверка: Тонкий клиент) |
|||
57
Ник080808
17.04.15
✎
09:12
|
(56) реквизит формы?
|
|||
58
klis
17.04.15
✎
11:21
|
(56)
А если так? &НаКлиенте Перем ОбщаяФорма; |
|||
59
H A D G E H O G s
17.04.15
✎
11:27
|
(58) Не все опытные погроммисты 1С читают СП.
|
|||
60
H A D G E H O G s
17.04.15
✎
11:28
|
Это относится к (56) (57)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |