| 
    
            
         
         | 
    
    
  | 
СКД, группировка с пустыми данными | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        QuestNew    
     12.05.15 
            ✎
    07:58 
 | 
         
        Доброго дня, уважаемые.
 
        Прошу помощи с простым концептуальным вопросом по СКД. В наборах данных один запрос, во временную таблицу отбираю элементы справочника номенклатуры, затем левым соединением добавляю остатки по складам. Все работает. НО! Когда пользователь накладывает фильтр по складу, в таблице остаются только номенклатурные позиции с остатками, а я хочу увидеть все номенклатурные позиции из временной таблицы своего запроса. Подскажите, как решить проблему, заранее спасибо.  | 
|||
| 
    1
    
        ЧеловекДуши    
     12.05.15 
            ✎
    08:00 
 | 
         
        (0) Охарактеризуйте термин "пустыми данными"?
 
        Как это понимать?  | 
|||
| 
    2
    
        QuestNew    
     12.05.15 
            ✎
    08:00 
 | 
         
        (1) Подразумеваю нулевые остатки номенклатуры.     
         | 
|||
| 
    3
    
        QuestNew    
     12.05.15 
            ✎
    08:05 
 | 
         
        Дополню огписание проблемы.
 
        Пусть есть позиции товар1 и товар2, склады склад1 и склад2. Остатки без фильтров выводятся так: склад1 склад2 товар1 1 товар2 5 Когда пользователь накладываеь фильтр по складу, картина получается: склад2 товар2 5 А я хочу получить: склад2 товар1 товар2 5  | 
|||
| 
    4
    
        MUXACb    
     12.05.15 
            ✎
    08:19 
 | 
         
        (1) К сначала ко всей номенклатуре присоедини все склады, а потом ко всему этому присоединяй остатки по номенклатуре и складам     
         | 
|||
| 
    5
    
        QuestNew    
     12.05.15 
            ✎
    08:24 
 | 
         
        (4) А толку? Я так понимаю, что СКД накладывает фильтр на итоговую таблицу.
 
        О!, идеи-вопросы: 1) получится ли решить проблему добавлением "ресурса", равного 1 для всех строк номенклатуры? 2) если сделать два набора данных, можно ли указать СКД, что фильтр следует применить к одному из наборов, а не итоговой таблице после объединения наборов данных?  | 
|||
| 
    6
    
        fierylions    
     12.05.15 
            ✎
    08:31 
 | 
         
        Нормально все отрабатывает:
 
        ВЫБРАТЬ Товары.Ссылка ПОМЕСТИТЬ Товары ИЗ Справочник.Товары КАК Товары ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Товары.Ссылка КАК Товар, ЕСТЬNULL(ОстаткиОстатки.колОстаток, 0) КАК Остаток ИЗ Товары КАК Товары ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Остатки.Остатки( , Товар В (ВЫБРАТЬ Товары.Ссылка ИЗ Товары КАК Товары) И Склад = &Склад) КАК ОстаткиОстатки ПО Товары.Ссылка = ОстаткиОстатки.Товар Результат: если отбор по Складу 1 Склад = Склад1 Товар = Товар1 Количество = 1 Склад = Null Товар = Товар2 Количество = 0  | 
|||
| 
    7
    
        QuestNew    
     12.05.15 
            ✎
    08:41 
 | 
         
        (6) т.е. решением проблемы в вашем примере служит прямое прописание фильтра в запросе СКД, мысль понял, спасибо!
 
        Если не найду универсального решения, придется прописывать возможные фильтры... Спасибо! Остатки с фильтром по номенклатуре - вымышленный простейший пример, иллюстрирующий мою проблему. В реальности фильтры могут быть по множеству параметров, прописать все будет проблематично.  | 
|||
| 
    8
    
        fierylions    
     12.05.15 
            ✎
    08:48 
 | 
         
        (7) Что бы у вас работало да же без явного указания параметров вам нужно отключить галку в конструкторе "Автоупорядочивание". Тогда СКД будет работать именно указано в запросе.     
         | 
|||
| 
    9
    
        MUXACb    
     12.05.15 
            ✎
    10:04 
 | 
         
        (7) У меня все работает. Объяснять принцип работы СКД долго.
 
        Да, у меня "Автоупорядочивание" тоже выключено. С включенным не пробовал  | 
|||
| 
    10
    
        QuestNew    
     12.05.15 
            ✎
    11:29 
 | 
         
        (8),(9) Уважаемые, прошу помочь, проскальзываю, где эта галка автоупорядочивания, которую нужно отключить?     
         | 
|||
| 
    11
    
        1976vas    
     12.05.15 
            ✎
    11:36 
 | 
         
        (10) Я так понимаю, про "Автозаполнение" речь.     
         | 
|||
| 
    12
    
        MUXACb    
     12.05.15 
            ✎
    11:52 
 | 
         
        (10) Пардон, "Автозаполнение"...     
         | 
|||
| 
    13
    
        ИС-2    
     12.05.15 
            ✎
    11:59 
 | 
         
        в запросе на закладке "Компоновка" можно выделить поле для фильтра. 
 
        Или просто переименовать его. Например, Клиент в КлиентИзВТ и отбторы делать по КлиентИзВТ  | 
|||
| 
    14
    
        QuestNew    
     12.05.15 
            ✎
    16:33 
 | 
         
        (13) Пробую реализовать ваш вариант. 
 
        1. Сделал промежуточную временную таблицу, в которой определил поле для фильтра по "складу". 2. В итоговой таблице делаю полное объединение временной таблицы "номенклатуры" с "остатками". В итоге вижу, что добавленное поле для фильтра по "складу" работает (налагаемые фильтры влияют на группировку "складов"), но "номенклатура" остается усеченной - без позиций с нулевыми остатками. Что-то делаю неправильно, что не пойму  | 
|||
| 
    15
    
        1976vas    
     12.05.15 
            ✎
    16:43 
 | 
         
        (14) А в консоли запросов работает? Пробуй сначала в консоли запросов запустить, потом с СКД сравнивай.     
         | 
|||
| 
    16
    
        QuestNew    
     12.05.15 
            ✎
    16:50 
 | 
         
        (15) В консоли я вижу нужный результат. Запрос висит долго, но в итоговой таблице выдает всю "номенклатуру".
 
        СКД тоже висит долго, но в итоге выдает только позиции с остатками.  | 
|||
| 
    17
    
        1976vas    
     12.05.15 
            ✎
    16:53 
 | 
         
        (16) Сравни тогда запрос в консоли СКД исходный и после компоновки макета.     
         | 
|||
| 
    18
    
        QuestNew    
     12.05.15 
            ✎
    17:07 
 | 
         
        (17) Эх, не знаю как, буду изучать )  Спасибо за наводку!     
         | 
|||
| 
    19
    
        1976vas    
     12.05.15 
            ✎
    19:13 
 | 
         
        (18) Это не наводка, я и сам не силен в СКД, но есть хорошие курсы по СКД у Гилева, там сразу можно увидеть своеобразный отладчик - консоль СКД, там видно, как твой запрос преобразуется после компоновки макета, т.е. твой запрос + настройки пользователя, т.е. запрос + все параметры, передаваемые в СКД. Посмотрев, можно выявить причины расхождения.     
         | 
|||
| 
    20
    
        1976vas    
     12.05.15 
            ✎
    19:20 
 | 
         
        (19) + СКД изменяет постановку запроса, по сравнению с обычным запросом, он умеет оптимизировать, но иногда не в нашу пользу, поэтому надо знать особенности или просто сравнивая запросы исходные и преобразованные СКД, делать выводы.     
         | 
|||
| 
    21
    
        QuestNew    
     13.05.15 
            ✎
    10:58 
 | 
         
        Уважаемые, прошу помощи.
 
        Правлю запрос для СКД. Получаю финальную таблицу с Х измерениями, У показателями, на которую СКД накладывает пользовательские фильтры. Пусть в множестве измерений помимо прочих есть измерения "номенклатура" и "склад". Необходимо получить отчетную форму по всем возможным значениям измерения "номенклатура" (по всему списку). Рассмотрим случай, когда накладывается один фильтр на одно измерение - "склад" (при этом условием может быть не только равенство значению). Изначально в финальной таблице есть записи только по "номенклатуре" с остатками. Если я делаю новую таблицу - левое соединение остатков к справочнику "номенклатуры", получаю таблицу со всеми элементами "номенклатуры", но фильтр по "складу" обрезает "пустые" (без остатков) строки. Т.е. мне нужно получить новую таблицу, в которой бы к имеющейся результирующей таблице добавились бы строки с нулевыми значениями ресурсов из множества У, но при этом были бы учтены все имеющиеся комбинации остальных измерений из множества ресурсов Х. Не соображу, как это сделать.  | 
|||
| 
    22
    
        MUXACb    
     13.05.15 
            ✎
    13:33 
 | 
         
        (21) я в (4) написал. 
 
        1. Сделай 2 набора данных 2. В первом Номенклатура Левое соединение Склады - вся номенклатура по всем складам 3. Во втором остатки 4. Соединяй наборы (первый <- второй) по номенклатуре и складу При необходимости отключи "Автозаполнение"  | 
|||
| 
    23
    
        QuestNew    
     13.05.15 
            ✎
    16:26 
 | 
         
        (22) Спасибо! Буду пробовать     
         | 
|||
| 
    24
    
        QuestNew    
     15.05.15 
            ✎
    11:12 
 | 
         
        (22) Почти получилось!
 
        Последняя проблема - при наложении фильтра на измерение с типом "Не заполнено", тогда "номенклатура" все равно не попадает в отчет. Дополнительное соединение со значением Справочник.ХХХ.ПустаяСсылка не помогает ((  | 
|||
| 
    25
    
        QuestNew    
     15.05.15 
            ✎
    11:16 
 | 
         
        (24) Проверил вариант с присоединением Null, тоже счастья не получил.     
         | 
|||
| 
    26
    
        QuestNew    
     15.05.15 
            ✎
    11:24 
 | 
         
        (24) Неопределено тоже не помогает.
 
        Уважаемые, прошу помощи.  | 
|||
| 
    27
    
        echo77    
     15.05.15 
            ✎
    11:33 
 | 
         
        (25) Схему свою покажи.
 
        При включенной галке Автозаполнение СКД добавляет поля Условий из измерений ВТ. Если у тебя запрос простой и ты вручную не прописываешь в СКД, что необходимо наложить отбор на поле Склад - все должно работать.  | 
|||
| 
    28
    
        QuestNew    
     15.05.15 
            ✎
    11:43 
 | 
         
        (27) Как принято показывать схему? Выгрузить в xml, скрин, текст запроса?     
         | 
|||
| 
    29
    
        echo77    
     15.05.15 
            ✎
    11:43 
 | 
         
        (28) выложить на файловый ресурс XML-схему     
         | 
|||
| 
    30
    
        QuestNew    
     15.05.15 
            ✎
    11:45 
 | 
         
        (29) Если схема к отчету под доработку (отраслевое решение) - будет толк? Или без конфы схема окажется бесполезной?     
         | 
|||
| 
    31
    
        echo77    
     15.05.15 
            ✎
    11:47 
 | 
         
        (30) Схему покажи сначала, потом посмотрим     
         | 
|||
| 
    32
    
        QuestNew    
     15.05.15 
            ✎
    11:51 
 | 
||||
| 
    33
    
        echo77    
     15.05.15 
            ✎
    11:56 
 | 
         
        Вот это что такое?
 
        ВЫБРАТЬ РАЗРЕШЕННЫЕ ВЫБОР КОГДА &Периодичность = 6 ТОГДА ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d) КОГДА &Периодичность = 7 ТОГДА ДОБАВИТЬКДАТЕ(&НачалоПериода, НЕДЕЛЯ, aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d) КОГДА &Периодичность = 8 ТОГДА ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕКАДА, aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d) КОГДА &Периодичность = 9 ТОГДА ДОБАВИТЬКДАТЕ(&НачалоПериода, МЕСЯЦ, aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d) КОГДА &Периодичность = 10 ТОГДА ДОБАВИТЬКДАТЕ(&НачалоПериода, КВАРТАЛ, aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d) КОГДА &Периодичность = 11 ТОГДА ДОБАВИТЬКДАТЕ(&НачалоПериода, ПОЛУГОДИЕ, aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d) КОГДА &Периодичность = 12 ТОГДА ДОБАВИТЬКДАТЕ(&НачалоПериода, ГОД, aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d) ИНАЧЕ НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ) КОНЕЦ КАК Период ПОМЕСТИТЬ ВтДень ИЗ (ВЫБРАТЬ 0 КАК a ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК aa ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ 0 КАК b ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК bb ПО (ИСТИНА) ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ 0 КАК c ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК cc ПО (ИСТИНА) ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ 0 КАК d ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК dd ПО (ИСТИНА) ГДЕ ВЫБОР КОГДА &Периодичность = 6 ТОГДА aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ) КОГДА &Периодичность = 7 ТОГДА aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ) / 7 КОГДА &Периодичность = 8 ТОГДА aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ) / 10 КОГДА &Периодичность = 9 ТОГДА aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, МЕСЯЦ) КОГДА &Периодичность = 10 ТОГДА aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, МЕСЯЦ) / 3 КОГДА &Периодичность = 11 ТОГДА aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, МЕСЯЦ) / 6 КОГДА &Периодичность = 12 ТОГДА aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ГОД) ИНАЧЕ aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ) КОНЕЦ ;  | 
|||
| 
    34
    
        QuestNew    
     15.05.15 
            ✎
    11:58 
 | 
         
        Я дорабатываю отчет франча, за все не расскажу.
 
        Мои изменения в запрос - ВТ "МнВоАналитик" и запросы 3,4 в итоговом запросе 8.  | 
|||
| 
    35
    
        QuestNew    
     15.05.15 
            ✎
    11:58 
 | 
         
        (33) Предполагаю, что так реализована группировка по периодам.     
         | 
|||
| 
    36
    
        QuestNew    
     21.05.15 
            ✎
    11:13 
 | 
         
        В итоге получилось, помогло выделение параметра для фильтра в закладке компоновки промежуточного отчета.
 
        Всем спасибо за помощь.  | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |