Имя: Пароль:
1C
1С v8
Список значений
0 STAYEKR
 
15.08.12
15:19
Доброго здоровья всем! Прошу вашей помощи. Хочу для отчета в 8.1 сделать несколько вариантов представления, чтобы было поле выбора, где будут отображаться эти самые варианты. Хотелось бы добавить 3 варианта отчета через список значений. Полю выбора задал данные - реквизит СписокВариантов, тип список значений. Пишу в "ПриОткрытии":
   
       СписокВариантов.Добавить("Вар1");
   СписокВариантов.Добавить("Вар2");
   СписокВариантов.Добавить("Вар3");

Но должным образом это не работает. Подскажите, как это можно реализовать?
1 Mort
 
15.08.12
15:21
реквизит типа Список значений <> строковой реквизит со списком выбора
2 STAYEKR
 
15.08.12
15:25
(1) Это ясно. А нельзя ли реализовать используя строковый список выбора?
3 Рэйв
 
15.08.12
15:27
Сделай реквизит нормальной строкой.
При открытии заполняй программно какойнить СЗ
Потом
Элементыформы.МойРеквизитСоСписком.СписокВыбора=ЗаполненныйСЗ
4 Рэйв
 
15.08.12
15:27
ну и кнопку выбора из спсика не забудь включить
5 STAYEKR
 
15.08.12
15:32
Сделал реквизиту СписокВариантов тип "Строка". При открытии написал:

   СЗ = Новый СписокЗначений;
   СЗ.Добавить("1");
   СЗ.Добавить("2");
   СписокВариантов = СЗ;

Список пустой. Что не так сделал?
6 STAYEKR
 
15.08.12
15:36
Ткните носом чайника, товарисчщи!
7 Rovan
 
гуру
15.08.12
15:37
(5) СписокВариантов.СписокВыбора = СЗ;
8 STAYEKR
 
15.08.12
15:40
(7) СписокВариантов.СписокВыбора можно делать только для реквизитов типа "СписокЗначений". А многоуважаемый (3) посоветовал рекву СписокВариантов сделать строкой
9 STAYEKR
 
15.08.12
15:42
Кто-нибудь знает, как реализовать можно?
10 viktor_vv
 
15.08.12
15:42
(8) Ты элемент формы выбери СписокВыбора, а данные к нему укажи свой строковый ревизит.
11 viktor_vv
 
15.08.12
15:44
(10)+ Вернее элемент управления Поле выбора.
12 viktor_vv
 
15.08.12
15:47
А при открытии или еще по какому событию заполняй

ЭлементыФормы.ИдентификаторТвоегоЭлементаУправления.СписокВыбора .
13 STAYEKR
 
15.08.12
15:56
(12)элементу управления ПолеВыбора я задал в данных реквизит "СписокВариантов" (тип СписокЗначений). При открытии написал:

   СЗ = Новый СписокЗначений;
   СЗ.Добавить("По1С");
   СЗ.Добавить("НеПо1С");
   ЭлементыФормы.СписокВариант = СЗ;

Но система заявляет (совершенно, надо сказать, справедливо) что поле формы недоступно для записи. Что делать, товарищщи?!
14 STAYEKR
 
15.08.12
16:00
Кто-нибудь может пмочь?
15 hhhh
 
15.08.12
16:02
(14) поле выбора делай типа число или строка. Потом щелкаешь свойства у него, там задаешь этот твой список.
16 STAYEKR
 
15.08.12
16:05
(15) Огромное спасибо! :) Сам сейчас тоже копался и нашел эту возможность! Всем спасибо большое за помощь!
17 viktor_vv
 
15.08.12
16:06
(13) Ну ты перечитай еще раз (3).
Реквизит простая строка, элемент управления Поле выбора, в данных к элементу управления выбираешь свой реквизит (тип значения строка).
18 viktor_vv
 
15.08.12
16:07
(16) И че получилось ? А как же у тебя это запишеться в  "реквизит "СписокВариантов" (тип СписокЗначений)" :)).
19 viktor_vv
 
15.08.12
16:09
(18)+ Хотя может я неправильно понял твое "реквизит".
20 STAYEKR
 
15.08.12
16:14
(16) Да, действительно. Но перечитал еще раз (13) и (17). задал данные поля реквизит с типом Строка. Далее в "ПриОткрытии" пишу:

   СЗ = Новый СписокЗначений;
   СЗ.Добавить("1");
   СЗ.Добавить("2");
   СписокВариантов = СЗ;

Но элемент управления "ПолеВыбора" не содержит значений. Это пrескоrбно
21 STAYEKR
 
15.08.12
16:23
Кто-нибудь поможет разобраться, граждане?
22 FIXXXL
 
15.08.12
16:27
Далее в "ПриОткрытии" пишу:

не надо в ПриОткрытии
пиши в НачалоВыбораИзСписка

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

тип значения - строка
23 STAYEKR
 
15.08.12
16:36
Пишет "Поле объекта не обнаружено (СписокВыбора)". Если писать "элемент = сз" или "СписокВыбора = СЗ", то список все равно пустой.
24 STAYEKR
 
15.08.12
16:44
Может быть. кто-нибудь еще предложит решение?
25 viktor_vv
 
15.08.12
16:45
ЭлементыФормы.СвойствоНоменклатуры.СписокВыбора.Очистить();
Для Каждого СтрокаСвойствИзИсходнойСсылки Из ОбработкаОбъектЗначенияСвойствДляИсходнойСсылки.СвойстваИЗначения Цикл
   ЭлементыФормы.СвойствоНоменклатуры.СписокВыбора.Добавить(СтрокаСвойствИзИсходнойСсылки.Свойство);

   КонецЦикла ;    
   Если ЭлементыФормы.СвойствоНоменклатуры.СписокВыбора.Количество() > 0 Тогда
// Присовим реквизиту первое значение из списка выбора
       СвойствоНоменклатуры = ЭлементыФормы.СвойствоНоменклатуры.СписокВыбора.Получить(0).Значение;

КонецЕсли ;

СвойствоНоменклатуры - Идентификатор элемента управления.

и СвойствоНоменклатуры - идентификатор реквизита обработки.
26 viktor_vv
 
15.08.12
16:49
(25)+ Реквизит обработки является источником данных для Поля выбора.
27 STAYEKR
 
15.08.12
16:52
СвойствоНоменклатуры и идентификатор элемента управления, и идентификатор реквизита обработки?
28 STAYEKR
 
15.08.12
16:55
(26) Спасибо за помощь, но можно ли как-нибудь переиначить к моему варианту? а то от раздумий тягостных уже копол трещит по швам
29 viktor_vv
 
15.08.12
16:57
И у тебя должно работать (22). Если пишет Поле объекта необнаружено, то у тебя эемент управления "НомерИнтернетЗаказа" не Поле выбора.
30 STAYEKR
 
15.08.12
17:02
(29) еще раз проверил, написал все как в (22) элемент управления точно поле ввода. Падает с той же ошибкой про "Поле объекта не обнаружено"
31 STAYEKR
 
15.08.12
17:07
(29) Даже не знаю, в какую сторону копать
32 viktor_vv
 
15.08.12
17:12
(30) Да не поле ввода, а поле выбора должно быть.
33 STAYEKR
 
15.08.12
17:13
(32) описАлся, хотел написать поле выбора. Так оно и есть. но не взлетает ни разу
34 FIXXXL
 
15.08.12
17:17
(30)Поле ввода на форме, данные в нем из реквизита объекта с типом Строка
на поле ввода вешаешь кнопку выбора из списка и в процедуре НачалоВыбораИзСписка заполняешь список значений
Все должно работать
35 viktor_vv
 
15.08.12
17:21
(33) Покажи кусок кода где заполняешь список, вернее полностью процедуру ПриНачалеВыбораИзСписка().
36 STAYEKR
 
15.08.12
17:24
На форме поле ввода "ВариантСписок", данные у этого поля "СписокВариантов" (тип Строка). На поле ввода установлена кнопка выбора из списка ("...") и кнопка выпадающего списка (чОрный треугольник). У элемента управления в процедуре "НачалоВыбораИзСписка" пишу код:

Процедура ВариантСписокНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)
   СЗ = Новый СписокЗначений;
   СЗ.Добавить("1");
   СЗ.Добавить("2");
   Элемент.СписокВариантов = СЗ;
КонецПроцедуры

Здесь "СЗ" - "временный" список значений. "СписокВариантов" - текстовый реквизит, установленный как данные для поля ввода "ВариантСписок". Процедура падает с ошибкой "Поле объекта не обнаружено (СписокВариантов)". Вот такая загогулина.
37 viktor_vv
 
15.08.12
17:27
Элемент.СписокВыбора = СЗ;
38 viktor_vv
 
15.08.12
17:29
СЗ = Новый СписокЗначений;
   СЗ.Добавить("1");
   СЗ.Добавить("2");
   Элемент.СписокВыбора = СЗ;
// для заполнения значения реквизита по умолчанию
СписокВариантов = СЗ.Получить(0).Значение ;
39 FIXXXL
 
15.08.12
19:20
НЕ
Элемент.СписокВариантов = СЗ;
А
Элемент.СписокВыбора = СЗ;
40 STAYEKR
 
15.08.12
19:28
Спасибо, сейчас попробую
41 STAYEKR
 
16.08.12
08:57
Получилось! Всем огромное спасибо за помощь!