ЗначениеВРеквизитФормы не понимаю как работает
Всем привет. Помогите пожалуйста разобраться как это работает
Есть РеквизитФормы и есть РеквизитОбъекта
Надо по кнопки изменить реквизит формы, но сделать это через реквизит объекта
Как записать реквизит формы из реквизита объекта не прямым присвоением (РеквизитФормы =объект.РеквизитОбъекта)
Есть РеквизитФормы и есть РеквизитОбъекта
Надо по кнопки изменить реквизит формы, но сделать это через реквизит объекта
Как записать реквизит формы из реквизита объекта не прямым присвоением (РеквизитФормы =объект.РеквизитОбъекта)
Прикрепленные файлы:


По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
У тебя просто код заполнения реквизита в модуле объекта. Поэтому ты вызываешь метод РеквизитФормыВЗначение, чтобы добраться до функции. Хорошо, заполнил реквизит объекта, а дальше как в (1) подсказали Реквизит Формы = Объект.РеквизитОбъекта
(6)Оно работает вот так:
на форму выводим Элемент с ПутьКДанным Объект.РеквизитОбъекта
далее
в модуле формы:
в Модуле объекта:
После выполнения значение в элементе формы должно изменится.
на форму выводим Элемент с ПутьКДанным Объект.РеквизитОбъекта
далее
в модуле формы:
&НаСервере
Процедура МояПроцедура()
ТекОбъект = РеквизитФормыВЗначение("Объект");
ТекОбъект.ИзменитьЗначение(а);
ЗначениеВРеквизитФормы(ТекОбъект, "Объект");
КонецПроцедуры
в Модуле объекта:
Процедура ИзменитьЗначение(ВхЗначение) Экспорт
РеквизитОбъекта = ВхЗначение * 3;
КонецПроцедуры
После выполнения значение в элементе формы должно изменится.
(7)
Зачем тогда все манипуляции с ЗначениеВРеквизитФормы(ТекОбъект, "Объект");
Если мы и так пропишем что элемент на форме получает данные из реквизита формы и как только мы заполним реквизит объекта то заполнится и поле на форме.
Задача именно заполнить реквизит на форме не связанный с реквизитом объекта.
на форму выводим Элемент с ПутьКДанным Объект.РеквизитОбъекта
Зачем тогда все манипуляции с ЗначениеВРеквизитФормы(ТекОбъект, "Объект");
Если мы и так пропишем что элемент на форме получает данные из реквизита формы и как только мы заполним реквизит объекта то заполнится и поле на форме.
Задача именно заполнить реквизит на форме не связанный с реквизитом объекта.
(8)
Нужны для получения самого прикладного объекта, для использования процедур/функций его модуля, например.
Для изменения реквизита формы РеквизитФормыВЗначение() и ЗначениеВРеквизитФормы() не нужны вообще.
Оно необходимо в том случае, когда реквизиты объекта меняются вне формы и нужно видеть эти изменения.
Самый простой пример - заполнение/изменение ТЧ внешней обработкой, подключенной в качестве доп. обработки.
Зачем тогда все манипуляции с ЗначениеВРеквизитФормы(ТекОбъект, "Объект");
Нужны для получения самого прикладного объекта, для использования процедур/функций его модуля, например.
Для изменения реквизита формы РеквизитФормыВЗначение() и ЗначениеВРеквизитФормы() не нужны вообще.
Оно необходимо в том случае, когда реквизиты объекта меняются вне формы и нужно видеть эти изменения.
Самый простой пример - заполнение/изменение ТЧ внешней обработкой, подключенной в качестве доп. обработки.
(10)
РеквизитФормыВЗначение() нужен что бы обратиться к функции в модуле объекта.
Глобальная задача стоит отучится писать код в модуле формы и писать его в модуле объекта...но уперся в вопрос как реквизиты передавать на форму если они не связаны с реквизитами объекта...допускаю что есть пробел в понимании механизма...по этому про Вашей помощи.
в таком случае, РеквизитФормыВЗначение() и ЗначениеВРеквизитФормы() не нужен вообще.
РеквизитФормыВЗначение() нужен что бы обратиться к функции в модуле объекта.
Глобальная задача стоит отучится писать код в модуле формы и писать его в модуле объекта...но уперся в вопрос как реквизиты передавать на форму если они не связаны с реквизитами объекта...допускаю что есть пробел в понимании механизма...по этому про Вашей помощи.
(12)
Если при этом вам нужно значение реквизита формы передать в модуль/вернуть в форму, то используйте структуру в качестве одного из параметров вызываемой процедуры/функции модуля объекта.
Присваиванием значения реквизиту в модуле формы, либо передачей структуры, ключи которой называются именами реквизитов формы, в качестве параметра процедуры/функции модуля объекта.
Использовать модуль объекта вместо модуля формы - должно быть оправдано, а не просто потому что захотелось.
РеквизитФормыВЗначение() нужен что бы обратиться к функции в модуле объекта.
Если при этом вам нужно значение реквизита формы передать в модуль/вернуть в форму, то используйте структуру в качестве одного из параметров вызываемой процедуры/функции модуля объекта.
но уперся в вопрос как реквизиты передавать на форму если они не связаны с реквизитами объекта
Присваиванием значения реквизиту в модуле формы, либо передачей структуры, ключи которой называются именами реквизитов формы, в качестве параметра процедуры/функции модуля объекта.
Использовать модуль объекта вместо модуля формы - должно быть оправдано, а не просто потому что захотелось.
(12)
Никак. У объекта НЕТ реквизита формы, из модуля объекта никак не добраться до реквизита формы его там НЕ существует. Реквизит формы (уточняю, реквизит созданный в форме и не имеющий пути типа Объект.....) по сути интерактивный рисунок и живет только пока живет форма. Ушли в объект - нет реквизита формы
но уперся в вопрос как реквизиты передавать на форму если они не связаны с реквизитами объекта...
Никак. У объекта НЕТ реквизита формы, из модуля объекта никак не добраться до реквизита формы его там НЕ существует. Реквизит формы (уточняю, реквизит созданный в форме и не имеющий пути типа Объект.....) по сути интерактивный рисунок и живет только пока живет форма. Ушли в объект - нет реквизита формы
(12)
А смысл? Модуль объекта (грубо) предназначен для обработки стандартных событий. В принципе, их можно было бы обрабатывать в модуле формы, но тогда эти события были бы недоступны программно без вызова формы. Зачем ВСЕ перетаскивать туда?
Глобальная задача стоит отучится писать код в модуле формы и писать его в модуле объекта
А смысл? Модуль объекта (грубо) предназначен для обработки стандартных событий. В принципе, их можно было бы обрабатывать в модуле формы, но тогда эти события были бы недоступны программно без вызова формы. Зачем ВСЕ перетаскивать туда?
тогда зачем этот метод?? ни как понять не могу
Первый параметр: Значение прикладного типа - это получается значение реквизита объекта ?
Второй параметр: Имя реквизита формы, в который необходимо поместить - тут как бы все понятно и так - реквизит формы куда будет класть наше значение реквизита объекта.
или как это вообще работает в жизни.
ЗначениеВРеквизитФормы(<Значение>, <ИмяРеквизита>)
Параметры:
<Значение> (обязательный)
Тип: Произвольный.
Значение прикладного типа, которое необходимо преобразовать в реквизит формы и для которого определено преобразование в данные формы.
<ИмяРеквизита> (обязательный)
Тип: Строка.
Имя реквизита формы, в который необходимо поместить преобразованное значение.
Параметры:
<Значение> (обязательный)
Тип: Произвольный.
Значение прикладного типа, которое необходимо преобразовать в реквизит формы и для которого определено преобразование в данные формы.
<ИмяРеквизита> (обязательный)
Тип: Строка.
Имя реквизита формы, в который необходимо поместить преобразованное значение.
Первый параметр: Значение прикладного типа - это получается значение реквизита объекта ?
Второй параметр: Имя реквизита формы, в который необходимо поместить - тут как бы все понятно и так - реквизит формы куда будет класть наше значение реквизита объекта.
или как это вообще работает в жизни.
(18)1. Да, в модуле формы РеквизитОбъекта = 2 будет простой переменной со значением 2(число).
2.Объект.РеквизитОбъекта = 2 - пишем Объект для того, чтобы работать с реквизитом, принадлежащим объекту, а не форме. В модуле объекта нет смысла писать Объект потому, что доступны только реквизиты самого объекта, реквизиты формы не доступны вообще никак.
3. Потому что изменение происходит без участия формы и форма ничего не знает об этом изменении. Именно для того. чтобы "увидеть" изменения необходимо "копию" (созданную с помощью РеквизитФормыВЗначение()) прикладного объекта с новыми значениями его реквизитов "передать" в форму с помощью ЗначениеВРеквизитФормы().
В модуле формы вы можете напрямую менять значение реквизитов как формы, так и объекта.
2.Объект.РеквизитОбъекта = 2 - пишем Объект для того, чтобы работать с реквизитом, принадлежащим объекту, а не форме. В модуле объекта нет смысла писать Объект потому, что доступны только реквизиты самого объекта, реквизиты формы не доступны вообще никак.
3. Потому что изменение происходит без участия формы и форма ничего не знает об этом изменении. Именно для того. чтобы "увидеть" изменения необходимо "копию" (созданную с помощью РеквизитФормыВЗначение()) прикладного объекта с новыми значениями его реквизитов "передать" в форму с помощью ЗначениеВРеквизитФормы().
В модуле формы вы можете напрямую менять значение реквизитов как формы, так и объекта.
Что бы систематизировать знания:
Что бы увидеть значение в элементе форме связанным с реквизитом объекта (ПутьКДанным: Объект.РеквизитОбъекта)
ИЗ ФОРМЫ ОБЪЕКТА
1. Объект.РеквизитОбъекта = <Присвоить Значение>
либо
2. ДокументОбъект = РеквизитФормыВЗначение("Объект"); //Попадаем в модуль объекта, в нем меняем значение реквизита РеквизитОбъекта = <Присвоить Значение>
ЗначениеВРеквизитФормы(ДокументОбъект, "Объект"); //Переносим значение в элементе форме связанным с реквизитом объекта (ПутьКДанным: Объект.РеквизитОбъекта)
3. Есть еще варианты?
Что бы увидеть значение в элементе форме связанным с реквизитом объекта (ПутьКДанным: Объект.РеквизитОбъекта)
ИЗ ФОРМЫ ОБЪЕКТА
1. Объект.РеквизитОбъекта = <Присвоить Значение>
либо
2. ДокументОбъект = РеквизитФормыВЗначение("Объект"); //Попадаем в модуль объекта, в нем меняем значение реквизита РеквизитОбъекта = <Присвоить Значение>
ЗначениеВРеквизитФормы(ДокументОбъект, "Объект"); //Переносим значение в элементе форме связанным с реквизитом объекта (ПутьКДанным: Объект.РеквизитОбъекта)
3. Есть еще варианты?
(26)
Поэтому можно (и нужно) прямо безо всяких процедур и функций просто и примитивно делать прям на клиенте так:
Есть еще варианты?
Достаточно первого варианта, второй вообще нигде желательно не использовать, т.к. в нем нет практического смысла на Вашем уровне понимания механизмов платформы. Фактически. объект, выгруженные из реквизита, нужен лишь за тем, чтобы вызвать функцию модуля этого объекта, что вообще сомнительно в плане использования, т.к. у объектов теперь есть модуль менеджера (исключение - внешние обработки, но даже там это далеко не всегда нужно).
Поэтому можно (и нужно) прямо безо всяких процедур и функций просто и примитивно делать прям на клиенте так:
&НаКлиенте
ПроцедураФункция ПриНажатииНаБольшуюКраснуюКнопку(Элемент)
Объект.Реквизит1 = Объект.Реквизит1 + 2
КонецПроцедурыФункции
(26)Вариант 2 - это прям какой-то очень большой изврат, но эффект будет равен эффекту варианта 1.
В подавляющем большинстве случаев используется вариант 1.
Еще есть варианты:
3. ОбновитьОтображениеДанных(элементы.РеквизитОбъектаНаФорме);
4. Прочитать()
Оба варианта служат для чтения текущего значения БД. Если объект не хранится в БД/никак не менялся/новый, то будет соответствующий результат
В подавляющем большинстве случаев используется вариант 1.
Еще есть варианты:
3. ОбновитьОтображениеДанных(элементы.РеквизитОбъектаНаФорме);
4. Прочитать()
Оба варианта служат для чтения текущего значения БД. Если объект не хранится в БД/никак не менялся/новый, то будет соответствующий результат
Пытаюсь теперь прочитать все через запись объекта.
Что я не так делаю?
Объект записываю в модуле объекта - реквизит заполняется (должен сохраниться в объекте)
открываю объект в модуле формы - там реквизит объекта пустой - как так?
Что я не так делаю?
Объект записываю в модуле объекта - реквизит заполняется (должен сохраниться в объекте)
открываю объект в модуле формы - там реквизит объекта пустой - как так?
Прикрепленные файлы:



(46)Объект записал потом изменил реквизит - реквизит все так же пустой? я ЧТо то логику ни как не пойму- у нас есть реквизит в объекте, мы если реквизит заполняем и т.к. он принадлежит объекту то через объект уже можно видеть какое в реквизит помещено значение - мы его видим пока находимся в модуле объекта, как только возвращаемся в модель форму и открываем объект то значение реквизита объекта снова пусто? как так? Ведь мало того что мы реквизит объекта записали значение так и сам объект записали.
Прикрепленные файлы:

(47)пфф....вы постоянно меняете условия и последовательность выполнения действий, поэтому получается каша.
в данном случае произошло следующее:
1 открыли форму объекта с пустым значением реквизита объекта
2. записали объект в ИБ.
3. поменяли значение реквизита вне формы.
4. прочитали объект из ИБ.
Догадайтесь, какой операции не хватает?
в данном случае произошло следующее:
1 открыли форму объекта с пустым значением реквизита объекта
2. записали объект в ИБ.
3. поменяли значение реквизита вне формы.
4. прочитали объект из ИБ.
Догадайтесь, какой операции не хватает?
так зачем два раза то записывать по логике если смотреть? Почему нельзя записать на стороне формы (мы реквизит объекта поменяли, на форме привязан этот реквизит к элементу форму, при записи формы т.к. к элементу формы привязан реквизит объекта в котором есть значение то это значение должно отобразиться на форме (предположим что не отобразилось) тогда запускаем Прочитать() - типа прочитай данные из объекта (зачем записывать объект если данные уже в его реквизите) - ага там данные есть - а раз данные связаны с элементом формы то надо отобразить в этом элементе значение из реквизита объекта.) а тут мы записываем почему то сначала значение в реквизит объекта потом объект этот записываем в базу, потом записываем форму а потом еще и читаем форму. Как то все не логично не фига.
Объясните пожалуйста - давно не могу с этим разобраться...такое ощущение что понимают это единицы и все пишут как умеют не понимая как это работает.
Объясните пожалуйста - давно не могу с этим разобраться...такое ощущение что понимают это единицы и все пишут как умеют не понимая как это работает.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот