Имя: Пароль:
1C
 
Почему в модуле объекта внешней обработки нельзя использовать &НаСервереБезКонтекста
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) Для внешних обработок экземпляр объекта уже есть