|
Для спецов по платформе. Модуль менеджера объекта. | ☑ | ||
---|---|---|---|---|
0
Ork
26.04.12
✎
19:53
|
С недавних пор в метаданных появились модули менеджеров.
Описалово с диска ИТС : " ...Позволяет описать методы для объекта конфигурации ... которые относятся ... к самому объекту конфигурации. Например в модуле менеджера справочника Контрагенты может быть описана экспортная функция ПолучитьСписокДебиторов(). " Теперь собственно вопрос : будет ли классово, религиозно и прочая... верным отказаться от общих модулей типа "Валюты", "Пользователи"... и унести их функциональность в модули менеджеров соответствующих справочников? |
|||
1
Vladal
26.04.12
✎
19:54
|
Для того их и создавали.
Чтобы не плодить общих модулей. ИМХО, |
|||
2
Ork
26.04.12
✎
19:55
|
(1) Где эти "новые веяния" в типовых?
|
|||
3
Длинный Клиент
26.04.12
✎
20:14
|
(2) Вот сегодня отлаживал "Реализацию..." в "УПП", в модуле менеджера там, например, печать "Торг 12".
|
|||
4
Длинный Клиент
26.04.12
✎
20:15
|
(2) сорри, туплю, не прочитал вопрос :)
|
|||
5
Лефмихалыч
26.04.12
✎
20:25
|
(0) будет. Оно для того и придумано
|
|||
6
echo77
26.04.12
✎
20:29
|
из менеджера объекта потом можно будет вызвать экспортную процедуру/функцию не создавая экземпляр объекта?
|
|||
7
Лефмихалыч
26.04.12
✎
20:31
|
(6) да, в этом и смысл модуля менеджера
|
|||
8
Плот
26.04.12
✎
20:31
|
(6) Не совсем понял, как не создавая экземпляр?
|
|||
9
Плот
26.04.12
✎
20:33
|
(7) По сути это общий модуль, только он "прилеплен" к объекту?
|
|||
10
Лефмихалыч
26.04.12
✎
20:33
|
(8) Документы.ОтчетОПропажах.Печать(Ссылка, ИмяПечатнойФормы);
|
|||
11
echo77
26.04.12
✎
20:34
|
(8) Это значит не делая так:
ДокументОбъект = Документы.РеализацияТоваровУслуг.СоздатьДокумент() |
|||
12
Плот
26.04.12
✎
20:35
|
(10) Прикольно :-)
спс |
|||
13
echo77
26.04.12
✎
20:35
|
(10) ОтчетОПропажах - это вид документа конфигурации "Бюро находок" :-) или тупо опечатка? :-)
|
|||
14
Плот
26.04.12
✎
20:36
|
(11) спс
(13) Наверное хотел написать Продажи |
|||
15
Лефмихалыч
26.04.12
✎
20:37
|
вам, господа, чувства юмора в этом месяце не выдавали или в прошлом перерасход случился?
|
|||
16
Defender aka LINN
26.04.12
✎
20:39
|
(14) Это юмор, вообще-то. Знакомо значение слова? :)
|
|||
17
jsmith
26.04.12
✎
20:57
|
(13)(14) жгёте
|
|||
18
Mort
26.04.12
✎
21:09
|
Справочник.Валюты и общий модуль управления валютами "Валюты" это две большие разницы на абстрактном уровне.
|
|||
19
Mort
26.04.12
✎
21:10
|
(18) Например, функция получения курсов валют. Причем тут справочник?
|
|||
20
Defender aka LINN
26.04.12
✎
22:37
|
(19) потому что без собственно справочника валют она бесполезна, не?
|
|||
21
Лефмихалыч
26.04.12
✎
22:40
|
(18) а, если не секрет, что ты сейчас поимел в виду под абстрактным уровнем такого, из чего следует (19)?
|
|||
22
xReason
26.04.12
✎
22:41
|
по сути это отдельный модуль, но очень хорошо запихнутый по неймспейсу в нужное место.
рекомендуется к использованию Общие модули это вообще атавизм программирования |
|||
23
Злопчинский
26.04.12
✎
22:48
|
"Общие модули это вообще атавизм программирования" -хз.. я слаб в 8-ке... но вот куда по 8-ой идеологи и следует положить функцию/процедуру, которая возвращает размер "рюкзака"..? например - подбоп товара на паллету с ограничением по вместимости? подобор суммы под требуемую?
|
|||
24
mikecool
26.04.12
✎
22:48
|
я, например, для тонкого клиента не нашел места для функции, которая должна быть доступна как из формы документа, так и из модуля - только менеджер объекта
|
|||
25
Лефмихалыч
26.04.12
✎
22:51
|
(23) из того, что в 1С - больше некуда, не следует, что ОМ - это не атавизм
|
|||
26
xReason
26.04.12
✎
22:54
|
(23) Положить ее надо в класс рюкзак , что бы всегда знать в каком объекте ее найти
не кажется ли вам логично, что функция размер рюкзака лежит в рюкзаке? |
|||
27
zak555
26.04.12
✎
22:55
|
(26) а функция сумки в сумке ?
полиморфизмом пахнет |
|||
28
xReason
26.04.12
✎
22:57
|
(27) а почему бы и нет?
|
|||
29
zak555
26.04.12
✎
22:58
|
(28) в каждом тогда модуле менеджера будет вызов функции из ОМ =)
|
|||
30
xReason
26.04.12
✎
23:01
|
(29) зачем?
|
|||
31
zak555
26.04.12
✎
23:09
|
(30) код зачем повторять
|
|||
32
kotletka
26.04.12
✎
23:30
|
(26)в Зиуп расчет по начислениям для нескольких доков, предлагаете из ОМ перетаскивать в модуль менеджера каждого дока? обработчики ТЧ аналогично во всех типовых, установка субконто в бухии, тоже предлагаете из ОМ для каждого дока копипастить?
|
|||
33
АцкийЖипер
27.04.12
✎
00:11
|
Модуль менеджера создан для расширения встроенного языка. В нем мы можем экспортной функцией определить собственный метод (он автоматически появится в методах объекта), который будет доступен в глобальном контексте, то есть можем получить его "через точку" в любом месте конфигурации не создавая объекта.
(1) Никак не может заменить общие модули, в нем ничего кроме процедур и функций быть не должно, ни переменных, ни тела модуля. |
|||
34
jsmith
27.04.12
✎
00:49
|
в ж0пу общие модули, даёшь статические классы и ООП в 1с
валим процедурщиков толстой метлой |
|||
35
Steel_Wheel
27.04.12
✎
01:07
|
в 1с появились статические методы классов
|
|||
36
Torquader
27.04.12
✎
01:16
|
Только удобство переноса общих функций вместе с объектом из одной конфигурации в другую.
|
|||
37
Godofsin
27.04.12
✎
05:17
|
(33) дас ис фантастиш!
|
|||
38
badboychik
27.04.12
✎
05:40
|
а по моему модули менеджеров всегда были
|
|||
39
badboychik
27.04.12
✎
05:42
|
я еще года полтора назад примерно писал в модуле менеджера справочника функции всякие
|
|||
40
МастерВопросов
27.04.12
✎
05:45
|
Так это же б0ян приб0ян!
http://blog.zfilin.org.ua/2010/05/1_25.html "Снова статические методы классов в 1С Я совершенно напрасно переживал по поводу статических методов классов, которых мне (и не только мне) так не хватает. В версии 1С 8.2 у объектов метаданных есть "Модуль менеджера" и функции описанные в нем фактически и являются статическими методами классов. Во всяком случае их можно так использовать. Те, кто все понял, дальше могут не читать, с остальными давайте разберемся подробнее." |
|||
41
МастерВопросов
27.04.12
✎
05:47
|
||||
42
Ненавижу 1С
гуру
27.04.12
✎
06:21
|
хрень все, нужен был модуль ссылки,
кто так пишет 21 веке? ПолучитьКурс(Ссылка,Дата) православный стиль Ссылка.ПолучитьКурс(Дата) а для этого нужен модуль ссылки |
|||
43
Ненавижу 1С
гуру
27.04.12
✎
06:23
|
(40)_ мааленькое незначительное отличие от статических
обычно из методов объекта к статическим можно обращаться непосрдественно по имени, в 1С 8.2 все же придется перед именем явно писать имя менеджера |
|||
44
Александр_
Тверь 27.04.12
✎
08:59
|
Опа... 1С оказывается внедрила статические методы... круто.
|
|||
45
Mort
27.04.12
✎
09:10
|
(20) Без справочника валют половина программы бесполезна. Это не значит что надо эту половину пихать в модуль менеджера справочника валюты. И почему именно справочника? Почему не в регистр курсов валют? У него тоже есть модуль менеджера, чем он хуже?
(21) О том что там должны быть функции именно Этого справочника, а не некоторой системы объединяющей справочник, регистр сведений и т.п. |
|||
46
Torquader
27.04.12
✎
09:20
|
(42) Чтобы так писать - нужно иметь наследование.
Так как ПолучитьКурс(Ссылка,...) будет вызываться даже если ссылка=Неопределено, и эту ситуацию мы должны разрулить уже внутри функции. В случае же вызова через точку система выдаст ошибку, так как ссылка не определена. Другое дело, что хотелось быть иметь объекты с наследуемыми свойствами, чтобы можно было определить функцию для одного объекта, а для остальных - наследовать (то есть иметь прототипы классов). |
|||
47
Serg_1960
27.04.12
✎
09:23
|
Спор остроконечников с тупоконечниками :)
|
|||
48
Ork
27.04.12
✎
09:31
|
По итогам обсуждения пришел к такому заключению:
по-сути общий модуль от модуля менеджера отличается только местом хранения (с точки зрения разработчика приложения) и способом вызова (нужно/не нужно указывать "класс"). Получается достаточно удобная штука. Функциональность, которую проблематично логически связать с одним объектом метаданных - желательно ложить в общий модуль. Функциональность, которую можно связать с конкретным объектом - в модуль соответствующего справочника, документа ... Хотя в руках "умельцев" получается возможность функциональность справочника "пользователи" положить в модуль менеджера (например) регистра сведений "Цены номенклатуры". |
|||
49
Torquader
27.04.12
✎
09:50
|
(48) Там ещё важно, что в модуле менеджера у каждого объекта может быть функция с одинаковым именем, но разным содержимым, а если функция в глобальном модуле - то содержимое придётся проверять, чтобы для разных объектов выполнить различные действия.
|
|||
50
Serg_1960
27.04.12
✎
09:51
|
Если есть справочник "Валюты" и регистр сведений "КурсыВалют", то спорить, где лучше разместить функцию ПолучитьКурс(Валюта,Дата) - можно до бесконечности :)
не в качестве спора, только имхо: утверждение "если функциональность использует конкретный объект - то она должна быть в менеджере этого объекта" - мне кажется спорно. Оно базируется на знаниях алгоритмов работы этой сущности. А это уже зависит от того, кто и как пишет эти алгоритмы... Чтобы спорить на тему "идеологических" вопросов - надо, как минимум, знать эту самую "идеологию". "Откуда" она появилась и куда она "движется". Максимум - это знать "конечный пункт назначения". |
|||
51
Ненавижу 1С
гуру
27.04.12
✎
10:50
|
(46) это понятно, но неизвестно что лучше
не будет ошибки, но будет "левый" результат - разве это лучше? |
|||
52
Torquader
27.04.12
✎
20:55
|
(51) Просто, ошибку в значении можно обработать внутри функции - в некоторых случаях подставив значение по умолчанию.
А ошибку вызова придётся при помощи попытка-исключение ловить. |
|||
53
Злопчинский
27.04.12
✎
21:14
|
справочники надо ликвидировтаь как класс вообще. Перевести все на регистры сведений. тогда и спора не будет
|
|||
54
Hans
27.04.12
✎
21:16
|
они создались для того чтобы не создавать объект.
|
|||
55
acsent
27.04.12
✎
21:44
|
(53) а как же ссылки?
|
|||
56
GenV
27.04.12
✎
21:46
|
55+ табличные части
|
|||
57
Ненавижу 1С
гуру
27.04.12
✎
22:04
|
(52) почему именно в исключении? не факт
|
|||
58
vde69
модератор
27.04.12
✎
22:09
|
(0) сабж создан не совсем для этого
сабж создан для создания типовых функций ориентированых на обьект методанных пример: вместо написания универсальной функции сохранитьВФайл(Ссылка) для 54 справочников и внутри парсинга типа, (и как следствие нечитабельного кода) в каждом справочнике делаем сохранитьВФайл(Ссылка) экспорт и где-то делаем ОДИН вызов справочники[Имя].сохранитьВФайл(Ссылка) уже не заботясь о типе... зы вспоминаем ООП... |
|||
59
Лефмихалыч
27.04.12
✎
22:20
|
модуль менеджера - едва ли не самая тривиальная хреновина во всей 8.2, чего тут тереть второй день?..
|
|||
60
Конфигуратор1с
27.04.12
✎
22:32
|
(58)на счет читабельности кода спорное утверждение. Может получится нехорошая ситуация когда будем иметь 50 функций в 50 модулях менеджера, которые содержат одинаковый код
|
|||
61
jsmith
27.04.12
✎
22:39
|
неймспейсов жутко не хватает
|
|||
62
Лефмихалыч
27.04.12
✎
22:45
|
(60) такого эффекта можно добиться и без модулей менеджера
|
|||
63
Злопчинский
27.04.12
✎
22:47
|
(55,56) "Идите, ежики, нафиг! Я стратегическими вопросами занимаюсь..." ;-)
|
|||
64
Злопчинский
27.04.12
✎
22:49
|
(60) вот как ни упирайся, а в самом низу будет
Если что-то="Иванов" |
|||
65
andrewks
27.04.12
✎
23:01
|
ну когда уже будет реализовано наследование и перегрузка методов?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |