Как положить значение в элемент формы в УФ #797115


#0 by Махони402
Нубский вопрос: Как в УФ положить значение в элемент формы - на клиенте в нем даже путь к данным не доступен? Подробности: У меня есть событие "начало выбора", входные параметры Элемент формы (поле ввода) и еще парочка. Я отменяю стандартное поведение, открываю нужную мне форму выбора, в колбэке преобразую выбор в нужное мне значение (строковое, если кому важно) и хочу его записать. В стародавние времена у элементов формы АФАИР был реквизит "Значение" куда все и писалось. Теперь нету, и даже на "путь к данным" отладчик на клиенте пишет "нет доступа" а на сервере вообще не может с элементом формы работать. Я пока вышел из положения пользуясь тем, что у реквизита формы и элемента формы название одинаковое, и делаю "ЭтаФорма[ЭлементФормы.Имя] = Рез". Но так же не дело, у одного реквизита формы может быть несколько представлений на разных страницах например. И тогда такой костыль не пройдет. Вот как мне значение записать куда надо, имея только элемент формы? Код на сейчас:
#1 by SSSSS_AAAAA
1. У форм, вызываемых в обработчиках интерактивных событий обычно есть реквизит Владелец. 2. Писать лучше не в форму и ее элементы, а прямо в реквизиты объекта.
#2 by h-sp
а где ОбработкаВыбора?
#3 by Махони402
Не нужна. Колбэк за нее.
#4 by Махони402
Есть владелец. Я хочу понять, как я в событии "начало выбора" могу узнать реквизит, для которого оно произошло, если в Элементе этого нет.
#5 by h-sp
колбэк это начало выбора? Он не может быть за конец выбора.
#6 by Махони402
колбэк это то, что вызывается после закрытия формы выбора. С учетом "СтандартнаяОбработка = Ложь;" в начале выбора, никакого конца выбора не будет
#7 by Fragster
оповестить о выборе - и во владельце придет нужное значение в обработку выбора
#8 by Махони402
Значение приходит. Я не знаю, куда его писать.
#9 by Махони402
+ Обе приведенные функции - во владельце. Форма выбора вообще не существует в конфигурации. Автоматическая она.
#10 by h-sp
Элемент.Значение
#11 by Махони402
Не работает.
#12 by Махони402
Элемент    ПолеФормы    ПолеФормы АвтоВыборНезаполненного        Неопределено АвтоВысотаЯчейки    Ложь    Булево АвтоМаксимальнаяВысота    Истина    Булево АвтоМаксимальнаяШирина    Истина    Булево АвтоОтметкаНезаполненного    Ложь    Булево АвтоПереносСтрок    Истина    Булево АктивизироватьПоУмолчанию    Ложь    Булево БыстрыйВыбор        Неопределено ВертикальноеПоложение    Авто    ВертикальноеПоложениеЭлемента ВертикальноеПоложениеВГруппе    Авто    ВертикальноеПоложениеЭлемента Вид    Поле ввода    ВидПоляФормы Видимость    Истина    Булево ВыбиратьТип    Истина    Булево ВыборГруппИЭлементов    Авто    ГруппыИЭлементы ВыделенныйТекст    ""    Строка ВысотаСпискаВыбора    0    Число ГиперссылкаЯчейки    Ложь    Булево ГоризонтальноеПоложение    Авто    ГоризонтальноеПоложениеЭлемента ГоризонтальноеПоложениеВГруппе    Авто    ГоризонтальноеПоложениеЭлемента ГоризонтальноеПоложениеВПодвале    Авто    ГоризонтальноеПоложениеЭлемента ГоризонтальноеПоложениеВШапке    Лево    ГоризонтальноеПоложениеЭлемента Доступность    Истина    Булево ДоступныеТипы        ОписаниеТипов Заголовок    ""    Строка Имя    "ДополнительныйРеквизитЗначение_5D931007xABE5x11E6xB911x005056B68044_E8DE829Ex3644x11E7x8282x40B89A6EAD46"    Строка ИсторияВыбораПриВводе    Авто    ИсторияВыбораПриВводе КартинкаКнопкиВыбора    Картинка    Картинка КартинкаПодвала    Картинка    Картинка КартинкаШапки    Картинка    Картинка КнопкаВыбора    Истина    Булево КнопкаВыпадающегоСписка        Неопределено КнопкаОткрытия        Неопределено КнопкаОчистки    Истина    Булево КнопкаРегулирования        Неопределено КнопкаСпискаВыбора        Неопределено КонтекстноеМеню    ГруппаФормы    ГруппаФормы МаксимальнаяВысота    0    Число МногострочныйРежим        Неопределено ОбновлениеТекстаРедактирования    Авто    ОбновлениеТекстаРедактирования ОграничениеТипа        ОписаниеТипов ОтметкаНезаполненного    Ложь    Булево ОтображатьВПодвале    Истина    Булево ОтображатьВШапке    Истина    Булево ОтображениеКнопкиВыбора    Авто    ОтображениеКнопкиВыбора ОтображениеПодсказки    Авто    ОтображениеПодсказки ОтображениеПредупрежденияПриРедактировании    Авто    ОтображениеПредупрежденияПриРедактировании ПараметрыВыбора    ФиксированныйМассив    ФиксированныйМассив Подсказка    ""    Строка ПодсказкаВвода    ""    Строка ПоложениеЗаголовка    Авто    ПоложениеЗаголовкаЭлементаФормы ПредупреждениеПриРедактировании    ""    Строка ПропускатьПриВводе        Неопределено ПутьКДанным    Свойство недоступно     ПутьКДаннымПодвала    Свойство недоступно     РазрешитьСоставнойТип    Истина    Булево РастягиватьПоВертикали        Неопределено РастягиватьПоГоризонтали        Неопределено РасширеннаяПодсказка    ДекорацияФормы    ДекорацияФормы РасширенноеРедактирование        Неопределено РедактированиеТекста    Ложь    Булево РежимВыбораИзСписка    Ложь    Булево РежимВыбораНезаполненного    При нажатии Enter    РежимВыбораНезаполненного РежимПароля        Неопределено РежимРедактирования    Вход    РежимРедактированияКолонки Родитель    ГруппаФормы    ГруппаФормы СвязиПараметровВыбора    ФиксированныйМассив    ФиксированныйМассив СвязьПоТипу    СвязьПоТипу    СвязьПоТипу СочетаниеКлавиш    СочетаниеКлавиш    СочетаниеКлавиш СписокВыбора        СписокЗначений ТекстРедактирования    ""    Строка ТолькоПросмотр    Ложь    Булево ФиксацияВТаблице    Нет    ФиксацияВТаблице ФормаВыбора    Свойство "ФормаВыбора" не поддерживается этим элементом     Формат    ""    Строка ФорматРедактирования    ""    Строка ЦветРамки    Авто    Цвет ЦветТекста    Авто    Цвет ЦветТекстаЗаголовка    Авто    Цвет ЦветТекстаПодвала    Авто    Цвет ЦветФона    Авто    Цвет ЦветФонаЗаголовка    Авто    Цвет ЦветФонаПодвала    Авто    Цвет Ширина    0    Число ШиринаВыпадающегоСписка    0    Число Шрифт    Авто    Шрифт ШрифтЗаголовка    Авто    Шрифт ШрифтПодвала    Авто    Шрифт
#13 by Махони402
Таблицы движек не переваривает, это вывод из табло. Как видно не то, что "Значение" отсутствует, даже ПутьКДанным    Свойство недоступно
#14 by DailyLookingOnASunse
При создании формы нужно заполнить соответствие элементов (полей ввода) и реквизитов формы и запомнить его. На клиенте пользоваться.
#15 by Махони402
То есть вот такая грусть тоска? Это в "перед созданием на сервере" табличку городить и не забывать ее обновлять всегда при программном добавлении реквизитов? (с учетом того, что это типовой БСП-блок по работе с доп реквизитами, и я не все добавления контролирую становится особенно грустно)
#16 by DailyLookingOnASunse
Q Есть элемент формы и мне нужно на клиенте обратиться к его данным. Конечно есть свойство ПутьКДанным, которое доступно на сервере. Однако делать в каждой форме реквизит для хранения этого свойства для всех элементов формы для обеспечения доступности сопоставления на клиенте довольно неудобно. A "Однако делать в каждой форме реквизит для хранения этого свойства для всех элементов формы" - хотелось бы знать зачем это может понадобиться "в каждой форме"? В принципе, у вас правильная гипотеза. На клиенте недостаточно информации для полноценной поддержки метаинформации о реквизитах. Для того чтобы это реализовать на клиент пришлось передавать много дополнительной информации, что нам не кажется целесообразным. Основной вопрос я сформулировал - зачем это нужно в сколь нибудь типовом случае?
#17 by b_ru
Для элемента формы указываешь путь к данным, т.е. реквизит на который он ссылается. Это может быть либо реквизит формы, в таком случае обратиться к нему из модуля можно просто по имени, либо реквизит основного реквизита, в этом случае Объект.ИмяРеквизита
#18 by Махони402
Я не работаю с элементами, их уже сделали. Я реализую событие "при начале выбора" для некоторого множества динамически сформированных (не мной) реквизитов формы. Тогда зайдем с другой стороны. Если это нельзя делать на клиенте, можно засунуть колбэк на сервер (с контекстом) А зачем это нужно - ну вот задача. Собственная обработка выбора для неизвестного заранее реквизита формы. Спасибо за помощь. Вместо стало Чуток безопаснее, уже хорошо.
#19 by Махони402
+ "ИмяЭлементаФормы" передается в колбэк из события в качестве доп реквизита вместо самого элемента в прошлом листинге. Строка в отличие от элемента формы легко ездит между клиентом и сервером.
#20 by Fragster
это ужасно
#21 by Fragster
опиши своими словами, что должно происходить на экране, без привязки к коду и событиям
#22 by Fragster
что-то типа "пользователь тыкает в кнопку выбора, открывается произвольная форма, там происходит обработка данных, в ней тыкается кнопка подтверждения, результат попадает в исходное поле"
#23 by Махони402
На форме есть строковый реквизит (потом уйдет в ТЧ доп реквизитов) туда нужно положить наименования подобранных из справочника элементов через точку с запятой. Реквизит добавлен подсистемой БСП по работе с доп реквизитами, имя соответствующее.
#24 by h-sp
но что ты хочешь? Создай серверную процедуру СтроковыйДопРеквизит_НачалоВыбора_КолбэкСервер и в ней напиши всё. Там 2 строчки поди. чего ты ждешь?
#25 by тарам пам пам
Ты какую-то чушь нагородил тут. При вызове ОткрытьФорму вместо ЭтаФорма во владельца передавай Элемент. Оповещение вообще не нужно. Тогда при выборе значения это самое значение попадет в элемент и у него сработает событие ОбработкаВыбора, где уже можно или не трогать его и оно само запишется в соответствующий реквизит формы, или обработать как тебе нужно. Что-то вроде: &НаКлиенте
#26 by Fragster
а подбираются они как?
#27 by Fragster
ты не написал действия пользователя, которые должны приводить к твоему результату
#28 by Махони402
Как в 1С все подбирается. Нажал 3 точки, открылось окно выбора справочника, выделил несколько элементов, нажал кнопку "выбрать". Да, твой вариант работает и значит он верен. Что-то я понавыдумывал сложностей на пустом месте. Что элемент можно засунуть во владельца я не подумал, не знал, что он может быть не формой.
#29 by Fragster
тут видится огромный пласт проблем в юзабилити. Например невозможность обратного преобразования к списку ссылок. Необходимость выбора элементов каждый раз заново и т.п.
#30 by Махони402
В принципе, на данном этапе задача не стоит, хотя я и озвучил эту проблему. А если что, кажется спокойно можно преобразовать обратно - после получения/открытия формы прицепом добавить процедуру по разложению строки в список элементов и выделению нужных элементов в открытой форме разве не получится?
#31 by etc
Помоему основной fail в задаче - попытка передать множество значений через промежуточный реквизит, причем строчный. Что-то в работе с интерфейсом замудрили. Желание кого-то из пользователей?
#32 by Махони402
потом это засунут в qlikview и будут вертеть уже там. А значит нужна плоская таблица с фиксированным числом столбцов. Ну и глянуть глазами на пару строк с 1-5 словами через запятую проще, чем на пару ТЗ с 1-5 строчками.
#33 by Махони402
+ Ясно, что эти ТЗ можно не показывать, а так же выводить парой строчек, но это еще больший бюджет с неочевидными сейчас преимуществами. На выходе все равно должна быть плоская таблица.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С