|
v7: присвоить значение реквизиту внешней формы по идентификатору | ☑ | ||
---|---|---|---|---|
0
jah1111
15.09.23
✎
09:33
|
в форме обработки:
Докум = Форма.Параметр.Получить("Контекст"); // получаем контекст внешней формы Реквизит = Форма.Параметр.Получить("Реквизит"); // получаем реквизит внешней формы, которому потом предстоит прсисвоить значение //=============================================================================== Как теперь присвоить значение реквизиту внешней формы? Пробую: Докум.Форма.УстановитьАтрибут(Реквизит,ЗначениеКотороеНадоПрисвоить); не работает |
|||
1
mikecool
15.09.23
✎
10:34
|
Реквизит = ЗначениеКотороеНадоПрисвоит; не?
|
|||
2
arsik
15.09.23
✎
10:36
|
Может так?
Докум.Форма.УстановитьАтрибут("Реквизит",ЗначениеКотороеНадоПрисвоить); |
|||
3
jah1111
15.09.23
✎
10:40
|
(2) ну так "Реквизит" мы просто получим строку с буквами "Реквизит"
|
|||
4
jah1111
15.09.23
✎
10:49
|
(1) в таком случае, мы просто присвоим значение переменной Ревизит в модуле Формы обработки, а нужно присвоить значение реквизиту справочника ФОРМЫ ДОКУМЕНТА, из которого открывается форма обработки
ну к примеру присвоить значение Докум.Клиент. Где клиент реквизит справочника на форме документа. |
|||
5
jah1111
15.09.23
✎
10:56
|
или по другому пути...
как Строка("Докум."+реквизит) преобразовать в выражение Докум.<<реквизит>> ? |
|||
6
azernot
15.09.23
✎
11:14
|
Чесгря от меня ускользает смысл задачи..
Открыто две формы и нужно из одной открытой формы установить значение реквизита в другой открытой форме? |
|||
7
АгентБезопасной Нацио
15.09.23
✎
11:18
|
(6) Ну да. Открывает одну форму из другой, и из "условно дочерней" изменяет "условно родительскую". Прикладная проктология.
|
|||
8
azernot
15.09.23
✎
11:20
|
Мне кажется, задача решается только модальным открытием подчиенной формы
|
|||
9
АгентБезопасной Нацио
15.09.23
✎
11:23
|
(8) не, можно через формекс. Но по хорошему - да, модально открыть, а после закрытия заполнить реквизиты. Но ТС - любитель проктологии..
|
|||
10
jah1111
15.09.23
✎
11:34
|
(6) да.
в форме документа при нажатии на кнопку: Процедура ВыборЗн(Команда, ид) конт = взятьКонтекст(Контекст); сз = СоздатьОбъект("СписокЗначений"); сз.ДобавитьЗначение(конт, "Контекст"); // контекст формы сз.ДобавитьЗначение(Команда, "Команда"); // Команда определения вида справочника в котором нужно осуществлять подбор в дочерней форме. Вид может быть разным, определятся сторонней функцией сз.ДобавитьЗначение(ид, "Реквизит"); // идентификатор переменной которой надо присвоить значение в материнской форме ОткрытьФормуМодально("Обработка.ВиборРекв",сз); в форме обработки: Докум = Форма.Параметр.Получить("Контекст"); // получаем контекст внешней формы Команда = Форма.Параметр.Получить("Команда"); // получаем команду что делать и где выбирать Реквизит = Форма.Параметр.Получить("Реквизит"); // получаем реквизит внешней формы, которому потом предстоит прсисвоить значение как видите я открываю модально. а как дальше? |
|||
11
NikeArz
15.09.23
✎
12:03
|
Форма.Параметр.Реквизит = Реквизит
|
|||
12
jah1111
15.09.23
✎
12:14
|
(11) чесгаря ничего не понял
это где? в родительской форме? а откуда там значение Реквизит появится? |
|||
13
NikeArz
15.09.23
✎
12:24
|
Это заполняется в форме, которую вы открыли модально. Как правило при закрытии.
|
|||
14
NikeArz
15.09.23
✎
12:33
|
Перем Контекст;
ПриОткрытии() Контекст = Форма.Параметр; ВашРеквизит = Контекст.ВашРеквизит; ПриЗакрытии() Форма.Параметр.ВашРеквизит = ВашРеквизит; |
|||
15
azernot
15.09.23
✎
12:41
|
(10) При выполнении
ОткрытьФормуМодально("Обработка.ВиборРекв",сз); после закрытия модальной формы, в переменной сз будет всё то, что вы присвоите в дочерней обработке в Форма.Парметр перед её закрытием. |
|||
16
azernot
15.09.23
✎
12:46
|
ОткрытьФормуМодально("Обработка.ВиборРекв",сз);
Если ПустоеЗначение(сз) = 0 Тогда УстановитьАтрибут(Ид,сз); КОнецЕсли; Ну а в своей подчиненной форме Процедура ПриЗакрытии() (или как вы там определяете, что значение выбрано) Форма.Параметр = ЗначениеКотороеНадоПрисвоить; КонецПРоцедуры |
|||
17
jah1111
15.09.23
✎
13:30
|
(16) спасибо.
но УстановитьАтрибут(Ид,сз); только с указанием конкретного справочника во так касса = сз; работает... и Форма.УстановитьАтрибут(Ид,сз); тоже не работает |
|||
18
jah1111
15.09.23
✎
13:40
|
в методах формы есть только ПолучитьАтрибут(), а УстановитьАтрибут() не понимает
|
|||
19
azernot
15.09.23
✎
13:59
|
(17) есть лайфхак с шаблоном
http://my1c-archive.narod.ru/knowhow/shablon.html |
|||
20
jah1111
15.09.23
✎
14:03
|
короче, пришлось сделать так:
АФ = СоздатьОбъект("АтрибутФормы"); АФ.УстановитьАтрибут(Форма,ид); АФ.Значение = сз; жалко, что и модальное открытие и формекс, но работает |
|||
21
jah1111
15.09.23
✎
14:03
|
(19) спасибо, посмотрю
|
|||
22
jah1111
15.09.23
✎
14:05
|
(19) дык с шаблоном то небось и без модального открытия можно обойтись
|
|||
23
Злопчинский
15.09.23
✎
14:26
|
Если ТС будет нести фигнь, то фигня, принесёт его...
Раза три прочитал поток сознания... "..нужно присвоить значение реквизиту справочника ФОРМЫ ДОКУМЕНТА.."... |
|||
24
Злопчинский
15.09.23
✎
14:28
|
При простом присвоении надо тупо после присвоения обновить форму контекста, Докум.Форма.Обновить(1);
|
|||
25
Злопчинский
15.09.23
✎
14:31
|
.. И можно без всякой модальности...
. По идее всё должно нормально работать |
|||
26
Arbuz
15.09.23
✎
15:06
|
Если открывается одна форма из другой, то в первой форме есть контекст второй и можно в первой, например в ПриАктивацииОкна(), дёргать из второй всё, что душе угодно, не считая штатной передачи параметра формы.
|
|||
27
Злопчинский
15.09.23
✎
20:48
|
(26) так в тис сделана связь дочернего окна по просмотру остатков ТМЦ, я её докрутил чтобы из формы справочника и из формы элементы и из документа, выкручивать можно беспроблемно, главное определить тип и аид контекста родительской формы
|
|||
28
Злопчинский
16.09.23
✎
00:34
|
Проверил, с Шаблон работает норм.
Также работает простой тупой вариант Докум = Форма.Параметр.Получить("Контекст"); Сообщить(ТипЗначенияСтр(Докум)); Докум.УстановитьАтрибут("Контрагент",Константа.дРозничныйКлиент); . для ТС, который мутно не понимает различия межуду реквизитом и его именем (см. мутность в постановке задачи) будет просто: Докум.УстановитьАтрибут(Реквизит,ЗначениеКотороеНадоПрисвоить); //Реквизит - это ИМЯ РЕКВИЗИТА |
|||
29
АгентБезопасной Нацио
16.09.23
✎
11:16
|
(28) по его постановке - ему нужно установить не реквизит объекта, а реквизит формы (который с объектом может быть и не связан)
|
|||
30
Злопчинский
16.09.23
✎
11:25
|
(29) в (10) он явно говорит про форму документа
"...в форме документа...." . правда там же уже смешивает реквизит формы с просто переменной "...идентификатор переменной которой надо присвоить значение..." . все-таки думаю, что хочется ему установить реквизит формы документа, который является реквизитом документа... а как оно на самом деле - хз.. . бардак в голове, бардак в изложении, бардак в исполнении... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |