Вход | Регистрация



УТ 11.Программно заполнить созданное программно поле формы

УТ 11.Программно заполнить созданное программно поле формы
Я
   kIR
 
02.11.16 - 18:02
Доброго вечера!
Программно создаю поля в подвале, в которых хочу выводить количество товара по родителям номенклатуры. создал доп.поле в ТЧ товары, в которое записываю родителя текущей номенклатуры.

Код создания поля такой такой:

&НаКлиенте
Процедура ТоварыКоличествоУпаковокПриИзменении(Элемент)
    
    ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
    
    ...
    
    ОбработкаКоличества(ТекущаяСтрока.родитель);
КонецПроцедуры


&НаКлиенте
Процедура ОбработкаКоличества(Родитель)
    
    Эф = ЭтаФорма.Элементы.Найти(СтрЗаменить("Количество" + Родитель," ",""));
    Если Эф = Неопределено Тогда
        СоздатьПолеНаСервере(Родитель);
        Эф = ЭтаФорма.Элементы.Найти(СтрЗаменить("Количество" + Родитель," ",""));
        Эф.Заголовок = "Количество " + Родитель;        
    КонецЕсли;
    Эф.РастягиватьПоГоризонтали = Истина;
    
    Эф = ПолучитьКоличество(Родитель);
КонецПроцедуры

&НаСервере
Функция ПолучитьКоличество(РОдительНоменклатуры)
    Отбор = новый Структура("Родитель",РОдительНоменклатуры);
    Массив = Объект.Товары.НайтиСтроки(Отбор);
    кп = 0;
    Для Каждого Стр из массив Цикл
        кп = кп + стр.количество;
    КонецЦикла;

    возврат кп;
КонецФункции

&НаСервере
Процедура СоздатьПолеНаСервере(РОдительНоменклатуры)
    
    нРеквизиты = Новый Массив;
    Реквизит = Новый РеквизитФормы(СтрЗаменить("Количество" + РОдительНоменклатуры," ",""), Новый ОписаниеТипов("Число"), , , Истина);
    нРеквизиты.Добавить(Реквизит);
    ИзменитьРеквизиты(нРеквизиты);
    
        
    //Добавляем поле ввода

    Элемент = ЭтаФорма.Элементы.Добавить(СтрЗаменить("Количество" + РОдительНоменклатуры," ",""), Тип("ПолеФормы"), ЭтаФорма.Элементы.ГруппаКоличество);
    Элемент.Вид = ВидПоляФормы.ПолеНадписи;
    Элемент.ПутьКДанным = СтрЗаменить("Количество" + РОдительНоменклатуры," ","");    
    
КонецПроцедуры



Но при выполнении процедуры Количество не отображается никак...Пробовал сверять "эф" и "ЭтаФорма.Элементы.<имя реквизита, который создаю>" - они совпадают

не пойму,как правильно((

Спасибо
 
 
   Mort
 
1 - 02.11.16 - 19:54
ЭтотОбъект["Количество" + Родитель] = ПолучитьКоличество(Родитель);
   kIR
 
2 - 03.11.16 - 09:11
(1) не вариант. Даже если мы используем не "ЭтотОбъект", а "Объект" (так как УФ), то у меня нет реквизит,который я создаю - это реквизит формы, а не объекта.
А реквизит формы - это,как раз, "эф"
   FIXXXL
 
3 - 03.11.16 - 09:17
(0) Элементы.<имя реквизита, который создаю> = кп
ни у проверь кп, мож он = 0 :)
   kIR
 
4 - 03.11.16 - 09:20
(3) проверял, конечно же)
   singlych
 
5 - 03.11.16 - 09:48
(2) Ну конечно, не вариант. Значение надо пихать в реквизит формы, а не в элемент. Эф у тебя это элемент. ЭтотОбъект это форма, а не объект. А реквизит формы это ЭтотОбъект[Эф.Имя]. Вот и пиши
ЭтотОбъект[Эф.Имя] = ПолучитьКоличество(Родитель);
   singlych
 
6 - 03.11.16 - 09:52
Правильней даже будет ЭтотОбъект[Эф.ПутьКДанным].
   h-sp
 
7 - 03.11.16 - 10:11
(4) Этот объект - это как разщ сама форма, чего чудишь?
   kIR
 
8 - 03.11.16 - 10:29
(7) в таком случае он пишет "Поле объекта не обнаружено"
   kIR
 
9 - 03.11.16 - 10:29
(5) (6) хм..."Эф" - элемент формы, он доступен на клиенте, а "путькданным" - на сервере
   singlych
 
10 - 03.11.16 - 10:35
(9) ну значит через имя
 
 Рекламное место пустует
   kIR
 
11 - 03.11.16 - 10:36
(10) через имя ругается на "поле объекта не обнаружено"))


{Документ.ОтчетОРозничныхПродажах.Форма.ФормаДокумента.Форма(406)}: Поле объекта не обнаружено (КоличествоLC01краски)
    Объект[Эф.Имя] = ПолучитьКоличество(Родитель)
   singlych
 
12 - 03.11.16 - 10:37
Ну или вообще все делать на сервере, раз ПолучитьКоличество все равно на сервере.
   singlych
 
13 - 03.11.16 - 10:40
Что у тебя в Элементы.КоличествоLC01краски.ПутьКДанным?
   singlych
 
14 - 03.11.16 - 10:43
(11) пля. не Объект а ЭтотОбъект
   kIR
 
15 - 03.11.16 - 10:43
(12)  Когда с клиента смотрю - ошибка чтения) а вообще я ж в коде задаю
Элемент.ПутьКДанным = СтрЗаменить("Количество" + РОдительНоменклатуры," ","");
   kIR
 
16 - 03.11.16 - 10:46
(14) мляя))так когда мы указывам "ЭтотОБъект" на клиенте, то получаем "переменная не определена" )
   singlych
 
17 - 03.11.16 - 10:47
Тебя спасет совсем не тот Объект который не ЭтотОбъект, а тот ЭтотОбъект, который не этот Объект.
   singlych
 
18 - 03.11.16 - 10:49
Ну вообще ЭтотОбъект определен и там и там, и в нем содержится сама форма. А если у тебя древний релиз, в котором еще нет ЭтотОбъект, тогда пиши ЭтаФорма, но тогда вопрос, откуда у тебя ЭтотОбъект на сервере.
   kIR
 
19 - 03.11.16 - 11:01
(18)да,релиз староват, но там сильно перепилено все,что решили не обновлять
А вот "ЭтаФорма[Эф.Имя] = ПолучитьКоличество(Родитель);" заработала! Спасибо!
   kIR
 
20 - 03.11.16 - 15:06
А может кто еще подскажет, почему вот так криво последний выводится периодически?
https://gyazo.com/6fe5914a28d572cf8a71ad3f62a6b5bc
   kIR
 
21 - 03.11.16 - 16:57
ОТбой,нашел косяк. Не надо было отдельно заголовок присваивать


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует