Запрос По Регистру В 7.7

Тема в разделе "1C и всё что с ней связано", создана пользователем Hryv, 11 окт 2011.

  1. Hryv

    Hryv Гость

    В базе есть отчет, который раньше работал правильно
    Потом в регистр добавили измерение и отчет начал косячить

    Отчет довольно сложный, и переделывать его полностью долго и нудна
    Но никак не соображу как устранить баг
    Наверное туплю сегодня :oops:

    Ближе к теме:
    в запросе есть группировка по товару (с группами справочника) и функция КонОст по количеству
    (в регистре товар - это измерение, количество - ресурс, на всякий случай уточняю)

    в регистр добавили измерение Фирма и по ней не всегда закрывается в ноль, то есть остатки выглядят так
    Товар1, Фирма1, 1
    Товар1, Фирма2, -1

    В запросе измерение Фирма не используется, но при Запрос.Группировка(1) Товар1 попадает с остатком 0 (что естественно 1-1=0)
    Мне надо чтобы он вообще не попадал
    Можно, конечно, при обходе проверять если остаток 0, то строку в отчет не выводить
    Но тогда будет проблема с группами
    По группе ведь может быть 0, а по разным товарам +1 и -1

    и что-то ничего путного в голову не приходит ;)
     
  2. Дайнеко

    Дайнеко Well-Known Member
    1C Team

    Регистрация:
    19 ноя 2009
    Сообщения:
    951
    Симпатии:
    0
    Специально опробовал, выводит, зараза. Например, на разных складах +/1 а выводится по всем. Так что не ломай зубы об Запрос.
    Хотя.. Попробуй Условие (ИтогКоличества <> 0)

    А иначе побори анализом:
    * ЭтоГруппа() = 1 не выводишь. Просто запоминаешь в переменную Группу, а также флажок ФлажокГруппуВыводить = 1
    * Проверяешь Товар на 0
    * Перед выводом строки:
    Код ( (Unknown Language)):
                Если (ФлажокГруппуВыводить = 1) Тогда
    ФлажокГруппуВыводить = 0;
    Таб.ВывестиСекцию("Группа");
    КонецЕсли;
    Таб.ВывестиСекцию("Товар");
    Только надо учесть и вышестоящие группы, чтобы они всегда выводились.
     
  3. Hryv

    Hryv Гость

    В запросе условие на функцию нельзя поставить :)

    А в цикле при выводе понятно что можно намудрить, но в том то и дело, что делать этого не хочется
     
  4. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    Ну к конОст можно ещё условие прилепить... Только вот что туда написать? а если например

    пустФирма = ПолучитьПустоеЗначение("Справочник.Фирмы");

    Остаток = КонОст(Количество) Когда (Фирма <> ПустФирма);

    Усли фирм всего две - можно поизвращаться типа

    Остаток = (КонОст(Количество) Когда (Фирма = Фирма1)) + (КонОст(Количество) Когда (Фирма = Фирма2));
     
  5. Hryv

    Hryv Гость

    из всего о чем я подумал самое простое - это выгрузить запрос в ТЗ, затем почистить ее, а затем делать цикл уже по ТЗ, а не по запросу

    но и это делать лень
    пошел на допущение, что отрицательных остатков по товарам быть не должно, и еще менее вероятно то, что сумма положительных и отрицательных остатков в одной группе будет ровно 0
    с учетом этого просто пропускаю все строки в которых остаток равен 0
     
  6. Дайнеко

    Дайнеко Well-Known Member
    1C Team

    Регистрация:
    19 ноя 2009
    Сообщения:
    951
    Симпатии:
    0
    Это ключевая фраза ;)

    Ох, идеалист. Споткнешься на том, что у одного товара -1 у совсем другого +1.
    Да, условие на функцию не поставишь - ляпнул не подумав. Но я размышлял и про условие Когда.
    Во первых ваше можно написать просто: Остаток = КонОст(Количество) Когда (НЕ(ПустоеЗначение(Фирма) = 1));
    Я думал что-то вроде: Остаток = КонОст(Количество) Когда (Количество <> 0);
    Но оно бесполезно, ибо проверяет каждую конкретную запись, которая итак <> 0/
     
  7. Hryv

    Hryv Гость

    это не подходит

    споткнуться, конечно можно, но я оценил риск как стремящийся к нулю


    всем спасибо за советы ;)
     
  8. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    О! Придумал! Делаешь перед запросом список товаров, которые косячат (отдельным запросиком), а потом в основном запросе ставишь условие, что твои товары не входят в этоот список.
     
  9. Hryv

    Hryv Гость

    Похоже на рабочий вариант, если руки дойдут, то опробую
    Спасибо за идею!
     
Загрузка...

Поделиться этой страницей