Вызов метода модуля объекта из управляемой формы #652250


#0 by Feunoir
Есть процедура, которую нужно вызывать и из формы, и из модуля объекта. Насколько идеологически верным будет такой код? То есть работать-то оно работает, но вот меня смущает преобразование туда-сюда.
#1 by Stim
нехорошо это получать целый объект и гонять его взад-вперед. Лучше перенести процедуру в модуль менеджера и вызывать оттуда
#2 by Infsams654
а в процедуру модуля менеджера ты как объект передавать собрался ?
#3 by Feunoir
Была такая мысль, но разве в этом случае объект гонять не придется?
#4 by Поросенок Петр
Там блевотно копаются в коллекции формы делая вид что это объект, периодически проверяя разного рода типы.
#5 by Defender aka LINN
Про параметры процедур когда-нибудь слышали? О да. В ты его, конечно, не гоняешь...
#6 by Infsams654
это ты так прикалываешся, или всеръез не въезжаешь ?
#7 by Defender aka LINN
Ты спрашиваешь, въезжаю ли я в проблему, которой нет? Лично мне, например, никакая религия не мешает передавать в процедуру параметр.
#8 by lefthander
Синтаксис: РеквизитФормыВЗначение(<ИмяРеквизита>, <Тип>) Параметры: Тип: Строка. Имя реквизита формы, который необходимо преобразовать. Может быть указан реквизит данных формы (см. описание параметра <Объект> метода ДанныеФормыВЗначение). <Тип> (необязательный) Имя реквизита формы не есть весь объект, который вы собираетесь "гонять" туда/сюда
#9 by Infsams654
суть в том, что по объект уже есть на сервере. Вызов из модуля менеджера (т.н. статические методы) с передачей в параметре ссылки поднимает объект, если объекта по этой ссылке еще нет, т.е. тут не прав - ничего гонять не надо, т.к. все дела не сервере происходят
#10 by Defender aka LINN
Вообще-то, это и есть "весь объект"
#11 by Defender aka LINN
Ты накурился?
#12 by lefthander
под "весь объект" понимается форма со всеми реквизитами? или конкретный реквизит формы?
#13 by regniws
под "весь объект" понимается объект. Причем тут вообще форма-то..
#14 by lefthander
Ну как бы в вопрос был про форму, и не просто, а управляемую форму. Или нет? Да и методы использованные в коде именно для преобразования реквизитов формы в объект на сервере, и обратно.
#15 by lefthander
Возможно надо было другие методы использовать, например ДанныеФормыВЗначение(<Объект>, <Тип>) и ЗначениеВДанныеФормы(<Значение>, <Объект>) Как то так.
#16 by Infsams654
см. описание параметра <Объект> метода ДанныеФормыВЗначение Описание: Структура данных для моделирования данных, редактируемых в управляемой форме. Моделирует объект с набором свойств. выполняется на сервере, зачем предлагает в модуль менеджера передавать вызов с параметром существующего объекта ? все это одно и то же
#17 by lefthander
Я бы не был так категоричен, утверждая что все это одно и то же. Все таки они разные, методы. и для разных целей. В этом вся прелесть УФ.
#18 by Infsams654
в общем смысле, а так то да
#19 by Infsams654
"...В этом вся прелесть УФ" и состоит в том, что это nowhow 1С - держать формы на сервере, что не очень то соответствует общепринятой 3-хзвенной архитектуре
#20 by Defender aka LINN
То есть, создать никому ни в пень не впившийся экземпляр объекта только чтобы вызвать там процедуру - это нормально? А если процедура меняет данные объекта, то его потом надо возвращать обратно, перезаполнять вычисляемые поля - красота ведь. Ну и не говоря о том, что выглядит в разы солиднее, чем
#21 by lefthander
Ну так бы сразу и сказали :)  Не умеете вы готовить УФ и всеми фибрами души против.    ЗначениеВРеквизитФормы(ДокОбъект, "Объект"); Я не думаю что это правильно, хотя и работает. Методы использованы другие. Чуть выше - это правильней.
#22 by Defender aka LINN
В точно такая же куита, вид сбоку. Про мое неумение работать с УФ - это забавно даже, посмеялся. Оставьте в покое объект, его надо просто передавать в процедуру и не ипать никому моск. Как на парадоксально, но платформе без разницы, чем является "Объект" в конструкции вида "Объект.Реквизит = Значение"
#23 by lefthander
Уговорили, я тоже посмеялся :)
#24 by Feunoir
Отвлекся на час, называется... Мне кажется, я понял идею. Процедура в модуле менеджера будет работать с объектом, если процедуру вызвали из модуля объекта. И с коллекцией данных формы, если вызвали из модуля формы. И результат, по идее, должен быть аналогичным в обоих случаях. Правильно?
#25 by Defender aka LINN
Аминь.
#26 by Infsams654
конечно аналогично, только вы разберитесь в разнице между статическими методами и методами объекта. Статические (модуля менеджера) нужны, к примеру для печати или проведения документов из формы списка, т.е. когда объекты не подняты. Из "Есть процедура, которую нужно вызывать и из формы, и из модуля объекта" следует, что объект открыт - зачем делать масло масляным ?
#27 by НЕА123
хорошая ветка. в общем понятно. но все-таки ответа на сабж нет. &НаКлиенте Процедура Заполнить(Команда) КонецПроцедуры есть или нет других вариантов?
#28 by Defender aka LINN
... Ну это ППЦ, товарищи...
#29 by НЕА123
ну не хочу я тело процедуры ОбработкаЗаполнения куда-то вытаскивать.
#30 by Feunoir
Ну если не хочешь, тогда без вариантов :) У меня тут заполнялась только табличная часть, поэтому не напрягало нисколько. В результате получилось так: в форме в модуле объекта и в модуле менеджера
#31 by Infsams654
ну если через ж...пу, то так. Еще раз "разберитесь в разнице между статическими методами и методами объекта."
#32 by Feunoir
Давай не будем тащить в 1С парадигму ООП, ок? Ибо оно вообще тогда работать невозможно будет. По существу возражения есть?
#33 by Infsams654
по существу: в кода меньше, чем в и в меньших количествах модулей. А на счет ООП - нафига 1С тогда модуль менеджера создавало, как раз, чтоб под ООП подтянуться.
#34 by Feunoir
Кода в целом столько-же, но в меньшем количестве модулей - согласен. В меня больше напрягало ненужное создание объекта. Тут просто надо определиться, что важнее: соответствие ООП или меньшая нагрузка на сервер.
#35 by Infsams654
ну сам посуди - все и так работает на сервере, в то же самое, только нужно еще проверить наличие объекта, если его нет, то поднимай, если есть, то работай с готовым
#36 by А теперь Горбатый
"ну не хочу я тело процедуры ОбработкаЗаполнения куда-то вытаскивать." надо, федя, надо. покури, как в типовых сделано
#37 by Infsams654
ну смотря в каких - БГУ vs БП. Например, в отчетах БП 3.0 почти все через модуль менеджера сделано, хотя известно, что такой отчет, ты во внешний не выгрузишь...
#38 by Feunoir
Нене. Ничего проверять не нужно. Если процедура вызывается из модуля объекта, то она работает с объектом. Если из модуля формы - то со структурой данных формы. То есть объект во втором случае не создается.
#39 by Infsams654
в 1С открытая форма уже означает наличие объекта, или поспоришь ? Тогда и весь спор решается - если есть объект, тогда нафиг обращаться к менеджеру ?
#40 by Feunoir
Поспорю! Открытая управляемая форма вообще ни разу не означает наличие объекта. И даже не означает наличие соединения с сервером. И обращение к серверу не означает наличие объекта. Ну и так далее.
#41 by Infsams654
+-х*
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С