|   |   | 
| 
 | Вызвать модуль объекта с клиента? | ☑ | ||
|---|---|---|---|---|
| 0
    
        Euroset1 14.02.19✎ 10:40 | 
        Реально ли?
 Допустим, это внешняя обработка. Не хочу контекстный вызов сервера, если много данных на форме. При этом в модуле объекта есть процедура, которую не хотелось бы дублировать в модуле формы. | |||
| 1
    
        lxs 14.02.19✎ 10:43 | 
        Об = РеквизитФормыВЗначение("ОбработкаОбъект");
 Об.Автозаполнение(); | |||
| 2
    
        sieben 14.02.19✎ 10:44 | 
        (0) > Не хочу контекстный вызов сервера,
 Программный модуль объекта всегда получается из объекта - основного реквизита формы и неразрыно связан с ним. Реквизит формы - часть контекста. Так что извини, но нет. | |||
| 3
    
        lxs 14.02.19✎ 10:44 | 
        Отбой.. это только на сервере     | |||
| 4
    
        sieben 14.02.19✎ 10:47 | 
        (0) Передавай "свой контекст" структурой. А в модуле объекта что-то типа ТекущийКонтекст = ?(ПараметрКонтекст = Неопределено, ЭтотОбъект, ПараметрКонтекст) и алга.     | |||
| 5
    
        Euroset1 14.02.19✎ 12:10 | 
        (4) вот представь, у меня на форме много данных, которые не хочу синхронизировать с сервером без надобности. И бац - нужен вызов функции. Не совсем понял, что именно ты предлагаешь. Всмысле откуда куда передать.
 На крайний случай я подумываю примерно о следующем: 1) При создании на сервере - получаю объект и кладу его во временное хранилище, возможно сериализую или через структуру 2) Адрес этого хранилища транслирую на клиент 3) Для вызова модуля объекта иду с клиента на сервер без контекста, туда пинаю адрес и там вскрываю хранилище и юзаю мой объект для вызова его методов. Мне кажется, должно работать.. но не откажусь от более изящного способа извращения =) | |||
| 6
    
        sieben 14.02.19✎ 12:48 | 
        (5) А, ну да, у тебя ж модуля объекта и не будет, это я загнался. Отменяется.
 Объект, например СправочникОбъект или ОбработкаОбъект ты в хранилище не положишь, он мутабельный. Его надо каждый раз создавать заново. РеквизитФормыВЗначение, кстати, так и поступает - всегда создает объект заново, компилирует модуль и выполняет секцию инициализаци, потом тупо переносит в него данные из данных реквизита формы и отдает тебе. Ну еще чуть подправляет внутреннее состояние чтобы разные ЭтоНовый работали. Так что то, что ты задумал - не взлетит. Хранилище - оно для данных, а не для кода. Переходи на использование общих модулей, уменьшай размер данных формы - например, переносом в клиентские переменные, ты ж все равно с сервером их синхронизировать не хочешь. И т.п. | |||
| 7
    
        Вафель 14.02.19✎ 12:52 | 
        не размещай тогда процедуры в модуле объекта     | |||
| 8
    
        DrWatson 14.02.19✎ 13:19 | 
        А это "Допустим, это внешняя обработка" или "это внешняя обработка"?
 Потому что при таких вызовах лучше сделать функцию общего модуля или функцию менеджера объекта. | |||
| 9
    
        Euroset1 14.02.19✎ 13:31 | 
        Речь именно о внешней обработке. Если бы оформлял в виде расширения, то там без вопросов. 
 Почему именно модуль объекта? Потому что подключаю обработку через БСП в доп отчеты и обработки. Там действие должно работать по расписанию, а часть действия должна работать и принудительно через форму. Следовательно, код одинаковый. А дублировать его не хочется, очень (часто приходится допиливать). Там через форму все делается осознанно пользователем, а по расписанию - всплепую без выбора. Потому форма тяжелая с точки зрения контекста. Про мутабельный это круто, но я даже ком объект умудряюсь в временное хранилище запихать и использовать его раз 20 не создавая заново. В частности, ADODB Connection. Сейчас не помню код наверняка, но там что-то типа запихнутого в структуру ком объекта, потом эту структуру во временное хранилище и далее адрес в помощь. | |||
| 10
    
        sieben 14.02.19✎ 14:35 | 
        (9) > но я даже ком объект умудряюсь в временное хранилище запихать
 Еще один гений архитектуры. Это ровно до тех пор, пока у тебя серверные вызовы в один процесс рпхоста приходят. Как только нагрузка повысится, тебя ожидают изумительные эффекты. | |||
| 11
    
        YAGolova 14.02.19✎ 15:37 | 
        А если передать данные формы на сервер без контекста, а там воспользоваться ДанныеФормыВЗначение. Мне кажется должно взлететь     | |||
| 12
    
        lodger 14.02.19✎ 15:42 | 
        (0) 
 &НаКлиенте че-то параметр.Вставить("ПутьКОбработкеДоступныйССервера",СтрокаПуть) вызываемсервер(параметр) че-то &НаСервереБезКонтекста процедура вызываемсервер(параметр) твояобработка = получаемобработку(параметр.СтрокаПуть); твояобработка.твояпроцедурамодуля(параметр) конецпроцедуры | |||
| 13
    
        Вафель 14.02.19✎ 15:45 | 
        (9) у тебя какой релиз что ком объект во временное лезет?     | |||
| 14
    
        YAGolova 14.02.19✎ 15:56 | 
        ДанныеФормыВЗначение для внешней обработки
 Ответ в 22 сообщении | |||
| 15
    
        Tonik992 14.02.19✎ 16:05 | 
        (14) Я такого извращения давно не видел, спс. Не даете забыть, что мы работаем с 1С     | |||
| 16
    
        Euroset1 15.02.19✎ 14:23 | 
        (10) Какие проблемы? Неопределено - значит создам заново и опять запихну. А если объект еще жив, то работаю с ним. Я же не говорю о вечном, конечно же он теряется периодически. Но нам ведь он нужен на один раз по сути. 
 (13) во всех релизах начиная с 8.3.3 и по 8.3.12 лезет. Не напрямую, а через структуру. (14) спасибо. вот этот способ мне тоже подойдет. | |||
| 17
    
        ssh2006 15.02.19✎ 14:33 | 
        (0) > Не хочу контекстный вызов сервера
 Хочу нагородить костылей? | |||
| 18
    
        ptiz 15.02.19✎ 14:49 | 
        (0) Вопрос в том, важно ли тебе состояние объекта при вызове этой экспортной процедуры. Если нет - в чем проблема? Создать новый объект и вызвать процедуру. Если да - необходимо объект привести в состояние, при котором процедура даст верный результат.     | |||
| 19
    
        Конструктор1С 15.02.19✎ 15:22 | 
        Просто не надо бизнес-логику в модуль формы пихать, и подобных проблем не будет. В модуле формы должен быть только код, отвечающий за интерфейс     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |