Имя: Пароль:
1C
1С v8
УТ11 Как Вам запросец?
,
0 m-serg74
 
19.10.12
12:52

   |ВЫБРАТЬ
   |    ПроданныеТовары.Номенклатура   КАК Номенклатура,
   |    ПроданныеТовары.Характеристика КАК Характеристика,
   |    ПроданныеТовары.Количество     КАК Количество,
   |    ПроданныеТовары.Сумма
   |    * ЕСТЬNULL(КурсыВалютПредоставления.Курс, 1) * ЕСТЬNULL(КурсыВалютДокумента.Кратность, 1)
   |     / (ЕСТЬNULL(КурсыВалютДокумента.Курс, 1) * ЕСТЬNULL(КурсыВалютПредоставления.Кратность, 1)) КАК Сумма
   |ИЗ
   |    Документ.ЧекККМ.Товары КАК ПроданныеТовары
   |    
   |        ЛЕВОЕ СОЕДИНЕНИЕ КурсыВалют КАК КурсыВалютПредоставления
   |        ПО (КурсыВалютПредоставления.Валюта = ПроданныеТовары.Ссылка.Валюта)
   |    
   |        ЛЕВОЕ СОЕДИНЕНИЕ КурсыВалют КАК КурсыВалютДокумента
   |        ПО (КурсыВалютДокумента.Валюта = &ВалютаДокумента)
   |    
   |ГДЕ
   |    ПроданныеТовары.Ссылка.Дата МЕЖДУ &ДатаНачалаЧекККМ И &ДатаОкончанияЧекККМ
   |    И ПроданныеТовары.Ссылка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.Пробит)
   |    И ПроданныеТовары.Ссылка.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыКассовойСмены.ЗакрытаЧекиЗаархивированы)
   |    И ПроданныеТовары.Ссылка.Партнер = &Партнер
   |    И ПроданныеТовары.Ссылка.Партнер <> ЗНАЧЕНИЕ(Справочник.Партнеры.РозничныйПокупатель)
   |    
   |ОБЪЕДИНИТЬ ВСЕ
   |    
   |ВЫБРАТЬ
   |    ПроданныеТовары.Номенклатура   КАК Номенклатура,
   |    ПроданныеТовары.Характеристика КАК Характеристика,
   |    -ПроданныеТовары.Количество     КАК Количество,
   |    -ПроданныеТовары.Сумма
   |    * ЕСТЬNULL(КурсыВалютПредоставления.Курс, 1) * ЕСТЬNULL(КурсыВалютДокумента.Кратность, 1)
   |     / (ЕСТЬNULL(КурсыВалютДокумента.Курс, 1) * ЕСТЬNULL(КурсыВалютПредоставления.Кратность, 1)) КАК Сумма
   |ИЗ
   |    Документ.ЧекККМВозврат.Товары КАК ПроданныеТовары
   |    
   |        ЛЕВОЕ СОЕДИНЕНИЕ КурсыВалют КАК КурсыВалютПредоставления
   |        ПО (КурсыВалютПредоставления.Валюта = ПроданныеТовары.Ссылка.Валюта)
   |    
   |        ЛЕВОЕ СОЕДИНЕНИЕ КурсыВалют КАК КурсыВалютДокумента
   |        ПО (КурсыВалютДокумента.Валюта = &ВалютаДокумента)
   |    
   |ГДЕ
   |    ПроданныеТовары.Ссылка.Дата МЕЖДУ &ДатаНачалаЧекККМ И &ДатаОкончанияЧекККМ
   |    И ПроданныеТовары.Ссылка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.Пробит)
   |    И ПроданныеТовары.Ссылка.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыКассовойСмены.ЗакрытаЧекиЗаархивированы)
   |    И ПроданныеТовары.Ссылка.Партнер = &Партнер
   |    И ПроданныеТовары.Ссылка.Партнер <> ЗНАЧЕНИЕ(Справочник.Партнеры.РозничныйПокупатель)
1 Stim
 
19.10.12
12:52
запрос как запрос
2 mikecool
 
19.10.12
12:53
и чо?
3 Stim
 
19.10.12
12:53
4 m-serg74
 
19.10.12
12:53
нормальный??? )))
5 m-serg74
 
19.10.12
12:54
внимательнее посмотрите на секции ГДЕ
6 mikecool
 
19.10.12
12:55
(5) дальше что? если ты не понимаешь смысла, то это не значит, что его нет
7 m-serg74
 
19.10.12
12:55
(2) у кого УТ11 работает наверное лучше поправить
8 Рэйв
 
19.10.12
12:56
Есть понятие "Тупой копипаст".
Пора вводить понятие "Тупой пост ни о чем"
9 m-serg74
 
19.10.12
12:56
(6) а ты понимаешь разыменовывание как то иначе чем я?
10 mikecool
 
19.10.12
12:56
(7) если Маня про это не писал - значит не косяк
11 m-serg74
 
19.10.12
12:56
(8) в чем тупость?
12 m-serg74
 
19.10.12
12:57
(10) Маня скидок наверное не дает
13 mikecool
 
19.10.12
12:57
(9) при чем здесь разыменование?
14 m-serg74
 
19.10.12
12:57
глянь внимательнее
15 Ткачев
 
19.10.12
12:58
(5)А чем ГДЕ не нравиться ?
16 m-serg74
 
19.10.12
12:58
(15)
ПроданныеТовары.Ссылка.Дата МЕЖДУ &ДатаНачалаЧекККМ И &ДатаОкончанияЧекККМ
   |    И ПроданныеТовары.Ссылка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.Пробит)
   |    И ПроданныеТовары.Ссылка.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыКассовойСмены.ЗакрытаЧекиЗаархивированы)
   |    И ПроданныеТовары.Ссылка.Партнер = &Партнер
   |    И ПроданныеТовары.Ссылка.Партнер <> ЗНАЧЕНИЕ(Справочник.Партнеры.РозничныйПокупатель)
17 mikecool
 
19.10.12
12:58
разыменование - получение объекта по ссылке
как к запросу применить не знаю ((
18 mikecool
 
19.10.12
12:59
(16) ну не томи уже
19 Ахиллес
 
19.10.12
12:59
Справочник партнёры штоле?
20 m-serg74
 
19.10.12
12:59
да что не томить он три дня работает
21 mikecool
 
19.10.12
12:59
+18 а то выходит, что ты один здесь Д'артаньян
22 Ткачев
 
19.10.12
13:00
|    И ПроданныеТовары.Ссылка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.Пробит)
   |    И ПроданныеТовары.Ссылка.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыКассовойСмены.ЗакрытаЧекиЗаархивированы)

Это видимо после отладки осталось.
23 m-serg74
 
19.10.12
13:01
ПроданныеТовары.Ссылка.Статус а вот это после чего осталось?
24 rmrush
 
19.10.12
13:02
Так "ПроданныеТовары" - это таблица документа, вот и получает ссылку, ибо реквизита "Статус" в этой таблице скорее всего нет
25 y22-k
 
19.10.12
13:03
(0) Забыли убрать наверное просто, Роботы сломались наняли временно людей типовые писать
26 m-serg74
 
19.10.12
13:03
так а что не взять только те таблицы документов которые нужны?
27 GLazNik
 
19.10.12
13:04
(20) но работает же... :)
(23) и чего тебя смущает? Ну добавить соединение... хотя я не уверен что будет быстрее
28 Zapal
 
19.10.12
13:04
теоретически может дельше идти код изменения текста запроса
что-то в стиле

если ляля
тогда СтрЗаменить(, "ПроданныеТовары.Ссылка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.Пробит)", Ложь)
иначе СтрЗаменить(, "ПроданныеТовары.Ссылка.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыКассовойСмены.ЗакрытаЧекиЗаархивированы)", Ложь)
конецесли

я иногда использую похожее
29 rmrush
 
19.10.12
13:04
по запросу выбираются какие то данные из таблицы "Товары" документа "ЧекККМ". "Статус" - реквизит документа. В чем тогда вопрос?
30 m-serg74
 
19.10.12
13:05
(28) только теоретически практически ничего этого нет
31 Reset
 
19.10.12
13:05
(26) Нука нука подробнее :)
32 Ахиллес
 
19.10.12
13:06
(29) В том, что такого реквизита нету в чеке на возврат.
33 Ахиллес
 
19.10.12
13:06
Йа угадал?
34 m-serg74
 
19.10.12
13:06
(33) нет
35 Reset
 
19.10.12
13:07
ТС всех заинтриговал
36 Ткачев
 
19.10.12
13:07
Не понятно зачем 2 запроса объединять, можно ведь наверно так было сделать:
   |    ПроданныеТовары.Количество     КАК Количество,
   |    ПроданныеТовары.Сумма
   |    * ЕСТЬNULL(КурсыВалютПредоставления.Курс, 1) * ЕСТЬNULL(КурсыВалютДокумента.Кратность, 1)
   |     / (ЕСТЬNULL(КурсыВалютДокумента.Курс, 1) * ЕСТЬNULL(КурсыВалютПредоставления.Кратность, 1)) КАК Сумма,
   |    -ПроданныеТовары.Количество     КАК КоличествоМинус,
   |    -ПроданныеТовары.Сумма
   |    * ЕСТЬNULL(КурсыВалютПредоставления.Курс, 1) * ЕСТЬNULL(КурсыВалютДокумента.Кратность, 1)
   |     / (ЕСТЬNULL(КурсыВалютДокумента.Курс, 1) * ЕСТЬNULL(КурсыВалютПредоставления.Кратность, 1)) КАК СуммаМинус
37 Ахиллес
 
19.10.12
13:08
(34) В моей УТшке нету, но у меня старьё какое то.
38 Reset
 
19.10.12
13:10
(36) Там две части из РАЗНЫХ документов
39 Ткачев
 
19.10.12
13:10
(33)"Йа" это по новорусскому "Я" ?
40 Zapal
 
19.10.12
13:10
юмор в том что нет смысла писать тексты типа "Статус = .. И Статус <> .."
41 GLazNik
 
19.10.12
13:10
(36) ну там какбэ две разных таблицы...
42 Reset
 
19.10.12
13:10
(40) Почему?
43 Ткачев
 
19.10.12
13:11
(41)Я уже увидел.
44 Reset
 
19.10.12
13:11
(40) (42) Ахах понял, тчоно
45 GLazNik
 
19.10.12
13:12
(40 смысла то нет... но причин для этого могло быть несколько... и собственно что от этого особо меняется?
46 Ткачев
 
19.10.12
13:13
(44)Фигня это все, при отладки комментировали строки, что бы не писать по 10 раз одно и тоже, или как в (28)
47 Zapal
 
19.10.12
13:13
а вот "Партнер = &Партнер И Партнер <> ЗНАЧЕНИЕ(.." смысл вполне себе есть
48 m-serg74
 
19.10.12
13:14
(47) да это все фигня статусы, партнеры, могли бы хотя б так сделать?

ВЫБРАТЬ
   ПроданныеТовары.Номенклатура КАК Номенклатура,
   ПроданныеТовары.Характеристика КАК Характеристика,
   ПроданныеТовары.Количество КАК Количество,
   ПроданныеТовары.Сумма * ЕСТЬNULL(КурсыВалютПредоставления.Курс, 1) * ЕСТЬNULL(КурсыВалютДокумента.Кратность, 1) / (ЕСТЬNULL(КурсыВалютДокумента.Курс, 1) * ЕСТЬNULL(КурсыВалютПредоставления.Кратность, 1)) КАК Сумма
ИЗ
   Документ.ЧекККМ.Товары КАК ПроданныеТовары
       ЛЕВОЕ СОЕДИНЕНИЕ КурсыВалют КАК КурсыВалютПредоставления
       ПО (КурсыВалютПредоставления.Валюта = ПроданныеТовары.Ссылка.Валюта)
       ЛЕВОЕ СОЕДИНЕНИЕ КурсыВалют КАК КурсыВалютДокумента
       ПО (КурсыВалютДокумента.Валюта = &ВалютаДокумента)
ГДЕ
   ПроданныеТовары.Ссылка В
           (ВЫБРАТЬ
               ПроданныеТовары.Ссылка
           ИЗ
               Документ.ЧекККМ КАК ПроданныеТовары
           ГДЕ
               ПроданныеТовары.Дата МЕЖДУ &ДатаНачалаЧекККМ И &ДатаОкончанияЧекККМ
               И ПроданныеТовары.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.Пробит)
               И ПроданныеТовары.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыКассовойСмены.ЗакрытаЧекиЗаархивированы)
               И ПроданныеТовары.Партнер = &Партнер
               И ПроданныеТовары.Партнер <> ЗНАЧЕНИЕ(Справочник.Партнеры.РозничныйПокупатель))
49 Reset
 
19.10.12
13:14
Так а тема то о чем?
ну выполняется лишняя ненужная проверка "Статус <> "
Об этом?
50 m-serg74
 
19.10.12
13:15
(49) - (48) об этом
51 Ахиллес
 
19.10.12
13:15
Походу топикстартер укушался мухоморов и его плющит.
52 m-serg74
 
19.10.12
13:15
ага
53 Gantosha
 
19.10.12
13:17
так читать проще и править потом..
54 m-serg74
 
19.10.12
13:18
(53) а работать ему не надо? их пишут чтобы просто читать и править?
55 Ахиллес
 
19.10.12
13:19
(54) Чувак, в запросе (0) ошибка есть? Нету. Чего ты тогда до него докопался, как пьяный до телеграфного столба?
56 rs_trade
 
19.10.12
13:19
(52) ну так в чем интрига то? в том что явно не отобрал по шапке и к ней табличную часть не заджойнил?
57 Gantosha
 
19.10.12
13:20
(54) ну докопипастились ..но кстати если он ничего не возращает то он при тестировании не мешает ..а по
58 Gantosha
 
19.10.12
13:21
И ПроданныеТовары.Ссылка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.Пробит)
И ПроданныеТовары.Ссылка.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыКассовойСмены.ЗакрытаЧекиЗаархивированы) возвращает пустоту .но это не ошибка ..
59 m-serg74
 
19.10.12
13:21
(55) ошибки нет, просто три дня за год все строки чеков проверяет, а результат может как ни странно быть нулевым это нормально?
60 Gantosha
 
19.10.12
13:22
ну нашел ошибку, исправь .. типа все равно она не последняя.
61 GLazNik
 
19.10.12
13:23
(56) ТС похвастаться хотел, что можно быстрее, сильнее, выше...
(59) а твой запрос сколько работает?
62 Ахиллес
 
19.10.12
13:24
(59) Я х.з. для чего этот запрос. По смыслу, там за 1 день а не за год должно проверяться. Так, что разницы не будет.
63 m-serg74
 
19.10.12
13:24
(60) ну может кому поможет избежать висяков(((
64 kortun
 
19.10.12
13:25
(63) каких висяков то? сплошь и рядом такие запросы и работаю на больших объемах. бросай мухоморы
65 m-serg74
 
19.10.12
13:26
(62) выбираются по чекам суммы на которые покупатель купил чего, и в зависимости от суммы определяется скидка, так что не 1 день периодичность точно
66 Ахиллес
 
19.10.12
13:28
Нахрен номенклатура для расчета скидки по суммам?
67 Ахиллес
 
19.10.12
13:29
+66 И вообще какой1 дибил делает такие отчеты по документам вместо регистров, если период не текущий день?
68 GLazNik
 
19.10.12
13:30
(63) от висяков избавляются формированием запросов по регистрам, а не по табличным частям документов. Т.о. что (0) что (48) все в топку.
69 m-serg74
 
19.10.12
13:31
УТ11 - общий модуль "СкидкиНаценкиСервер"
Функция ТекстЗапросаСкидкаЗаНакопленныйОбъемПродажПоПартнеруЗаПериод(ПакетЗапросов, СсылкаНаУсловиеПредоставления, ДатаНачала, ДатаОкончания)

все вопросы туда
70 GLazNik
 
19.10.12
13:33
(69) у нас с вами разные УТ11. У меня все в этой функции на регистрах.
71 m-serg74
 
19.10.12
13:33
такая функция есть?
72 m-serg74
 
19.10.12
13:34
Управление торговлей, редакция 11.0 (11.0.8.11)
73 GLazNik
 
19.10.12
13:36
(71) функция такая есть, но текст запроса совсем другой. 11.0.7.13
74 Reset
 
19.10.12
13:37
(69)


// Функция формирует текст запроса для таблицы рассчитанных скидок за накопленный объем продаж по партнеру.
//
// Возвращаемое значение:
//    Строка - Текст запроса
//
Функция ТекстЗапросаСкидкаЗаНакопленныйОбъемПродажПоПартнеруЗаПериод(ПакетЗапросов, СсылкаНаУсловиеПредоставления, ДатаНачала, ДатаОкончания)
   
   ТекстЗапроса =
   "ВЫБРАТЬ
   |    РегистрСведенийАналитикаУчетаНоменклатуры.Номенклатура             КАК Номенклатура,
   |    РегистрСведенийАналитикаУчетаНоменклатуры.Характеристика           КАК Характеристика,
   |    ВыручкаИСебестоимостьПродажОбороты.КоличествоОборот   КАК Количество,
   |    ВыручкаИСебестоимостьПродажОбороты.СуммаВыручкиОборот
   |    * ЕСТЬNULL(КурсыВалютПредоставления.Курс, 1) * ЕСТЬNULL(КурсыВалютДокумента.Кратность, 1)
   |     / (ЕСТЬNULL(КурсыВалютДокумента.Курс, 1) * ЕСТЬNULL(КурсыВалютПредоставления.Кратность, 1)) КАК Сумма
   |    
   |ПОМЕСТИТЬ ВремТаблица
   |    
   |ИЗ
   |    РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(
   |            &ДатаНачала,
   |            &ДатаОкончания,
   |            Авто,
   |            АналитикаУчетаПоПартнерам В
   |                (ВЫБРАТЬ
   |                    АналитикаУчетаПоПартнерам.КлючАналитики
   |                ИЗ
   |                    РегистрСведений.АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам
   |                ГДЕ
   |                    АналитикаУчетаПоПартнерам.Партнер = &Партнер И АналитикаУчетаПоПартнерам.Партнер <> ЗНАЧЕНИЕ(Справочник.Партнеры.РозничныйПокупатель))) КАК ВыручкаИСебестоимостьПродажОбороты
   |    
   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК РегистрСведенийАналитикаУчетаНоменклатуры
   |        ПО ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры = РегистрСведенийАналитикаУчетаНоменклатуры.КлючАналитики
   |    
   |        ЛЕВОЕ СОЕДИНЕНИЕ КурсыВалют КАК КурсыВалютПредоставления
   |        ПО (КурсыВалютПредоставления.Валюта = &ВалютаУправленческогоУчета)
   |    
   |        ЛЕВОЕ СОЕДИНЕНИЕ КурсыВалют КАК КурсыВалютДокумента
   |        ПО (КурсыВалютДокумента.Валюта = &ВалютаДокумента)
   |    
   |ОБЪЕДИНИТЬ ВСЕ
   |    
   |ВЫБРАТЬ
   |    РегистрСведенийАналитикаУчетаНоменклатуры.Номенклатура   КАК Номенклатура,
   |    РегистрСведенийАналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,
   |    -ВыручкаИСебестоимостьПродаж.Количество     КАК Количество,
   |    -ВыручкаИСебестоимостьПродаж.СуммаВыручки
   |    * ЕСТЬNULL(КурсыВалютПредоставления.Курс, 1) * ЕСТЬNULL(КурсыВалютДокумента.Кратность, 1)
   |     / (ЕСТЬNULL(КурсыВалютДокумента.Курс, 1) * ЕСТЬNULL(КурсыВалютПредоставления.Кратность, 1)) КАК Сумма
   |ИЗ
   |    РегистрНакопления.ВыручкаИСебестоимостьПродаж КАК ВыручкаИСебестоимостьПродаж
   |    
   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК РегистрСведенийАналитикаУчетаНоменклатуры
   |        ПО ВыручкаИСебестоимостьПродаж.АналитикаУчетаНоменклатуры = РегистрСведенийАналитикаУчетаНоменклатуры.КлючАналитики
   |    
   |        ЛЕВОЕ СОЕДИНЕНИЕ КурсыВалют КАК КурсыВалютПредоставления
   |        ПО (КурсыВалютПредоставления.Валюта = &ВалютаУправленческогоУчета)
   |    
   |        ЛЕВОЕ СОЕДИНЕНИЕ КурсыВалют КАК КурсыВалютДокумента
   |        ПО (КурсыВалютДокумента.Валюта = &ВалютаДокумента)
   |    
   |ГДЕ
   |    ВыручкаИСебестоимостьПродаж.Регистратор = &Регистратор
   |    
   |ОБЪЕДИНИТЬ ВСЕ
   |    
   |ВЫБРАТЬ
   |    ПроданныеТовары.Номенклатура   КАК Номенклатура,
   |    ПроданныеТовары.Характеристика КАК Характеристика,
   |    ПроданныеТовары.Количество     КАК Количество,
   |    ПроданныеТовары.Сумма
   |    * ЕСТЬNULL(КурсыВалютПредоставления.Курс, 1) * ЕСТЬNULL(КурсыВалютДокумента.Кратность, 1)
   |     / (ЕСТЬNULL(КурсыВалютДокумента.Курс, 1) * ЕСТЬNULL(КурсыВалютПредоставления.Кратность, 1)) КАК Сумма
   |ИЗ
   |    Документ.ЧекККМ.Товары КАК ПроданныеТовары
   |    
   |        ЛЕВОЕ СОЕДИНЕНИЕ КурсыВалют КАК КурсыВалютПредоставления
   |        ПО (КурсыВалютПредоставления.Валюта = ПроданныеТовары.Ссылка.Валюта)
   |    
   |        ЛЕВОЕ СОЕДИНЕНИЕ КурсыВалют КАК КурсыВалютДокумента
   |        ПО (КурсыВалютДокумента.Валюта = &ВалютаДокумента)
   |    
   |ГДЕ
   |    ПроданныеТовары.Ссылка.Дата МЕЖДУ &ДатаНачалаЧекККМ И &ДатаОкончанияЧекККМ
   |    И ПроданныеТовары.Ссылка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.Пробит)
   |    И ПроданныеТовары.Ссылка.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыКассовойСмены.ЗакрытаЧекиЗаархивированы)
   |    И ПроданныеТовары.Ссылка.Партнер = &Партнер
   |    И ПроданныеТовары.Ссылка.Партнер <> ЗНАЧЕНИЕ(Справочник.Партнеры.РозничныйПокупатель)
   |    
   |ОБЪЕДИНИТЬ ВСЕ
   |    
   |ВЫБРАТЬ
   |    ПроданныеТовары.Номенклатура   КАК Номенклатура,
   |    ПроданныеТовары.Характеристика КАК Характеристика,
   |    -ПроданныеТовары.Количество     КАК Количество,
   |    -ПроданныеТовары.Сумма
   |    * ЕСТЬNULL(КурсыВалютПредоставления.Курс, 1) * ЕСТЬNULL(КурсыВалютДокумента.Кратность, 1)
   |     / (ЕСТЬNULL(КурсыВалютДокумента.Курс, 1) * ЕСТЬNULL(КурсыВалютПредоставления.Кратность, 1)) КАК Сумма
   |ИЗ
   |    Документ.ЧекККМВозврат.Товары КАК ПроданныеТовары
   |    
   |        ЛЕВОЕ СОЕДИНЕНИЕ КурсыВалют КАК КурсыВалютПредоставления
   |        ПО (КурсыВалютПредоставления.Валюта = ПроданныеТовары.Ссылка.Валюта)
   |    
   |        ЛЕВОЕ СОЕДИНЕНИЕ КурсыВалют КАК КурсыВалютДокумента
   |        ПО (КурсыВалютДокумента.Валюта = &ВалютаДокумента)
   |    
   |ГДЕ
   |    ПроданныеТовары.Ссылка.Дата МЕЖДУ &ДатаНачалаЧекККМ И &ДатаОкончанияЧекККМ
   |    И ПроданныеТовары.Ссылка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.Пробит)
   |    И ПроданныеТовары.Ссылка.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыКассовойСмены.ЗакрытаЧекиЗаархивированы)
   |    И ПроданныеТовары.Ссылка.Партнер = &Партнер
   |    И ПроданныеТовары.Ссылка.Партнер <> ЗНАЧЕНИЕ(Справочник.Партнеры.РозничныйПокупатель)
   |;
   |
   |////////////////////////////////////////////////////////////////////////////////
   |ВЫБРАТЬ
   |    НоменклатураСегмента.Сегмент КАК СегментНоменклатуры,
   |    СУММА(Таблица.Количество)    КАК Количество,
   |    СУММА(Таблица.Сумма)         КАК Сумма
   |    
   |ПОМЕСТИТЬ НакопленныйОбъемПродажПоПартнеруЗаПериодПоСегментам
   |
   |ИЗ
   |    ВремТаблица КАК Таблица
   |
   |    ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураСегмента КАК НоменклатураСегмента
   |        ПО Таблица.Номенклатура  = НоменклатураСегмента.Номенклатура
   |        И Таблица.Характеристика = НоменклатураСегмента.Характеристика
   |    
   |СГРУППИРОВАТЬ ПО
   |    НоменклатураСегмента.Сегмент
   |    
   |ОБЪЕДИНИТЬ ВСЕ
   |    
   |ВЫБРАТЬ
   |    ЗНАЧЕНИЕ(Справочник.СегментыНоменклатуры.ПустаяСсылка) КАК СегментНоменклатуры,
   |    СУММА(Таблица.Количество)    КАК Количество,
   |    СУММА(Таблица.Сумма)         КАК Сумма
   |    
   |ИЗ
   |    ВремТаблица КАК Таблица
   |
   |СГРУППИРОВАТЬ ПО
   |    ЗНАЧЕНИЕ(Справочник.СегментыНоменклатуры.ПустаяСсылка)
   |;
   |
   |////////////////////////////////////////////////////////////////////////////////
   |УНИЧТОЖИТЬ ВремТаблица
   |;
   |
   |////////////////////////////////////////////////////////////////////////////////
   |ВЫБРАТЬ РАЗЛИЧНЫЕ
   |    УсловияПредоставления.Ссылка         КАК Ссылка,
   |    ТоварыПоСегментамДокумента.КлючСвязи КАК КлючСвязи,
   
   |    ВЫБОР
   |        КОГДА УсловияПредоставления.ТипСравнения = ЗНАЧЕНИЕ(Перечисление.ТипыСравненияЗначенийСкидокНаценок.НеМенее) ТОГДА ВЫРАЗИТЬ((ЕСТЬNULL(Товары.Количество, 0)/УсловияПредоставления.ЗначениеУсловияОграничения - 0.5) КАК Число(10,0))
   |        ИНАЧЕ ВЫБОР КОГДА ЕСТЬNULL(Товары.Количество, 0) <= УсловияПредоставления.ЗначениеУсловияОграничения ТОГДА 1 ИНАЧЕ 0 КОНЕЦ
   |    КОНЕЦ КАК КратностьВыполнения
   
   |ИЗ
   |    УсловияПредоставления КАК УсловияПредоставления
   |    
   |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВременнаяТаблицаТоварыПоСегментам КАК ТоварыПоСегментамДокумента
   |        ПО УсловияПредоставления.Ссылка = &ИмяПараметра
   |        
   |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ НакопленныйОбъемПродажПоПартнеруЗаПериодПоСегментам КАК Товары
   |        ПО УсловияПредоставления.Ссылка = &ИмяПараметра
   |    
   |ГДЕ
   |    ВЫБОР
   |        КОГДА УсловияПредоставления.КритерийОграниченияПримененияЗаОбъемПродаж = ЗНАЧЕНИЕ(Перечисление.КритерииОграниченияПримененияСкидкиНаценкиЗаОбъемПродаж.Сумма)
   |            ТОГДА ВЫБОР
   |                    КОГДА УсловияПредоставления.ТипСравнения = ЗНАЧЕНИЕ(Перечисление.ТипыСравненияЗначенийСкидокНаценок.НеМенее)
   |                        ТОГДА ЕСТЬNULL(Товары.Сумма, 0) >= УсловияПредоставления.ЗначениеУсловияОграничения
   |                    ИНАЧЕ ЕСТЬNULL(Товары.Сумма, 0) <= УсловияПредоставления.ЗначениеУсловияОграничения
   |                КОНЕЦ
   |        КОГДА УсловияПредоставления.КритерийОграниченияПримененияЗаОбъемПродаж = ЗНАЧЕНИЕ(Перечисление.КритерииОграниченияПримененияСкидкиНаценкиЗаОбъемПродаж.Количество)
   |            ТОГДА ВЫБОР
   |                    КОГДА УсловияПредоставления.ТипСравнения = ЗНАЧЕНИЕ(Перечисление.ТипыСравненияЗначенийСкидокНаценок.НеМенее)
   |                        ТОГДА ЕСТЬNULL(Товары.Количество, 0) >= УсловияПредоставления.ЗначениеУсловияОграничения
   |                    ИНАЧЕ ЕСТЬNULL(Товары.Количество, 0) <= УсловияПредоставления.ЗначениеУсловияОграничения
   |                КОНЕЦ
   |        ИНАЧЕ ЛОЖЬ
   |    КОНЕЦ
   |    И Товары.СегментНоменклатуры = УсловияПредоставления.СегментНоменклатурыОграничения
   |
   |УПОРЯДОЧИТЬ ПО
   |    Ссылка,
   |    КлючСвязи
   |;
   |
   |////////////////////////////////////////////////////////////////////////////////
   |УНИЧТОЖИТЬ НакопленныйОбъемПродажПоПартнеруЗаПериодПоСегментам
   |";
   
   ИмяПараметра = ПолучитьПараметрЗапросаИзСсылки(СсылкаНаУсловиеПредоставления);
   ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ИмяПараметра", ИмяПараметра);
   ПакетЗапросов.Запрос.УстановитьПараметр(ИмяПараметра, СсылкаНаУсловиеПредоставления);
   
   ТекстЗапроса = ТекстЗапроса + "
   |;
   |
   |////////////////////////////////////////////////////////////////////////////////
   |";
   
   Если ДатаНачала <> Неопределено Тогда
       ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ДатаНачалаЧекККМ", "ДатаВремя("+Формат(Год(ДатаНачала   ),"ЧН=0; ЧГ=0")+","+Месяц(ДатаНачала   )+","+День(ДатаНачала   )+","+Час(ДатаНачала)+","+Минута(ДатаНачала)+","+Секунда(ДатаНачала)+")");
       ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ДатаНачала",       "ДатаВремя("+Формат(Год(ДатаНачала   ),"ЧН=0; ЧГ=0")+","+Месяц(ДатаНачала   )+","+День(ДатаНачала   )+","+Час(ДатаНачала)+","+Минута(ДатаНачала)+","+Секунда(ДатаНачала)+")");
   Иначе
       ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ДатаНачалаЧекККМ", "ДатаВремя(1,1,1)");
       ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ДатаНачала", "");
   КонецЕсли;
   
   Если ДатаОкончания <> Неопределено Тогда
       ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ДатаОкончанияЧекККМ", "ДатаВремя("+Формат(Год(ДатаОкончания),"ЧН=0; ЧГ=0")+","+Месяц(ДатаОкончания)+","+День(ДатаОкончания)+","+Час(ДатаОкончания)+","+Минута(ДатаОкончания)+","+Секунда(ДатаОкончания)+")");
       ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ДатаОкончания",       "ДатаВремя("+Формат(Год(ДатаОкончания),"ЧН=0; ЧГ=0")+","+Месяц(ДатаОкончания)+","+День(ДатаОкончания)+","+Час(ДатаОкончания)+","+Минута(ДатаОкончания)+","+Секунда(ДатаОкончания)+")");
   Иначе
       ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ДатаОкончанияЧекККМ", "ДатаВремя("+Формат(Год(ТекущаяДатаСеанса()),"ЧН=0; ЧГ=0")+","+Месяц(ТекущаяДатаСеанса())+","+День(ТекущаяДатаСеанса())+","+23+","+59+","+59+")");
       ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ДатаОкончания",       "");
   КонецЕсли;
   
   Возврат Новый Структура(
       "ТекстЗапроса,
       |КоличествоТаблиц,
       |НомерТаблицыРезультата,
       |ИмяТаблицы",
       ТекстЗапроса,
       5,
       4,
       "СкидкаЗаНакопленныйОбъемПродажПоПартнеруЗаПериодСУсловиемПоСтрокеЗа_"+Формат(ДатаНачала,"ДФ=ddMMyyyy")+"_"+Формат(ДатаОкончания,"ДФ=ddMMyyyy") + ИмяПараметра
   );
   
КонецФункции // ТекстЗапросаСкидкаЗаНакопленныйОбъемПродажПоПартнеруЗаПериод

75 m-serg74
 
19.10.12
13:37
а вот в новых по докам слепили еще и абы как
76 GLazNik
 
19.10.12
13:37
+(73) в (11.0.8.11) все так же на регистрах
Сравните свою конфигурацию с конфигурацией поставщика.
77 Reset
 
19.10.12
13:37
(74) <- из 11.0.8.11

Тема все интереснее и интереснее
78 m-serg74
 
19.10.12
13:38
ИЗ
   |    Документ.ЧекККМВозврат.Товары

что не так то в сравнении с моим(0)?
79 GLazNik
 
19.10.12
13:39
+(76) хотя вру... есть там такой код... правда не в начале
80 Reset
 
19.10.12
13:39
ага ТС кусок привел из середины
81 m-serg74
 
19.10.12
13:39
конечно
82 GLazNik
 
19.10.12
13:41
(81) ну вот что не начать с главного то? а то блин флуда левого на 80 постов
83 m-serg74
 
19.10.12
13:42
в чем мой флуд показал то что считаю важным
84 GLazNik
 
19.10.12
13:44
+(82) а вообще функция очень то интересная...
А если еще и далее посмотреть...

Вот нафига это:

   Если ДатаНачала <> Неопределено Тогда
       ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ДатаНачалаЧекККМ", "ДатаВремя("+Формат(Год(ДатаНачала   ),"ЧН=0; ЧГ=0")+","+Месяц(ДатаНачала   )+","+День(ДатаНачала   )+","+Час(ДатаНачала)+","+Минута(ДатаНачала)+","+Секунда(ДатаНачала)+")");
       ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ДатаНачала",       "ДатаВремя("+Формат(Год(ДатаНачала   ),"ЧН=0; ЧГ=0")+","+Месяц(ДатаНачала   )+","+День(ДатаНачала   )+","+Час(ДатаНачала)+","+Минута(ДатаНачала)+","+Секунда(ДатаНачала)+")");
   Иначе
       ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ДатаНачалаЧекККМ", "ДатаВремя(1,1,1)");
       ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ДатаНачала", "");
   КонецЕсли;
85 Reset
 
19.10.12
13:45
(84) Мне тоже показалось любопытным, вместо параметров значения прямо в текст. Это новый тренд? :)
86 m-serg74
 
19.10.12
13:46
да это как раз таки на скорость и мало (вообще не) влияет
87 Reset
 
19.10.12
13:46
Ну хотя функция-то призвана возвращать текст запроса, что-то где то выигрывают мб
88 GLazNik
 
19.10.12
13:47
(85) тем более учесть, что значение то получается одно и то же (за исключением если ДатаНачала = Неопределено)
89 kortun
 
19.10.12
13:48
(86) ну почему же :) если база за несколько лет, то как раз влияет

ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ДатаНачалаЧекККМ", "ДатаВремя(1,1,1)");
90 GLazNik
 
19.10.12
13:49
(87) Тогда как объяснить этот код:
   ИмяПараметра = ПолучитьПараметрЗапросаИзСсылки(СсылкаНаУсловиеПредоставления);
   ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ИмяПараметра", ИмяПараметра);
   ПакетЗапросов.Запрос.УстановитьПараметр(ИмяПараметра, СсылкаНаУсловиеПредоставления);
91 m-serg74
 
19.10.12
13:49
(89) хоть текстом вставь хоть параметром передай что поменяется
92 КуплюКровать
 
19.10.12
13:50
ТС очередной "настоящий программист"? в каком посте объясняется в чем косяк?
93 m-serg74
 
19.10.12
13:50
в первом
94 GLazNik
 
19.10.12
13:50
+(90) я к тому, что не наблюдается последовательности... либо уж устанавливаем параметры, либо текст возвращаем
95 1C-band
 
19.10.12
13:51
(0) Кури инструкцию:

ВЫБОР
   КОГДА
       ТОГДА
   ИНАЧЕ
КОНЕЦ
96 Reset
 
19.10.12
13:51
(94) Это да, нелогично
97 m-serg74
 
19.10.12
13:52
(95) ты о чем?
98 GLazNik
 
19.10.12
13:58
Но таки есть различие в быстродействие (48) с (0)?

В моем понимании
Запрос из (0) преобразуется в  запрос
ВЫБРАТь
...
ИЗ Документ.ЧекККМ.Товары КАК ПроданныеТовары
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЧекККМ

Что в свою очередь по быстродействию должно быть на уровне запроса (48)
99 m-serg74
 
19.10.12
14:02
таки есть
100 Ахиллес
 
19.10.12
14:04
В 11.0.4.5 в этой функции только запрос к регистрам, никаких табличных частей документов. В одинэс взяли на работу говнаря, который решил блеснуть своим гамнокодом?
101 m-serg74
 
19.10.12
14:06
(100) не знаю