|   |   | 
| 
 | v7: SKU (количество номенклатурных позиций) | ☑ | ||
|---|---|---|---|---|
| 0
    
        Vitekkkk 16.10.13✎ 10:26 | 
        Всем привет!
 Помогите с такой задачей: Нужно сделать отчет по SKU (количество номенклатурных позиций) с настраиваемыми группировками: канал сбыта, менеджер, контрагент. Я так понял что из запроса тупо этого не получу. Но в ТЗ крутить тоже геморойно. может кто делал что то подобное и нашел оптимальное решение.(Время формирования, универсальность в настройке). | |||
| 1
    
        Aleksey 16.10.13✎ 10:27 | 
        почему запросом не получишь?
 В чем гемор ТЗ? | |||
| 2
    
        NikVars 16.10.13✎ 10:32 | 
        (0) Оптимальным решением для конфигурации Х1 размером Y1 на железе Y1 с учетом софта X2, при количестве пользователей Y2 при формировании отчета Z2 является система линейных уравнений с 6-ю неизвестными. Линейность взята в качестве тривиального случая.     | |||
| 3
    
        Vitekkkk 16.10.13✎ 10:35 | 
        (1) если ты правильно понял задачу, и все же полагаешь что можно через запрос дай пример плиз.
 (2)Кури | |||
| 4
    
        Aleksey 16.10.13✎ 10:37 | 
        (3) Пример чего? Сферического запроса  в вакууме?
 Ни конфигурация, ни что и где и как лежит | |||
| 5
    
        Aleksey 16.10.13✎ 10:38 | 
        Пример, ради бога
 Select Поля from Таблица Where Условия Пойдёт в качестве примера? | |||
| 6
    
        NikVars 16.10.13✎ 10:43 | 
        (3) Примеры запросов тебе всегда рад выдать Конструктор Запросов!
 Запускаешь конфигуратор, далее Файл - Новый - Внешний отчет. Открываешь модуль отчета. Далее Конструкторы - Запрос... Далее чего нажмешь - то и получишь. | |||
| 7
    
        viktor_vv 16.10.13✎ 11:00 | 
        (0) Просвети, каким образом с номенклатурой свзяаны
 канал сбыта, менеджер, контрагент. А то как-то не телепатируется. | |||
| 8
    
        ADirks 16.10.13✎ 11:06 | 
        (0) Крутить запрос, и крутить ТЗ - разница в общем то невелика. Вот тупо крутить, и с умом - тут разница может быть в порядки.
 (7) Номенклатура и Контрагенты - это такие штуки, с которыми всё что угодно связано :) | |||
| 9
    
        viktor_vv 16.10.13✎ 11:09 | 
        (8) Ну вот захотелось конкретики :), кого на чем крутить.
 А так-то если тупо из запроса, то понятно, что не получить :), если немного подумать, то все может быть. | |||
| 10
    
        Vitekkkk 16.10.13✎ 11:28 | 
        (4)(5)
 Вот к примеру буду делать так. Текст = "//{{ЗАПРОС(Сформировать) |Период с ДатаНач по ДатаКон; |Обрабатывать НеПомеченныеНаУдаление; |КаналСбыта = Регистр.Продажи.Контрагент.КаналСбыта; |Контрагент = Регистр.Продажи.Контрагент; |ТипХоз = Регистр.Продажи.ТипХозОперации; |Номенклатура = Регистр.Продажи.Номенклатура; |Количество = Регистр.Продажи.Количество; |Менеджер = Регистр.Продажи.Контрагент.Менеджер; |Функция Кол = Сумма(Количество); |"; //Здесь устанавливаются условия и группировки в зависимости от пользовательских настроек // Саму процедуру не пишу она на суть вопроса не влияет УстановитьУсловиеЗапроса(1, ФлажокУсловие1, МоноУсловие1, СписокУсловие1, "ТипХоз", Текст, Заголовок); УстановитьУсловиеЗапроса(2, ФлажокУсловие2, МоноУсловие2, СписокУсловие2, "КаналСбыта", Текст, Заголовок); УстановитьУсловиеЗапроса(3, ФлажокУсловие3, МоноУсловие3, СписокУсловие3, "Менеджер", Текст, Заголовок); УстановитьУсловиеЗапроса(4, ФлажокУсловие4, МоноУсловие4, СписокУсловие4, "Контрагент", Текст, Заголовок); // Дальше выполняем запрос Если Запрос.Выполнить(Текст) = 0 Тогда Возврат; КонецЕсли; ЗаголовокПервойКолонки = ""; НомерПоследнегоЗначения = СписокГруппировок.РазмерСписка(); Если НомерПоследнегоЗначения > 0 Тогда СписокГруппировок.ПолучитьЗначение(НомерПоследнегоЗначения, ЗаголовокПервойКолонки); КонецЕсли; Таб.ВывестиСекцию("Заголовок|Основной"); Таб.ПрисоединитьСекцию("Заголовок|План"); Пока Запрос.Группировка(1) = 1 Цикл СформироватьСтроку(1,ДляСвертки); Если КоличествоГруппировок = 1 Тогда Продолжить; КонецЕсли; Пока Запрос.Группировка(2) = 1 Цикл СформироватьСтроку(2,ДляСвертки); Если КоличествоГруппировок = 2 Тогда Продолжить; КонецЕсли; Пока Запрос.Группировка(3) = 1 Цикл СформироватьСтроку(3,ДляСвертки); Если КоличествоГруппировок = 3 Тогда Продолжить; КонецЕсли; Пока Запрос.Группировка(4) = 1 Цикл СформироватьСтроку(4,ДляСвертки); Если КоличествоГруппировок = 4 Тогда Продолжить; КонецЕсли; Пока Запрос.Группировка(5) = 1 Цикл СформироватьСтроку(5); Если КоличествоГруппировок = 5 Тогда Продолжить; КонецЕсли; КонецЦикла; КонецЦикла; КонецЦикла; КонецЦикла; КонецЦикла; //отсюда поподаем в процедуру СформироватьСтроку() ну и там формируем что нужно. //А вот что нужно поясни!!! | |||
| 11
    
        viktor_vv 16.10.13✎ 11:33 | 
        (10) А вопрос в чем? Вроде все как тебе надо.     | |||
| 12
    
        Vitekkkk 16.10.13✎ 11:34 | 
        Повторюсь мне нужно количество номенклатурных позиций.
 Хотя... Конкретнне на примере Продали Иванову И.И: дата 01.01.01 Ном1 - 5шт Ном2 - 10шт Дата 02.01.01 Ном1 -2шт Ном3 -3шт Дата 03.01.01 Ном1 - 1шт Ном2 - 15шт В отчете мне нужно видеть на примере одной группировки: Контрагент SKU Иванов И.И. 3 т.е. обшщее количество позиций проданных | |||
| 13
    
        Vitekkkk 16.10.13✎ 11:36 | 
        ну я в запросе количество Килограмм получаю, а мне нужно получать количество номенклатурных позици по каждой группировке     | |||
| 14
    
        Vitekkkk 16.10.13✎ 11:37 | 
        (11)пост выше тебе     | |||
| 15
    
        monsterZE 16.10.13✎ 11:38 | 
        =) на а в чем проблема то? продажи клиенту свернуть по товару     | |||
| 16
    
        monsterZE 16.10.13✎ 11:38 | 
        количество строк - вот тебе скю     | |||
| 17
    
        Vitekkkk 16.10.13✎ 11:40 | 
        (16)подумай и увидишь причину     | |||
| 18
    
        Vitekkkk 16.10.13✎ 11:40 | 
        много писать очнь чтоб пояснить причину     | |||
| 19
    
        monsterZE 16.10.13✎ 11:40 | 
        накладывай свои условия на "отчет по продажам" и сворачивай его по товару     | |||
| 20
    
        monsterZE 16.10.13✎ 11:41 | 
        (18) =)))) ну не пиши     | |||
| 21
    
        viktor_vv 16.10.13✎ 11:46 | 
        (12) Ну так-то да, в запросе не получишь этого. Это по каждой группировке надо выгружать и сворачивать.     | |||
| 22
    
        Mikeware 16.10.13✎ 11:50 | ||||
| 23
    
        viktor_vv 16.10.13✎ 11:51 | 
        (21)+ Должна помочь индексированная таблица из 1С++ с методом КоличествоСтрок().
 Это перед выводом выгрузить в индексированную ТЗ подобавлять необходимых индексов, и при выводе группировок получать количество строк по этим индексам. | |||
| 24
    
        viktor_vv 16.10.13✎ 11:53 | 
        (22) Прикольно :).     | |||
| 25
    
        Vitekkkk 16.10.13✎ 11:53 | 
        (22) Там количество продаж а не SKU     | |||
| 26
    
        Vitekkkk 16.10.13✎ 11:54 | 
        (22) где нашел такое?     | |||
| 27
    
        КонецЦикла 16.10.13✎ 11:56 | 
        http://1c911.by/stati_1s/statya-kak-ispolzovat-indeksirovannuyu-tablicu-znacheniy-1s.htm
 Там же есть и пример отчета (до и после) | |||
| 28
    
        Vitekkkk 16.10.13✎ 12:33 | 
        (27)Спсаибо! Сейчас попробую.... отпишусь     | |||
| 29
    
        monsterZE 16.10.13✎ 12:50 | 
        как-то так =)
 ТекстЗапроса = " |SELECT | $Док.Клиент as [Клиент $Справочник.Клиенты] | ,COUNT($ДокСтр.Товар) as СКЮ |FROM | $ДокументСтроки.РасходнаяНал as ДокСтр (NOLOCK) |INNER JOIN | $Документ.РасходнаяНал as Док (NOLOCK) ON Док.IDDoc = ДокСтр.IDDoc |INNER JOIN | _1SJourn as Жур (NOLOCK) ON Жур.IDDoc = ДокСтр.IDDoc | AND Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ | AND Жур.Closed & 1 = 1 |WHERE | $Док.Клиент IN (SELECT Val FROM #ГруппаК) |GROUP BY | $Док.Клиент |ORDER BY | $Док.Клиент |"; | |||
| 30
    
        monsterZE 16.10.13✎ 12:53 | 
        (29) товар не свернул =)     | |||
| 31
    
        monsterZE 16.10.13✎ 12:59 | 
        от так вот
 ТекстЗапроса = " |SELECT | Подзапрос.Клиент as [Клиент $Справочник.Клиенты] | ,COUNT(Подзапрос.Товар) as СКЮ |FROM | ( | SELECT | $Док.Клиент as Клиент | ,$ДокСтр.Товар as Товар | FROM | $ДокументСтроки.РасходнаяНал as ДокСтр (NOLOCK) | INNER JOIN | $Документ.РасходнаяНал as Док (NOLOCK) ON Док.IDDoc = ДокСтр.IDDoc | INNER JOIN | _1SJourn as Жур (NOLOCK) ON Жур.IDDoc = ДокСтр.IDDoc | AND Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ | AND Жур.Closed & 1 = 1 | WHERE | $Док.Клиент IN (SELECT Val FROM #ГруппаК) | GROUP BY | $Док.Клиент, $ДокСтр.Товар | ) as Подзапрос |GROUP BY | Подзапрос.Клиент |ORDER BY | Подзапрос.Клиент |"; | |||
| 32
    
        viktor_vv 16.10.13✎ 14:07 | 
        (31) В первом запросе можно было просто 
 COUNT(Distinct $ДокСтр.Товар) as СКЮ но ему не поможет на нескольких группирвоках. | |||
| 33
    
        monsterZE 16.10.13✎ 14:21 | 
        (32) точно =) спос     | |||
| 34
    
        ADirks 16.10.13✎ 14:27 | 
        кстати, SKU - это Stock Keeping Unit, т.е. номенклатура по нашему     | |||
| 35
    
        Mikeware 16.10.13✎ 14:39 | 
        (25) мне просто не надо было "по товарам". но добавить этот разрез - ровно три строки.
 (26) не "нашел", а "сделал". | |||
| 36
    
        Злопчинский 16.10.13✎ 23:22 | 
        (0) формируешь плоскую ТЗ по виду
 Измерение1,Измерение2...,Число1,Число2... . подсовываешь ее в "универсальный отчет по ТЗ" . выводишь группировками/шахматками. . http://infostart.ru/public/14794/ . не олап конечно и не панацея, но в большинстве случаев хватает. | |||
| 37
    
        Злопчинский 16.10.13✎ 23:30 | 
        (34) ой ли номенклатура? ане раздельные учитываемые отдельно единицы измерени яноменклатуры..?
 . товар, который отдельно учитывается в коробах и отдельно в блоках - это будет один SKU или 2 SKU..? | |||
| 38
    
        Jaffar 17.10.13✎ 12:44 | 
        (2) "Оптимальным решением для конфигурации Х1 размером Y1 на железе Y1 с учетом софта X2, при количестве пользователей Y2 при формировании отчета Z2"
 Y2 мало. лучше Z14. | |||
| 39
    
        Jaffar 17.10.13✎ 12:47 | 
        (37) у нас - один. и пофих, как он отгружался.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |