Имя: Пароль:
1C
 
Управляемые формы, как правильно писать код
0 Midaw
 
16.05.11
12:58
На форме есть программно-созданная кнопка. При нажатии на кнопку в зависимости от её имени определяется логика работы. Один из вариантов при нажатии выдается пользователю диалог на сохранение файла. Возможная реализации алгоритма с проблемой:
1. На сервере выполняется определение логики работы в зависимости от имени (выполнимо только на сервере, на клиенте не работает получение свойства "Заголовок" у объекта "КомандаФормы").
2. Далее на клиенте выполняется вывод диалога пользователю (!ПРОБЛЕМА, переход из серверной в клиентскую процедуру выдает ошибку!).
---
Тогда пишем алгоритм заново начиная с начала:
1. На клиенте вызываем серверную процедуру с передачей параметра "КомандаФормы" для определения логики. (!ПРОБЛЕМА, передача параметра "КомандаФормы" невозможен!)

Так как же правильно и красиво расписать такую логику?
1 acsent
 
16.05.11
12:59
>>При нажатии на кнопку в зависимости от её имени определяется логика работы
Так нельзя
2 Midaw
 
16.05.11
13:01
(1) а что ещё нельзя и как можно, нужно?
3 Stimcool
 
16.05.11
13:03
(1) скажи это разработчикам РМК Розницы
4 mikecool
 
16.05.11
13:04
почитай Радченко Коротко о главном
5 Asmody
 
16.05.11
13:06
(0) у КомандаФормы есть Имя. даже у программносоданных
6 Midaw
 
16.05.11
13:08
(3) они это реализовали?
(4) есть книга, но не коротко. прийдется читать )
(5) думаешь оно будет передаваться?
7 Midaw
 
16.05.11
13:10
чего только стоило сделать отбор в динамическом списке по владельцу. реально интерфейс у 8.2 кривой )
8 Stimcool
 
16.05.11
13:12
(6)1. Да. У них на форме одна эталонная кнопка, при открытии добавляются кнопки-клоны со своими именами. В зависимости от имени нажатой кнопки происходит то или иное событие
9 Midaw
 
16.05.11
13:15
(8) имя на клиенте легко получается из команды, в отличии от заголовка. вроде уже что-то получается )
10 Defender aka LINN
 
16.05.11
13:18
Внимание, вопрос: если пользователь нажал кнопку, не она ли будет текущим элементом формы?
11 Midaw
 
16.05.11
13:22
(10) как то не привычно определяет активный элемент или нет, если передается "КомандаФормы". я лучше их сделаю по одной на каждую кнопку )))

следующая проблема вот эта хрень на клиенте не работает ))) такое чувство что кодируешь на минном поле...

СправочникСсылка.<Имя справочника> (CatalogRef.<Имя справочника>)
<Имя табличной части> (<Tabular section name>)
Использование:
Только чтение.
Описание:
Тип: СправочникТабличнаяЧасть.<Имя справочника>.<Имя табличной части>. Набор свойств содержит табличные части справочника. Доступ к табличной части осуществляется по имени, как оно задано в конфигураторе.

Доступность:
Сервер, толстый клиент, внешнее соединение.
12 Midaw
 
16.05.11
13:24
(11) что собственно и понятно, нефиг тонкому клиенту получать табличные части :)
13 Defender aka LINN
 
16.05.11
13:25
(12) Именно. А что ты с ней делать-то собрался?
14 Midaw
 
16.05.11
13:29
(13) не поверишь, это тоже параметры для выполнения нажатия кнопки ) надеюсь таблицазначений будет передана
15 Midaw
 
16.05.11
13:30
(14) не будет... доступность ТЗ
Доступность:
Сервер, толстый клиент, внешнее соединение.
16 Defender aka LINN
 
16.05.11
13:35
(14) Ну выполняй на сервере, какие проблемы?
17 Asmody
 
16.05.11
13:38
чья-то неспособность использовать мощнейший инструмент правильно не делает последний плохим.
18 Aleksey
 
16.05.11
13:43
(17) Если инструмент ниразу не интуитивно понятный - то это не делает его хорошим
19 Defender aka LINN
 
16.05.11
13:45
(18) Для управления машиной имеются: руль, педали (3), переключатели на руле (2), рычаг коробки переключения передач, который имеет 5-6 положений. Как этим всем пользоваться, интуитивно непонятно. Отсюда вывод - автомобиль - хреновый инструмент, лошадь - наше все.
20 Midaw
 
16.05.11
13:47
(17) тем не менее 8.0-8.1 меня только радовал ))) а тут хоть и понятно, что могут быть проблемы с передачей параметров. так ещё интерфейс явно не дружелюбный. чего только стоит совмещение формы, реквизитов, команд и все с кучей вкладок ) должно быть проще! )))
21 Midaw
 
16.05.11
13:51
так, кто нибудь подскажет. переменные в модуле это серверные или клиентские переменные? )
22 ZDenis
 
16.05.11
14:01
(21) В модуле формы - как напишешь
23 Asmody
 
16.05.11
14:32
(18) вам бы перфоратор в руки или болгарку в ноги...
24 Aleksey
 
16.05.11
14:36
(19) Поэтому я езжу на автомате. там всего 2 педали, и 3 положения у ручки (вперед, назад, паркковка)
25 Defender aka LINN
 
16.05.11
14:53
(24) Пропустил еще как минимум 3, а то и 4, от коробки зависит.
Еще есть N, L, 2, может быть 4. А если типтроник, то еще 2 прибавляются. Никакой интуиции не напасешься :)
26 Defender aka LINN
 
16.05.11
14:53
*может быть 4 = может быть 3
27 Reaper_1c
 
16.05.11
14:58
подсос петрович... так сложно передать из клиента на сервер имя активного элемента управления, аж жуть.
28 Midaw
 
16.05.11
15:16
(27) уже выяснили, можно 22 доставать
29 Midaw
 
16.05.11
15:43
следующий вопрос. как реализовать в тонком клиенте:

Форма = Справочники[Элем.ПолеВыбора].ПолучитьФормуВыбора();
Выбрано = Форма.ОткрытьМодально();
30 Smallrat
 
16.05.11
15:52
Форма = ПолучитьФорму("Справочник.Контрагенты.ФормаВыбора", , ЭтаФорма, Ключ);
РезультатВыбора = Форма.ОткрытьМодально();
31 Midaw
 
16.05.11
15:57
(30)
Доступность:
Толстый клиент.
32 eromanov
 
16.05.11
15:58
Если я не ошибаюсь РМК в Рознице под тонким работать не должно, только толстый
33 Smallrat
 
16.05.11
15:59
(30)
Глобальный контекст.ПолучитьФорму (Global context.GetForm)
Глобальный контекст (Global context)
ПолучитьФорму (GetForm)
Синтаксис:

ПолучитьФорму(<ИмяФормы>, <Параметры>, <Владелец>, <Уникальность>, <Окно>)
Параметры:

---бла-блабла

Возвращаемое значение:

Тип: Форма; УправляемаяФорма.

Описание:

Получает форму или управляемую форму. Перед получением осуществляется поиск уже открытой такой же формы.
Поиск осуществляется по типу формы, значениям ключевых параметров формы, владельцу формы, пользовательскому ключу уникальности.
Если в параметре <Уникальность> передано значение Истина, то поиск уже открытых форм не осуществляется.

Доступность:

Тонкий клиент, веб-клиент, толстый клиент.
Вызов метода выполняет обращение к серверу.
34 Midaw
 
16.05.11
16:05
(33) работает, уже проверил ) спс. ещё тут разобрался с написанием Элементы.Список.ТекущиеДанные...
35 Smallrat
 
16.05.11
16:05
(0) А насчет зависимости от имени логики - непонятно в чем проблема.

&НаКлиенте
Процедура ПоказатьБланк(Команда)
   Если Команда <> Неопределено Тогда
       Печать(Команда.Имя);
   КонецЕсли;
КонецПроцедуры
36 Midaw
 
16.05.11
16:07
(35) проблема была в том, что на клиенте запрещено обращаться к свойству Заголовок. зато к имени можно и все становиться замечательно )
37 Midaw
 
16.05.11
16:10
я тут CRM Рарусовский немного мучал на управляемых формах. впечатления, на УФ можно сделать всё ))) поэтому ничего меня не остановит, главное не изобретать велосипед.
38 Midaw
 
16.05.11
16:15
кстати таблицу значений научился передавать с сервера ))) выглядит это ужасно ))) короче получается в виде списка значений с элементами типа "структура"...
39 Defender aka LINN
 
16.05.11
16:25
(38) Ну, молодец. А для нахрена ты ее передал?
40 Midaw
 
16.05.11
16:31
(39) надо, нетленка нестадартная.
41 Defender aka LINN
 
16.05.11
16:37
(40) Я понимаю, что написана криво. Но для нафига туда-сюда обратно гонять данные?
42 Midaw
 
16.05.11
16:54
(41) есть некий конструктор меню. для данного конструктора есть много параметров. вот они и тянутся для выполнения пункта меню. не тяни с меня больше подробностей )
43 Defender aka LINN
 
16.05.11
19:25
(42) Да мне пофигу, что у тебя делается. Зачем ты формируешь таблицу на сервере, преобразуешь ее в это угробище, потом передаешь на клиента и тут же отсылаешь обратно на сервер?
44 Midaw
 
17.05.11
09:00
(42) мне нужна табличная часть изначально
45 Defender aka LINN
 
17.05.11
09:01
(44) Ну, нужна - хорошо. Кто запрещает ее передать в вызываемую форму так, как это положено делать?
46 Midaw
 
17.05.11
09:02
(45) динамическим списком?
47 Defender aka LINN
 
17.05.11
09:05
(46) О_о Ты сам-то себе это как видишь?

Временное хранилище для таких вещей предназначено
48 Midaw
 
17.05.11
09:07
(47) непонял, а хранилище здесь зачем? )
49 Defender aka LINN
 
17.05.11
09:19
(48) При том, что именно оно предназначено для временного хранения данных на сервере, как ни парадоксально. И можно (а в твоем случае так даже нужно) в него сохранить эту твою ТЗ и прочее, что доступно только на сервере, и потом восстановить в вызываемой форме.
50 Midaw
 
17.05.11
09:21
(49) в тонком клиенте нельзя обращаться к ТЗ. через хранилище или ещё как то передавать его бесполезно. именно поэтому все передается в списках и структурах, ибо иначе тонкий клиент шлёт нафиг.
51 Defender aka LINN
 
17.05.11
09:23
(50) Мне слова "на сервере" большими буквами написать и с буффонами вокруг них попрыгать?
52 Midaw
 
17.05.11
09:29
(51) так мне тз использовать надо на клиенте, ключевое ))) если бы задача была передать сервер-клиент-сервер, то проблем бы не было и с обычными типами
53 Asmody
 
17.05.11
09:30
(51) ну не хочет человек книжки читать, все думает методом тыкал как раньше обойтись
54 Midaw
 
17.05.11
09:34
(53) читаю уже ) но пытаюсь и вас понять... пример чтоли нарисуйте.
55 Midaw
 
17.05.11
09:35
я как бы по теме уже все сделал давно. но что предлагается хотелось бы все таки понять ) вдруг чего упустил
56 Asmody
 
17.05.11
09:47
(55) основные моменты уже рассказали: гонять туда-сюда надо как можно меньше, как можно реже, пользоваться врменным хранилищем. И вообще, УФ требуют понимания не только того, ЧТО ты хочешь сделать, но и КАК это будет работать.
Еще для понимания концепций, рекомендую ознакомиться с тем,как устроены современные веб-приложения, в частности,  с технологией ajax, асинхронными вызовами и веб-сокетами. Это очень близко к тому, что происходит в УФ.
57 Midaw
 
17.05.11
09:50
(56) php знаю, протокол http подробно тоже знаю. помоему меня вынуждают описать цель данных извращений, а я не готов обсуждать нетленку :)
58 Asmody
 
17.05.11
09:52
(57) знание языков и протоколов не при чем. важно понимание концепций
59 Midaw
 
17.05.11
10:31
(58) изучим ajax

новая проблема. как сделать отбор в табличной части на форме. как в динамическом списке делается я знаю или нужно изобразить табличную часть в виде динамического списка?
60 Midaw
 
17.05.11
10:47