Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 12:40

Атозаполнение формы

Автор Mobsman, 24 сен 2019, 13:27

0 Пользователей и 1 гость просматривают эту тему.

Mobsman

Пытаюсь сделать что бы при выборе договора, сумма по нему подставлялась сама.
Написал функцию, но не пойму правильно ли, и вообще не понимаю как правильно указать параметр функции. И ступор как сделать в процедуре на клиенте. СуммаКредита- это реквезит кредитного договора в справочнике
&НаКлиенте
Процедура ДоговорПриИзменении(Элемент)

КонецПроцедуры

   
&НаСервереБезКонтекста
Функция ПолучениеСуммы(СуммаКредита)
 
       Сумма=Справочники.КредитныйДоговор.ПолучитьСсылку();
      
возврат Сумма.СуммаКредита;

КонецФункции



Хотел спросить еще, реально ли найти какого ни будь наставника за не дорого что бы отвечал на вопросы которые беспокоят мой тупой ум.

antoneus

СуммаКредита - реквизит формы, не привязанный к реквизиту объекта? Тогда так.

&НаКлиенте
Процедура ДоговорПриИзменении(Элемент)

    СуммаКредита = ПолучениеСуммы()//если реквизит привязан к реквизиту объекта, тогда Объект.СуммаКредита = ПолучениеСуммы()

КонецПроцедуры
   
&НаСервере
Функция ПолучениеСуммы()

    Возврат Объект.Договор.СуммаКредита;

КонецФункции

Mobsman

Цитата: antoneus от 24 сен 2019, 14:34
СуммаКредита - реквизит формы, не привязанный к реквизиту объекта? Тогда так.

&НаКлиенте
Процедура ДоговорПриИзменении(Элемент)

    СуммаКредита = ПолучениеСуммы()//если реквизит привязан к реквизиту объекта, тогда Объект.СуммаКредита = ПолучениеСуммы()

КонецПроцедуры
   
&НаСервере
Функция ПолучениеСуммы()

    Возврат Объект.Договор.СуммаКредита;

КонецФункции


я бы привязал реквезит формы к обьекту, но он привязывается только к ссылке КредитныйДоговор , но не к его реквезиту.  И почему то не работает Обьект через точку Обьект.(ничего не выдает)
А вот так рабоатет
Сумма=Справочники.КредитныйДоговор.ПолучитьСсылку();
Сумма.СуммаКредита;

antoneus

Объект ничего не выдает, потому что директива &НаСервереБезКонтекста. Надо просто &НаСервере (как в моем ответе) - форма не такая уж тяжелая, чтобы из-за этого париться. Но если очень хочется &НаСервереБезКонтекста, тогда надо передать в функцию ссылку на договор:

&НаКлиенте
Процедура ДоговорПриИзменении(Элемент)

    Объект.СуммаКредита = ПолучениеСуммы(Объект.Договор)

КонецПроцедуры

   
&НаСервереБезКонтекста
Функция ПолучениеСуммы(Договор)

    Возврат Договор.СуммаКредита

КонецФункции

Mobsman

Цитата: antoneus от 24 сен 2019, 15:05
Объект ничего не выдает, потому что директива &НаСервереБезКонтекста. Надо просто &НаСервере (как в моем ответе) - форма не такая уж тяжелая, чтобы из-за этого париться. Но если очень хочется &НаСервереБезКонтекста, тогда надо передать в функцию ссылку на договор:

&НаКлиенте
Процедура ДоговорПриИзменении(Элемент)

    Объект.СуммаКредита = ПолучениеСуммы(Объект.Договор)

КонецПроцедуры

   
&НаСервереБезКонтекста
Функция ПолучениеСуммы(Договор)

    Возврат Договор.СуммаКредита

КонецФункции


Заработало, но я запутался :trhregerhg: на скрине написал
Получается мы обращаемся к обьектам формы которые на сервере ( вернее они всегда на сервере и к ним мы обращаемся, но не к данным справочника?) И как форма поняла правильно суммукредита, он ведь не ссылочный тип а числовой, а сами данные в справочнике кредитный догоовр, а у нас вроде нет обращения к этому справочнику

antoneus

Объект - это реквизит формы, который представляет собой как бы отражение данных, которые хранятся или будут храниться в объекте базы данных. В реквизите "Договор" документа хранится ссылка на объект базы данных (в данном случае этот объект - элемент справочника "Договоры"), и по этой ссылке можно через точку вытащить значения реквизитов (в данном случае - "СуммаКредита"). Но можно их вытащить только на сервере или в толстом клиенте.
И, поскольку "Объект" - это реквизит формы (он еще называется "Основной реквизит"), то при вызове функции с директивой НаСервереБезКонтекста, он, как и все остальные реквизиты формы, будет недоступен, потому что недоступен контекст формы.
Вообще, прежде чем начинать конфигурить и вот так тыкаться вслепую - лучше почитать хоть ЧТО-НИБУДЬ. Например, "Разработку управляемого интерфейса" Радченко. Книжки по 1С обычно толстые, но этого бояться не нужно - читаются они легко (если это не книжки из коробки поставки, конечно), половина объема там - картинки, еще четверть объема - вода. После прочтения подобные вопросы отпадут.

Mobsman

Цитата: antoneus от 24 сен 2019, 15:57
Объект - это реквизит формы, который представляет собой как бы отражение данных, которые хранятся или будут храниться в объекте базы данных. В реквизите "Договор" документа хранится ссылка на объект базы данных (в данном случае этот объект - элемент справочника "Договоры"), и по этой ссылке можно через точку вытащить значения реквизитов (в данном случае - "СуммаКредита"). Но можно их вытащить только на сервере или в толстом клиенте.
И, поскольку "Объект" - это реквизит формы (он еще называется "Основной реквизит"), то при вызове функции с директивой НаСервереБезКонтекста, он, как и все остальные реквизиты формы, будет недоступен, потому что недоступен контекст формы.
Вообще, прежде чем начинать конфигурить и вот так тыкаться вслепую - лучше почитать хоть ЧТО-НИБУДЬ. Например, "Разработку управляемого интерфейса" Радченко. Книжки по 1С обычно толстые, но этого бояться не нужно - читаются они легко (если это не книжки из коробки поставки, конечно), половина объема там - картинки, еще четверть объема - вода. После прочтения подобные вопросы отпадут.
Читал, и ан курсы ходил. Пока сам не начнешь писать что то на практике не разберешься.Примеры в книжках какие то типичные, каких то деталей,тонкостей не хватает для меня что бы понять. Я то пытался не через обьект формы получить ссылку, а напрямую
Сумма=Справочники.КредитныйДоговор.ПолучитьСсылку();
возврат Сумма.СуммаКредита;
, думал на сервере именно в тупую к обьектам обращаешься , теперь вроде догоняю. Спасибо

antoneus

Ну, насчет практики верно, конечно. В личке ответил.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск