#0
by Feunoir
Есть процедура, которую нужно вызывать и из формы, и из модуля объекта. Насколько идеологически верным будет такой код? То есть работать-то оно работает, но вот меня смущает преобразование туда-сюда.
#1
by Stim
нехорошо это получать целый объект и гонять его взад-вперед. Лучше перенести процедуру в модуль менеджера и вызывать оттуда
#4
by Поросенок Петр
Там блевотно копаются в коллекции формы делая вид что это объект, периодически проверяя разного рода типы.
#5
by Defender aka LINN
Про параметры процедур когда-нибудь слышали? О да. В ты его, конечно, не гоняешь...
#7
by Defender aka LINN
Ты спрашиваешь, въезжаю ли я в проблему, которой нет? Лично мне, например, никакая религия не мешает передавать в процедуру параметр.
#8
by lefthander
Синтаксис: РеквизитФормыВЗначение(<ИмяРеквизита>, <Тип>) Параметры: Тип: Строка. Имя реквизита формы, который необходимо преобразовать. Может быть указан реквизит данных формы (см. описание параметра <Объект> метода ДанныеФормыВЗначение). <Тип> (необязательный) Имя реквизита формы не есть весь объект, который вы собираетесь "гонять" туда/сюда
#9
by Infsams654
суть в том, что по объект уже есть на сервере. Вызов из модуля менеджера (т.н. статические методы) с передачей в параметре ссылки поднимает объект, если объекта по этой ссылке еще нет, т.е. тут не прав - ничего гонять не надо, т.к. все дела не сервере происходят
#12
by lefthander
под "весь объект" понимается форма со всеми реквизитами? или конкретный реквизит формы?
#14
by lefthander
Ну как бы в вопрос был про форму, и не просто, а управляемую форму. Или нет? Да и методы использованные в коде именно для преобразования реквизитов формы в объект на сервере, и обратно.
#15
by lefthander
Возможно надо было другие методы использовать, например ДанныеФормыВЗначение(<Объект>, <Тип>) и ЗначениеВДанныеФормы(<Значение>, <Объект>) Как то так.
#16
by Infsams654
см. описание параметра <Объект> метода ДанныеФормыВЗначение Описание: Структура данных для моделирования данных, редактируемых в управляемой форме. Моделирует объект с набором свойств. выполняется на сервере, зачем предлагает в модуль менеджера передавать вызов с параметром существующего объекта ? все это одно и то же
#17
by lefthander
Я бы не был так категоричен, утверждая что все это одно и то же. Все таки они разные, методы. и для разных целей. В этом вся прелесть УФ.
#19
by Infsams654
"...В этом вся прелесть УФ" и состоит в том, что это nowhow 1С - держать формы на сервере, что не очень то соответствует общепринятой 3-хзвенной архитектуре
#20
by Defender aka LINN
То есть, создать никому ни в пень не впившийся экземпляр объекта только чтобы вызвать там процедуру - это нормально? А если процедура меняет данные объекта, то его потом надо возвращать обратно, перезаполнять вычисляемые поля - красота ведь. Ну и не говоря о том, что выглядит в разы солиднее, чем
#21
by lefthander
Ну так бы сразу и сказали :) Не умеете вы готовить УФ и всеми фибрами души против. ЗначениеВРеквизитФормы(ДокОбъект, "Объект"); Я не думаю что это правильно, хотя и работает. Методы использованы другие. Чуть выше - это правильней.
#22
by Defender aka LINN
В точно такая же куита, вид сбоку. Про мое неумение работать с УФ - это забавно даже, посмеялся. Оставьте в покое объект, его надо просто передавать в процедуру и не ипать никому моск. Как на парадоксально, но платформе без разницы, чем является "Объект" в конструкции вида "Объект.Реквизит = Значение"
#24
by Feunoir
Отвлекся на час, называется... Мне кажется, я понял идею. Процедура в модуле менеджера будет работать с объектом, если процедуру вызвали из модуля объекта. И с коллекцией данных формы, если вызвали из модуля формы. И результат, по идее, должен быть аналогичным в обоих случаях. Правильно?
#26
by Infsams654
конечно аналогично, только вы разберитесь в разнице между статическими методами и методами объекта. Статические (модуля менеджера) нужны, к примеру для печати или проведения документов из формы списка, т.е. когда объекты не подняты. Из "Есть процедура, которую нужно вызывать и из формы, и из модуля объекта" следует, что объект открыт - зачем делать масло масляным ?
#27
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
Поспорю! Открытая управляемая форма вообще ни разу не означает наличие объекта. И даже не означает наличие соединения с сервером. И обращение к серверу не означает наличие объекта. Ну и так далее.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Вызов процедуры
- СКД: Как можно сделать вызов функции не из общего модуля, а из модуля отчета В СКД
- Вызов процедуры модуля объекта из модуля формы
- Вызов общего модуля из модуля управляемой формы.
- Внешняя печатная форма, вызов клиентского метода
- Вызов из модуля команды объекта процедуры из модуля объекта
- Вызов серверного метода общего модуля из формы справочника
- вызов процедуры модуля объекта из модуля формы обработки
В этой группе 1С
- СКД. УФ. Пример расшифровки вариантом отчета.
- Бух 2.0: возврат от розничного покупателя
- как в логах 1с 8.2 увидеть что база выгружена или залита из dt
- Способ отражения в бухгалтерском учете доплаты по больничному до МРОТа, ЗУП
- УФ программно изменить порядок динамического списка
- v8: Убрать галочки со строк не попадающих в отбор
- Вывод времени в нужном формате в отчете на СКД
- Настройка формата даты 1с
- Реализация определенной партии в УТ 10.3
- Тупой вопрос: в ут11 отключить виды запасов нафиг вообще можно?
- Переименование базы на сервере 1с
- v7: Как в типовых реализована борьба с "не распределилось по партиям"...
- Регистрация компоненты MSCOMM32.OCX
- Подключение сканера штрихкодов через RDP
- Как двигать Дату Отгрузки в заказах клиента УТ 11? №2
- Как оптимизировать запись регистра сведений
- Как программно установить связь элемента управления и реквизита объекта
- Считать себестоимость по фирме в целом, а не на каждом складе отдельно
- v7: Выгрузка структуры базы данных для КД.
- v7: Ошибка: Движения регистров не могут выполняться у данного объекта.