Имя: Пароль:
1C
1С v8
Для спецов по платформе. Модуль менеджера объекта.
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
ну когда уже будет реализовано наследование и перегрузка методов?
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn