Имя: Пароль:
1C
1С v8
Запрос, выбор нескольких договоров по наименованию
0 zzzLEXzzz
 
19.03.13
17:33
Приветствую всех, 1С 8.2 Торговля.
Имеется запрос, как изменить или что дописать чтобы запрос выбирал договора по двум наименованием, то есть, сейчас он ищет по наименованию "Основной договор" а надо ещё чтобы искал по наименованию "Договор КП" вот сам текст запроса

текст = "ВЫБРАТЬ
           |    ДоговорыКонтрагентов.Владелец КАК Контр,
           |    ДоговорыКонтрагентов.Владелец.Наименование,
           |    ДоговорыКонтрагентов.Ссылка КАК Дог
           |ИЗ
           |    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
           |ГДЕ
           |    ДоговорыКонтрагентов.ТорговыйПредставитель = &ТП
           |    И ДоговорыКонтрагентов.Наименование = &НаимДог
           |    И ДоговорыКонтрагентов.ПометкаУдаления = Ложь
           |
           |СГРУППИРОВАТЬ ПО
           |    ДоговорыКонтрагентов.Владелец,
           |    ДоговорыКонтрагентов.Владелец.Наименование,
           |    ДоговорыКонтрагентов.Ссылка";
           
   Запрос = новый запрос;
   Запрос.Текст = Текст;
   Запрос.УстановитьПараметр("ТП",Агент_.Ссылка);
   Запрос.УстановитьПараметр("НаимДог","Основной договор");
   Кон_ = Запрос.Выполнить().Выбрать();
1 acsent
 
19.03.13
17:35
как у договора появилось 2 наименования?
2 zzzLEXzzz
 
19.03.13
17:36
(1) у договора не два наименования, просто на одном контрагенте закреплены несколько договоров
3 pessok
 
19.03.13
17:38
И ДоговорыКонтрагентов.Наименование В (&СписНаимДог)

Спис = Новый СписокЗначений();
Спис.Добавить("Основной договор");
Спис.добавить("Договор КП")

Запрос.УстановитьПараметр("СписНаимДог",Спис);
4 acsent
 
19.03.13
17:39
а зачем сгруппировать?
5 zzzLEXzzz
 
19.03.13
17:45
(3) Спасибо всё получилось
6 zzzLEXzzz
 
19.03.13
17:46
Ребят ещё проблема в этом же запросе, помогите щас постараюсь правильно объяснить
7 zzzLEXzzz
 
19.03.13
17:48
Можно ли сделать так чтобы когда он перебирал договора, и если одно из наименований уже есть то второй договор он уже не трогал, например если есть "Основной договор" то тогда "Договор КП" он не трогал, а если нету "основной договор" то тогда он подбирал "Договор КП"  если не понятно объяснил, извините
8 pessok
 
19.03.13
17:53
ВЫБРАТЬ ПЕРВЫЕ 1
9 zzzLEXzzz
 
19.03.13
17:54
(8) а можешь показать где это в коде указать
10 pessok
 
19.03.13
17:55
(9) в первой строке твоего запроса
11 zzzLEXzzz
 
19.03.13
17:57
(10) он тогда берет одного контрагента, и всё, а надо по всем контрагентам, но один договор
12 Юный 1С
 
19.03.13
18:01
Может в начала сделать временную таблицу с контрами у которых есть договор "Основной". Потом сделать таблицу с договорами "Договор КП",и исключить из нею контров из первой таблице. И 3-ий шаг объединить эти таблицы.
13 zzzLEXzzz
 
19.03.13
18:03
(12) К сожалению для меня это слишком сложно (((( я просто начинающий только
14 Юный 1С
 
19.03.13
18:08
"ВЫБРАТЬ
|    ДоговорыКонтрагентовОсновные.Владелец КАК Контр,
|    ДоговорыКонтрагентовОсновные.Владелец.Наименование,
|    ДоговорыКонтрагентовОсновные.Ссылка КАК Дог
|ИЗ
|    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентовОсновные
|ГДЕ
|   ДоговорыКонтрагентов.ТорговыйПредставитель = &ТП
|    И ДоговорыКонтрагентовОсновные.Наименование = &НаимДогОсновной
|    И ДоговорыКонтрагентовОсновные.ПометкаУдаления = ЛОЖЬ
|
|СГРУППИРОВАТЬ ПО
|    ДоговорыКонтрагентовОсновные.Владелец,
|    ДоговорыКонтрагентовОсновные.Владелец.Наименование,
|    ДоговорыКонтрагентовОсновные.Ссылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
|    ДоговорыКонтрагентовОстальные.Владелец,
|    ДоговорыКонтрагентовОстальные.Владелец.Наименование,
|    ДоговорыКонтрагентовОстальные.Ссылка
|ИЗ
|    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентовОстальные
|ГДЕ
|   ДоговорыКонтрагентов.ТорговыйПредставитель = &ТП
|    И ДоговорыКонтрагентовОстальные.Наименование = &НаимДог
|    И ДоговорыКонтрагентовОстальные.ПометкаУдаления = ЛОЖЬ
|    И НЕ ДоговорыКонтрагентовОстальные.Владелец В
|                (ВЫБРАТЬ
|                    ДоговорыКонтрагентовОсновные.Владелец
|                ИЗ
|                    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентовОсновные
|                ГДЕ
|                  ДоговорыКонтрагентов.ТорговыйПредставитель = &ТП
|                    И ДоговорыКонтрагентовОсновные.Наименование = &НаимДогОсновной
|                    И ДоговорыКонтрагентовОсновные.ПометкаУдаления = ЛОЖЬ)
|
|СГРУППИРОВАТЬ ПО
|    ДоговорыКонтрагентовОстальные.Владелец,
|    ДоговорыКонтрагентовОстальные.Владелец.Наименование,
|    ДоговорыКонтрагентовОстальные.Ссылка"
15 Юный 1С
 
19.03.13
18:08
Вот как то так, только местные гуру не забрасывайте тапками)
16 John D
 
19.03.13
18:16
Повторюсь за (4) - зачем группировать, если нет агрегатных функций? Ну и запрос из (14) это, конечно, сильно...

Удачи!
17 zladenuw
 
19.03.13
18:39
а разве у контрагента нет реквизита Основной Договор ?
18 zzzLEXzzz
 
20.03.13
09:59
(17) Есть, но по нему нельзя, т.к пометка на основной договор стоит совсем на других договорах
19 zzzLEXzzz
 
20.03.13
09:59
(14) что-то не получается ((
20 hhhh
 
20.03.13
10:04
(19) но вообще-то в типовых уже есть точно такая же функция. Всё уже сделано до вас.
21 zzzLEXzzz
 
20.03.13
10:32
(20) Можешь подсказать где именно?
22 Ткачев
 
20.03.13
10:35
Я бы так сделал
И (ДоговорыКонтрагентов.Наименование = "Основной договор" Или ДоговорыКонтрагентов.Наименование = "Договор КП")
23 zzzLEXzzz
 
20.03.13
11:10
(22) Попробовал так, он тогда всё равно подхватывает 2 договора
24 Ткачев
 
20.03.13
11:36
(23)
ВЫБРАТЬ
   ДоговорыКонтрагентов.Владелец КАК Контрагент,
   ДоговорыКонтрагентов.Владелец.Наименование,
   МАКСИМУМ(ДоговорыКонтрагентов.Ссылка) КАК Договор
ИЗ
   Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
ГДЕ
   (ДоговорыКонтрагентов.Наименование = "Основной договор"
           ИЛИ ДоговорыКонтрагентов.Наименование = "Договор КП")
   И ДоговорыКонтрагентов.ПометкаУдаления = ЛОЖЬ

СГРУППИРОВАТЬ ПО
   ДоговорыКонтрагентов.Владелец,
   ДоговорыКонтрагентов.Наименование
25 Ткачев
 
20.03.13
11:39
СГРУППИРОВАТЬ ПО
   ДоговорыКонтрагентов.Владелец,
   ДоговорыКонтрагентов.Наименование
=
СГРУППИРОВАТЬ ПО
   ДоговорыКонтрагентов.Владелец,
   ДоговорыКонтрагентов.Владелец.Наименование
26 zzzLEXzzz
 
20.03.13
11:44
(24)Выходит эта ошибка, не подскажешь из-за чего?  

{Форма.Форма.Форма(942,45)}: Ожидается символ ';'
           |    И(ДоговорыКонтрагентов.Наименование = "<<?>>Основной договор" (Проверка: Толстый клиент (обычное приложение))
{Форма.Форма.Форма(942,54)}: Неопознанный оператор
           |    И(ДоговорыКонтрагентов.Наименование = "Основной <<?>>договор" (Проверка: Толстый клиент (обычное приложение))
27 Ткачев
 
20.03.13
11:47
(26)Весь запрос давай;
Скорее всего надо И(ДоговорыКонтрагентов.Наименование = ""Основной договор"" и ДоговорыКонтрагентов.Наименование = ""Договор КП"")
28 zzzLEXzzz
 
20.03.13
11:49
(27) текст = "ВЫБРАТЬ
           |    ДоговорыКонтрагентов.Владелец КАК Контр,
           |    ДоговорыКонтрагентов.Владелец.Наименование,
           |    ДоговорыКонтрагентов.Ссылка КАК Дог
           |ИЗ
           |    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
           |ГДЕ
           |   ДоговорыКонтрагентов.ТорговыйПредставитель = &ТП    
           |    И(ДоговорыКонтрагентов.Наименование = "Основной договор"
           |   ИЛИ ДоговорыКонтрагентов.Наименование = "Договор КП")
           |   И ДоговорыКонтрагентов.ПометкаУдаления = ЛОЖЬ
           |
           |СГРУППИРОВАТЬ ПО
           |    ДоговорыКонтрагентов.Владелец,
           |    ДоговорыКонтрагентов.Владелец.Наименование,
           |    ДоговорыКонтрагентов.Ссылка";
           
   Запрос = новый запрос;
   Запрос.Текст = Текст;
   Запрос.УстановитьПараметр("ТП",Агент_.Ссылка);
   Кон_ = Запрос.Выполнить().Выбрать();
29 Ткачев
 
20.03.13
11:50
текст = "ВЫБРАТЬ
           |    ДоговорыКонтрагентов.Владелец КАК Контр,
           |    ДоговорыКонтрагентов.Владелец.Наименование,
           |    ДоговорыКонтрагентов.Ссылка КАК Дог
           |ИЗ
           |    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
           |ГДЕ
           |   ДоговорыКонтрагентов.ТорговыйПредставитель = &ТП    
           |    И(ДоговорыКонтрагентов.Наименование = ""Основной договор""
           |   ИЛИ ДоговорыКонтрагентов.Наименование = ""Договор КП"")
           |   И ДоговорыКонтрагентов.ПометкаУдаления = ЛОЖЬ
           |
           |СГРУППИРОВАТЬ ПО
           |    ДоговорыКонтрагентов.Владелец,
           |    ДоговорыКонтрагентов.Владелец.Наименование,
           |    ДоговорыКонтрагентов.Ссылка";
           
   Запрос = новый запрос;
   Запрос.Текст = Текст;
   Запрос.УстановитьПараметр("ТП",Агент_.Ссылка);
   Кон_ = Запрос.Выполнить().Выбрать();
30 zzzLEXzzz
 
20.03.13
11:50
(27) Я делал в 2-х кавычках, но он тогда опять подбирает 2 договора...
31 Ткачев
 
20.03.13
11:51
текст = "ВЫБРАТЬ
           |    ДоговорыКонтрагентов.Владелец КАК Контр,
           |    ДоговорыКонтрагентов.Владелец.Наименование,
           |    МАКСИМУМ(ДоговорыКонтрагентов.Ссылка) КАК Дог
           |ИЗ
           |    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
           |ГДЕ
           |   ДоговорыКонтрагентов.ТорговыйПредставитель = &ТП    
           |    И(ДоговорыКонтрагентов.Наименование = ""Основной договор""
           |   ИЛИ ДоговорыКонтрагентов.Наименование = ""Договор КП"")
           |   И ДоговорыКонтрагентов.ПометкаУдаления = ЛОЖЬ
           |
           |СГРУППИРОВАТЬ ПО
           |    ДоговорыКонтрагентов.Владелец,
           |    ДоговорыКонтрагентов.Владелец.Наименование";
           
   Запрос = новый запрос;
   Запрос.Текст = Текст;
   Запрос.УстановитьПараметр("ТП",Агент_.Ссылка);
   Кон_ = Запрос.Выполнить().Выбрать();
32 Ткачев
 
20.03.13
11:51
(30)Так максимум не поставил
33 zzzLEXzzz
 
20.03.13
12:00
(32) Афигеннно, всё заработало, огромнейшее тебе спасибо, но только за максимум я так и не понял эт что? ))))
34 Ткачев
 
20.03.13
12:04
(33)Так скажем в твоем случае это Сортировка договоров по убыванию, МИНИМУМ по возрастанию.
35 zzzLEXzzz
 
20.03.13
12:07
(34) Спасибо тебе огромное, сам бы в жизнь не до пёр бы до этого )))