Имя: Пароль:
1C
1С v8
язык запросов: два реквизита в одно поле
,
0 PiotrLoginov
 
24.01.13
11:50
Здравствуйте всем и удачного дня. Если нетрудно, дайте пожалуйста пример объединения двух реквизитов в одно поле. Поясню: мне нужно получить список партнеров и родитель в одном поле из такого запроса:

ВЫБРАТЬ
   Партнеры.Ссылка КАК Партнер,
   ВложенныйЗапрос.Ссылка КАК Родитель
ИЗ
   (ВЫБРАТЬ
       Партнеры.Ссылка КАК Ссылка
   ИЗ
       Справочник.Партнеры КАК Партнеры
   ГДЕ
       Партнеры.Клиент = &Клиент) КАК ВложенныйЗапрос
       ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Партнеры КАК Партнеры
       ПО ВложенныйЗапрос.Ссылка = Партнеры.Родитель

Сейчас результат запроса - два поля Партнер и Родитель. Надо результаты запроса поместить в одно поле. Заранее спасибо за подсказку.
1 ssh2006
 
24.01.13
11:51
(0) > Надо результаты запроса поместить в одно поле.

Объединение
2 DrShad
 
24.01.13
11:52
(1) +1 вместо СОЕДИНЕНИЕ
3 dk
 
24.01.13
11:54
либо объединить
либо выбор когда...
4 Wobland
 
24.01.13
11:59
получить представление и посложить?
5 Wobland
 
24.01.13
12:00
(4) или наименование
6 Reset
 
24.01.13
12:00
(5) Наименование разве :)
7 PiotrLoginov
 
24.01.13
12:06
Синтаксис подскажете? Может быть так:

ВЫБРАТЬ
       ВложенныйЗапрос.Родитель КАК Родитель,
       Партнеры.Ссылка КАК Подразделение
   ИЗ
       (ВЫБРАТЬ
           Партнеры.Ссылка КАК Родитель
       ИЗ
           Справочник.Партнеры КАК Партнеры) КАК ВложенныйЗапрос
           ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Партнеры КАК Партнеры
           ПО ВложенныйЗапрос.Родитель = Партнеры.Родитель

ОБЪЕДИНИТЬ ВСЕ


но как указать наименование поля, в которое в итоге объединятся Родитель и Подразделение ?
8 Wobland
 
24.01.13
12:07
поле1+поле2 как поле3
9 Reset
 
24.01.13
12:09
(8)
(7), очевдно, к (1)(2)(3)
До твоего вариfнта он еще не дошел :)
10 plastinin
 
24.01.13
12:09
Типа такого:
ВЫБРАТЬ
   Контрагенты.Ссылка,
   Контрагенты.Наименование
ПОМЕСТИТЬ ВтРодитель
ИЗ
   Справочник.Контрагенты КАК Контрагенты
ГДЕ
   Контрагенты.Ссылка = &Клиент
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Контрагенты.Наименование + " " + ВтРодитель.Наименование КАК Поле1
ИЗ
   ВтРодитель КАК ВтРодитель
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
       ПО ВтРодитель.Ссылка = Контрагенты.Родитель
11 PiotrLoginov
 
24.01.13
12:09
написал

ВЫБРАТЬ
       ВложенныйЗапрос.Родитель КАК Родитель,
       Партнеры.Ссылка КАК Подразделение
   ИЗ
       (ВЫБРАТЬ
           Партнеры.Ссылка КАК Родитель
       ИЗ
           Справочник.Партнеры КАК Партнеры) КАК ВложенныйЗапрос
           ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Партнеры КАК Партнеры
           ПО ВложенныйЗапрос.Родитель = Партнеры.Родитель

ОБЪЕДИНИТЬ Родитель + Подразделение = Партнер



Пишет "ожидается выражение выбрать"...
12 Wobland
 
24.01.13
12:09
поможем дойти. что такое объединение полей в одно? какой тип в итоге ожидается?
13 PiotrLoginov
 
24.01.13
12:11
Подождите, мне надо получить не одной строкой название подразделения и родителя, а список из подразделений и родителей
14 Reset
 
24.01.13
12:12
(13) т.е.

НекийПартнер
НекийПартнер2
РодительнекоегоПартнера
РодительнекоегоПартнера2

?
15 Wobland
 
24.01.13
12:12
(13) что такое список? все значения слепить в одно? один хрен вопрос: какого типа поле ожидается?
ну и самое главное: в запросе зачем?
16 PiotrLoginov
 
24.01.13
12:13
У меня в результате это

ПОДРАЗДЕЛЕНИЕ      РОДИТЕЛЬ
дочь Пупкина        Пупкин
сын пупкина         Пупкин


А мне надо

ПАРТНЕР
Пупкин
дочь Пупкина
сын Пупкина
17 PiotrLoginov
 
24.01.13
12:13
(14)  именно так
18 Reset
 
24.01.13
12:13
(16) Тогда иди путем (1)(2)(3)
:)
19 Wobland
 
24.01.13
12:14
выбрать
пратнёров
объединить
выбрать
родителей
20 PiotrLoginov
 
24.01.13
12:16
дык я понял, что мне поможет ОБЪЕДИНЕНИЕ. Но какой синтаксис?
21 PiotrLoginov
 
24.01.13
12:18
(7) не прокатило.  Да и надо ведь как-то указать название поля, в которое будт объединяться Родитель и Подразделение
22 Wobland
 
24.01.13
12:18
(21) алиасы указываются в первом запросе
23 Reset
 
24.01.13
12:20
вот пример синтаксиса. Хотя следовало бы тебя в справку послать.

ВЫБРАТЬ
       Партнеры.Ссылка КАК Ссылка
   Поместить Родители
   ИЗ
       Справочник.Партнеры КАК Партнеры

   ГДЕ
       Партнеры.Клиент = &Клиент


ВЫБРАТЬ
   Родители.Ссылка КАК ОбщееПоле
   из Родители
Объединить

ВЫБРАТЬ
       Партнеры.Ссылка КАК Ссылка
   ИЗ
       Справочник.Партнеры КАК Партнеры
   ГДЕ
       Партнеры.Родитель в (выбрать Родители.Ссылка из Родители)
24 Reset
 
24.01.13
12:21
в последнем выбрать "КАК Ссылка" лишнее, оно будет проигнорировано, т.к. (22) верно
25 Wobland
 
24.01.13
12:26
а времеення таблица зачем?
26 Reset
 
24.01.13
12:29
(25) Чтобы избежать дважды в одном запросе Клиент = &Клиент
27 Reset
 
24.01.13
12:30
(25) вот без вт

ВЫБРАТЬ
       Партнеры.Ссылка КАК Общее
   ИЗ
       Справочник.Партнеры КАК Партнеры

   ГДЕ
       Партнеры.Клиент = &Клиент
Объединить

       Партнеры.Ссылка
   ИЗ
       Справочник.Партнеры КАК Партнеры
   ГДЕ
       Партнеры.Родитель.Клиент = &Клиент
28 Reset
 
24.01.13
12:32
Еще есть простор для раскрытия темы в случае, если автору нужны не только непосредственные дочки, но и все ниже по иерархии
29 lapinio
 
24.01.13
12:32
Может туплю. 1)Не понятно зачем вложенный запрос. 2) Не проще использовать итоги. Родителя в итоги, а подразделение в итоговое поле.
30 Wobland
 
24.01.13
12:35
(29) а как вариант, кстати
31 PiotrLoginov
 
24.01.13
12:38
(23) гм. честно:  я не понял, как это работает. Здесь три запроса. При попытке скормить их контруктору он пишет "Синтаксическая ошибка "ВЫБРАТЬ"<<?>>ВЫБРАТЬ"

Первый запрос получает таблицу Родители? Второй превращает её в ОбщееПоле ? Третий находит партнеров, чей родитель содержится в Родители ? В чем смысл ?

------------
Я написал запрос для формирования сегмента, состоящего из Партнеров-родителей. Сегмент формируется исходя из обслуживающего этого самого Партнера и его подразделения конкретного физ. лица - торгового представителя. Все работало чудесно.

Теперь оказалось, что мне надо включить в список Партнеров, входящих в сегмент, не только Родителей, но и их подразделения. Я добавил в исходный запрос строку "ЗапросПартнеров.Подразделение КАК Подразделение", и получилось вот что:



ВЫБРАТЬ РАЗРЕШЕННЫЕ
   ЗапросПартнеров.Родитель КАК Партнер,
   ЗапросПартнеров.Подразделение КАК Подразделение,
   УсловияОбслуживанияПартнеровТорговымиПредставителями.Ссылка КАК Представитель
{ВЫБРАТЬ
   Партнер}
ИЗ
   (ВЫБРАТЬ
       ВложенныйЗапрос.Родитель КАК Родитель,
       Партнеры.Ссылка КАК Подразделение
   ИЗ
       (ВЫБРАТЬ
           Партнеры.Ссылка КАК Родитель
       ИЗ
           Справочник.Партнеры КАК Партнеры) КАК ВложенныйЗапрос
           ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Партнеры КАК Партнеры
           ПО ВложенныйЗапрос.Родитель = Партнеры.Родитель) КАК ЗапросПартнеров
       ЛЕВОЕ СОЕДИНЕНИЕ Справочник.УсловияОбслуживанияПартнеровТорговымиПредставителями КАК УсловияОбслуживанияПартнеровТорговымиПредставителями
       ПО ЗапросПартнеров.Подразделение = УсловияОбслуживанияПартнеровТорговымиПредставителями.Владелец
{ГДЕ
   ЗапросПартнеров.Родитель.* КАК Партнер,
   УсловияОбслуживанияПартнеровТорговымиПредставителями.Ссылка.* КАК Представитель}


Но мне не нужен список партнеров и их подразделений, подобный

РОДИТЕЛЬ         ПОДРАЗДЕЛЕНИЕ      
Пупкин            дочь Пупкина
Пупкин            сын пупкина


Мне надо получить в итоге для СКД лишь список партнеров и их подразделений:

ПАРТНЕР
Пупкин
дочь Пупкина
сын Пупкина
32 lapinio
 
24.01.13
12:40
В СКД делается элементарно. Групировочное поле родитель, детальные записи подразделение
33 Reset
 
24.01.13
12:41
(29) Типа так? :

Партнеры.Ссылка как Общее
   ИЗ
       Справочник.Партнеры КАК Партнеры
   ГДЕ
       Партнеры.Родитель.Клиент = &Клиент /// 1 уровень вложенности опять хотя
Итоги по Партнеры.Ссылка иерархия КАК Общее
34 Reset
 
24.01.13
12:43
(31) Точку с запятой (;) добавить перед втрым ВЫБРАТЬ
35 lapinio
 
24.01.13
12:44
(33) Как то да. Ему вообще нужен простой отчет на скд. Зачем изголяться в запросе. Непонятно
36 PiotrLoginov
 
24.01.13
12:46
(34) Оо-о .. кажется начинает структурироваться каша в моей голове :)
37 PiotrLoginov
 
24.01.13
12:47
(35) Проще написать запрос, сразу дающий искомое. И на будущее пригодится.
38 PR
 
24.01.13
13:12
(0) Дурдом какой-то. От конфигуратора отлучать за такое :))
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.