Форум 1CSQL.RU
07 Сентября 2010, 20:46:25 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Удаленная разработка и программирование в 1С
 
   Начало   Помощь Войти Регистрация  
Страниц: [1]
  Печать  
Автор Тема: Toy запрос по нескольким видам документов  (Прочитано 298 раз)
Попытка1С
Новичок
*
Сообщений: 2


Просмотр профиля Email
« : 08 Марта 2010, 23:54:30 »

Всем привет!

Есть два вопроса:
1. Может кто делал, и поделиться примером, как написать toy-запрос по нескольким видам документов.
2. Как запросом получить документ основание?

Спасибо.

Записан
ReLock
Постоялец
***
Сообщений: 185

163461312
Просмотр профиля
« Ответ #1 : 10 Марта 2010, 09:40:40 »

1. Вот рабочий пример:
Код:
|SELECT
| [З.Док] Док
|, [З.Товар] Товар
|, (SUM([З.КолР])) КолР
|, (SUM([З.ЦенаР])) ЦенаР
|, (SUM([З.СумР])) СумР
|, (SUM([З.КолВ])) КолВ
|, (SUM([З.ЦенаВ])) ЦенаВ
|, (SUM([З.СумВ])) СумВ
|, (GROUPING([З.Док])) грДок
|, (GROUPING([З.Товар])) грТовар
|INTO
| #Врем
|FROM
|(
| SELECT
| [Ж.Ссылка] Док 
|, [Т.Товар] Товар
|, (SUM([Т.Количество])) КолР
|, (SUM([Т.Цена])) ЦенаР
|, (SUM([Т.Сумма])) СумР
|, (SUM(0)) КолВ
|, (SUM(0)) ЦенаВ
|, (SUM(0)) СумВ
| FROM
| [Журнал] Ж WITH (NOLOCK)
| JOIN
| [Документ.РасходнаяНакладная] Ш WITH (NOLOCK)
| ON
| [Ж.Ссылка] = [Ш.Ссылка]
| JOIN
| [ТабличнаяЧасть.РасходнаяНакладная] Т WITH (NOLOCK)
| ON " + ?(ВыбКлиент.РазмерСписка() <> 0,"[Ш.Ссылка] = [Т.Ссылка]","[Ж.Ссылка] = [Т.Ссылка]") + "
| WHERE
| [Ж.Закрыт] & 1 = 1 AND [Ж.ДатаДок] BETWEEN [@Дата1] AND [@Дата2]
|" + ?(ПустаяСтрока(ФильтрЗапроса)=0," AND " + ФильтрЗапроса,"") + "
| AND
| [Ш.ПризнакНакладной] = [@ПризнакПродажи]
| GROUP BY
| [Ж.Ссылка],[Т.Товар]
|
|UNION ALL
|
| SELECT
| [Ж.Ссылка] Док
|, [Т.Товар] Товар
|, (SUM([Т.Количество])) КолР
|, (SUM([Т.Цена])) ЦенаР
|, (SUM([Т.Сумма])) СумР
|, (SUM(0)) КолВ
|, (SUM(0)) ЦенаВ
|, (SUM(0)) СумВ
| FROM
| [Журнал] Ж WITH (NOLOCK)
| JOIN
| [Документ.РасходнаяРеализатора] Ш WITH (NOLOCK)
| ON
| [Ж.Ссылка] = [Ш.Ссылка]
| JOIN
| [ТабличнаяЧасть.РасходнаяРеализатора] Т WITH (NOLOCK)
| ON " + ?(ВыбКлиент.РазмерСписка() <> 0,"[Ш.Ссылка] = [Т.Ссылка]","[Ж.Ссылка] = [Т.Ссылка]") + "
| WHERE
| [Ж.Закрыт] & 1 = 1 AND [Ж.ДатаДок] BETWEEN [@Дата1] AND [@Дата2]
|" + ?(ПустаяСтрока(ФильтрЗапроса)=0," AND " + ФильтрЗапроса,"") + "
| AND
| [Ш.ПризнакНакладной] = [@ПризнакПродажи]
| GROUP BY
| [Ж.Ссылка],[Т.Товар]";
Если ВыбКлиент.РазмерСписка() = 0 Тогда
глТекст = глТекст + "
|
|UNION ALL
|
|SELECT
| [Ж.Ссылка] Док
|, [Т.Товар] Товар
|, (SUM([Т.Количество])) КолР
|, (SUM([Т.Цена])) ЦенаР
|, (SUM([Т.Сумма])) СумР
|, (SUM(0)) КолВ
|, (SUM(0)) ЦенаВ
|, (SUM(0)) СумВ
|FROM
| [Журнал] Ж WITH (NOLOCK)
|JOIN
| [ТабличнаяЧасть.ОтчетКассовойСмены] Т WITH (NOLOCK)
|ON
| [Ж.Ссылка] = [Т.Ссылка]
|WHERE
| [Ж.Закрыт] & 1 = 1 AND [Ж.ДатаДок] BETWEEN [@Дата1] AND [@Дата2] "
+ ?(ПустаяСтрока(ФильтрЗапроса)=0," AND " + ФильтрЗапроса,"") + "
|GROUP BY
| [Ж.Ссылка],[Т.Товар]
|
|UNION ALL
|
|SELECT
| [Ж.Ссылка] Док
|, [Т.Товар] Товар
|, (SUM([Т.Количество])) КолР
|, (SUM([Т.Цена])) ЦенаР
|, (SUM([Т.Сумма])) СумР
|, (SUM(0)) КолВ
|, (SUM(0)) ЦенаВ
|, (SUM(0)) СумВ
|FROM
| [Журнал] Ж WITH (NOLOCK)
|JOIN
| [Документ.Чек] Ш WITH (NOLOCK)
|ON
| [Ж.Ссылка] = [Ш.Ссылка]
|JOIN
| [ТабличнаяЧасть.Чек] Т WITH (NOLOCK)
|ON
| [Ш.Ссылка] = [Т.Ссылка]
|WHERE
| [Ж.Закрыт] & 1 = 1 AND [Ж.ДатаДок] BETWEEN [@Дата1] AND [@Дата2] "
+ ?(флУчетВозврата = 0," AND [Ш.ЧекНаВозврат] = 0","")
+ ?(ПустаяСтрока(ФильтрЗапроса)=0," AND " + ФильтрЗапроса,"") + "
|GROUP BY
| [Ж.Ссылка],[Т.Товар]";
КонецЕсли;
Если флУчетВозврата = 1 Тогда
глТекст = глТекст + "
|
|UNION ALL
|
|SELECT
| [Ж.Ссылка] Док
|, [Т.Товар] Товар
|, (SUM(0)) КолР
|, (SUM(0)) ЦенаР
|, (SUM(0)) СумР
|, (SUM([Т.Количество])) КолВ
|, (SUM([Т.Цена])) ЦенаВ
|, (SUM([Т.Сумма])) СумВ
|FROM
| [Журнал] Ж WITH (NOLOCK)
|JOIN
| [Документ.ПриходнаяНакладная] Ш WITH (NOLOCK)
|ON
| [Ж.Ссылка] = [Ш.Ссылка]
|JOIN
| [ТабличнаяЧасть.ПриходнаяНакладная] Т WITH (NOLOCK)
|ON " + ?(ВыбКлиент.РазмерСписка() <> 0,"[Ш.Ссылка] = [Т.Ссылка]","[Ж.Ссылка] = [Т.Ссылка]") + "
|WHERE
| [Ж.Закрыт] & 1 = 1 AND [Ж.ДатаДок] BETWEEN [@Дата1] AND [@Дата2]
|AND [Ш.ПризнакНакладной] = [@ПризнакВозврата]
|" + ?(ПустаяСтрока(ФильтрЗапроса)=0," AND " + ФильтрЗапроса,"") + "
|GROUP BY
| [Ж.Ссылка],[Т.Товар]
|
|UNION ALL
|
|SELECT
| [Ж.Ссылка] Док
|, [Т.Товар] Товар
|, (SUM(0)) КолР
|, (SUM(0)) ЦенаР
|, (SUM(0)) СумР
|, (SUM([Т.Количество])) КолВ
|, (SUM([Т.Цена])) ЦенаВ
|, (SUM([Т.Сумма])) СумВ
|FROM
| [Журнал] Ж WITH (NOLOCK)
|JOIN
| [Документ.ПриходнаяРеализатора] Ш WITH (NOLOCK)
|ON
| [Ж.Ссылка] = [Ш.Ссылка]
|JOIN
| [ТабличнаяЧасть.ПриходнаяРеализатора] Т WITH (NOLOCK)
|ON " + ?(ВыбКлиент.РазмерСписка() <> 0,"[Ш.Ссылка] = [Т.Ссылка]","[Ж.Ссылка] = [Т.Ссылка]") + "
|WHERE
| [Ж.Закрыт] & 1 = 1 AND [Ж.ДатаДок] BETWEEN [@Дата1] AND [@Дата2]
|AND [Ш.ПризнакНакладной] = [@ПризнакВозврата]
|" + ?(ПустаяСтрока(ФильтрЗапроса)=0," AND " + ФильтрЗапроса,"") + "
|GROUP BY
| [Ж.Ссылка],[Т.Товар]
|";

По каждому документу необходимо писать подзапрос и соединять все через UNION ALL

2. Попробуй так:
Код:
SELECT
    [РНК.ДокОснование] IS Документ
FROM
     [Документ.РасходнаяНакладная] РНК WITH(NOLOCK)
Правда работоспособность не проверял!
Записан

Оптимизация запросов: Microsoft SQL Server Management Studio - Query - Analyze Query in Database Engine Tuning Advisor
Попытка1С
Новичок
*
Сообщений: 2


Просмотр профиля Email
« Ответ #2 : 11 Марта 2010, 01:06:17 »

Спасибо!
Записан
Страниц: [1]
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.8 | SMF © 2006-2008, Simple Machines LLC Valid XHTML 1.0! Valid CSS!