|
Чем принципиально отличается код? | ☑ | ||
---|---|---|---|---|
0
Волчара2010
08.04.13
✎
17:38
|
Недавно была тема по поводу РеквизитФормыВЗначение("Объект").
Задумался и действительно возникли сомнения. Фирма 1С в великих книгах рекомендует все серьезные дела с формой делать через РеквизитФормыВЗначение("Объект"). А какой в этом приципиальный смысл, когда все дела можно делать так же успешно внутри модуля формы? Привожу варианты (что в первом, что во втором одинаковое количество вызовов сервера): //********************************************** Вариант №1: &НаКлиенте Процедура Команда2(Команда) Команда2Моя(); КонецПроцедуры Процедура Команда2Моя() ОбработкаОбъект = РеквизитФормыВЗначение("Объект"); ОбработкаОбъект.МояПроце(); ЗначениеВРеквизитФормы(ОбработкаОбъект,"Объект"); КонецПроцедуры //********************************************** Вариант №2: &НаКлиенте Процедура Команда1(Команда) Команда1НаСервере(); КонецПроцедуры Процедура Команда1НаСервере() Команда2НаСервере(); КонецПроцедуры Процедура Команда2НаСервере() Команда3НаСервере(); КонецПроцедуры Процедура Команда3НаСервере() КонецПроцедуры Какая тут принципиальная разница? |
|||
1
ilpar
08.04.13
✎
17:46
|
Сам понял что написать то хотел?
2 разных кода... |
|||
2
ilpar
08.04.13
✎
17:47
|
и на сервер нигде не ушел.
может что-то и работает, но написал бредово. что хотел то? |
|||
3
Волчара2010
08.04.13
✎
17:47
|
(2) для одаренных поясню:
нафига нужно делать так? ОбработкаОбъект = РеквизитФормыВЗначение("Объект"); ОбработкаОбъект.МояПроце(); ЗначениеВРеквизитФормы(ОбработкаОбъект,"Объект"); |
|||
4
ilpar
08.04.13
✎
17:48
|
учить тебя методам не буду
РеквизитФормыВЗначение учись сам |
|||
5
Волчара2010
08.04.13
✎
17:49
|
(4) нафига это писать, когда все проблемы можно решить внутри модуля формы?
|
|||
6
ilpar
08.04.13
✎
17:49
|
видео материала полно...литературы
ан нет - не помогает |
|||
7
Сниф
08.04.13
✎
17:51
|
(3) а кто сказал, что так нужно делать? Метод обработки вызывай откуда хочешь.
|
|||
8
Волчара2010
08.04.13
✎
17:51
|
(6) я так и пишу по привычке, используя РеквизитФормыВЗначение("Объект");
Но нафига это писать, когда все эти же проблемы можно решить путем вызова сервера внутри модуля формы? |
|||
9
Зойч
08.04.13
✎
17:52
|
Телепатирую вопрос: Зачем размещать процедуры в модуле объекта
|
|||
10
fisher
08.04.13
✎
17:54
|
(9) +1
Очевидный ответ на правильно телепатированный вопрос - если этот функционал имеет право/необходимость существовать без формы. |
|||
11
Волчара2010
08.04.13
✎
17:54
|
(9) Действительно. Нафига мне помещать процедуру пересчета табличной части в модуле объекта, а потом лезть туда с помощью трех строк:
ДокОбъект = РеквизитФормыВЗначение("Объект"); ДокОбъект .ПересчетТабличнойЧасти(); ЗначениеВРеквизитФормы(ДокОбъект ,"Объект"); Зачем это делать, когда все решается и так внутри модуля формы документа. Вызвал серверную процедуру и все что надо пересчитал. |
|||
12
Волчара2010
08.04.13
✎
17:56
|
(10) в руководстве разработчика смотрел - не сказано это, в СП тоже не говорится, что смысл есть только тогда, когда надо обратиться к экспортной процедуре модуля объекта.
|
|||
13
Bober
08.04.13
✎
17:57
|
(5) (11) в твоих задачах может все и решается в модуле формы.
В реальных задачах нужно, чтобы было в модуле объекта. |
|||
14
Сниф
08.04.13
✎
17:57
|
(11) ИМХО, данные в объекте и в форме будут разными.
|
|||
15
vii88
08.04.13
✎
17:57
|
(12) да, это так
|
|||
16
Волчара2010
08.04.13
✎
17:58
|
(13) > В реальных задачах нужно, чтобы было в модуле объекта.
Какой в этом смысл, если я не собираюсь использовать эти процедуры как экспортные в других местах? |
|||
17
fisher
08.04.13
✎
17:58
|
(12) Тебе все образчики здравого смысла в СП засунуть надо? Чтоб ты на него молился мог?
|
|||
18
Bober
08.04.13
✎
17:59
|
(16) чтобы вдохновить тебя, вот пример: у документа две формы объекта (для разных людей по разному сгруппированы данные), но расчетные алгоритмы те же.
|
|||
19
vii88
08.04.13
✎
17:59
|
в модуле объекта только экспортные и стандартные обработчики
|
|||
20
Зойч
08.04.13
✎
17:59
|
(16) ты можешь писать как хочешь, но правилом хорошего тона есть разделение функционала на работу с данными и отображением
|
|||
21
Волчара2010
08.04.13
✎
18:03
|
(18) да, вдохновил :)
|
|||
22
fisher
08.04.13
✎
18:03
|
(20) "Работа с данными" - это ни о чем. Если алгоритм обработки данных связан с дальнейшим специфическим отображением на форме, это что? "Отображение"?
|
|||
23
Зойч
08.04.13
✎
18:03
|
(22) правильно РАЗДЕЛЯТЬ, а не все в одну кучу
|
|||
24
Зойч
08.04.13
✎
18:04
|
(22) те должно быть
Данные = Объект.ПодготовитьДанные() ОтобразитьДанные(Данны) |
|||
25
Зойч
08.04.13
✎
18:05
|
Еси ты так пишешь, то сразу видно - ты крутой спец
|
|||
26
GROOVY
08.04.13
✎
18:06
|
"Фирма 1С в великих книгах рекомендует все серьезные дела с формой делать через РеквизитФормыВЗначение("Объект"). " Приведи пример. Я вот не видел в великих книгах подобных рекомендаций.
|
|||
27
fisher
08.04.13
✎
18:06
|
(24) О как. И нафига мне в модуле объекта алгоритм, который имеет смысл только в конкретной форме?
|
|||
28
Bober
08.04.13
✎
18:06
|
||||
29
fisher
08.04.13
✎
18:09
|
(27) + Типа крутые спецы пишут так в модуле объекта:
ПодготовитьДанныеДляФормыДядяВася()? |
|||
30
DS
08.04.13
✎
18:11
|
(26) В ИТС есть.
|
|||
31
fisher
08.04.13
✎
18:12
|
(30) Пару слов из названия статьи не припомнишь?
|
|||
32
DS
08.04.13
✎
18:17
|
1. "Использование РеквизитФормыВЗначение и ДанныеФормыВЗначение";
2. "Использование РеквизитФормыВЗначение и ДанныеФормыВЗначение" от 13.10.2010 |
|||
33
DS
08.04.13
✎
18:18
|
*2. "Как выполнить экспортируемую процедуру объекта, находясь в его форме?" от 13.10.2010.
|
|||
34
Aleksey
08.04.13
✎
18:19
|
||||
35
Зойч
08.04.13
✎
18:20
|
текст рекомендации приведи
|
|||
36
fisher
08.04.13
✎
18:20
|
(33) Вот эту статью нахожу. Только где в ней "Фирма 1С в великих книгах рекомендует все серьезные дела с формой делать через РеквизитФормыВЗначение("Объект")"?
Там описан единственный способ выполнить экспортируемую процедуру объекта, находясь в его форме. |
|||
37
Defender aka LINN
08.04.13
✎
18:21
|
(33) Экспортную процедуру иначе не выполнишь, факт. Только где *рекомендации* так делать?
|
|||
38
DS
08.04.13
✎
18:22
|
Надеюсь не получу по башке. Цитата:
"Использование РеквизитФормыВЗначение и ДанныеФормыВЗначение В большинстве случаев, в модулях форм следует использовать метод формы РеквизитФормыВЗначение вместо метода ДанныеФормыВЗначение. Рекомендация обусловлена соображениями унификации прикладного кода и тем, что синтаксис метода РеквизитФормыВЗначение проще, чем у ДанныеФормыВЗначение (а следовательно, меньше вероятность ошибки). В ДанныеФормыВЗначение необходимо дополнительно передавать тип значения: Копировать в буфер обмена ТаблицаПодписей = ДанныеФормыВЗначение(ТаблицаПодписей, Тип("ТаблицаЗначений")); а для РеквизитФормыВЗначение это не обязательно, а в практическом плане - избыточно: Копировать в буфер обмена ТаблицаПодписей = РеквизитФормыВЗначение("ТаблицаПодписей"); Наличие в платформе 1С:Предприятие метода формы РеквизитФормыВЗначение (наряду с методом глобального контекста ДанныеФормыВЗначение) объясняется только удобством его применения. С точки зрения эффективности и результата методы работают одинаково." |
|||
39
Зойч
08.04.13
✎
18:24
|
рекомендация ваще не про то. Просто они сделали 2 одинаковых метода
|
|||
40
fisher
08.04.13
✎
18:24
|
(38) Ыыыы!
"следует использовать метод формы РеквизитФормыВЗначение вместо метода ДанныеФормыВЗначение". Ясень пень! Он же проще в использовании и конкретнее, чем ДанныеФормыВЗначение :) |
|||
41
DS
08.04.13
✎
18:28
|
Я же не говорю о том, что есть буквальные рекомендации "все серьезные дела с формой делать через РеквизитФормыВЗначение("Объект")".
Но давайте не придираться к словам. Мне тоже такой способ кажется не кошерным, но вариантов не много, а точнее - один. Соответственно... |
|||
42
fisher
08.04.13
✎
18:31
|
За других не скажу, а лично я по дефолту все алгоритмы связанные с формой реализую в модуле формы. Как связанные с обработкой данных, так и с отображением.
Просто когда пишу очередную серверную функцию без контекста, я прикидываю - может ли она пригодиться за пределами формы для этого объекта? Если да - тогда выношу в модуль объекта. |
|||
43
fisher
08.04.13
✎
18:34
|
(42) + А иногда можно подумать еще раз и вынести в модуль менеджера объекта.
|
|||
44
Зойч
08.04.13
✎
18:36
|
(42) почему без контекста то????
|
|||
45
fisher
08.04.13
✎
18:41
|
(44) Потому что для контекстных вопрос не стоит.
|
|||
46
Зойч
08.04.13
✎
18:44
|
как раз для контекстных и есть модуль объекта
|
|||
47
fisher
08.04.13
✎
18:52
|
(46) Я давно подозревал, что мы из разных вселенных.
|
|||
48
Defender aka LINN
08.04.13
✎
19:06
|
(46) w00t?
|
|||
49
GROOVY
08.04.13
✎
19:22
|
(48) Видимо у нас с (46) разное понятие "контекст".
|
|||
50
Нуф-Нуф
08.04.13
✎
19:26
|
те процедуры и функции, работа которых требуется только в форме - находятся в модуле формы. те процедуры которые изменяют объект (не важно откуда, из формы или из обработок) - находятся в модуле объекта.
о чем автор спорит? |
|||
51
Defender aka LINN
08.04.13
✎
19:30
|
(50) процедуры которые изменяют объект (не важно откуда, из формы или из обработок) - находятся в модуле МЕНЕДЖЕРА
|
|||
52
DS
08.04.13
✎
19:33
|
(50) Спор глухого со слепым.
- Те процедуры, которые используются только в форме, должны находиться в модуле формы!!! - Да нет, ты не прав, те процедуры, которые используются и в форме и не в форме, должны находиться в модуле объекта!!! |
|||
53
Gorgol
08.04.13
✎
19:51
|
Если посмотреть с точки зрения ООП, то модуль формы - это то, что происходит внутри класса, модуль объекта позволяет работать с конкретным экземпляром класса, модуль менеджера позволяет работать не с конкретным экземпляром, а со всеми.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |