Форум Кладовочки АЛьФ`а

Общие вопросы => 7.7 => Тема начата: Злоп от 14 июня 2026, 14:23

Название: Форам.ПолучитьАтрибут("ТутИмяРеквизитаФормы") - не получается... Почему?
Отправлено: Злоп от 14 июня 2026, 14:23
Справочник. ФормаЭлемента. На форме - поле ввода (строка5), (!!не реквизит справочника!!)
и получается вот такое: Форма.ПолучитьАтрибут("ВремяОконЗадачи") = НеизвестныйОбъект
Как получить значение поля ввода по имени?
Вроде как Форма.ПолучитьАтрибут(ТутИмяПоляВводаНеРеквизитаСправочника) - по идее должно сработать, но вот оно не так... Где туплю?

(понятно, что значение можно получить как Шаблон("[тутимяполя]") - но это уже от безвыходности)...
Название: Re: Форам.ПолучитьАтрибут("ТутИмяРеквизитаФормы") - не получается... Почему?
Отправлено: Злоп от 14 июня 2026, 14:29
И как установить в этом случае значение в поле ввода по его имени..?
Название: Re: Форам.ПолучитьАтрибут("ТутИмяРеквизитаФормы") - не получается... Почему?
Отправлено: Злоп от 14 июня 2026, 15:07
Речь про без Formex
Название: Re: Форам.ПолучитьАтрибут("ТутИмяРеквизитаФормы") - не получается... Почему?
Отправлено: Злоп от 14 июня 2026, 15:36
Цитата: Злоп от Вчера в 14:29И как установить в этом случае значение в поле ввода по его имени..?

тут конечно можно тоже через Шаблон() с использованием ПрисвоитьЧтоЧему()
нокак-то иначе никак без таких извращений?
Название: Re: Форам.ПолучитьАтрибут("ТутИмяРеквизитаФормы") - не получается... Почему?
Отправлено: Харлампий Дымба от 14 июня 2026, 23:23
Получить:
https://my1c-archive.narod.ru/knowhow/getvalat.html
Установить:
ВремяОконЗадачи = 5; ;D
Но если имя реквизита - переменная, то через Шаблон, как ты и написал выше.

Название: Re: Форам.ПолучитьАтрибут("ТутИмяРеквизитаФормы") - не получается... Почему?
Отправлено: Ветер в поле от 15 июня 2026, 07:47
У меня вот такие функции есть для установки/получения значений реквизитов. Всё это с использованием Формекс и 1С++:
//*****************************************************************************
Функция глУстановитьЗначениеРеквизитуФормы(Конт, Реквизит, Значение, ВыполнятьФормулу=0) Экспорт

АтрибутФормы = СоздатьОбъект("АтрибутФормы");

Попытка
АтрибутФормы.УстановитьАтрибут(Конт.Форма, Реквизит);
АтрибутФормы.Значение = Значение;

Попытка
Если ВыполнятьФормулу = 1 Тогда
Если ПустоеЗначение(АтрибутФормы.Формула) = 0 Тогда
Модуль = СоздатьОбъект("ВыполняемыйМодуль");
Модуль.УстановитьМодуль(
"Процедура ___ВыполнитьФормулуРеквизита___()
|  " + АтрибутФормы.Формула + "
|КонецПроцедуры");
Модуль.НазначитьКонтекст(Конт);
Модуль.КомпилироватьМодуль();
Модуль.ВыполнитьМодуль();
Модуль.___ВыполнитьФормулуРеквизита___();
КонецЕсли;
КонецЕсли;
Исключение
глВывестиМногострочноеСообщение("глУстановитьЗначениеРеквизитуФормы: Ошибка выполнения формулы реквизита " + Реквизит + "
|Формула: " + АтрибутФормы.Формула + "
|Ошибка: " + ОписаниеОшибки());
КонецПопытки;

Исключение
Сообщить("глУстановитьЗначениеРеквизитуФормы: Не найден реквизит на форме: " + Реквизит);
Возврат 0;
КонецПопытки;

Возврат 1;

КонецФункции //глУстановитьЗначениеАтрибутуФормы

//*****************************************************************************
Функция глПолучитьЗначениеРеквизитаФормы(Конт, Реквизит, СообщатьОбОшибке=1) Экспорт

АтрибутФормы = СоздатьОбъект("АтрибутФормы");

Попытка
АтрибутФормы.УстановитьАтрибут(Конт.Форма, Реквизит);
Возврат АтрибутФормы.Значение;
Исключение
Если СообщатьОбОшибке = 1 Тогда
Сообщить("глПолучитьЗначениеРеквизитаФормы: Не найден реквизит на форме: " + Реквизит);
КонецЕсли;

Возврат ПолучитьПустоеЗначение();
КонецПопытки;

КонецФункции //глПолучитьЗначениеРеквизитаФормы