Имя: Пароль:
1C
 
Модуль менеджера обработки - что за зверь?
0 Eugeneer
 
03.09.22
10:21
Я правильно понимаю что по отношению к данным самой обработки он не имеет отношения - т.е. не видит никаких данных объекта.

И чтобы там какие то данные обработать то их придется передать.

Вопрос связан с тем что в типовой есть такая вещь как длительные операции (когда что то делая в форме она не блокируется). И этот механизм видит только модуль менеджера.
1 Eugeneer
 
03.09.22
10:25
Вот как у меня сейчас. Есть некая обработка которая может быть использована в двух вариантах - ручная (открытая) где юзер что то делает и нажимает. И автоматическая (на задание).

Поэтому все тяжелые процедуры у меня в модуле обработки.
Если обработка в ручном режиме - то юзер нажимает кнопки вызывается Сервер и в сервере идет вызов процедур модуля. Т.е. в ручном режиме используется

ОбработкаОбъект = РеквизитФормыВЗначение("Объект");


Но данных бывает дохрена. И я бы хотел заюзать длительные операции. Вопрос как мне сделать чтобы все что в модуле обработки, еще можно было использовать в менеджере.
2 H A D G E H O G s
 
03.09.22
10:26
Модуль для статических методов класса.
3 Eugeneer
 
03.09.22
10:26
Надеюсь понятно написал.

Юзер жмет кнопки, выполняется команда модуля в фоновом режиме не блокируя 1С
4 H A D G E H O G s
 
03.09.22
10:27
(1) это элементарно
5 Eugeneer
 
03.09.22
10:33
(4) я понимаю что это тоже ответ))) но как бы как?) Я не понимаю как менеджер модуля может выполнить обработку данных обработки.
Например процедуру которая в обработке наполняет таблицу.
6 RomanYS
 
03.09.22
10:33
(0) вот очередное доказательство Запись в регистр сведений 1 миллиона записей

Как можно за 15 лет не разобраться в отличиях модуля менеджера от модуля объекта?
7 H A D G E H O G s
 
03.09.22
10:34
(5) передавай в процедуры обьект, как параметр
8 RomanYS
 
03.09.22
10:34
(5) просто считай, что модуль мененджера это модуль без контекста
9 СеменовСемен
 
03.09.22
10:35
(5) передавай обработку как параметр
10 Eugeneer
 
03.09.22
10:37
(9) это вызывает еще одну передачу данных? Ну например в обработке ТЧ с миллионом строк. Это еще раз нагрузит память?
11 СеменовСемен
 
03.09.22
10:39
(10) передача по ссылке тебе о чем то говорит?
12 Eugeneer
 
03.09.22
10:40
т.е. обратится к существующему обьекту с его данными. как к ссылке.
13 H A D G E H O G s
 
03.09.22
10:42
Жесть, как она есть
14 Eugeneer
 
03.09.22
10:43
все равно в тупике...

Процедура ВыполнитьПроцедуруМодуляОбъектаОбработки(Параметры, АдресХранилища) Экспорт
    
    Если БезопасныйРежим() <> Ложь Тогда
        БезопасныйРежим = БезопасныйРежим();
    ИначеЕсли Параметры.Свойство("БезопасныйРежим") И Параметры.БезопасныйРежим <> Ложь Тогда
        БезопасныйРежим = Параметры.БезопасныйРежим;
    Иначе
        БезопасныйРежим = Ложь;
    КонецЕсли;
    
    Если Параметры.ЭтоВнешняяОбработка Тогда
        Ссылка = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "ДополнительнаяОбработкаСсылка");
        Если ЗначениеЗаполнено(Ссылка) И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки") Тогда
            Обработка = ОбщегоНазначения.ОбщийМодуль("ДополнительныеОтчетыИОбработки").ОбъектВнешнейОбработки(Ссылка);
        Иначе
            ВыполнитьПроверкуПравДоступа("ИнтерактивноеОткрытиеВнешнихОбработок", Метаданные);
            Обработка = ВнешниеОбработки.Создать(Параметры.ИмяОбработки, БезопасныйРежим);
        КонецЕсли;
    Иначе
        Обработка = Обработки[Параметры.ИмяОбработки].Создать();
    КонецЕсли;
    
    Если БезопасныйРежим() = Ложь И БезопасныйРежим <> Ложь Тогда
        УстановитьБезопасныйРежим(БезопасныйРежим);
    КонецЕсли;
    
    ПараметрыМетода = Новый Массив;
    ПараметрыМетода.Добавить(Параметры.ПараметрыВыполнения);
    ПараметрыМетода.Добавить(АдресХранилища);
    ОбщегоНазначения.ВыполнитьМетодОбъекта(Обработка, Параметры.ИмяМетода, ПараметрыМетода);
    
