Имя: Пароль:
1C
1С v8
Помогите с запросом - внутреннее соединение
0 lll52
 
14.11.11
12:34
Вопрос наверное простой, но запросы даются мне очень сложно как-то ((((
Задача такая: Есть примерно такая таблица ФИО -- Кол-во продаж ---- сумма продаж. Такая строчка в регистр попадает после каждого чека.
Я бы хотела запросом получить данные о количестве этих записей -- это для меня будет показатель "количество чеков".
Но т.к. я группирую запрос, то количество(КТУпродавцыОбороты.ФИО)  прямо в ВЫБРАТЬ записать не могу (как я понимаю.....). Т.е. эти фамилии нужно выбирать из запроса, который еще не был  сгруппирован. Помогите плиз.

Вот мой вариант - так не работает...
ВЫБРАТЬ
   КТУпродавцыОбороты.ФИО КАК ФИО,
   СУММА(КТУпродавцыОбороты.СуммаЧекаОборот) КАК СуммаЧекаОборот,    СУММА(КТУпродавцыОбороты.КоличествоПозицийвЧекеОборот) КАК КоличествоПозицийвЧекеОборот,
   КОЛИЧЕСТВО(КТУпродавцыОбороты1.ФИО) КАК КолвоЧеков
ИЗ
   РегистрНакопления.КТУпродавцы.Обороты КАК КТУпродавцыОбороты
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.КТУпродавцы.Обороты КАК КТУпродавцыОбороты1
       ПО (КТУпродавцыОбороты1.ФИО = КТУпродавцыОбороты.ФИО)

СГРУППИРОВАТЬ ПО
   КТУпродавцыОбороты.ФИО
1 Jstunner
 
14.11.11
12:36
а нафига соединение?
2 Ненавижу 1С
 
гуру
14.11.11
12:37
ВЫБРАТЬ
   КТУпродавцыОбороты.ФИО КАК ФИО,
   СУММА(КТУпродавцыОбороты.СуммаЧекаОборот) КАК СуммаЧекаОборот,
   СУММА(КТУпродавцыОбороты.КоличествоПозицийвЧекеОборот) КАК КоличествоПозицийвЧекеОборот,
   СУММА(1) КАК КолвоЧеков
ИЗ
   РегистрНакопления.КТУпродавцы.Обороты КАК КТУпродавцыОбороты
СГРУППИРОВАТЬ ПО
   КТУпродавцыОбороты.ФИО
3 izekia
 
14.11.11
12:37
количество чеков нужно по продавцу?
(1) + соединение не нужно)
4 lll52
 
14.11.11
12:46
Спасибо за ответы.
(2) Когда я так пишу, то в колонке Количество Чеков -- у меня везде единицы.
5 Ненавижу 1С
 
гуру
14.11.11
12:47
(4) значит все КТУпродавцыОбороты.ФИО уникальны
6 lll52
 
14.11.11
12:51
(5) но группировку запрос делает, значит нормальные ФИО
7 catena
 
14.11.11
12:54
(6)Нормальные не могут быть уникальными?
8 Ненавижу 1С
 
гуру
14.11.11
12:57
(6) я говорил, что они "ненормальны"?
9 ArtKzn
 
14.11.11
13:05
ВЫБРАТЬ
   КТУпродавцыОбороты.ФИО КАК ФИО,
   СУММА(КТУпродавцыОбороты.СуммаЧекаОборот) КАК СуммаЧекаОборот,
   СУММА(КТУпродавцыОбороты.КоличествоПозицийвЧекеОборот) КАК КоличествоПозицийвЧекеОборот,
   КОЛИЧЕСТВО(Различные КТУпродавцыОбороты.Регистратор) КАК КолвоЧеков
ИЗ
   РегистрНакопления.КТУпродавцы.Обороты(,,Регистратор,) КАК КТУпродавцыОбороты
СГРУППИРОВАТЬ ПО
   КТУпродавцыОбороты.ФИО
10 Starhan
 
14.11.11
13:05
(7) Естественно нормальные фамилии немогут быть уникальными.
Вот напрмер Иванов. Да их же тысячи в России! А если какой нибудь уникальный Пупковец-Барбадуненко. Да у нго не жены ни детей и мать с отцом от него отказались!.
11 izekia
 
14.11.11
13:08
мб фио это ссылка
12 Starhan
 
14.11.11
13:11
(11) ссылка еще лучше чем строка )) нет неоднозначности
13 izekia
 
14.11.11
13:14
я про то же)
14 Starhan
 
14.11.11
13:16
надо знать струткуру регистра, потмоучто если чек есть в измерениях
то запрос (2) будет возвращать общую сумму чеков и позиций и 1 как колво чеков
15 Starhan
 
14.11.11
13:18
в (9) лучше использовать КОЛИЧЕСТВО РАЗЛИЧНЫХ :)
16 ArtKzn
 
14.11.11
13:19
(15) а там что?
17 lll52
 
14.11.11
13:21
(9) Вот это сработало! Спасибо!

Но почему это сработало, а вариант   Ненавижу 1С  нет, не понимаю.
Если для кого-то это очевидно, объясните плиз.

Что значит уникальность, про которую тут писали?
Выбираю из регистра, где  ФИО - СправочникСсылка.ФизическиеЛица.
Я ведь записываю в регистр одного и того же человека, а запись ФИО получается уникальной? как так?
18 Starhan
 
14.11.11
13:21
(16) а там просто количество
19 lll52
 
14.11.11
13:22
Про регистр:
Измерения -- ФИО --- СправочникСсылка.ФизическиеЛица.
Ресурсы -- СуммаЧека, КолвоПозицийВчеке
20 Starhan
 
14.11.11
13:24
(17 )Потомучто вирт. таблица обороты по одному измерению сразу свернет табе все рессурсы в 1ну строку, а дальше к ней ты выбираешь 1. Сответственно группировки и суммы там воробще лишние.
(19) у тея еще измерение регистратор
и в (9) идет условие переиодичности - Регистратор
21 Starhan
 
14.11.11
13:24
а в (2) нет
22 Starhan
 
14.11.11
13:25
вот если в (2) добавить регистратор то заработает :)
23 ArtKzn
 
14.11.11
13:25
(18) Да? А после слова "количество" и скобочки что? :-)
24 Starhan
 
14.11.11
13:27
(23) а сорри ) я вообще всегда конструткором тыкаю )
25 Ненавижу 1С
 
гуру
14.11.11
13:27
ВЫБРАТЬ
   КТУпродавцыОбороты.ФИО КАК ФИО,
   СУММА(КТУпродавцыОбороты.СуммаЧекаОборот) КАК СуммаЧекаОборот,
   СУММА(КТУпродавцыОбороты.КоличествоПозицийвЧекеОборот) КАК КоличествоПозицийвЧекеОборот,
   КОЛИЧЕСТВО(РАЗЛИЧНЫЕ КТУпродавцыОбороты.Регистратор) КАК КолвоЧеков
ИЗ
   РегистрНакопления.КТУпродавцы.Обороты(,,Регистратор,) КАК КТУпродавцыОбороты
СГРУППИРОВАТЬ ПО
   КТУпродавцыОбороты.ФИО
26 Starhan
 
14.11.11
13:28
(25) - (9)
27 ArtKzn
 
14.11.11
13:29
(20) группировки там не лишние.
Они нужны для того, чтобы посчитать количество различных регистраторов.
Если убрать группировки, то в результате просто вывалятся все документы - регистраторы
28 Starhan
 
14.11.11
13:32
(27) без переодичности "регистратор" и какой либо другой, они бесполезны так как вирт таблица уже все сгрупировала.
29 Starhan
 
14.11.11
13:33
я писал про запрос в (2)
30 ArtKzn
 
14.11.11
13:36
(28)(29) ок ясно
31 lll52
 
14.11.11
13:43
Спасибо за ответы.
Блин как же все хитро.
Сейчас проверила еще на варианте, и мне такой запрос - использующий Регистратор для подсчета, не подходит. В моем случае может быть регистратор один, а записей несколько. (Я, когда происходит ЗакрытиеКассовойСмены - прописала, чтобы создавался док.КорректировкаЗаписейРегистровНакопления).
Т.е. наверное придется делать через объединение, но с таблицей не Обороты, а просто КТУпродавцы. да?
32 lll52
 
14.11.11
13:44
(31) т.е. док.КорректировкаЗаписейРегистровНакопления --- содержит записи по каждому чеку и переносит их соотв. разными записями в регистр.
33 Starhan
 
14.11.11
13:48
(31)(32) Должен подойти так как выбираются в подсчет количество идут только уникальные чеки без дублей. В запросе вот этот участок
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ КТУпродавцыОбороты.Регистратор) КАК КолвоЧеков

обрати внимание на слово различные
34 Starhan
 
14.11.11
13:50
(32) или один докумнт КорректировкаЗаписейРегистровНакопления содержит несколько чеков?
35 lll52
 
14.11.11
13:52
(34) Да, в документе чеки за весь день.
36 Starhan
 
14.11.11
13:54
Вепрно ли утверждение
1 запись (строка) - 1 чек
37 lll52
 
14.11.11
14:01
(36) Да. 1запись в регистре = 1 чек (и также 1запись в док.КорректировкаЗаписейРегистровНакопления  = 1чек)
Но в регистре одновременно могут находится записи - которые попали после проведения чека, и записи, которые попали из документа КорректировкаЗаписейРегистровНакопления
38 ArtKzn
 
14.11.11
14:08
(37) Я правильно понимаю, что по одному и тому же чеку в регистре может быть запись как документом Чек, так и документом "КорректировкаХХХ". То есть по одному и тому же чеку может быть две записи с одинаковыми ФИО и количеством-суммой?
39 lll52
 
14.11.11
14:37
(37) Одновременно они там не будут. Сначала там запись после проведения чека появляется, потом, когда через обработку ЗакрытиеКассовойСмены чеки удаляются (и данные из регистра соотв. тоже) -- чтобы эти данные не пропали - они в регистр переносятся через док.КорректировкаЗаписейРегистровНакопления
40 ArtKzn
 
14.11.11
14:41
(39) Один документ "Корректировка" является регистратором для нескольких записей?
41 lll52
 
14.11.11
14:45
(40) Да, через документ переносятся данные по всем чекам: 100 строчек в документе = 100 чеков = 100 записей в регистре.
42 ArtKzn
 
14.11.11
14:47
Попробуйте так:


ВЫБРАТЬ
   КТУпродавцы.ФИО,
   КОЛИЧЕСТВО(КТУпродавцы.ФИО) КАК КолвоПродаж
ПОМЕСТИТЬ ВТ_КоличествоПродаж
ИЗ
   РегистрНакопления.КТУпродавцы КАК КТУпродавцы
ГДЕ
   КТУпродавцы.Период МЕЖДУ &Дата1 И &Дата2

СГРУППИРОВАТЬ ПО
   КТУпродавцы.ФИО
;
// Этот запрос посчитал нам количество строк (записей) в реальной
// таблице КТУ продавцы и поместил во временную таблицу ВТ_КоличествоПродаж
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   КТУпродавцыОбороты.ФИО КАК ФИО,
   КТУпродавцыОбороты.КоличествоПозицийвЧекеОборот,
   КТУпродавцыОбороты.СуммаЧекаОборот,
   ВТ_КоличествоПродаж.КолвоПродаж
ИЗ
   РегистрНакопления.КТУпродавцы.Обороты(&Дата1, &Дата2, , ) КАК КТУпродавцыОбороты
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_КоличествоПродаж КАК ВТ_КоличествоПродаж
       ПО КТУпродавцыОбороты.ФИО = ВТ_КоличествоПродаж.ФИО
43 lll52
 
14.11.11
15:05
(42) То что нужно! Спасибо большущее за помощь!
Работает и считает, что нужно! Ура!