Имя: Пароль:
1C
 
Заполнение формы из таблицы значений
,
0 Shmidt
 
08.12.14
11:03
Создал общую форму. Пометил на нее табличное поле (ТЗ). Создал реквизит ТЗ, тип ТаблицаЗначений. В Табличном поле создал 2 колонки "Бонус" - поле ввода и "Использовать" - флажок. В модуле формы документа делаю запрос и выгружаю в ТаблицуЗначений. Теперь затык! Необходимо заполнять на общей форме поле "Бонус" данными из ТаблицыЗначений, а поле с флагом по умолчанию должно быть Ложь. Но постоянно ругается на метод Заполнить. И как бы не пробовал получать ЭлементыФормы одна и та же ошибка. Как его заполнить?
1 Shmidt
 
08.12.14
11:04
И да, форма - обычная.
2 vicof
 
08.12.14
11:04
показывай код
3 lxs
 
08.12.14
11:05
Причем тут ЭлементыФормы?

Заполняй ТЗ, табличное поле у тебя связано с ТЗ?
4 Shmidt
 
08.12.14
11:05
Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    АНМ_Бонусы.Ссылка КАК Бонус
                   |ИЗ
                   |    Справочник.АНМ_Бонусы КАК АНМ_Бонусы
                   |ГДЕ
                   |    АНМ_Бонусы.КоличествоБаллов <= &КоличествоБаллов
                   |    И АНМ_Бонусы.КоличествоБаллов > 0";
    Запрос.УстановитьПараметр("КоличествоБаллов",КоличествоБаллов);    
    ДоступныеБонусы = Запрос.Выполнить().Выгрузить();
    ДоступныеБонусы.Колонки.Добавить("Использовать",,);
    
    Форма = ПолучитьФорму("ОбщаяФорма.АНМ_ФормаВыбораБонуснойНоменклатуры");
    Форма.ЭлементыФормы.ТЗ.Заполнить(ДоступныеБонусы);
5 lxs
 
08.12.14
11:05
Бред
6 Shmidt
 
08.12.14
11:06
Вот последняя редакция
7 lxs
 
08.12.14
11:06
У тебя есть реквизит формы ТЗ, вот его и заполняй
8 pessok
 
08.12.14
11:06
Форма.ТЗ.Загрузить(ДоступныеБонусы );
Форма.ЭлементыФормы.ТЗ.СоздатьКолонки()
9 lxs
 
08.12.14
11:07
(8) или да)
10 Shmidt
 
08.12.14
11:09
(8) Если так, то колонка с флажком заполняется да/нет. А нужен обязательно флажок
11 vicof
 
08.12.14
11:10
(10) Настраивай ДанныеФлажка
12 Shmidt
 
08.12.14
11:36
Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    АНМ_Бонусы.Ссылка КАК Бонус
                   |ИЗ
                   |    Справочник.АНМ_Бонусы КАК АНМ_Бонусы
                   |ГДЕ
                   |    АНМ_Бонусы.КоличествоБаллов <= &КоличествоБаллов
                   |    И АНМ_Бонусы.КоличествоБаллов > 0";
    Запрос.УстановитьПараметр("КоличествоБаллов",КоличествоБаллов);    
    ДоступныеБонусы = Запрос.Выполнить().Выгрузить();
        
    Форма = ПолучитьФорму("ОбщаяФорма.АНМ_ФормаВыбораБонуснойНоменклатуры");
    Форма.ТЗ.Загрузить(ДоступныеБонусы);
    Форма.ЭлементыФормы.ТЗ.СоздатьКолонки();
13 Shmidt
 
08.12.14
11:36
Поле объекта не обнаружено (ТЗ)
14 Shmidt
 
08.12.14
11:37
В чем причина?
15 Godofsin
 
08.12.14
11:38
(14) Форма.ТЗ.Загрузить(ДоступныеБонусы);
    Форма.ЭлементыФормы.ТЗ.СоздатьКолонки();
16 Godofsin
 
08.12.14
11:38
Разница есть?
17 Shmidt
 
08.12.14
11:39
(16) В чем?
18 Shmidt
 
08.12.14
11:39
(8) тоже самое советовали
19 Godofsin
 
08.12.14
11:43
ЭлементыФормы
20 Shmidt
 
08.12.14
11:44
Форма.ТЗ.Загрузить(ДоступныеБонусы); еще на эту строку ругается
21 Godofsin
 
08.12.14
11:45
(20) см 19
22 Shmidt
 
08.12.14
11:49
(21) Форма.ЭлементыФормы.ТЗ.Загрузить(ДоступныеБонусы);
Так то же самое (((
23 Godofsin
 
08.12.14
11:49
(22) То же самое - это что? Скрин ошибки?
24 Shmidt
 
08.12.14
11:52
(13) вот такая
25 Godofsin
 
08.12.14
11:56
(24) Gjkyjcnm. dskj;b jib,re nt,t ujdjhzn
26 Godofsin
 
08.12.14
11:57
полностью ошибку выложи
27 lxs
 
08.12.14
11:59
Форма = ПолучитьФорму("ОбщаяФорма.АНМ_ФормаВыбораБонуснойНоменклатуры");

Это где вызывается?


Может ПолучитьОбщуюФорму(..) Не?
28 Shmidt
 
08.12.14
12:01
29 Shmidt
 
08.12.14
12:01
(27) Это в модуле формы документа "ЗаказПокупателя"
30 Shmidt
 
08.12.14
12:02
Можно перенести в Общий модуль. Но там та же проблема
31 Godofsin
 
08.12.14
12:03
Проверь отладчиком, форма точно возвращается?
32 lxs
 
08.12.14
12:03
Форма где находится в структуре конфигурации?
33 Godofsin
 
08.12.14
12:03
если да, то там нет "ТЗ" видимо
34 lxs
 
08.12.14
12:04
Он общую форму некорректно получает
35 lxs
 
08.12.14
12:05
Форма = ПолучитьОбщуюФорму("АНМ_ФормаВыбораБонуснойНоменклатуры");
36 vicof
 
08.12.14
12:05
"Пометил на нее табличное поле (ТЗ). Создал реквизит ТЗ, тип ТаблицаЗначений"
"Форма.ТЗ.Загрузить(ДоступныеБонусы); еще на эту строку ругается"
(28)
одна из черепашек п..т
37 Shmidt
 
08.12.14
12:07
(35) Сейчас попробую
38 Shmidt
 
08.12.14
12:22
Метод объекта не обнаружен (Загрузить)
39 lxs
 
08.12.14
12:22
дай тим
40 Shmidt
 
08.12.14
12:23
312 880 292
41 Shmidt
 
08.12.14
12:23
6944
42 lxs
 
08.12.14
12:26
не запущен
43 lxs
 
08.12.14
12:30
Покажи короче шот структуры конфигурации - ветку ОбщиеФормы, шот формы, шот реквизитов формы
44 Shmidt
 
08.12.14
12:54
45 Shmidt
 
08.12.14
12:54
46 Shmidt
 
08.12.14
12:54
47 Shmidt
 
08.12.14
12:54
48 Shmidt
 
08.12.14
12:55
Вот
49 Ёпрст
 
08.12.14
13:15
(44) не ну а чо.. заполняешь в одной форме, а открываешь ДРУГУЮ..

Так и продолжай всегда делать, но лучше, с разбегу.
50 lxs
 
08.12.14
13:18
Короче..
51 lxs
 
08.12.14
13:18
ТаблицаДанных = Новый ТаблицаЗначений;
    ТаблицаДанных.Колонки.Добавить("Выбран");
    ТаблицаДанных.Колонки.Добавить("Бонус");
    
    ТаблицаДанных.Добавить().Бонус = "10%";
    
    Форма = ПолучитьОбщуюФорму("ФормаТест");
    Форма.Таблица = ТаблицаДанных;
    
    Форма.Таблица.ЗаполнитьЗначения(Истина, "Выбран");
    
    Форма.ЭлементыФормы.Таблица.СоздатьКолонки();
    Форма.Открыть();
52 Shmidt
 
08.12.14
13:18
ФормаВыбораБонус ???? Какая другая?
53 Ёпрст
 
08.12.14
13:20
(52)
первая форма, это ПолучитьОбщуюФорму у тебя

вторая(это которая ДРУГАЯ)
ОткрытьФормуМодально()

Теперь с разбегу и об стенку..
54 Shmidt
 
08.12.14
13:21
(53) Да это уже давно поправлено
55 Ёпрст
 
08.12.14
13:23
(54) где ? На первом же скриншоте видно, что нет
56 lxs
 
08.12.14
13:25
(55) Ну че ты докопался? Я дел ему работающий код. Если не разберется, дадим пинка в нужном направлении.
57 Shmidt
 
08.12.14
13:37
(56) Спасибо. Все заполняется, только как теперь поле "Использовать" сделать флажком. Я на форме сделал флажком, но заполняется как поле ввода
58 lxs
 
08.12.14
13:44
первое, что пришло в голову:

Форма.ЭлементыФормы.Таблица.Колонки.Выбран.Данные = "";
Форма.ЭлементыФормы.Таблица.Колонки.Выбран.ДанныеФлажка = "Выбран";
59 lxs
 
08.12.14
13:44
на форме не надо ничего делать кстати
60 lxs
 
08.12.14
13:54
"но заполняется как поле ввода" - ты сделал колонки табачного поля на открываемой форме?
61 lxs
 
08.12.14
13:55
*табличного
62 Shmidt
 
08.12.14
14:04
(60) Да делал, потом убрал и добавил (58) Ругается на поле Выбран
63 lxs
 
08.12.14
14:12
Блеать, ну это ж мое поле)))
64 lxs
 
08.12.14
14:12
У тебя оно называется "Использовать"
65 Shmidt
 
08.12.14
14:12
Ну понятно... Я и "Таблица" и "Выбран" поменял на нужные
66 Shmidt
 
08.12.14
14:13
Ясное дело... Я не совсем...
67 lxs
 
08.12.14
14:13
Бывает)
68 lxs
 
08.12.14
14:13
Кто не ошибается, тот ничего не делает
69 lxs
 
08.12.14
14:15
Если не работает опять, давай код
70 Shmidt
 
08.12.14
14:15
ТаблицаДанных = Новый ТаблицаЗначений;
    ТаблицаДанных.Колонки.Добавить("Бонус");
    ТаблицаДанных.Колонки.Добавить("Использовать");
    Для Каждого Строка из ДоступныеБонусы Цикл
        ТаблицаДанных.Добавить().Бонус = Строка.Бонус;
    КонецЦикла;    
    
    Форма = ПолучитьОбщуюФорму("АНМ_ФормаВыбораБонус");
    Форма.ТЗ = ТаблицаДанных;
    
//    
    
    
   Форма.ТЗ.ЗаполнитьЗначения(Ложь, "Использовать");
    Форма.ЭлементыФормы.ТЗ.Использовать.Данные = "";
    Форма.ЭлементыФормы.ТЗ.Использовать.ДанныеФлажка = "Использовать";
    Форма.ЭлементыФормы.ТЗ.СоздатьКолонки();
    Форма.Открыть();
71 Shmidt
 
08.12.14
14:17
Упорно ругается на "Использовать". Код может не совсем верный, верчу его повякому
72 lxs
 
08.12.14
14:19
//1
Форма.ТЗ.ЗаполнитьЗначения(Ложь, "Использовать");
//2
Форма.ЭлементыФормы.ТЗ.СоздатьКолонки();
//3
Форма.ЭлементыФормы.ТЗ.Колонки.Использовать.Данные = "";
Форма.ЭлементыФормы.ТЗ.Колонки.Использовать.ДанныеФлажка = "Использовать";
//4
Форма.Открыть();
73 lxs
 
08.12.14
14:20
Просто скопируй
74 lxs
 
08.12.14
14:21
Ложь для флага - значение по умолчанию. Его нет смысла заполнять отдельно, если ты его не заполняешь из исходных данных.
75 lxs
 
08.12.14
14:21
Поэтому п.1 можно опустить
76 lxs
 
08.12.14
14:21
Только колонку Использовать тогда надо типизировать
77 Shmidt
 
08.12.14
14:22
Вот отлично заработало. Спасибо большое !!!
78 lxs
 
08.12.14
14:23
Еще вопрос
79 lxs
 
08.12.14
14:24
Для каждого Стр Из Выборка Цикл
    КоличествоБаллов = Стр.Количество;
КонецЦикла;



Это что? ))))
80 Shmidt
 
08.12.14
14:25
Это количество баллов
81 lxs
 
08.12.14
14:26
Логично, блин..

Но если баллов нет вообще, у тебя процедура сработает в исключение, потому что переменная КоличествоБаллов будет тупо неопределена
82 lxs
 
08.12.14
14:26
"Логично, блин" - это был сарказм..
83 lxs
 
08.12.14
14:27
Хотя да.. условие в запросе)
84 pessok
 
08.12.14
14:27
вы что, все еще помещаете? 0.0
85 lxs
 
08.12.14
14:29
(84) => (77)