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

Обращение к полю формы

Автор t955938, 13 июн 2011, 14:32

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

t955938

Добрый день!  Работаю 1С 8.2 легкий клиент.
Подскажите, пожалуйста, если мне нужно программно присвоить значение полю формы, правильнее это делать через присвоения значения его реквизиту или непосредственно полю.  Я вычитал, что при работе с формой имеются две коллекции с корнями Элементы и Объект. Попробовал присвоить значение.
Объект.Реквизит1 = "Значение";
Реквизит1 = "Значение";
Первое не работает, почему? Ошибка не появляется, просто поле не изменяет своего значения.

Maxim

В форме: Объект.Реквизит1 = "Значение";
В модуле объекта: Реквизит1 = "Значение";

Maxim


Maxim

У Вас какой тип объекта?

t955938

Тип объекта – Документ. Но меня интересует теоретическая часть вопроса. У формы имеются коллекции Объект и Элементы. Понимаю различия между реквизитами и полями в которых они отражаются.  Было сказано, что можно задавать значение реквизиту или полю, как объекту формы. Реквизиту значение присваивается, типа Реквизит1 = "Значение", а как обратиться к полю?
Объект.Реквизит1 = "Значение";// Не работает!!!!
Элементы.Реквизит1.?????? ="Значение";// Не работает!!!
Элементы.Реквизит1.ВыделенныйТекст ="Значение";// Работает, но говорят, что так делать не хорошо.
Речь идет о модуле формы.

Kacer

Помогите разобраться. Выполняю пример по книжке. Он выполнен в более ранней версии. Не могу его приспособить в 8.2. В общем есть справочник "Курсы". Задача напечатать по макету таблицу из справочника и там идет обращение к элементу формы. Создал конструктором макет. В командах имеем следующий код:
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
//{{_КОНСТРУКТОР_ПЕЧАТИ(Печать)
ТабДок = Новый ТабличныйДокумент;
Печать(ТабДок, ПараметрКоманды);

ТабДок.ОтображатьСетку = Ложь;
ТабДок.Защита = Ложь;
ТабДок.ТолькоПросмотр = Ложь;
ТабДок.ОтображатьЗаголовки = Ложь;
ТабДок.Показать();
//}}
КонецПроцедуры

&НаСервере
Процедура Печать(ТабДок, ПараметрКоманды)
Справочники.Курсы.Печать(ТабДок, ПараметрКоманды);
КонецПроцедуры


В модуле менеджера следующий:
Процедура Печать(ТабДок, Ссылка) Экспорт
//{{_КОНСТРУКТОР_ПЕЧАТИ(Печать)
Макет = Справочники.Курсы.ПолучитьМакет("Печать");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Курсы.ДатаНачала,
| Курсы.Наименование,
| Курсы.Преподаватель,
| Курсы.Продолжительность,
| Курсы.Стоимость
|ИЗ
| Справочник.Курсы КАК Курсы
|ГДЕ
| Курсы.Ссылка В (&Ссылка)";
Запрос.Параметры.Вставить("Ссылка", Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
Шапка = Макет.ПолучитьОбласть("Шапка");
ТабДок.Очистить();

ВставлятьРазделительСтраниц = Ложь;
Пока Выборка.Следующий() Цикл
Если ВставлятьРазделительСтраниц Тогда
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;

ТабДок.Вывести(ОбластьЗаголовок);

Шапка.Параметры.Заполнить(Выборка);
ТабДок.Вывести(Шапка, Выборка.Уровень());

ВставлятьРазделительСтраниц = Истина;
КонецЦикла;
//}}
КонецПроцедуры


Далее поставлена задача: если стоит галка в  чекбоксе, то печать курсы с определенным условием.
Правлю код как в книге. Вставляю условие:
Если (ЭлементыФормы.КороткиеКурсы.Значение=Истина) Тогда
Ругается на неопределенность переменной ЭлементыФормы. Пробовал Писать Элементы, результат тот же. Читал похожие проблемы, но так и не понял где косяк, в синтаксисе или еще где. Помогите разобраться как поступить в данном случае.

cska-fanat-kz

"КороткиеКурсы" загоняете в реквизиты ОБЪЕКТА (справочника).
Вот у вас там есть запрос, туда добавляете этот новый реквизит.
И далее при обходе результата запроса уже проверяете условие

Если Выборка.КороткиеКурсы Тогда

В модуле менеджера "не видно" форму элемента справочника, поэтому к ее родным реквизитам вы никак не можете обратиться. Да это и логично...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Теги:

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

Рейтинг@Mail.ru

Поиск