Имя: Пароль:
1C
 
Из поля со списком в строку справочника 1с 7.7
0 adware
 
25.08.10
10:26
Добрый день.
Подскажите, есть довольно простая задача.

Есть справочник база с несколькими реквизитами, при редактировании в форме элемента есть поле со с выпадающим списком.
Нужно выбрать из этого поле одну из строк и записать в текущий реквизит справочника.

Вот что пытался сделать в модуле формы элемента справочника:
Процедура ПриОткрытии()  
   ДоставкаВид.ДобавитьЗначение("");
   ДоставкаВид.ДобавитьЗначение("Самовывоз");
   ДоставкаВид.ДобавитьЗначение("Курьером");
   ДоставкаВид.ДобавитьЗначение("Автомобилем");
КонецПроцедуры  //при открытии

Процедура ПриЗаписи()
   ДостВ = СоздатьОбъект("Справочник.База");
   ДостВ.Доставка = ДоставкаВид.ПолучитьЗначение(ДоставкаВид.ТекущаяСтрока());
     ДостВ.Записать();  
КонецПроцедуры           //ПриЗаписи
1 Эльниньо
 
25.08.10
10:29
Процедура ПриВыбореДоставки()
   Доставка = ДоставкаВид.ПолучитьЗначение(ДоставкаВид.ТекущаяСтрока());
КонецПроцедуры
2 2S
 
25.08.10
10:29
ДостВ = СоздатьОбъект("Справочник.База");
   ДостВ.Доставка = ДоставкаВид.ПолучитьЗначение(ДоставкаВид.ТекущаяСтрока());
этого не может быть, промежуток должен быть
3 чувак
 
25.08.10
10:31
ДостВ.Доставка какого типа?
4 1Сергей
 
25.08.10
10:32
(1)+1 Если это форма элемента
5 2S
 
25.08.10
10:33
(1), (4) вообще в теме?
у чувака нет позиционирования на элемент
6 1Сергей
 
25.08.10
10:35
(5) Нахрена нужно позиционироваться в форме элемента? Этот элемент может быть еще не записан
7 Ёпрст
 
гуру
25.08.10
10:36
(0) вот этот бред выкини целиком

Процедура ПриЗаписи()
   ДостВ = СоздатьОбъект("Справочник.База");
   ДостВ.Доставка = ДоставкаВид.ПолучитьЗначение(ДоставкаВид.ТекущаяСтрока());
      ДостВ.Записать();  
КонецПроцедуры
8 2S
 
25.08.10
10:36
(6) плохо сабж прочитал, звиняйте о_0
9 Эльниньо
 
25.08.10
10:42
+(1) В формулу реквизита "Доставка".
10 1Сергей
 
25.08.10
10:43
(9) может, в формулу поля со списком?
11 Эльниньо
 
25.08.10
11:00
(10) Да.
12 adware
 
25.08.10
15:28
Ругается на "Неопознанный оператор", совсем голову сломал с этим...

Вообще все это затеял, для того что-бы можно  сортировать справочник по выбранному реквизиту и делать отбор по реквизиту,  т.е. сортировка работает только если тип реквизита <<Строка>>.
По этому пытался сделать как сверху, возможно есть какие либо более простые варианты?
13 1Сергей
 
25.08.10
15:29
(12) ответь на (3)
14 adware
 
25.08.10
15:34
(13) Реквизит Доставка имеет тип <<строка>>, поле со списком индентификатор - ДоставкаВид
15 Мимохожий Однако
 
25.08.10
15:35
Сделай реквизит Доставка типа Перечисление.ВидыДоставок.
16 1Сергей
 
25.08.10
15:43
(14) должно работать (1)
17 adware
 
25.08.10
15:46
(15)Сделал, сортировка по реквизиту с этим способом не работает.

(16) Ругается на "Неопознанный оператор", возможно где накосячил, попробую разобраться
18 1Сергей
 
25.08.10
15:50
(17) видимо, формулу неправильно написал
19 Мимохожий Однако
 
25.08.10
15:55
Поставь в справочнике у реквизита Доставка свойство Отбор и сортировка
20 adware
 
25.08.10
15:56
УРА! получилось, огромное спасибо всем!!!
Не давно закончил курсы программирования, ничего не понял, вот теперь осваиваю все сам.
21 adware
 
25.08.10
15:56
(19)(17) Да ошибка в формуле была.
22 adware
 
25.08.10
16:52
В продолжении возник вопрос, если подскажите буду рад.

Теперь данные заносятся и сохраняются, но при повторном открытии формы элемента, поле со списком не заполнено, как его заполнять из справочника, если там уже есть значение?
23 adware
 
26.08.10
16:58
Поэкспериментировал, обратно выбрать текущее значение из справочника в поле со списком, походу не реально, либо очень трудоемко...
24 Ёпрст
 
гуру
26.08.10
17:14
(22) заполнить список в ПриОткрытии
(23) да уж.. достаточно просто спозиционироваться на нужной строке списка.
25 adware
 
26.08.10
17:24
(24) Так список при открытии формы заполняется, все ок!
А как правильно с позиционироваться на нужной строке, из реквизита справочника?
26 Ёпрст
 
гуру
26.08.10
17:32
(25)

СписокНаФорме.ТекущаяСтрока(СписокНаФорме.НайтиЗначение(РеквизитСправочника));
27 adware
 
26.08.10
18:14
Делаю вот так, ничего не меняется:

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

Соответственно ДоставкаВид - индентификатор поля со списком.
Транспорт - реквизит текущего справочника.
28 Саша Ильенко
 
26.08.10
18:33
(27) а где записываешь в "транспорт" значение реквизита.
29 Саша Ильенко
 
26.08.10
18:34
ДоставкаВид.ТекущаяСтрока(ДоставкаВид.НайтиЗначение(СокрЛП(Транспорт)));
30 adware
 
26.08.10
20:02
(26), (29) Спасибо, получилось.