Имя: Пароль:
1C
 
Полный код элемента справочника
0 New Iriska
 
03.09.10
11:38
Подскажите, пожалуйста, как в запросе можно получить полный код отобранных элементов справочника?
1 Волшебник
 
03.09.10
11:39
В запросе никак.
В языке ПолныйКод()
2 Jstunner
 
03.09.10
11:40
(0) можно для ограниченной вложенности, но зачем?
3 New Iriska
 
03.09.10
11:44
что значит зачем? задача такая стоит. Действительно, у меня ограниченная вложенность. В книге есть пример, как получить полный код, если код у элементов справочника типа данных строка, а у меня числовой. Подскажи, как в этом случае быть. Ведь в тексте запроса нельзя приводить тип к строке
4 Defender aka LINN
 
03.09.10
11:45
(3) "что значит зачем? задача такая стоит" - ты вот нам сейчас пытаешься рассказать, что у тебя есть учетная задача, которая заключается в том, чтобы получить полный код справочника запросом?
5 Jstunner
 
03.09.10
11:45
(3) озвучь задачу, где надо полный код в запросе
6 sergeev-ag-1977
 
03.09.10
11:49
На днях же было ... Только - почему это код стал числом ? Число это то над чем будут производиться действия + - / *, а у Вас это срока. По строке вчера или позавчера писали уже...
7 New Iriska
 
03.09.10
11:52
У меня два справочника: ОбъектыКонтрагентов и КартаСети. Одному объекту карты сети может соответствовать несколько объектов контрагентов. Мне надо показать пользователю название объекта контрагента, его адрес, соответствующий ему объект карты сети, а еще контрагента вывести. А еще нужен полный код этого объекта карты сети для облегчения читабильности этого дела пользователем. Потом из этой параши производится поиск по критериям, заданным пользователем: по полному коду объекта карты сети, по наименованию и т.д.
8 New Iriska
 
03.09.10
11:52
"Только - почему это код стал числом ?" Он не стал числом, а вэтой системе он уже лет 5 был числом
9 New Iriska
 
03.09.10
11:55
а сначала выбрать, что мне надо, а потом в цикле проходить и определять функцией ПолныйКод() - это очень долго
10 Defender aka LINN
 
03.09.10
11:56
(7) Где тут сказано, что полный код нужно получать именно в запросе?
11 New Iriska
 
03.09.10
11:57
В (7) не сказано, причина в (8)
12 Defender aka LINN
 
03.09.10
11:59
(11) Ага. То есть, потому что код уже 5 лет - число, нужен запрос?
Если бы он 3 года, например, был бы числом всего, то его надо было бы получать уже не в запросе?
13 New Iriska
 
03.09.10
12:00
я ошиблась, причина в (9) а сначала выбрать, что мне надо, а потом в цикле проходить и определять функцией ПолныйКод() - это очень долго
14 Defender aka LINN
 
03.09.10
12:03
(13) Тогда забудь про идею с полным кодом вообще, будет быстрее.
15 hhhh
 
03.09.10
12:13
(13) в запросе выбери коды всех родителей (группы, подгруппы), а в цикле просто их склеишь.
16 sergeev-ag-1977
 
03.09.10
12:14
17 New Iriska
 
03.09.10
13:04
(16) это не оно, потому что у меня код типа данных число
18 New Iriska
 
03.09.10
14:11
(15) в том то и дело, что нельзя  мне в получившемся результате пробегаться циклом, там куча записей, это медленно делается
19 Dem1urg
 
03.09.10
14:50
(17) А кто тебе сказал, что в запросе нельзя преобразовать число в строку?
20 Dem1urg
 
03.09.10
15:02
(19) Извиняюсь. Затупил.
21 WickeD
 
03.09.10
16:00
(17) ну и что, что число, пробуй (16) и все получится
22 Defender aka LINN
 
03.09.10
16:02
(21) Давай ты будешь перед тем, как что-то советовать, будешь это пробовать?
23 PVV65
 
03.09.10
16:18
Простой код для трехуровнего справочника

   Запрос = Новый Запрос;
   Запрос.Текст = "
       |ВЫБРАТЬ
       |Контрагенты.Ссылка,
       |ВЫБОР
       |    КОГДА (Контрагенты.Родитель.Код ЕСТЬ NULL ) ТОГДА Контрагенты.Код
       |    КОГДА (Контрагенты.Родитель.Родитель.Код ЕСТЬ NULL ) ТОГДА Контрагенты.Родитель.Код
       |    ИНАЧЕ Контрагенты.Родитель.Родитель.Код
       |КОНЕЦ КАК ПервыйУровень,
       |ВЫБОР
       |    КОГДА (Контрагенты.Родитель.Код ЕСТЬ NULL ) ТОГДА NULL
       |    КОГДА (Контрагенты.Родитель.Родитель.Код ЕСТЬ NULL ) ТОГДА Контрагенты.Код
       |    ИНАЧЕ Контрагенты.Родитель.Код
       |КОНЕЦ КАК ВторойУровень,
       |ВЫБОР
       |    КОГДА (Контрагенты.Родитель.Код ЕСТЬ NULL ) ТОГДА NULL
       |    КОГДА (Контрагенты.Родитель.Родитель.Код ЕСТЬ NULL ) ТОГДА NULL
       |    ИНАЧЕ Контрагенты.Код
       |КОНЕЦ КАК ТретийУровень
       |ИЗ
       |Справочник.Контрагенты КАК Контрагенты";
       
   ТЗ = Запрос.Выполнить().Выгрузить();
   ТЗ.Колонки.Добавить("ПервыйУровень1");
   ТЗ.Колонки.Добавить("ВторойУровень1");
   ТЗ.Колонки.Добавить("ТретийУровень1");
   ТЗ.Колонки.Добавить("ПолныйКод");
   
   Для нн = 0 По ТЗ.Количество() - 1 Цикл
       ТЗ[нн].ПервыйУровень1 = Строка(ТЗ[нн].ПервыйУровень);
       ТЗ[нн].ВторойУровень1 = Строка(ТЗ[нн].ВторойУровень);
       ТЗ[нн].ТретийУровень1 = Строка(ТЗ[нн].ТретийУровень);
       ТЗ[нн].ПолныйКод = ТЗ[нн].ПервыйУровень1 + ?(ТЗ[нн].ВторойУровень1 = "","","/"+ ТЗ[нн].ВторойУровень1) + ?(ТЗ[нн].ТретийУровень1 = "","","/"+ ТЗ[нн].ТретийУровень1);
   КонецЦикла;