Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Условие при выборе полей в запросе

v7: Условие при выборе полей в запросе
Я
   OnePrg
 
26.11.20 - 12:36
Подскажите пожалуйста как лучше реализовать такой запрос

    ТекстЗапроса="//{{ЗАПРОС(ПриходныеНакладные)
    |Период с ДатаНачала по ДатаОкончания;
    |Товар                     = Документ.ПриходнаяНакладная.Товар;
    |ЭтоВозврат                 = Документ.ПриходнаяНакладная.ВидОперации;
    |Количество                 = ?(ЭтоВозврат=0,1,-1) * Документ.ПриходнаяНакладная.Количество;
    |Функция СуммаКоличество             = Сумма(Количество);
    |Группировка Товар без групп;
    |"//}}ЗАПРОС

Нужно чтобы поле Количество принимало минус, если это документ возврата. Пробовал вставить свою функцию - не принимает.
 
 Партнерская программа EFSOL Oblako
   Андрей_Андреич
 
1 - 26.11.20 - 12:40
|Функция СуммаКоличество             = Сумма(Количество) КОГДА (Документ.ПриходнаяНакладная.ВидОперации=чему-то там)
   Андрей_Андреич
 
2 - 26.11.20 - 12:41
А лучше просто 
Условие (ЭтоВозврат=1)
   Андрей_Андреич
 
3 - 26.11.20 - 12:42
А у тебя видоперации это 1 или 0 или какое-то перечисление?
   OnePrg
 
4 - 26.11.20 - 12:46
(1) А вот так как сделать?

Функция СуммаКоличество     = Сумма(Количество) КОГДА (Документ.ПриходнаяНакладная.ВидОперации = 0) + Сумма(-Количество) КОГДА (Документ.ПриходнаяНакладная.ВидОперации = 1)
   OnePrg
 
5 - 26.11.20 - 12:46
(3) 0 или 1
   OnePrg
 
6 - 26.11.20 - 12:48
(2) Условие мне отберёт или приход или возврат, а мне нужно сложить + приход, - возврат
   Андрей_Андреич
 
7 - 26.11.20 - 12:51
Конечно это все не по фэншую. Но можно вычислить 2 суммы а потом вычесть :)
   Андрей_Андреич
 
8 - 26.11.20 - 12:52
то есть функция пришло и функция ушло
   OnePrg
 
9 - 26.11.20 - 12:53
(7)
    ТекстЗапроса="//{{ЗАПРОС(ПриходныеНакладные)

    |Период с ДатаНачала по ДатаОкончания;
    |Товар                         = Документ.ПриходнаяНакладная.Товар;
    |ЭтоВозврат                 = Документ.ПриходнаяНакладная.ВидОперации;
    |Количество                 = Документ.ПриходнаяНакладная.Количество;
    |Функция СуммаКоличествоПриход     = Сумма(Количество) КОГДА (Документ.ПриходнаяНакладная.ВидОперации = 0);
    |Функция СуммаКоличествоРасход     = Сумма(Количество) КОГДА (Документ.ПриходнаяНакладная.ВидОперации = 1);
    |СуммаКоличество =  СуммаКоличествоПриход - СуммаКоличествоРасход;
    |Группировка Товар без групп;
    |"//}}ЗАПРОС



     СуммаКоличество =   <<?>> СуммаКоличествоПриход - СуммаКоличествоРасход;
Запрос[13] : Неверно заданный путь 'СуммаКоличествоПриход'
Ошибок - 1, Предупреждений - 0.
   Builder
 
10 - 26.11.20 - 12:55
(9) СуммаКоличество  уже вычисли при выводе отчета.
   OnePrg
 
11 - 26.11.20 - 12:57
(10) не понял
   OnePrg
 
12 - 26.11.20 - 12:58
ладно остановлюсь на двух суммах, отработаю их при выводе в отчет
   johnnik
 
13 - 26.11.20 - 14:14
Скромненько вклинюсь:
Приходная накладная должна двигать регистры остатков на приход и расход, поэтому можно в запросе товары выбирать не из документов, а из регистра остатков. Главное - отличить поступления и возвраты от расхода, списания, возвратов от покупателя и т.п.
   OnePrg
 
14 - 26.11.20 - 14:37
(13) да, только я запрос сократил для форума, а так полный набор полей запроса такой Фирма, Контрагент, Товар, Документ, Количество, Сумма". Я посчитал, что проще сделать запрос к документам.
   Builder
 
15 - 26.11.20 - 14:50
(11) Что непонятного?
При выводе отчета пишешь
ТвоеНужноеКоличество = Запрос.СуммаКоличествоПриход - Запрос.СуммаКоличествоРасход;
   OnePrg
 
16 - 26.11.20 - 15:52
(15) Так и сделал.

Всем спасибо.

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.