Имя: Пароль:
1C
1C 7.7
v7: Как в запросе по остаткам выбрать только отрицательные остатки
,
0 Absurdus
 
13.11.17
09:39
|Период с НачДата по КонДата;
|Номенклатура = Регистр.ОстаткиТМЦ.Номенклатура;
|Количество = Регистр.ОстаткиТМЦ.Количество;
|Функция КолКонОст = КонОст(Количество);
|Группировка Номенклатура;

Какое добавить условие в запросе, чтобы в результате были только отрицательные остатки?

|Условие(КолКонОст < 0); не канает

Перебор строк запроса после выполнения тоже не канает, т.к. запрос чуть сложенее и нужны итоги по группировкам
1 АЛьФ
 
13.11.17
10:10
2(0) Сделать два запроса: первым отобрать список номенклатуры с отрицательными остатками, вторым собрать итоги с фильтром по полученному списку.
2 VladZ
 
13.11.17
10:19
Еще вариант: использовать "прямые запросы".
3 aka AMIGO
 
13.11.17
10:31
У меня канает

    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Товар = Регистр.ОстаткиТоваров.Товар;
    |Склад = Регистр.ОстаткиТоваров.Склад;
    |ОстатокТовара = Регистр.ОстаткиТоваров.ОстатокТовара;
    |Функция ОстатокТовараКонОст = КонОст(ОстатокТовара);
    |Группировка Склад Без Групп;
    |Группировка Товар Без Групп;
    |Условие(ОстатокТовара < 0);
    |"//}}ЗАПРОС
4 aka AMIGO
 
13.11.17
10:34
Твой вариант:
|Условие (Количество<0);
5 vcv
 
13.11.17
10:37
(3) Если в регистре есть еще какие измерения (партия, и тому подобное) получится несколько не то, что (0) хотел.
6 vcv
 
13.11.17
10:38
(0) Есть еще вариант фильтрации при выводе.
7 Ёпрст
 
13.11.17
10:40
(0)
|условие Запрос.КолКонОст<0

Но, это не всегда верно, и лучше, так не делать.
8 Ёпрст
 
13.11.17
10:41
(3) хня написана. Есу нужно отрицательный остаток, а не значение ресурса.
9 vcv
 
13.11.17
10:47
(8) Что ж ты такой злой? При структуре регистра типа ОстаткиТМЦ из ТиС и отсутствии розницы метод вполне канает.
10 Ёпрст
 
13.11.17
10:50
(9) что именно канает ?
11 vcv
 
13.11.17
11:09
В ОстаткахТМЦ, например, измерения Фирма, Склад, Номенклатура, ЦенаПрод. Если нет розницы и не может возникнуть пересорт по цене продажи, фильтр "Условие (Количество<0);" вполне может решить задачу (0). А может и не решить, если (0) не интересует возможный "пересорт" в разрезе складов и фирм.
12 Ёпрст
 
13.11.17
11:34
(11) подумай, каким х..ом количество будет отрицательным ? И что такое остаток.
13 Ёпрст
 
13.11.17
11:36
И, как он считается, если не на дату ТА.
14 aka AMIGO
 
13.11.17
11:49
С внешней функцией
Функция ОтрицОст(Товар, Склад)
    Ост = Регистр.ОстаткиТоваров.СводныйОстаток(Товар, Склад, "ОстатокТовара");
    Возврат ?(Ост<0,Ост,0);
КонецФункции

Процедура Сформировать()
    Перем Запрос, ТекстЗапроса, Таб;
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Товар = Регистр.ОстаткиТоваров.Товар;
    |Склад = Регистр.ОстаткиТоваров.Склад;
    |ОстатокТовара = Регистр.ОстаткиТоваров.ОстатокТовара;
    |Функция ОстатокТовараКонОст = КонОст(ОстатокТовара);
    |Функция ОстатокТовараЫ = Сумма(ОтрицОст(Товар,Склад));
    |Группировка Склад Без Групп;
    |Группировка Товар Без Групп;
    |"//}}ЗАПРОС
    ;
Картинка результатов:
https://i.paste.pics/2adf0195d4559efe52182c9a029949c5.png
15 aka AMIGO
 
13.11.17
11:51
Отбор можно выполнить в цикле по Запросу.
16 aka AMIGO
 
13.11.17
11:56
17 sapphire
 
14.11.17
00:45
(0) regprint.ert
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший