Имя: Пароль:
1C
 
Элемент неопределенного вида в запросе
0 Mihalich
 
31.10.04
19:46
Стоит задача: в запросе обратиться к документам одного вида, у которых есть реквизит1 неопределенного вида. Вопрос: как в запросе обратиться к свойствам справочника неопределенного вида?
Пример:
ТекстЗапроса =
   "//{{ЗАПРОС(ff)                  
   |ТекущийДокумент = Документ.КонтактСКлиентом.ТекущийДокумент;
   |Клиент = Документ.КонтактСКлиентом.Клиент;
   |Группировка Клиент.Наименование;
   |Группировка ТекущийДокумент;
   |"//}}ЗАПРОС
   ;    

У документа КонтактСКилентом реквизит клиент - справочник неопределенного вида, поэтому вылетает ошибка:
Неверно заданный путь 'Наименование'.

Есть у кого-нибудь соображения по этому поводу?
1 Таня
 
31.10.04
20:52
у меня наверное такое соображение есть:
ТекстЗапроса =
  "//{{ЗАПРОС(ff)                  
  |ТекущийДокумент = Документ.КонтактСКлиентом.ТекущийДокумент;
  |Клиент = Документ.КонтактСКлиентом.Клиент.Наименование;
  |Группировка Клиент;
  |Группировка ТекущийДокумент;
  |"//}}ЗАПРОС
  ;
2 Aleksey
 
31.10.04
20:55
Попробуй так:
ТекстЗапроса =
  "//{{ЗАПРОС(ff)                  
  |ТекущийДокумент = Документ.КонтактСКлиентом.ТекущийДокумент;
  |КлиентНаим = Документ.КонтактСКлиентом.ВидСпр1.Клиент.Наименование,
  |Документ.КонтактСКлиентом.ВидСпр2.Клиент.Наименование, ....;
  |Группировка КлиентНаим;
  |Группировка ТекущийДокумент;
  |"//}}ЗАПРОС
  ;    
То есть при определении переменной КлиентНаим перечислить явно все виды справочника КонтактСКлиентом которые могут встретиться
3 Mihalich
 
01.11.04
05:40
to (1) в этом случае и появляется ошибка: Неверно заданный путь 'Наименование'.

to (2) попробовал, тот же результат:

Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
{Отчет.РаботаСКлиентамиЗапрос.Форма.Модуль(395)}: Клиент = Документ.КонтактСКлиентом. <<?>> ПотенциальныеКлиенты.Клиент.Наименование,
Запрос[3] : Неверно заданный путь 'ПотенциальныеКлиенты'
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
{Отчет.РаботаСКлиентамиЗапрос.Форма.Модуль(395)}: Документ.КонтактСКлиентом. <<?>> Клиенты.Клиент.Наименование;
Запрос[4] : Неверно заданный путь 'Клиенты'
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
{Отчет.РаботаСКлиентамиЗапрос.Форма.Модуль(395)}: Группировка Клиент <<?>> ;
Запрос[5] : Переменная  'Клиент' не опеределена
4 Mihalich
 
01.11.04
07:12
Уважаемый Волшебник!
У тебя есть мысли по этому поводу?
5 Волшебник
 
01.11.04
07:13
Нельзя группировать по наименованиям.
6 Mihalich
 
01.11.04
07:18
to (5)
(3) приведено для примера, т.е. реально мне не нужно упорядочивать по наименованию.
Вполне уместен следующий вариант:
   ТекстЗапроса =
   "//{{ЗАПРОС(ff)                  
   |ТекущийДокумент = Документ.КонтактСКлиентом.ТекущийДокумент;
   |Клиент = Документ.КонтактСКлиентом.Клиент;
   |Телефон = Документ.КонтактСКлиентом.Клиент.Телефон;
   |Группировка Клиент;
   |Группировка ТекущийДокумент;
   |"//}}ЗАПРОС

Уточняю вопрос: как в запросе обратиться к реквизитам поля типа справочник неопределенного вида?
7 Волшебник
 
01.11.04
07:24
(6) Сделай условие таким, чтобы не возникало ошибки.
8 Mihalich
 
01.11.04
07:32
Волшебнику (7)
Какое условие нужно изменить?
Повторяю, следующий запрос РАБОТАЕТ:
  ТекстЗапроса =
  "//{{ЗАПРОС(ff)                  
  |ТекущийДокумент = Документ.КонтактСКлиентом.ТекущийДокумент;
  |Клиент = Документ.КонтактСКлиентом.Клиент;
  |Группировка Клиент;
  |Группировка ТекущийДокумент;
  |"//}}ЗАПРОС

А токой выдает ошибку:
Вполне уместен следующий вариант:
  ТекстЗапроса =
  "//{{ЗАПРОС(ff)                  
  |ТекущийДокумент = Документ.КонтактСКлиентом.ТекущийДокумент;
  |Клиент = Документ.КонтактСКлиентом.Клиент;
  |Телефон = Документ.КонтактСКлиентом.Клиент.Телефон;
  |Группировка Клиент;
  |Группировка ТекущийДокумент;
  |"//}}ЗАПРОС
Ошибка:
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
{Отчет.РаботаСКлиентамиЗапрос.Форма.Модуль(395)}: Телефон = Документ.КонтактСКлиентом.Клиент. <<?>> Телефон;
Запрос[4] : Неверно заданный путь 'Телефон'

У меня Поле "клиент" в документе "КонтактСКлиентом" может быть двух видов: "Справочник.Клиенты" и "Справочник.ПотенциальныеКлиенты".
В обоих справочниках есть реквизиты с именем "телефон"
9 Морозов Александр
 
01.11.04
07:41
"Телефон" можно вынести из запроса...
10 Mihalich
 
01.11.04
07:47
to (9) Еще раз повторяюсь: как в запросе обратиться к реквизитам поля типа справочник неопределенного вида? Т.е. мне нужно знать принципиально, возможно такое или нет? А то, что телефон можно вынести из запроса и так понятно (не в этом суть)
11 Морозов Александр
 
01.11.04
08:06
(10)Черт его знает я просто не сталкивался... Наверно пока не схормируется запрос нельзя...
12 Mihalich
 
01.11.04
08:10
(11) спасибо за ответ.

Кто-нибудь еще сталкивался с такой проблемой?
13 Rovan
 
гуру
01.11.04
08:48
(12) Это не проблема, как говорится, это фича (свойство) 7.7.
14 Морозов Александр
 
01.11.04
08:56
А если так:
|Телефон=Запрос.Клиент.Телефон;
или
|Телефон=Клиент.Телефон;
15 Rovan
 
гуру
01.11.04
09:00
Я думаю, что в запросе вообще нельзя обращатся к реквизитам элемента (документа)неопределенного вида (можно только в общим полям документов).
16 Mihalich
 
01.11.04
09:19
to (14) ни первый, ни второй вариант не работает. (неверно заданный путь).

(13),(15) Похоже, что это так. А жаль. Придется выгрузку в ТЗ делать и с ней развлекаться, что скажеться на производительности. :)
17 Mihalich
 
01.11.04
10:40
Кто-нибудь еще может высказаться по этому поводу?
18 Морозов Александр
 
01.11.04
10:49
(16)А зачем выгружать в ТЗ?
19 Rovan
 
гуру
01.11.04
10:51
(17) В чем заключается главная задача ? Что есть и что нужно получить ?
20 Mihalich
 
01.11.04
14:40
Есть документ: контакт с клиентом. В нем есть поле "клиент" типа справочник (Справочник.Клиента, Справочник.ПотенциальныеКлиенты). Необходимо получить отчет по контактам с клиентами (как потенциальным, так и постоянным). При этом необходимо помнить, что:
1.  ФИО клиента не идентифицируют клиента (могут быть разные клиентыс одинаковыми ФИО). Полностью идентифицируют клинета: ФИО, телефон [, место работы, должность].
2. Прежде чем стать клиентом, человек сначала является потенциальным клиентом. Т.е. если клиент есть в спр "Клиенты", то он наверняка есть и в спр. "потенциальные клиенты" (в спр. "Клиенты" есть ссылка на спр. "потенциальные клиенты").
3. Отчет необходимо получить с группировкой по клиенту,  при чем, если клиент являлся потенциальным клиентом, затем стал постоянным клиентом, тогда в отчет он должен входить в одну группировку (должна быть видна вся история взаимодействия с данным клиентом).

Вот так.