КонецПроцедуры
15 Eugeneer
 
03.09.22
10:44
судя по коду типовая не выполняет работу с обьектом, а создает новый обьект обработки.
16 Eugeneer
 
03.09.22
10:46
(13) дык она и жесть. Изучаю общий модуль ДлительныеОперации и охреневаю там от количества кода.
17 Eugeneer
 
03.09.22
10:51
Давайте так. Вот конкретный пример. Есть объект. в нем ТЧ. Есть процедура модуля.

Там по ТЧ обработки создается номенклатура, и она же заполняется в ТЧ. Как это запустить в фоне при открытой обработке. Чтобы в итоге в обработке в ТЧ появилась номенклатура. Кто скажет как (а не будет просто языком трепсти про жесть какую то). То 2 000 рублей от меня на пивасик)


&НаСервере
Процедура СоздатьНовуюНоменклатуруСервер()
    
    Отказ = Ложь;
    Если НЕ ЗначениеЗаполнено(Объект.ВидНоменклатурыПоУмолчанию) Тогда
        Сообщить("Настройки номенклатуры - Не указан Вид номенклатуры (по умолчанию)!");
        Отказ = Истина;
    КонецЕсли;    
    Если НЕ ЗначениеЗаполнено(Объект.ВидНоменклатурыПоУмолчанию.ЕдиницаИзмерения) Тогда
        Сообщить("Настройки номенклатуры - Вид номенклатуры - не заполнена единица по умолчанию.!");
        Отказ = Истина;
    КонецЕсли;          
    Если Отказ Тогда
        Сообщить("Перед началом работы - заполните обязательные настройки номенклатуры.");
        Возврат;
    КонецЕсли;
    
    ОбработкаОбъект = РеквизитФормыВЗначение("Объект");    
    ОбработкаОбъект.СоздатьНовуюНоменклатуруСервер();    
    ЗначениеВРеквизитФормы(ОбработкаОбъект, "Объект");
    
КонецПроцедуры
18 Eugeneer
 
03.09.22
10:52
Речь идет про фоновое выполнение, без блокировки окна 1С. чтобы юзер нажал - пошел куда то еще что то делать. А потом в открытой обработке увидел созданную номенклатуру в ТЧ.
19 RomanYS
 
03.09.22
10:53
(14) ты уж определись, что ты хочешь делать:
вызывать процедуру модуля объекта (объект будет создан новый),
или всё-таки модуль менеджера (туда ты передашь созданный объект параметром).

На счёт памяти во втором случае не уверен, возможно память всё равно будет выделена под копию объекта, всё-таки фоновое выполняется в отдельном потоке
20 Eugeneer
 
03.09.22
10:54
вот так

&НаСервере
Процедура СоздатьНовуюНоменклатуруСервер()
        
    ОбработкаОбъект = РеквизитФормыВЗначение("Объект");    
    ОбработкаОбъект.СоздатьНовуюНоменклатуруСервер();    
    ЗначениеВРеквизитФормы(ОбработкаОбъект, "Объект");
    
КонецПроцедуры
21 RomanYS
 
03.09.22
10:56
+(19) не уверен что насчет памяти вообще стоит переживать, вроде не давно проходили "урок", что данные в форме весят на порядок больше. А ты судя по коду от этого не ушел
22 Eugeneer
 
03.09.22
10:58
(21) частично ушел. Начал сокращать количество колонок ТЧ. Но особо мало что выиграл.
Сейчас другая задача.
23 H A D G E H O G s
 
03.09.22
11:01
Я календарь переверну.
И снова 3 сентября...
24 Eugeneer
 
03.09.22
11:02
(19) мне не суть так важет модуль менеджера. вообще.

Я хочу чтобы юзер нажал кнопку в форме и не сидел с блокированной 1С. там потом где то выползет строка состояния - такая то обработка готова. Он вернется - а там готовая ТЧ на форме.
25 Eugeneer
 
03.09.22
11:07
Может вообще стоит из модуля обработки создать глобальник.

В глобальнике процедуры с параметром оъекта.

И тогда вот это начнет работать ФоновыеЗадания.Выполнить

при этом как я понял может даже получится отказаться от
ОбработкаОбъект = РеквизитФормыВЗначение("Объект");  
ЗначениеВРеквизитФормы(ОбработкаОбъект, "Объект");

Но не уверен

Сейчас начну эксперементы на всю катушку. пока не найду решение
26 Eugeneer
 
03.09.22
11:08
Меня одно смущает что в параметрах там тип Массив.
27 RomanYS
 
03.09.22
11:11
(25) жесть!
модуль объекта обработки контекстный - без объекта не работает,
модуль менеджера - не контекстный, по сути ОМ привязанный в метаданных.
Сначала минимальное понимание, потом эксперименты
28 Eugeneer
 
03.09.22
11:14
Все передаваемые параметры должны поддерживать сериализацию. В противном случае будет выдано исключение и фоновое задание не будет запущено.

))
29 RomanYS
 
03.09.22
11:14
(22) при чём здесь количество колонок? Если тебе на форме нужен 1М строк, то про оптимизацию остального можно забыть (по крайней мере по памяти).
30 Eugeneer
 
03.09.22
11:15
(27) да пофиг менеджер. Я уже пытаюсь найти решение через вынос процедур в общий модуль. Их можно фоном вызывать.

Но пока костыли
31 Eugeneer
 
03.09.22
11:16
(29) я проводил тесты с разным количеством колонок - есть прямая зависимость. или у тебя ТЧ с 2 колонками или с 10.
32 Eugeneer
 
03.09.22
11:18
Так короче облом. Нельзя там передавать ни обьект, ни какую то ТЧ в параметры


Все передаваемые параметры должны поддерживать сериализацию. В противном случае будет выдано исключение и фоновое задание не будет запущено.
33 RomanYS
 
03.09.22
11:24
(32) Смысл твоих изысканий не понятен: выгрузи в ТЗ и передай, а если расходы на выгрузку превышают время обработки, то возвращаемся к (29)
34 Eugeneer
 
03.09.22
11:49
(33) короче ясно что ничего сделать нормально не получится. Я думал 1С уже развитая там по самое не балуйся.
А простык вещи делать не может.
35 Eugeneer
 
03.09.22
11:50
Не получается фоном выполнять процедуры модуля (и глобальные) которые должны менять конкретный обьект.
36 Anarki
 
03.09.22
11:58
(35) ну ты можешь отдавать массив ссылок например (через установить ссылку нового) в фоновое, в фоновом задании создаешь по ссылкам объекты, в обработке ловишь результат о готовности фз и заполняешь свою тч
37 Anarki
 
03.09.22
12:02
А во всех твоих разработках у тебя нигде асинхрон не применяется что ли?
38 Eugeneer
 
03.09.22
12:04
(37) у меня они все сделаны для автоматической работы - задания. Но также и ручной.

В ручном варианте - да. Если у юзера дохрена данных) то он ждет с колесиком) Но на самом деле все работает быстро и ни укого миллионов строк нет)

Но я хочу все равно сделать как будто есть.
39 Eugeneer
 
03.09.22
12:07
Нашел в типовой одну единственную обработку которая что то похожее делает - Удаление помещенных обектов.

Там как раз в фоне всякие выборки а на форме отображаются результаты. Сейчас изучаю. Но там более примитивно. Нашел что все данные передаются через хранилище. Через адрес хранилища.
И реквизиты обьекта или формы передаются через РеквизитФормыВЗначение
но правда назад нельзя такое использовать ЗначениеВРеквизитФормы.

Максимум можно в такой процедуре что то зафигачить в адрес хранилища и уже на форме что то из него выдрать и заполнить.
40 Eugeneer
 
03.09.22
12:08
Но хотя бы пример живой есть где хоть что то есть аналогичное.
41 Anarki
 
03.09.22
12:10
(40) да вот в принципе расписано, как все это работает https://its.1c.ru/db/v8std/content/642/hdoc
42 Eugeneer
 
03.09.22
12:12
Все проблемы которые у меня есть целиком и полностью из за того что 1С ТЧ объектов несереализуемые.
43 СеменовСемен
 
03.09.22
12:20
Может и не нужно тч обработки использовать как хранилище данных?
44 Eugeneer
 
03.09.22
12:46
(43) палка о двух концах. Если буду в хранилище - то это надо будет выгружать. а потом из хранилища когда получу ТЧ то ее все равно загружать.

А выгрузка и загрузка ТЧ в 1С - это тоже тормоза.
45 Eugeneer
 
03.09.22
12:48
И они будут выполнятся все равно но уже без фона. В итоге нифига никакой оптимизации. Шило на мыло называется.

Пока 1С не сделает сама (не знаю что) в платформе чтобы ТЧ стало сериализируемым. то все это просто бессмысленная возня.
46 Eugeneer
 
03.09.22
12:51
Это только имеет смысл если прям конкретно что то долгое. не на минуту не на две.
Пока у меня только 1 такой участок - это если создавать номенклатуру в базе из ТЧ. так как это самое дикое.

Если например 100к строк в ТЧ по которым надо создавать номенклатуру то это хоть как тресни 1С в минуту записывает всенго 2000 элементов. И я никак этим не управляю.

Т.е. будет длится 50 минут. Только для такой процедуры - да имеет смысл все через хранилище.

А все остальное на 1-2 минуты вообще нету никакого смысла. Одни выгрузки загрузки займут время и память.
47 Eugeneer
 
03.09.22
12:55
Могу ошибаться. Для проверки надо эксперементировать. чем и занимаюсь.
48 СеменовСемен
 
03.09.22
12:59
Когда ты реквизит формы в объект делаешь - это такая же выгрузка
49 Eugeneer
 
03.09.22
13:02
(48) так вот именно. даже чтобы вызвать процедуру модуля происходит

ОбработкаОбъект = РеквизитФормыВЗначение("Объект");


а это значит что уже использование еще чего либо - еще задублирует данные
50 Eugeneer
 
03.09.22
13:07
Получается что один хрен. уже выгрузка есть - так как без этого процедуру модуля не вызвать.

А чтобы от нее уйти тогда надо в общий модуль переносить процедуры и уже с ними вручную выгружать загружать.
51 Eugeneer
 
03.09.22
13:12
А тут тоже засада. Потому что там много разных процедур которые с этой ТЧ делают разные вещи.

КОгда оно у меня все в модуле обработки - и если обработка полностью регламентным заданием - то я просто выполняю все процедуры по очереди (как их настроил юзер - т.е. все это настройками).
И мне не нужно для процедур делать выгрузки - загрузки ТЧ.
Она единая для обработки. И никакого ни дублирование, ничерта этого нет, и передавать через хранилище нафиг не надо.
52 Eugeneer
 
03.09.22
13:14
Для решения задачи и так и так. Получается нужно полностью продублировать весь код модуля в общий модуль.

В форме использовать только работу с общим модулем. А в регламенте использовать модуль обработки. Херня короче.
53 Йохохо
 
03.09.22
13:14
феерический
54 Eugeneer
 
03.09.22
13:16
А все просто потому что потому 1С решила что ТЧ это несереализуемый реквизит....))))
55 СеменовСемен
 
03.09.22
13:17
(49) поэтому и не нужно тч в обработке иметь, нужно тз как параметр передавать
56 Eugeneer
 
03.09.22
13:17
(53) давай)) реши задачу. Как фоном запустить

&НаСервере
Процедура СоздатьНовуюНоменклатуруСервер()
        
    ОбработкаОбъект = РеквизитФормыВЗначение("Объект");    
    ОбработкаОбъект.СоздатьНовуюНоменклатуруСервер();    
    ЗначениеВРеквизитФормы(ОбработкаОбъект, "Объект");
    
КонецПроцедуры
57 СеменовСемен
 
03.09.22
13:19
(56) сначало сделай (55)
58 Eugeneer
 
03.09.22
13:22
(57) с ума сошел. там номеров строк нет.
59 Eugeneer
 
03.09.22
13:23
хотя номера строк пофигу. ТЗ формы мне тогда вообще придется ее везде параметром передавать.
60 Eugeneer
 
03.09.22
13:24
И давай не отлынивать от (56)
61 СеменовСемен
 
03.09.22
13:37
(59) ну и передавай
62 Eugeneer
 
03.09.22
13:44
(61) короче хорош придумывать. ТЗ формы ничем не отличается от ТЧ. в плане работы. только больше кода
63 Eugeneer
 
03.09.22
13:45
Даже минусы есть. там точно не помню. но точно есть.
А по работе - вообще ничего не решает.
Только больше кода добавит. Так как в регламентном режиме у меня вообще не может быть никакой ТЗ формы, то мне еще придется вручную программную ТЗ делать.
64 Eugeneer
 
03.09.22
13:46
Если не веришь - у меня тестовая обработка. я там сделал и ТЧ и ТЗ. так вот похрену.
65 Гений 1С
 
гуру
03.09.22
13:58
(0) кстати у внешней обработки вроде нет модуля менеджера, имей ввиду.
66 END
 
03.09.22
16:30
(0) Почитай про БСП-шную функциональность для выполнения тяжелых операций в фоне. И заюзай её. Всё работает нормально - шайба крутиться, сеанс не блокируется :) работает и для внешних обработок.
67 ДедМорроз
 
03.09.22
17:44
Модуль менеджера,по сути,это тоже самое,что обычный программный модуль,только он доступен в контексте менеджера,а также в нем обрабатываются некоторые события,которые к конкретному объекту не привязаны.
Идея в том,что в некоторые функции можно передавать менеджер объекта,таким образом,выбирая контекст исполнения,что в случае с программными модулями бы требовало где-то хранить соответствия объектов модулям.
68 СеменовСемен
 
03.09.22
17:45
(67) так и обычный общий модуль можно также передавать как параметр
69 ДедМорроз
 
03.09.22
17:52
Если нужно передать объект и модуль,то будет два параметра,а если нужно просто передать контекст объекта для создания,то передается менеджер.
70 ДедМорроз
 
03.09.22
17:57
На самом деле,основная причина создания модуля менеджера - это событие получения формы,особенно,формы списка,когда контекста объекта нету.
Все остальное,можно или в модуле объекта или в общем модуле.
А передать-то можно вообще имя создаваемого объекта,причем,с клиента на сервер без вмяких ограничений,а по имени получить и объект и его модули - опять же,логику создания объектов можно разместить в однлм общем модуле для всех объектов.
71 Мимохожий Однако
 
04.09.22
06:23
72 Сергиус
 
04.09.22
21:07
(0)Разбивай свою "мегаТЗ" на порции, и пихай на сервер в фоновую задачу.
73 Новиков
 
05.09.22
10:16
Тут еще сбоку вопрос в том, что в ТЧ хранятся какие-то параметры для создания чего_то там, что ТС захотел в модуле менеджера покрутить. Ну ок, допустим в 2001 строке этой ТЧ вывалилась ошибка, потом еще, потом еще, ну не пошло что там внутри. По-хорошему это нужно также положить в какую-то таблицу ошибок, которую потом, уже по возврату - как-то обработать. Отсюда уже имеем минимум один АдресХранилищаСОшибками, ну или делать ее в конструкторе параметров в самом модуле менеджера. Так, в принципе, и делают в типовых.
74 Eugeneer
 
05.09.22
10:24
(73) в хралищите можно засовывать массив из ТЗ
75 Новиков
 
05.09.22
10:30
(74) в принципе, да. Но если взглянуть на задачу в целом, то там много всяких параметров в общем случае должно приезжать в модуль менеджера. С этой точки зрения конструктор, в котором еще и проинициилизируется АдресХранилищаСОшибками - не такое то уже и плохое решение.

По твоей же задачи, какое-то усложнение на ровном месте. Не видно, какие плюсы ты получишь от того, что вытащишь весь код в модуль менеджера.
76 Eugeneer
 
05.09.22
10:38
про модуль менеджера можно забыть для таких задач.

для фона придется выносить в глобальник.
77 СеменовСемен
 
05.09.22
10:39
(76) в бсп можно и из модуля менеджера запускать фоновые
78 Eugeneer
 
05.09.22
10:40
Что тоже плюсы и минусы.

Плюсы-  это что можно фон влепить для каких то длительных действий - вызывая глобальник. Тогда придется через хранилище таскать.

Минус - что если обработка итак будет настроена на задание. то хранидище нафиг не нужно. т.к. тогда модуль обьекта подходит лучше всего
79 Eugeneer
 
05.09.22
10:42
(77) а хули толку. к конкретному обьекту не обращаются. только если в них постоянно таскать данные по хранилищу.

пока что вижу ситуацию что нужно задвоить код. в модуле обработки (для автоматической обработки). и в глобальнике (если хочется при открытой обработке что то в фон пускать)
80 Eugeneer
 
05.09.22
10:43
при открытой обработке не использовать работу с модулем.
81 НафНаф
 
05.09.22
10:56
(2) как первое приближение да, но на самом деле это синглтон
82 Новиков
 
05.09.22
11:11
Почему ты не хочешь сделать примерно такое (концепт):

&НаКлиенте
Процедура Обработать(Команда)
  ТЗ = ПодготовитьТЗДляОбработки();
  ДлительнаяОперация = ПометитьНаУдалениеВФоне(ТЗ);
  ОповещениеОЗавершении = Новый ОписаниеОповещения(...);
  ПараметрыОжидания.ТекстСообщения = НСтр("ru = 'Выполняется обработка объектов'");
        ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания);

КонецПроцедуры

&НаСервереБезКонтекста
Функция ПометитьНаУдалениеВФоне(ТЗ)
    
    ПараметрыОперации = ДлительныеОперации.ПараметрыВыполненияПроцедуры();
    ПараметрыОперации.НаименованиеФоновогоЗадания = НСтр("ru = 'Обработка объектов'");
    ПараметрыОперации.ЗапуститьВФоне = Истина;
    Возврат ДлительныеОперации.ВыполнитьПроцедуру(
        ПараметрыОперации,
        "Обработки.ТвояОбработка.ОбработкаДанных",
        ТЗ);
    
КонецФункции
83 Eugeneer
 
05.09.22
11:13
(82) а ты смотрел саму ДлительныеОперации.ВыполнитьПроцедуру

там нельзя вот это Обработки.ТвояОбработка.ОбработкаДанных
84 Eugeneer
 
05.09.22
11:15
Хотя может и можно

имя экспортной процедуры общего модуля, модуля менеджера объекта
//                                       или модуля обработки, которую необходимо выполнить в фоне.
//                                       Например, "МойОбщийМодуль.МояПроцедура", "Отчет.ЗагруженныеДанные.Сформировать"
//                                       или "Обработка.ЗагрузкаДанных.МодульОбъекта.Загрузить".
85 Eugeneer
 
05.09.22
11:16
Я устал короче_) так как много работы разной делал. и тут еще просто не начал вариант. отдохну сделаю
86 Новиков
 
05.09.22
11:18
(83) >>там нельзя вот это Обработки.ТвояОбработка.ОбработкаДанных

Можно конечно. Этим активно пользуется.
87 mgreat
 
05.09.22
11:18
Можно же юзать и модуль объекта обработки, не обязательно модуль менеджера. Тем более, как верно заметили, у внешних обработок модуля менеджера нет
88 Новиков
 
05.09.22
11:28
(87) >>не обязательно модуль менеджера.

По заданию требуется модуль менеджера.
89 Eugeneer
 
05.09.22
13:09
(82) засада есть
"Обработки.ТвояОбработка.ОбработкаДанных",
        ТЗ);

тут типа ТЗ параметр.... А у меня модули обработки без параметров. они видят контекст - реквизиты обработки.
90 Eugeneer
 
05.09.22
13:11
поэтому и это не подходит. Потому что требует передачи данных в виде параметров. А сам модуль этого не требует - я там вижу все ревизиты обработки. В том числе всякие настройки, галки шмалки и саму ТЧ.

А такая конструкция нихера не видит. Ей все надо запихнуть параметрами. Вот в этом весь облом.
91 Eugeneer
 
05.09.22
13:13
и мало того запихнуть параметрами - еще и код процедур переписать весь. т.е. что то берем из параметров. что то делаем. еще и результат снова выгружаем чтобы вернуть адрес...

Короче как я писал хрень полная. Чтобы фоном тут что то делать то придется код задвоить весь. и один сделать так, а другой по другому.
92 Kassern
 
05.09.22
13:15
(0) На кой вам модуль менеджера для обработки? Потом еще косяки ловить при выгрузке/загрузке во внешнюю обработку (у нее нет модуля менеджера). Чем вам модуль объекта не угодил?
93 Eugeneer
 
05.09.22
13:18
(92) я тебе скажу так - все не угодило.

Невозможно создать обработку на УФ которая могла бы с контекстом работать и так и так.
94 Kassern
 
05.09.22
13:23
(93) Например? Взять тот же модуль диадока, как-то ведь справляется без модуля менеджера.
95 Kassern
 
05.09.22
13:24
Есть возможность использовать макеты и хранить в них обработки, которые можно так же подключать и вызывать их методы, есть возможность использовать формы как отдельные модули и т.д.
96 Eugeneer
 
05.09.22
13:24
(94) да забудь уже про модуль менеджера. Тема уже давно ушла от него.
97 RomanYS
 
05.09.22
13:35
(92) модуль объекта не работает без самого объекта, а значит для его использования придётся создавать копии объекта, что очень пугает Маньяка, т.к. при этом будут копироваться "огромные" данные)
Правильнее конечно модуль менеджера или ОМ для фоновых.
98 Новиков
 
05.09.22
16:13
(89) >> у меня модули обработки без параметров. они видят контекст - реквизиты обработки.

Если постановка вопроса такая, то единственный способ унификации - это идти с клиента на сервер с контекстом, там ТЧ выгрузить в ТЗ, которое потом помещаешь во временное хранилище. По адресу, идешь дальше куда-то тебе надо и там из временного хранилища достаешь свою таблицу значений по адресу. Без контекста, лучше в части оптимизации, чем описал выше - уже не сделать. Я свой пример, с &НаСервереБезКонтекста привел как пример. На практике, такое следует использовать, если ты передаешь какие-то простые типы из реквизитов формы туда, адрез ВХ для этого подходит. Как пример, можешь взглянуть на обработку СверкаНалоговСФНС, там в модуле формы ФормаСверки есть ОбновитьДанныеФормы(), правда там немного по старому написано.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший