|
Почему в модуле объекта внешней обработки нельзя использовать &НаСервереБезКонтекста
Garykom, Terrixus, Rokford, maxab72, Мультук, spiller26, RomanYS, Garikk, DemonShinji2, Ненавижу 1С, Asmody, vis, Галахад, X Leshiy, bmitkin, Tarlich, Kabz, Builder, H A D G E H O G s, Pigmon, Prog_man, Gattuso, Fish, backfire, K1RSAN, АнализДанных, YaFedor, Наивный, Шурик71, abfm, hunter76, formista2000, alexxx961503, Homer, boozin, Михаил Козлов, Hawk_1c, U4Me2, catzilla codzilkin, privetik, Михаил_, pasha_d, Sanchez_22, vyaz, Lama12, andryscha1c, Федя Тяпкин, Bad_Aleks, vicof, shuhard, ReaLg, maxar, SleepyHead, arsik, Хряк, Ager, Indian, Niveus, , Сметанин, программистище, obs191, ЕRPe, Ногаминебить, Fregat, Затейник, 2S, PR, FormatC, ads55, ptiz, craxx, MiniMuk, Волшебник, Chai Nic, Wern, denk32, lEvGl, Timon1405, Джордж1, Климов Сергей, elka302, Anchorite, Kongo2019, DiMel_77, laeg, toypaul, Ильф, Silgis, orakool, Гипервизор, Trucker, Sabron, dmt, Скучный бух, Ivanich, d4rkmesa, Ageres, PuhUfa, Amra, Jackman, Вяйнемейнен, Dmitry1c, Beduin
| ☑ |
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) Для внешних обработок экземпляр объекта уже есть
|
|