|   |   | 
| 
 | Для спецов по платформе. Модуль менеджера объекта. | ☑ | ||
|---|---|---|---|---|
| 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 | 
        ну когда уже будет реализовано наследование и перегрузка методов?     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |