|   |   | 
| 
 | Модули управляемого приложения: культура использования | ☑ | ||
|---|---|---|---|---|
| 0
    
        jsmith82 28.09.11✎ 19:34 | 
        Вопросы на засыпку
  Вопрос №1 когда нужно ставить флажок "Вызов сервера", а когда нет Вопрос №2 когда нужно использовать -модуль менеджера -выделенный общий модуль <ИмяПрикладногоОбъекта>Сервер Вопрос №3 коргда нужно использовать -модуль формы -выделенный общий модуль <ИмяПрикладногоОбъекта>Клиент Есть какие-то базовые принципы? Кто как думает? | |||
| 1
    
        jsmith82 28.09.11✎ 19:40 | 
        Пример №1
  Функция "ПолучитьЦенуНоменклатуры" По методике 1С нужно создать отдельный общий модуль а-ля "ЦеныИВалюты" Если же мыслить по ООП, хочется затолкать эту функцию в состав методов прикладного объекта. Ну, например, создать общий модуль "ЦеныНоменклатурыСервер" (от прикладного объекта регистр сведений "Цены номенклатуры") В данном случае модуль менеджера явно не используется ввиду недоступности его на стороне клиента | |||
| 2
    
        jsmith82 28.09.11✎ 19:43 | 
        Пример №2. Типовой код УТ11
  Функция "ПолучитьШтрихкод" В форме есть метод "НаКлиенте". Он обращается к методу формы "НаСервере". Тот обращается к методу модуля менеджера регистра сведений "Штрихкоды номенклатуры" | |||
| 3
    
        SoftIce 28.09.11✎ 19:46 | 
        Вопрос №1 
  Флаг вызов сервера нужно ставить если экспортные функции данного модуля будут вызываться из модулей исполняющихся на клиенте | |||
| 4
    
        SoftIce 28.09.11✎ 19:48 | 
        Категорически не рекомендуется ставить этот флаг у модулей с флагом Привелигерованный     | |||
| 5
    
        jsmith82 28.09.11✎ 19:48 | 
        (3) это очевидно
  просто в типовой УТ 11 бывает, что метод из общего модуля с вызовом сервера вызывае метод-дубль из общего модуля без вызова сервера (якобы в целях безопасности, я так понял) | |||
| 6
    
        Mort 28.09.11✎ 19:49 | 
        Начнем с того что делать такие модули:
  <ИмяПрикладногоОбъекта>Клиент, <ИмяПрикладногоОбъекта>Сервер это ФУ | |||
| 7
    
        Mort 28.09.11✎ 19:51 | 
        Если имелось ввиду:
  <АбстрактноеСобирательноеИмяМножестваОбъектов>Клиент то вопросы 2 и 3 отпадают сами собой. | |||
| 8
    
        jsmith82 28.09.11✎ 19:54 | 
        (6) почему ФУ     | |||
| 9
    
        jsmith82 28.09.11✎ 19:56 | 
        (6) например, метод, исполняемый на сервере, относится только к одному прикладному объекту
  почему бы не засунуть его в <ИмяПрикладногоОбъекта>Сервер | |||
| 10
    
        Mort 28.09.11✎ 19:57 | 
        (8) Потому что так они не нужны. Выносить в отдельный модуль функции, которые вызываются только из одного модуля нецелесообразно даже в целях рефакторинга.     | |||
| 11
    
        jsmith82 28.09.11✎ 19:59 | 
        (8) понятно. мои вопросы базируются на идеологии ООП. с точки зрения производительности, ты прав     | |||
| 12
    
        Mort 28.09.11✎ 20:00 | 
        (11) Считай модули содержат открытые функции базовых классов.     | |||
| 13
    
        jsmith82 28.09.11✎ 20:00 | 
        Вопрос №2 волнует больше всего     | |||
| 14
    
        Mort 28.09.11✎ 20:02 | 
        +(12) А если объект один (т.е. нет подобных ему) то выделять из него какой-то базовый класс со своими методами это ниочем. Собственно это и порождает вопросы 2 и 3.     | |||
| 15
    
        Mort 28.09.11✎ 20:08 | 
        А Модуль менеджера считай перегрузкой виртуальных функций базового класса (как Печать(), например), если тебе "идеология ООП" ближе. А вообще вопросы какие-то. Словно затерялся в трех березах.     | |||
| 16
    
        jsmith82 28.09.11✎ 20:09 | 
        (14) я отношусь к ним не как к методам базовых классов
  например, "ПолучитьШтрихкод" судя по твоей философии, ты считаешь, что метод относится к иному, несвязанному родством классу я же трактую его как метод того же класса вопрос возникает оттого, что плафторма не обеспечивает явной инкапсуляции данных (вечный бич 1С) судя по твоей философии, ты считаешь, что свойства платформы явно намекают на то, что вынос кода в иные модули предполагает создание иного класса | |||
| 17
    
        jsmith82 28.09.11✎ 20:10 | 
        я не затерялся в трёх берёзах
  конечно же, у меня есть своя культура кодинга, и она очень стройная но мне любопытно как это делают другие | |||
| 18
    
        SoftIce 28.09.11✎ 20:10 | 
        Вопрос №2
  Модуль менеджера новый объект. Появился только в 8.2. В модуле менеджера можно переопределить стандартное событие ОбработкаПолученияДанныхВыбора. А также дополнять функционал менеджера объекта конкретного вида собственными методами. К примеру, если в модуле менеджера справочника Номенклатура создать экспортный метод, например ПолучитьСписокНоменклатуры() и в ней получить список номенклатуры по какому то фильтру. То к этому методу можно обращаться из-вне создав менеджер этого объекта. в нашем случае Справочники.Номенклатура.ПолучитьСписокНоменклатуры() | |||
| 19
    
        Reaper_1c 28.09.11✎ 20:10 | 
        №2
  Модуль менеджера использовать для собственых методов, описывающих функционал непосредственно связанный с функционалом класса но не требующий модификации данных. Т.е. печать, получение специфической информации связанной с классом. Основной смысл - передача таким методам ссылки или массива ссылок на объекты без инициализации объекта. "выделенный общий модуль <ИмяПрикладногоОбъекта>Сервер" не использовать никогда, для этого есть модуль объекта. | |||
| 20
    
        SoftIce 28.09.11✎ 20:15 | 
        (19) для печати тоже лучше использовать модуль объекта, поскольку печать связана с конкретным объектом.     | |||
| 21
    
        Reaper_1c 28.09.11✎ 20:17 | 
        (20)Особенно это умно при групповой печати - для каждого распечатываемого документа за каким то ладаном инициализировать весь объект. А ведь можно просто из менеджера распечатать список ссылок.     | |||
| 22
    
        SoftIce 28.09.11✎ 20:19 | 
        (21) для групповой печати - согласен. Хотя можно наверно и для обычной тоже использовать. Надо попробовать.     | |||
| 23
    
        Mort 28.09.11✎ 20:20 | 
        (16) Открой, например, БП КОРП 3.0 бету. одни названия модулей говорят. 
  Например "ОбработкаТабличныхЧастей", чем не сбор функций базового класса объектов содержащие однотипные ТЧ? Или "ДенежныеСредства". Но никто не делает модулей по одному на объект. (21) +1 Угу. Особенно радует когда уже прочитанный объект оформляет запрос к самому себе для получения данных. | |||
| 24
    
        jsmith82 28.09.11✎ 20:23 | 
        (19)
  ну тогда разъясни вот что как из клиента вызывать метод модуля менеджера (статический) или модуля объекта (динамический) делать в форме дубль-метод с директивой НаСервере? | |||
| 25
    
        jsmith82 28.09.11✎ 20:24 | 
        (23) да я никак не отрицаю сущестование "абстрактных множеств". они очевидны и многочисленны     | |||
| 26
    
        jsmith82 28.09.11✎ 20:26 | 
        Дилемма
  1. дубль-метод в форме с директивой НаСервере 2. прямой вызов из клиента в модуль ИмяПрикладногоОбъектаСервер | |||
| 27
    
        Reaper_1c 28.09.11✎ 20:27 | 
        (24)Да, делать дубль с директивой "НаСервере". Хотя на практике "дублей" не возникает, потому как методов заточенных именно под задачи формы и интерактивной работы со зверьем я в менеджере не держу. Форма - один из многих клиентов программы, а менеджер должен быть развернут лицом ко всем клиентам, а не только формам.     | |||
| 28
    
        Mort 28.09.11✎ 20:31 | 
        (24) Модуль объекта легко, а модуль менеджера зачем вызывать?     | |||
| 29
    
        jsmith82 28.09.11✎ 20:34 | 
        ну как это зачем..
  тут же говорили, что в модуле расположены статические методы класса ладно, всё понятно общий тренд ясен спасибо, в споре почерпнул нужное видение | |||
| 30
    
        jsmith82 28.09.11✎ 20:38 | 
        хах. вот будет прикол, если в 8.3 (или в 9.0) внедрят ООП     | |||
| 31
    
        Reaper_1c 28.09.11✎ 21:31 | 
        (30) Не внедрят. Разве что весь нынешний состав методистов перебьют и тогда, лет через десять после этого геноцида если их место займут совсем упоротые идиоты 1С получит ООП.     | |||
| 32
    
        jsmith82 29.09.11✎ 08:25 | 
        (31) ты считаешь ООП в 1С идиотской упоротостью?     | |||
| 33
    
        H A D G E H O G s 29.09.11✎ 08:30 | 
        (32) И не он один.     | |||
| 34
    
        jsmith82 29.09.11✎ 08:49 | 
        а пщиму, объясните непонимающему     | |||
| 35
    
        jsmith82 29.09.11✎ 08:49 | 
        если не в падлу конеш     | |||
| 36
    
        Mort 29.09.11✎ 09:03 | 
        (35) Да все просто. Кодеры считают ООП только там имеет место, где пишутся слова class private и static, либо подобные им. В 1С этих слов нет. То что в 1С все давно пользуются огромной кучей типов, какбы ниочем не говорит.     | |||
| 37
    
        jsmith82 29.09.11✎ 09:13 | 
        (36) согласен     | |||
| 38
    
        Jolly Roger 29.09.11✎ 09:19 | 
        (34) людям свойственно бояться непознанного...     | |||
| 39
    
        5 Элемент 29.09.11✎ 09:25 | 
        Придумайте как вендору заработать на ООП и будет вам счастие     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |