![]() |
![]() |
|
Почему в модуле объекта внешней обработки нельзя использовать &НаСервереБезКонтекста | ☑ | ||
---|---|---|---|---|
0
catzilla codzilkin
20.10.25
✎
07:48
|
Всем здравствуйте.
Почему в модуле объекта внешней обработки нельзя использовать &НаСервереБезКонтекста? Почему так? И что гласят стандарты чистого кода 1С на в моем случае? Случай такой... Есть функция БСП которая преобразует ТаблицуЗначений в массив структур. Мне не подходит. У меня таблица в которой одна из колонок строки тоже таблица. Написал свои функции. Получает, преобразует, возвращает что нужно. Если размещать в модуле объекта внешней обработки то контекст есть. Но он не нужен от слова совсем. Задача стоит так что общие модули использовать нельзя. Менеджера у внешней обработки нет. И туда не подходит по стандарту. В модуле обработки контекст лишний. В модуле формы обработки только получается. Но это вроде как не по стандарту. |
|||
1
Asmody
20.10.25
✎
08:04
|
(0) "Если размещать в модуле объекта внешней обработки то контекст есть" - вы вообще понимаете, что такое "контекст" в терминах 1С?
|
|||
2
catzilla codzilkin
20.10.25
✎
08:08
|
Реквизиты обработки и форма?
В модуле обработки реквизиты обработки видны. Форма нет. |
|||
3
Dmitry1c
20.10.25
✎
08:09
|
(0) при такой постановке вопроса тебя не должно смущать что ты в модуле форме размещаешь что-то лишнее )
|
|||
4
Мультук
гуру
20.10.25
✎
08:32
|
(0)
Итак, вы написали некую функцию/процедуру в вакууме в модуле обработки. В этой функции/процедуре есть имена входящих переменных, локальные переменные и нужно сделать так, чтобы они гарантированно не пересекались с реквизитами обработки, верно ? Какие же решение предлагает нам синтаксис 1С? Увы, решение одно - уникальные префиксы и постфиксы в именах локальных переменных. |
|||
5
Ненавижу 1С
гуру
20.10.25
✎
08:18
|
(2) БезКонтекста в форме это методы отвязанные от формы - ссылка на форму в него не передается. Аналог static в других языках (статические методы).
Для самого объекта подобные статические методы лежат в модуле менеджера. |
|||
6
Garykom
гуру
20.10.25
✎
08:33
|
(0) Потому что модуль объекта (в случае тонкого клиента) уже "НаСервереБезКонтекста"
Оно всегда "НаСервере" - случай толстого клиента не рассматриваем И всегда "БезКонтекста" - контекст формы (или иного места вызова) туда не передается, есть только данные самого объекта |
|||
7
Garykom
гуру
20.10.25
✎
08:37
|
(4) Самое бесячее что в модулях форм с реквизитами формы (в т.ч. программно созданными, причем чужим кодом/расширениями) это невозможно контролировать
|
|||
8
Chai Nic
20.10.25
✎
09:34
|
А меня бесит что для встроенных отчетов-обработок есть модуль менеджера, которого нет для внешних. В результате сделать встроенный отчет внешним крайне непросто.
|
|||
9
Garykom
гуру
20.10.25
✎
10:31
|
(8) Тяжкое наследие совместимости
Согласен приходится извращаться |
|||
10
maxab72
20.10.25
✎
10:41
|
(8) это логично. Внешний отчет для конфы не является метаданными. Метаданными для внешних отчетов является справочник типа "ВнешниеОтчетыИОбработки" (не помню как он точно в БСП называется).
|
|||
11
Ненавижу 1С
гуру
20.10.25
✎
10:44
|
(10) какая связь между метаданными и модулем менеджера?
|
|||
12
maxab72
20.10.25
✎
10:47
|
(11) модуль менеджера относится не к конкретному объекту, а ко всему типу. то есть к объекту метаданных.
|
|||
13
Garykom
гуру
20.10.25
✎
10:57
|
(11) Вероятно речь об обращении через "."
Ну типа Обработки.ИмяОбработки.ИмяМетода() Но кто/что мешает для внешних обработок обращаться к модулю менеджера через сам объект? Макеты же можно! Обработка = РеквизитФормыВЗначение("Объект"); Макет = Обработка.ПолучитьМакет("ИмяМакета"); Сделать аналогично Обработка = РеквизитФормыВЗначение("Объект"); МодульМенеджера = Обработка.ПолучитьМодульМенеджера(); // Несуществующий сейчас метод И вызывать МодульМенеджера.ИмяМетода(); |
|||
14
Garykom
гуру
20.10.25
✎
10:52
|
(12) А макет куда относится?
Еще скажи к объекту хыхы |
|||
15
Мультук
гуру
20.10.25
✎
10:57
|
(13)
Вспоминается анекдот про связь между жопой лошади времен римской империи и ракетными двигателями. А почему вы так делаете? А мы всегда так делали. Legacy, все дела |
|||
16
Garykom
гуру
20.10.25
✎
11:00
|
(15) Изменить софт (платформу 1С) намного проще чем хард (ширину железнодорожной колеи)
|
|||
17
RomanYS
20.10.25
✎
11:02
|
(13) "Но кто/что мешает для внешних обработок обращаться к модулю менеджера через сам объект?"
А смысл тогда в модуле менеджера, если для обращения к нему нужно создать экземпляр объекта? |
|||
18
Ненавижу 1С
гуру
20.10.25
✎
11:03
|
(12) Ну допустим не к типу, а к объекту-синглтону "Менеджер объекта". Да это объект, который существует в единственном экземпляре, но имеет свой отдельный тип. Можно например создать массив из объектов-менеджеров и вполне его обходить и вызывать.
Просто такая архитектура. Не более того. |
|||
19
Garykom
гуру
20.10.25
✎
11:07
|
(17) Для внешних обработок экземпляр объекта уже есть
|
|||
20
Chai Nic
20.10.25
✎
19:56
|
Просто не надо было модуль менеджера для обработок реализовывать в платформе. Всё можно делать через модуль объекта.
Вот для типов метаданных, которые существуют безотносительно наличия объектов (регистры, справочники и т.д.), это имеет смысл. Но для обработок/отчетов - нафига? Что "менеджерить" предполагалось? |
|||
21
JohnGilbert
20.10.25
✎
20:08
|
Какой контекст планируется не передавать между серверным вызовом из модуля (объекта) обработки и серверным вызовом без контекста? Троллинг же, не?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |