|
УТ 11.Программно заполнить созданное программно поле формы | ☑ | ||
---|---|---|---|---|
0
kIR
02.11.16
✎
18:02
|
Доброго вечера!
Программно создаю поля в подвале, в которых хочу выводить количество товара по родителям номенклатуры. создал доп.поле в ТЧ товары, в которое записываю родителя текущей номенклатуры. Код создания поля такой такой: &НаКлиенте Процедура ТоварыКоличествоУпаковокПриИзменении(Элемент) ТекущаяСтрока = Элементы.Товары.ТекущиеДанные; ... ОбработкаКоличества(ТекущаяСтрока.родитель); КонецПроцедуры &НаКлиенте Процедура ОбработкаКоличества(Родитель) Эф = ЭтаФорма.Элементы.Найти(СтрЗаменить("Количество" + Родитель," ","")); Если Эф = Неопределено Тогда СоздатьПолеНаСервере(Родитель); Эф = ЭтаФорма.Элементы.Найти(СтрЗаменить("Количество" + Родитель," ","")); Эф.Заголовок = "Количество " + Родитель; КонецЕсли; Эф.РастягиватьПоГоризонтали = Истина; Эф = ПолучитьКоличество(Родитель); КонецПроцедуры &НаСервере Функция ПолучитьКоличество(РОдительНоменклатуры) Отбор = новый Структура("Родитель",РОдительНоменклатуры); Массив = Объект.Товары.НайтиСтроки(Отбор); кп = 0; Для Каждого Стр из массив Цикл кп = кп + стр.количество; КонецЦикла; возврат кп; КонецФункции &НаСервере Процедура СоздатьПолеНаСервере(РОдительНоменклатуры) нРеквизиты = Новый Массив; Реквизит = Новый РеквизитФормы(СтрЗаменить("Количество" + РОдительНоменклатуры," ",""), Новый ОписаниеТипов("Число"), , , Истина); нРеквизиты.Добавить(Реквизит); ИзменитьРеквизиты(нРеквизиты); //Добавляем поле ввода Элемент = ЭтаФорма.Элементы.Добавить(СтрЗаменить("Количество" + РОдительНоменклатуры," ",""), Тип("ПолеФормы"), ЭтаФорма.Элементы.ГруппаКоличество); Элемент.Вид = ВидПоляФормы.ПолеНадписи; Элемент.ПутьКДанным = СтрЗаменить("Количество" + РОдительНоменклатуры," ",""); КонецПроцедуры Но при выполнении процедуры Количество не отображается никак...Пробовал сверять "эф" и "ЭтаФорма.Элементы.<имя реквизита, который создаю>" - они совпадают не пойму,как правильно(( Спасибо |
|||
1
Mort
02.11.16
✎
19:54
|
ЭтотОбъект["Количество" + Родитель] = ПолучитьКоличество(Родитель);
|
|||
2
kIR
03.11.16
✎
09:11
|
(1) не вариант. Даже если мы используем не "ЭтотОбъект", а "Объект" (так как УФ), то у меня нет реквизит,который я создаю - это реквизит формы, а не объекта.
А реквизит формы - это,как раз, "эф" |
|||
3
FIXXXL
03.11.16
✎
09:17
|
(0) Элементы.<имя реквизита, который создаю> = кп
ни у проверь кп, мож он = 0 :) |
|||
4
kIR
03.11.16
✎
09:20
|
(3) проверял, конечно же)
|
|||
5
singlych
03.11.16
✎
09:48
|
(2) Ну конечно, не вариант. Значение надо пихать в реквизит формы, а не в элемент. Эф у тебя это элемент. ЭтотОбъект это форма, а не объект. А реквизит формы это ЭтотОбъект[Эф.Имя]. Вот и пиши
ЭтотОбъект[Эф.Имя] = ПолучитьКоличество(Родитель); |
|||
6
singlych
03.11.16
✎
09:52
|
Правильней даже будет ЭтотОбъект[Эф.ПутьКДанным].
|
|||
7
h-sp
03.11.16
✎
10:11
|
(4) Этот объект - это как разщ сама форма, чего чудишь?
|
|||
8
kIR
03.11.16
✎
10:29
|
(7) в таком случае он пишет "Поле объекта не обнаружено"
|
|||
9
kIR
03.11.16
✎
10:29
|
(5) (6) хм..."Эф" - элемент формы, он доступен на клиенте, а "путькданным" - на сервере
|
|||
10
singlych
03.11.16
✎
10:35
|
(9) ну значит через имя
|
|||
11
kIR
03.11.16
✎
10:36
|
(10) через имя ругается на "поле объекта не обнаружено"))
{Документ.ОтчетОРозничныхПродажах.Форма.ФормаДокумента.Форма(406)}: Поле объекта не обнаружено (КоличествоLC01краски) Объект[Эф.Имя] = ПолучитьКоличество(Родитель) |
|||
12
singlych
03.11.16
✎
10:37
|
Ну или вообще все делать на сервере, раз ПолучитьКоличество все равно на сервере.
|
|||
13
singlych
03.11.16
✎
10:40
|
Что у тебя в Элементы.КоличествоLC01краски.ПутьКДанным?
|
|||
14
singlych
03.11.16
✎
10:43
|
(11) пля. не Объект а ЭтотОбъект
|
|||
15
kIR
03.11.16
✎
10:43
|
(12) Когда с клиента смотрю - ошибка чтения) а вообще я ж в коде задаю
Элемент.ПутьКДанным = СтрЗаменить("Количество" + РОдительНоменклатуры," ",""); |
|||
16
kIR
03.11.16
✎
10:46
|
(14) мляя))так когда мы указывам "ЭтотОБъект" на клиенте, то получаем "переменная не определена" )
|
|||
17
singlych
03.11.16
✎
10:47
|
Тебя спасет совсем не тот Объект который не ЭтотОбъект, а тот ЭтотОбъект, который не этот Объект.
|
|||
18
singlych
03.11.16
✎
10:49
|
Ну вообще ЭтотОбъект определен и там и там, и в нем содержится сама форма. А если у тебя древний релиз, в котором еще нет ЭтотОбъект, тогда пиши ЭтаФорма, но тогда вопрос, откуда у тебя ЭтотОбъект на сервере.
|
|||
19
kIR
03.11.16
✎
11:01
|
(18)да,релиз староват, но там сильно перепилено все,что решили не обновлять
А вот "ЭтаФорма[Эф.Имя] = ПолучитьКоличество(Родитель);" заработала! Спасибо! |
|||
20
kIR
03.11.16
✎
15:06
|
А может кто еще подскажет, почему вот так криво последний выводится периодически?
https://gyazo.com/6fe5914a28d572cf8a71ad3f62a6b5bc |
|||
21
kIR
03.11.16
✎
16:57
|
ОТбой,нашел косяк. Не надо было отдельно заголовок присваивать
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |