Имя: Пароль:
1C
1С v8
Как найти по коду выбранного значения справочника нужный реквизит
0 Nores
 
04.02.12
08:57
ТекДанные.Расстояние = Справочники.уатМаршруты.НайтиПоКоду(Наименование.Код).Расстояние;

выбираю Маршрут, нужно получить значение реквизита данного справочника "расстояние" Только ненадо так ТекДанные.Расстояние = Справочники.уатМаршруты.НайтиПоКоду("000000001").Расстояние; Так работает
1 Nores
 
04.02.12
08:59
Подскажите пожалуйста
2 Дядя Васька
 
04.02.12
09:02
Маразм крепчал... Что еще за Наименование.Код? Что ты вообще выбираешь и причем тут код? И откуда он в наименовании, которое обычно вроде как строка? :)
3 Nores
 
04.02.12
09:04
Да я уже что только не перепробовал, вот и маразм, смотрел с другой конфигурации))))
4 Nores
 
04.02.12
09:04
Подскажите плиз))
5 Дядя Васька
 
04.02.12
09:08
Так, давай по порядку: что значит "выбираю Маршрут"? На пальцах. Что это, реквизит на форме такой, который выбирают интерактивно? Что такое ТекДанные? А то отсюда не видать в каком ты контексте.
6 Wobland
 
04.02.12
09:09
(3) это какая другая конфигурация? кривая неработающая самописька?
спр=Справочники.НайтиПоКоду(НужныйКод);
Если НЕ спр.Пустая() Тогда
 ТвоёРасстояние=спр.Расстояние
Конец
7 Дядя Васька
 
04.02.12
09:12
(6) Да что-то мне подсказывает что искать по коду тут как бэ и ни к чему. Просто автор многое недоговаривает. Крайне трудно понять что сделать-то хочет :)
8 Дядя Васька
 
04.02.12
09:19
Телепатирую: в ТЧ документа есть реквизиты Маршрут типа Справочник.уатМаршруты и Расстояния с типом Число. При выборе маршрута нужно прописать расстояние в соответствующий реквизит. Угадал? :)
9 Дядя Васька
 
04.02.12
09:19
Расстояния = Расстояние
10 Nores
 
04.02.12
09:34
Да))
11 Nores
 
04.02.12
09:34
красавчик!
12 Дядя Васька
 
04.02.12
09:36
ТекДанные.Расстояние = ТекДанные.Маршрут.Расстояние;
13 Nores
 
04.02.12
09:38
Есть в регистре сведений два реквизита, Маршрут с типом значения Справосники.уатМаршруты и Расстояние с типом Число, при выборе из справочника определенного маршрута в ресурс Расстояние автоматически вставлялось значение со справочника уатМаршруты реквизит Расстояние тоже с типом Число...вот)
14 Nores
 
04.02.12
09:39
ТекДанные = ЭлементыФормы.РегистрСведенийСписок.ТекущиеДанные;
15 Дядя Васька
 
04.02.12
09:43
(14) См. (12) В ПриИзменении по колонке Маршрут. Ну или через Объект там достань, а не из ТекущиеДанные, без разницы вроде.
16 Дядя Васька
 
04.02.12
09:46
ТекДанные.Расстояние = Элемент.Значение.Расстояние; как вариант
17 Nores
 
04.02.12
09:48
Оки щас попробую
18 Nores
 
04.02.12
09:51
Да это самописная конфа
19 Nores
 
04.02.12
14:35
Вот как получается только

ТекДанные = ЭлементыФормы.РегистрСведенийСписок.ТекущиеДанные;
   наименование = ТекДанные.Маршрут;
   спр=Справочники.уатМаршруты.НайтиПоКоду(наименование.Код);
   //Если НЕ спр.Пустая() Тогда
   ТекДанные.Расстояние = спр.Расстояние;
20 Nores
 
04.02.12
14:41
Всем спасибо за участие и помощь...
21 Nores
 
04.02.12
14:53
ТекДанные = ЭлементыФормы.РегистрСведенийСписок.ТекущиеДанные;
   Наименование = ТекДанные.Маршрут;
   спр=Справочники.уатМаршруты.НайтиПоКоду(наименование.Код);
   Если НЕ спр.Пустая() Тогда
   ТекДанные.Расстояние = спр.Расстояние;
   УстановитьФильтр();
   КонецЕсли;



//Конечный результат
22 Wobland
 
04.02.12
15:42
(21) не вижу обработки ситуации, когда не найдено. подумай, должно быть, даже если ты думаешь, что всегда найдётся
23 Дядя Васька
 
04.02.12
16:00
(19) Не верю.
24 Дядя Васька
 
04.02.12
16:02
(22) У него ссылка на нужный элемент справочника. Соответственно а) найдется 100%, б) никакого смысла в поиске нет, уже и так все перед носом.
25 Nores
 
04.02.12
16:17
Да вообще все нормик, многим пригодится, в нете подобного не нашел((
26 Дядя Васька
 
04.02.12
17:23
(25) Что пригодится? НайтиПоКоду() В данной ситуации? Здесь это не нужно.
27 Дядя Васька
 
04.02.12
17:25
Должно сработать:
   ТекДанные = ЭлементыФормы.РегистрСведенийСписок.ТекущиеДанные;
   ТекДанные.Расстояние = ТекДанные.Маршрут.Расстояние;
не верю что не работает.
28 Nores
 
04.02.12
17:56
Работает...я его и не пробовал))
29 Дядя Васька
 
04.02.12
18:00
ну вы блин даете...
30 Wobland
 
04.02.12
18:44
а ведь и правда, в (21) сон зелёной кобылы, не заметил...
31 Дядя Васька
 
04.02.12
20:46
(30) Фигово что ТС этого скорее всего так и не понял...
(28) Вот смотри, ты диспетчер, перед тобой картотека - коробка с картонками, на каждой из которых написан ее номер по порядку, , откуда, куда, длина маршрута и т.п и уникальный номер по конторе GUID на обратной стороне. Подходит водила, полчаса роется в коробке, по каким-то одному ему известному принципу находит нужную картонку, и отдает ее тебе. Твоя задача переписать в амбарную книгу расстояние что написано на той картонке, но вместо того чтобы это сделать сразу, ты делаешь:
Наименование = ТекДанные.Маршрут; // взял картонку, заглянул на ее обратную сторону записал ее GUID равный 10500МногоТыщ на бумажку, и положил ее обратно в коробку
спр=Справочники.уатМаршруты.НайтиПоКоду(наименование.Код); // перебрал все картонки начиная с первой, нашел нужную с GUID равно 10500МногоТыщ, запомнил ее номер на лицевой стороне, положил на место. Перебрал все картонки в поисках номера что запомнил, заглянул на обратную сторону и переписал GUID как ни странно опять же равный 10500МногоТыщ на бумажку помеченную как "Спр"
ТекДанные.Расстояние = спр.Расстояние; // профит! Еще раз перебрал все бумажки начиная с первой, нашел с GUID равно 10500МногоТыщ как записано на бумажке "спр" и наконец посмотрел на ней расстояние и записал в амбарную книгу.
32 Дядя Васька
 
04.02.12
20:50
(31) Одинэска конечно не диспетчер, и подобные манипуляции по времени незаметны. Но это пока водила один. А когда подойдет начальник и попросит выписать по всем карточкам длину маршрута, и ты будешь это делать таким макаром, то заметно будет уже и в 1С разница. Ну когда в цикл такое воткнешь.
33 Nores
 
05.02.12
13:01
Дядя Васька  РЕСПЕКТ!))