Имя: Пароль:
1C
1C 7.7
v7: Помогите отредактировать запрос 7.7 по остаткам/оборотам товара на складе
0 evgpinsk_
 
23.04.23
08:37
Прошу сильно не пинать, но с запросами никогда не дружил.
Есть запрос который обращается к регистру остатков - получает еженедельно приход и расход товара на складе.

Но расходом может быть как реализация товара на сторону, так и перемещение на другой склад (документ (Межскладская_расход_приход").
Соответственно такие перемещения в отчёт не должны попадать.

Как допилить запрос который ниже для этого? /в нём комментариями мои попытка, которые не помогла/

    __вид="Межскладская_расход_приход";
    Запрос2 = СоздатьОбъект("Запрос");
    ТекстЗапроса = "
    |с ВыбНачПериода по ВыбКонПериода;
    |Обрабатывать НеПомеченныеНаУдаление;
    |Склад     = Регистр.Остатки.Склад;
    |Товар     = Регистр.Остатки.ТМЦ;
    |Остаток = Регистр.Остатки.Остаток;
    |_Док       = Регистр.Остатки.ТекущийДокумент;
    |Условие (Склад в ВыбСклад);";
//    |Условие ((_Док.Вид()<>__вид));";
    |Функция ОстатокПриход = Приход(Остаток);
    |Функция ОстатокРасход = Расход(Остаток);
    |Группировка Товар Без групп;
//    |Группировка _Док;
    |Группировка Неделя Все;";
1 Волшебник
 
23.04.23
09:59
|Условие (_Док.Вид()<>""Межскладская_расход_приход"");";
2 evgpinsk_
 
23.04.23
12:20
Увидел ошибку в ТЗ.
Приходы по межскладской попадать в отчёт должны, о вот расход со склада по межскладской - не должен.

Вот это условие не могу прописать
3 Builder
 
23.04.23
13:03
(2) Можно добавить условие по реквизиту в доке, что-то типа
|Условие (_Док.ВидРасхода = "Расход") КОГДА (Док.Вид()="Межскладская_расход_приход");
Но надо проверить.
А в идеале в регистре должен быть реквизит, заполненный как надо, что-то типа "ВидДвижения". И по нему делать фильтры.
4 evgpinsk_
 
23.04.23
13:18
(3) > "А в идеале в регистре должен быть реквизит, заполненный как надо, что-то типа "ВидДвижения". И по нему делать фильтры."

Суть в чём - в этом отчёте я хочу видеть именно продажи товара. Которые идут по документу "Расходная накладная".
Списание товара со склада на другой склад по межскладской - не является продажей, и в отчёте мне не нужно.

> "|Условие (_Док.ВидРасхода = "Расход") КОГДА (Док.Вид()="Межскладская_расход_приход");"
Править структуру документа ради отчёта - не очень правильно.

Vне нужно чтото такое:
|Условие (ОстатокПриход>0) КОГДА (Док.Вид()="Межскладская_расход_приход");
5 Builder
 
23.04.23
13:25
(4)
>Править структуру документа ради отчёта - не очень правильно.
Правильно было спроектировать регистр так, что бы получать такие отчеты без написания таких условий.

>|Условие (ОстатокПриход>0) КОГДА (Док.Вид()="Межскладская_расход_приход");
Тогда только приходы этого документа и будут. Продаж не будет. Меняй условие.
6 evgpinsk_
 
23.04.23
13:31
(5) > "Тогда только приходы этого документа и будут. Продаж не будет. Меняй условие."
Так вот и не могу понять как определить условие

Как определить в условии, что конкретная получаемая запись является расходом по межскладской и эту запись ОТфильтровывать?
7 АгентБезопасной Нацио
 
23.04.23
15:41
(6) выгрузи уже в ТЗ, и фильтруй при обходе
8 Builder
 
23.04.23
17:29
(6) Действительно очень сложная задача....
|Условие (ОстатокПриход>0) КОГДА (Док.Вид()<>"Межскладская_расход_приход");
9 Злопчинский
 
23.04.23
20:25
(4) правильно - это регистр проектировать правильно, а не обращаться в запросе а виду Доку нота
10 Злопчинский
 
23.04.23
20:27
Функция ОстатокПриход... Когда док.Вид() в СЗсписоквидов
11 Гена
 
гуру
23.04.23
21:02
(4) [Суть в чём - в этом отчёте я хочу видеть именно продажи товара. Которые идут по документу "Расходная накладная"]

А нельзя взять обороты именно по регистратору "Расходная накладная"?
12 Злопчинский
 
24.04.23
00:21
(11) в (10) запихать в СЗ нужные виды
13 Злопчинский
 
24.04.23
00:22
(0) обрабатывать не помеченные на удаление - выкинуть, ибо это оксюморон. Запрос к регистру. Регистр - по проведённым документам сам по себе
14 АгентБезопасной Нацио
 
24.04.23
09:27
(13) а ты вспомни, как у него конфига сделана - все через попы
тки-исключения. А при этом вполне могут быть разные артефакты - движения у непроведенных, или отсутствие движений у проведенных...
15 evgpinsk_
 
24.04.23
10:16
(11) В отчёте также нужно и приходы и возвраты, поэтому правильней - вычеркнуть только один вид документа (перемещения между складами)
16 evgpinsk_
 
24.04.23
10:20
(9) Что именно не правильно спроектировано в класичесском регистре остатков?
Если вдруг появился какойто хитрый отчёт, базу даннух под него нужно перепроектировать?
17 evgpinsk_
 
24.04.23
10:24
(8) Это не смог попробовать, выдаёт ошибку, чтото с синтаксисом. "ОстатокПриход" - это функция, которая возвращает сумму сгрупированных остатков.
В условии можно обращаться к функции? И это условие анализирует результат который сама возвращает или конкретную запись запроса (т.е. значение прихода)?
18 Builder
 
24.04.23
10:29
(17) Блин, ну совсем думать не хочешь, как то так же
|Функция ОстатокПриход= Приход(Остаток) КОГДА (Док.Вид()<>"Межскладская_расход_приход");
19 evgpinsk_
 
24.04.23
10:58
(18) Здесь уже совсем другое решение, условие в функции, я не знал что можно было и так (гугл толком не давал помощи)
20 СвинТуз
 
24.04.23
11:04
Такое смутное ощущение, что пытаетесь остатки в регистре по реквизитам документов-регистраторов расфасовать?
v7 плохо помню.

Может не взлететь. Хранится ли?
21 СвинТуз
 
24.04.23
11:05
Это по сути обороты. В остатках не отфильтруете.
22 Builder
 
24.04.23
11:07
(21) Ему обороты и нужны, останков вроде нет в исходном запросе.
23 СвинТуз
 
24.04.23
11:08
Да не разглядел ...

плохо помню 7-ю.

Не то чем кажется?

|Остаток = Регистр.Остатки.Остаток;
24 СвинТуз
 
24.04.23
11:09
Таблица остатков задействована для расчета остатков.
Досвидос ...
25 СвинТуз
 
24.04.23
11:10
Это типа 8-й виртуальной "Остатки и обороты" наверное.
26 СвинТуз
 
24.04.23
11:12
В таких случаях кажется вот оно рядом решение, вот скоро ...
потом платформа дулю показывает.

Плавали, знаем.
Тоже молодыми были.
27 СвинТуз
 
24.04.23
11:15
Найдете в клюшках оборотный регистр,
дайте знать.
Лицезреть хочу. )
28 СвинТуз
 
24.04.23
11:24
Нужно писать запрос не по регистру, а по документам.
29 Builder
 
24.04.23
11:27
(27) Открой конфигуратор и посмотри, их есть там. Неожиданно?
30 СвинТуз
 
24.04.23
11:30
(29)
Я старый уже. Все забыл.
Дороги посыпаю.
31 СвинТуз
 
24.04.23
11:31
Но все равно. В этом случае по документам.
32 СвинТуз
 
24.04.23
11:31
Я ничего не помню.
Разбираюсь быстро.
33 АгентБезопасной Нацио
 
24.04.23
12:35
(32) "Хорошая болезнь склероз. Ничего не болит, и каждый день всё вокруг новое"©
34 uno-group
 
24.04.23
12:54
Продажи закупки нужно по регистру партий строить там и реквизиты для этого специальные есть.
35 uno-group
 
24.04.23
12:57
Там кроме межскладских перемещений могут быть возвраты нам от нас. их уже по док вид не отфильтруешь. Или черный запрос по документам или по регистру партий.
36 АгентБезопасной Нацио
 
24.04.23
13:42
(35) или прямой запрос
37 uno-group
 
24.04.23
13:47
(36) если у человека обычный вызывает проблемы, то про прямой страшно даже подумать.
38 АгентБезопасной Нацио
 
24.04.23
13:53
(37) прямые проще. ибо они нормальные и логичные, а чОрные - локальное семерочное извращение.
Ну а у этого человека проблемы в обычном месте...
39 evgpinsk_
 
24.04.23
16:31
(35) Я немного поменял логику работы отчёта. Межкскладские вообще не берутся в расчёт в запросе.
И тогда приходом будет изначальная покупка товара (а не перемещение).
40 АгентБезопасной Нацио
 
24.04.23
17:23
(39) открытие.
41 Злопчинский
 
24.04.23
17:29
(16) Открой ТиС - регистр остаток. классическей некуда. Посмотри на реквизит "Внутреннее".
.
Спроектировать регитср надо вперед.
и да, правильнее- переделать регистр под появившуюся задачу. часто "хи трые" отчеты на "неправильно" спроектированном регистре свидетельствуют о том, что пришли к очередному витку развития. а нахераченный ранее регистр для получения исключительно остатокв внезапно стал еще с делением по типам движений
42 Злопчинский
 
24.04.23
17:31
(15) Функция ОстатокПриход... Когда СЗсписоквидов.НайтиЗначение(Док.Вид()=0
43 Злопчинский
 
24.04.23
17:32
(19) открой для себя в интернете электронную версию желтых книжек.
ну и в СП тоже есть
44 Злопчинский
 
24.04.23
17:33
(17) еще учесть что когда ты уберешь приход/расход по каким-то видам документов то КонОст (если нужен) тебе придется для отчета высчитывать ВРУЧНУЮ, а не функцией штатной.
45 АгентБезопасной Нацио
 
24.04.23
20:48
(44) а он в сказку верит...
46 Злопчинский
 
24.04.23
21:28
(45) ...а потом еще возьмут за гузку когда коност по 30.04, не совпадет с начост на 01.05...
47 АгентБезопасной Нацио
 
25.04.23
06:19
(46) да он сам себе "гузкохват". "директор-программист".
48 evgpinsk_
 
25.04.23
08:17
(47) Агент, не боишься что скоро лопнешь от желчи? Я тебе дорогу где переехал? На работу не взял? Уже переживаю за тебя
49 АгентБезопасной Нацио
 
25.04.23
08:54
(48) не от желчи, а от смеха.  редко такие забавные встречаются... на работу - дык по "закону соответствия"™ мы с тобой не сможем встретиться на работе никогда.
50 evgpinsk_
 
25.04.23
09:12
(49) Ну так и смейся себе в сторонке, а не 5 копеек свои вставляешь никому не нужные через предложение.
51 СвинТуз
 
25.04.23
09:15
(50)
Обороты считаешь?
Возьми наконец проведенные документы требуемых типов за месяц и посчитай.
Не напрягай людей с регистром.
52 СвинТуз
 
25.04.23
09:16
Давно бы сделал уже.
53 evgpinsk_
 
25.04.23
09:21
(51) Уже и сделано (39)
54 СвинТуз
 
25.04.23
09:22
Так сразу сказал, если нужно делить по реквизитам движений обороты за месяц
использовать регистр остатков не рентабельно.

Не ... моск )
55 Злопчинский
 
25.04.23
16:32
(51) это хреново. Пецсатели отчётов на основе данных документов херачат ещё хуже чем по регистрам.
.
Возможность того что док не в рублях а в валюте - не обрабатывается, вкл/выкл НДС в сумме не обрабатыаается, то что в документе не обязательно базовые штуки не обрабатывается, цена продажи берётся из колонки цены без учёта скидок в документе.
56 Злопчинский
 
25.04.23
16:34
. . А уж о том, что сумма по табличной части может не совпадать с суммой взаиморасчетов - жто подавно. Правда надо сказать что такой изврат за кучу лет встречал один раз...