Имя: Пароль:
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) >> у меня модули обработки без параметров. они видят контекст - реквизиты обработки.

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