|
Почему в поле ввода не обновляется текст, если пишешь в связанную с ним переменную? | ☑ | ||
---|---|---|---|---|
0
DJ Anthon
01.06.20
✎
15:42
|
На форме поле ввода со строковой переменной. Пишу значение в переменную, значение присваивается, текст остаётся прежним.
Если пишу текст в поле ввода, то значение переменной изменяется. Ут 11, УФ. Почему текст редактирования надо отдельно присваивать? |
|||
1
Фрэнки
01.06.20
✎
15:44
|
контекст нарушен, вот потому и не присваивается. Точнее, не обновляется в поле.
|
|||
2
Фрэнки
01.06.20
✎
15:46
|
Элемент формы имеет множество полей. По событиям какие-то оказываются обновленными при получении нового значения, а какие-то нужно обновлять принудительно, т.к. событие контекста отсутствует.
|
|||
3
DJ Anthon
01.06.20
✎
15:53
|
Тогда почему
Расширение поля формы для поля ввода (Form field extension for a text box) ТекстРедактирования (EditText) Использование: Только чтение Сама платформа его не присваивает, а мне тогда как его присвоить? И как я смог нарушить контекст? |
|||
4
Фрэнки
01.06.20
✎
16:12
|
Кусок кода дай. Вместе с определением контекста (Там предикаты или как там их правильно кличут - НаСервере НаКлиенте и т.д.)
Если это не слишком громоздкий код, конечно. Громоздкий в формате форума смотреть бесполезно. |
|||
5
DJ Anthon
01.06.20
✎
16:13
|
Номенклатура = "123";
Номенклатура - это реквизит формы типа Строка. На форме есть поле ввода, где ПутьКДанным - Номенклатура |
|||
6
Фрэнки
01.06.20
✎
16:16
|
И запись в коде строкового значения в строковый реквизит формы не вызывает его обновления на форме?
|
|||
7
DJ Anthon
01.06.20
✎
16:19
|
Да. пришлось сделать так:
&НаКлиенте Процедура ОбновитьНоменклатуру(Номка) ЭтаФорма.Элементы.Номенклатура.Доступность = Ложь; НоменклатураСсылка = Номка; Номенклатура = СокрЛП(Номка.Наименование); ЭтаФорма.Элементы.Номенклатура.ОграничениеТипа = Новый ОписаниеТипов("СправочникСсылка.Номенклатура"); ЭтаФорма.Элементы.Номенклатура.ОграничениеТипа = Новый ОписаниеТипов("Строка"); ЭтаФорма.Элементы.Номенклатура.УстановитьГраницыВыделения(1, СтрДлина(ЭтаФорма.Элементы.Номенклатура.ТекстРедактирования) + 1); ЭтаФорма.Элементы.Номенклатура.ВыделенныйТекст = Номенклатура; ЭтаФорма.Элементы.Номенклатура.Доступность = Истина; КонецПроцедуры Так работает. Доступность временно затираю, чтобы не срабатывало событие при изменении объекта. даже в прошлом веке у объектов дельфи и билдера был реквизит Tag для нужд трудящихся. Здесь же передать в событие любую связанную с элементом формы информацию всегда проблематично. мне только один флаг был нужен, я его передал с помощью Доступность. |
|||
8
DJ Anthon
01.06.20
✎
16:24
|
Это я создаю поле формы, в котором можно не только выбрать номенклатуру, но и написать просто текст, по которому номенклатура автоматически найдется.
Казалось бы, чем не устраивает стандартный ввод по строке? А дело в том, что мне надо отпустить поле ввода, если номенклатуры нет. Она при этом создастся, когда будет проводиться документ. Два типа используется, чтобы работал штатный выбор номенклатуры из справочника и открытие. |
|||
9
Фрэнки
01.06.20
✎
16:33
|
может просто лучше отделить элементы формы и работать с ними отдельно, а вот это с двумя типами и т.д. спрятать где-то с глаз пользователя да и все?
|
|||
10
DJ Anthon
01.06.20
✎
16:50
|
что от чего отделить? все работает, как надо и очень удобно. я такое еще на 7.7 на формексе писал. жаль, что 1совцы не додумались до такого еще сами. только палки в колеса вставляют.
вопрос заключается только в том, что я не могу понять причину, почему не обновляется текст в поле ввода. почему руками его туда писать надо. и почему текстредактирования только для чтения. во всех других средах разработки это всегда было доступно. к тому же как объяснить заказчику, которому надо именно так. "вот тут типа вводите текст, но если не получается, нажмите еск один раз, правда, 1с подвиснет и случайно не нажмите второй раз, а потом заново забейте в соседнем поле тот же текст". а со стандартными полями ввода в цеху работать неудобно, там надо максимально просто. вбил номенклатуру - записал. никаких тебе карточек ввода с тысячей полей. |
|||
11
DJ Anthon
01.06.20
✎
16:51
|
ну, я в принципе и отделил НоменклатураСсылка и Номенклатура. если вы это имели в виду. НоменклатураСсылка скрыт, а Номенклатура - это текст, но при выборе это временно ссылка. иначе события на выбор не отрабатывают. 1совцы же умные. как можно выбрать строку? давайте мы не будем вызывать событие, хотя оно прописано.
|
|||
12
Salimbek
01.06.20
✎
17:14
|
(5) После присваивания
ЭтаФорма.ОбновитьОтображениеДанных(Элементы.Номенклатура); пробовал делать? |
|||
13
DJ Anthon
01.06.20
✎
18:04
|
(12) попробовал, к сожалению, не работает. но об этой функции слышу впервые, никогда не требовалась, буду иметь в виду.
|
|||
14
Ненавижу 1С
гуру
01.06.20
✎
19:07
|
(11) почему не срабатывают? может надо стандартную обработку отключать?
|
|||
15
DJ Anthon
01.06.20
✎
20:49
|
(14) в том-то и смысл, что в событие не запускается, и в нем нечего отключать. но мне надо наоборот, чтобы отработал стандартный выбор номенклатуры из справочника,
взять полученную ссылку, а в поле проставить только текст, чтобы его пользователь мог легко подправить, а 1С не просила выбрать или создать номенклатуру с измененным наименованием. необходимость создания нового элемента определяется кодом "проведения" документа. к тому же, по специфике организации 90% номенклатур должны генерироваться автоматически, но их название должно быть видно на месте данного поля. причем название должно быть уже готово до проведения документа, но номенклатура еще не должна быть создана. |
|||
16
DJ Anthon
01.06.20
✎
20:52
|
(14) но если сделать реквизит составного типа (строка+ссылка), то событие работает и для реализации всей этой чепухи достаточно всего лишь
одной функции, которую надо вызывать всегда, когда значение реквизита меняется программным способом, вот и все. а в ней я ссылку переношу в отдельный скрытый реквизит. пусть через костыль через выделенный фрагмент, но эта вещь работает. я просто хотел узнать причину, почему вообще нельзя обойтись штатными средствами. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |