Имя: Пароль:
1C
 
Список значений на форме
0 chirs
 
24.03.11
08:19
Здравствуйте !
Извиняюсь, если мой вопрос пустяковый, просто я недавно только начал в 1С 8-ке программировать.
Задача такова. Я создаю внешнюю обработку. В ней я добавил реквизит "ВариантРасчета", тип которому поставил "СписокЗначений". Затем на форму я его добавил так: меню "Форма" - "Размещение данных", отметил этот реквизит, при этом в колонке "Элемент формы" выбрал "Поле выбора".
Теперь при открытии моей формы, т.е. в процедуре "ПриОткрытии" я пытаюсь добавить в этот реквизит значения.
Делаю так:
[code]ВариантРасчета.Добавить(1,"Вариант первый");
ВариантРасчета.Добавить(2,"Вариант второй");[/code]
В результате при открытии своей формы в режиме "предприятие" в размещенном мной реквизите добавленные значения не появляются. Подскажите, что я делаю не правильно ?
1 Mort
 
24.03.11
08:22
По кнопке списка выбора в поле ничего не выпадает?
2 Wobland
 
24.03.11
08:23
(0) ПолеВыбора (ComboBox)
СписокВыбора (ChoiceList)
Использование:
Чтение и запись.
Описание:
Тип: СписокЗначений. Содержит список значений для осуществления выбора по нажатию кнопки списка выбора.
3 chirs
 
24.03.11
08:24
(1) да, пустое остается
4 ВераТ
 
24.03.11
08:24
Задача какая? Реквизит судя по всему должен быть сроковый, т.к. в нем хранится не список, а выбранное значение. Список для выбора формируете при начале выбора
5 Cube
 
24.03.11
08:26
(0) Реквизит обработки удали, можно обойтись и реквизитом формы, тип у которого - Произвольный. Потом на форму добавь поле выбора: Данные - твой реквизит, ТипЗначения - произвольный.
Затем в процедуре ПриОткрытии() пиши:
ЭлементыФормы.ТвоеПолеВыбора.Значение = "Вариант первый";
ЭлементыФормы.ТвоеПолеВыбора.Значение = "Вариант второй";
6 ВераТ
 
24.03.11
08:27
В вашем случае я бы сделала проще. Вариант расчета - строковый тип. поле ввода на форму, галка КнопкаСпискаВыбора. В обработчик НачалоВыбораИзСписка:

СтандартнаяОбработка = Ложь;
   
   
Список = Новый СписокЗначений;
Список.Добавить(нужное значение);
   
ВариантРасчета= ВыбратьИзСписка(Список,Элемент);
7 chirs
 
24.03.11
08:27
(2) что-то не соовсем понял твою мысль... т.е. я должен создать сначала список значений и потом как-то его привязать к своему полю выбора ?
8 Cube
 
24.03.11
08:28
+(5) Ой, ошибся!
ПриОткрытии() такой код:
ЭлементыФормы.ТвоеПолеВыбора.СписокВыбора.Добавить(1, "Вариант первый");
ЭлементыФормы.ТвоеПолеВыбора.СписокВыбора.Добавить(2, "Вариант второй");
9 chirs
 
24.03.11
08:30
т.е. без реквизита обработки никак не обойтись ?
10 chirs
 
24.03.11
08:30
ой, т.е. наоборот
11 Cube
 
24.03.11
08:31
(9) Читай (5).
12 chirs
 
24.03.11
08:31
т.е. сделать так, чтобы был реквизит обработки и его привязать к полю выбора на форме никак не получится ?
13 ВераТ
 
24.03.11
08:32
(9) да смысла нет его делать реквизитом
14 GROOVY
 
24.03.11
08:32
Вы случаем не путаете реквизит формы с реквизитом обработки?
15 ВераТ
 
24.03.11
08:32
(12) почему не получится? только вопрос-зачем?
16 Cube
 
24.03.11
08:33
(12) Можно и реквизит обработки и реквизит формы, читай (5).
17 chirs
 
24.03.11
08:33
хм... понятно...
всем спасибо большое за подсказки !!!
18 ВераТ
 
24.03.11
08:33
(14) судя по (0) я поняла, что речь идет о реквизите обработки
19 chirs
 
24.03.11
08:35
(16) я прочитал (5) и если я все правильно понимаю, т.е. есть:
1. Реквизит обработки
2. Реквизит формы
в сообщении (5) говорится о том, как заполнить список для реквизита формы, при этом реквизит обработки останется пустым и в нем ничего не будет.
20 chirs
 
24.03.11
08:35
(18) верно, мне нужно чтобы выбранное значение было записано именно в реквизите обработки
21 Cube
 
24.03.11
08:37
(19) Делай (5) либо с реквизитом формы, либо с реквизитом обработки. Не нужно плодить кучу одинаковых реквизитов!
22 chirs
 
24.03.11
08:38
если в обработке создавать только реквизиты формы и потом получать к ним доступ через ЭлементыФормы, то зачем тогда вообще есть возможность создавать реквизиты обработки, если она внешняя и вообще ничего поидее не записывает в базу данных ?
23 ВераТ
 
24.03.11
08:39
(20) зачем?  а вообще хозяин-барин...
а вообще как сделать, я в (6) написала
24 Cube
 
24.03.11
08:40
(22) Да потому что есть ещё модуль обработки в котором реквизиты формы недоступны!
25 chirs
 
24.03.11
08:44
(24) ага !!! тогда тем более нужно добиться, чтобы выбранное значение попадало в реквизит именно обработки !
26 chirs
 
24.03.11
08:45
(23) попробовал, что-то не получается. Список для выбора появляется, но значение почему-то не выбирается в итоге
27 chirs
 
24.03.11
08:47
(23) хм... значение выбирается и записывается в ВариантРасчета, но почему-то в самом элементе формы выбранное значение не отображается
28 ВераТ
 
24.03.11
08:49
(27) Вы наверное просто запутались :) Мне не совсем понятно, нафиг это в реквизит обработки пихать, но как хотите...создаете реквизит со строковым типом, помещаете его на форме. Видимо сейчас у Вас поле на форме не связано с реквизитом
29 ВераТ
 
24.03.11
08:50
(28) + и неплохо бы при открытии формы заполнять его значением по умолчанию (если не хотите чтобы изначально был пустым)
30 ВераТ
 
24.03.11
08:51
+ у поля ввода на форме в Данных должен быть указан твой реквизит
31 chirs
 
24.03.11
08:51
(28) именно так, как Вы сказали и сделал. Реквизит формы - связан через поле "Данные" с реквизитом обработки.
32 ВераТ
 
24.03.11
08:52
(31) Тип?
33 chirs
 
24.03.11
08:53
[code]
Процедура ВыбПриказНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)
   СтандартнаяОбработка = Ложь;
   Список = Новый СписокЗначений;
   Список.Добавить("Вариант первый");
   Список.Добавить("Вариант второй");
   ВыбВариант = ВыбратьИзСписка(Список,Элемент);
   ЭлементыФормы.ВыбПриказ.Значение = ВыбВариант;
КонецПроцедуры
[/code]
34 chirs
 
24.03.11
08:54
Тип реквизита обработки - строка (неограниченная)
35 ВераТ
 
24.03.11
08:54
ЭлементыФормы.ВыбПриказ.Значение = ВыбВариант;
- это не нужно
36 ВераТ
 
24.03.11
08:55
Проверьте, что действительно связан с реквизитом обработки, а не формы. Этот код 100% рабочий :)
37 chirs
 
24.03.11
08:55
точнее так:
Процедура ВыбПриказНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)
   СтандартнаяОбработка = Ложь;
   Список = Новый СписокЗначений;
   Список.Добавить("Вариант первый");
   Список.Добавить("Вариант второй");
   ВариантРасчета = ВыбратьИзСписка(Список,Элемент);
   ЭлементыФормы.ВыбПриказ.Значение = ВариантРасчета;
КонецПроцедуры
38 ВераТ
 
24.03.11
08:56
(33) у тебя Поле с именем ВыбПриказ, а реквизит обработки - ВыбВраиант?
39 chirs
 
24.03.11
08:57
все, понял в чем моя ошибка была
40 ВераТ
 
24.03.11
08:57
(37) похоже ты запутался, и у тебя не связано поле с нужным реквизитом бработки
41 ВераТ
 
24.03.11
08:57
ЭлементыФормы.ВыбПриказ.Значение = ВариантРасчета;
- это убери!
42 chirs
 
24.03.11
08:58
при размещении элемента на форму я делал так:
меню "Форма" - "Размещение данных", отметил этот реквизит, при этом в колонке "Элемент формы" выбрал "Поле выбора"
43 chirs
 
24.03.11
08:58
а нужно было просто разместить это поле и потом поставить галочку "КнопкаСпискаВыбора"
44 chirs
 
24.03.11
08:58
(41) сделал
45 chirs
 
24.03.11
08:59
вообщем, теперь все работает и все выбирается и сохраняется в реквизите обработки, как мне и нужно было !
Спасибо большое ВераТ !!!
46 ВераТ
 
24.03.11
09:02
(42) ну надо было внимательно читать, что я писала...
(45) ок, на здоровье :)