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