Имя: Пароль:
1C
1C 7.7
v7: Запрос к регистру
, ,
0 Aleksandra_19
 
25.01.13
15:14
Добрый день! Подскажите пожалуйста в чем ошибка. Мне нужно сформировать отчет по дебиторской задолженности. В регистре все данные есть. Но почему-то начальный остаток у меня всегда нулевой, какой бы период не выбирался. Вот текст запроса:
ТЗ = "
   |Период с НачДата по КонДата;
   |Контрагент = Регистр.Дебиторка.Контрагент;
   |ВидДока = Регистр.Дебиторка.ВидДока;
   |ДатаДока = Регистр.Дебиторка.ДатаДока;
   |Договор = Регистр.Дебиторка.Договор;
   |СрокОплаты = Регистр.Дебиторка.Договор.СрокОплаты;
   |Сумма = Регистр.Дебиторка.Сумма;
   |Функция НачОстаток = НачОст(Сумма);
   |Функция Приход = Приход(Сумма);
   |Функция Расход = Расход(Сумма);
   |Функция КонОстаток = КонОст(Сумма);
   |Группировка Контрагент Без Групп;
   |Группировка ВидДока;
   |Группировка ДатаДока;
   |Условие (ДатаДока >= НачДата);
   |Условие (ДатаДока <= КонДата);
   |";
1 Ёпрст
 
25.01.13
15:15
|ВидДока = Регистр.Дебиторка.ВидДока;
   |ДатаДока = Регистр.Дебиторка.ДатаДока;

зачетные измерения в регистре, и чего туда пишешь ?
2 Aleksandra_19
 
25.01.13
15:16
ВидДока - это ТТН или Возврат, а ДатаДока - дата этого документа
3 Ёпрст
 
25.01.13
15:17
круто.
4 Ёпрст
 
25.01.13
15:17
а зачем, если не секрет ?
5 Aleksandra_19
 
25.01.13
15:19
Потому что теткам из финансового нужно знать, что это был за документ...
6 Ёпрст
 
25.01.13
15:20
(5) документ чего ?
7 пипец
 
25.01.13
15:20
текущийдокумент ? не ?
8 Mikeware
 
25.01.13
15:20
(5) а что, ТекущийДокумент украли, или по религиозным соображениям?
9 Ёпрст
 
25.01.13
15:20
при приходе, туда чего пишешь ?
А при расходе ?
А при оплате ?
А при выдаче денех ?
10 Aleksandra_19
 
25.01.13
15:21
Документ, которым пришли деньги, или наоборот списались
11 viktor_vv
 
25.01.13
15:21
(1) Есть подозрение, что это реквизиты регистра.
12 Aleksandra_19
 
25.01.13
15:21
Пусть будет по религиозным соображениям.. Ошибка-то не в этом
13 Mikeware
 
25.01.13
15:22
(10) списание денег производится в связи с их износом? :-)
14 Ёпрст
 
25.01.13
15:22
(11) врят ли.
15 Aleksandra_19
 
25.01.13
15:23
(13) Списание денег производится при оплате от контрагента
16 Irbis
 
25.01.13
15:23
(13) и естественной убылью
17 viktor_vv
 
25.01.13
15:24
(15) А без этого условия нормально остатки показывает ?

   |Условие (ДатаДока >= НачДата);
   |Условие (ДатаДока <= КонДата);
18 viktor_vv
 
25.01.13
15:25
(17) Кстати из-за этого условия и косяк похоже. Оно ж отбирает только документы в периоде за который и запрос делается.
19 viktor_vv
 
25.01.13
15:26
(18) Соотвественно и движения по ним начались только в этом периоде.
Ну и остатка поэтому нету.
20 Aleksandra_19
 
25.01.13
15:27
Без этого условия правильно показывает. Но мне нужно получить отчет за определенный период. Так не получится сделать?
21 viktor_vv
 
25.01.13
15:28
(20) А чем тебя не устаривает результат без этого условия ?
Ты ж период задаешь тут.

   |Период с НачДата по КонДата;
22 Aleksandra_19
 
25.01.13
15:29
(20) Но мне все равно выдает все документы, в том числе те, которые были раньше НачДата
23 viktor_vv
 
25.01.13
15:31
(22) Ну тогда остаток на начало будет равен нулю, в большинстве случаев, в чем вопрос ?

И ответь на (11) .
24 Aleksandra_19
 
25.01.13
15:32
Да, ВидДока и ДатаДока - это реквизиты регистра
25 Ёпрст
 
25.01.13
15:33
да уж..
я хз, что тебе нужно и (за нелепую структуру регистра мы не в ответе)
так может ?

   |Период с НачДата по КонДата;
   |Контрагент = Регистр.Дебиторка.Контрагент;
   |ВидДока = Регистр.Дебиторка.ВидДока;
   |ДатаДока = Регистр.Дебиторка.ДатаДока;
   |Договор = Регистр.Дебиторка.Договор;
   |СрокОплаты = Регистр.Дебиторка.Договор.СрокОплаты;
   |Сумма = Регистр.Дебиторка.Сумма;
   |Функция НачОстаток = НачОст(Сумма);
   |Функция Приход = Приход(Сумма) Когда((ДатаДока >= НачДата)И((ДатаДока <= КонДата)));
   |Функция Расход = Расход(Сумма) Когда((ДатаДока >= НачДата)И((ДатаДока <= КонДата)));
   |Функция КонОстаток = КонОст(Сумма);
   |Группировка Контрагент Без Групп;
   |Группировка ВидДока;
   |Группировка ДатаДока;
   |//Условие (ДатаДока >= НачДата);
   |//Условие (ДатаДока <= КонДата);
26 Aleksandra_19
 
25.01.13
15:34
Вопрос в том, как сделать так, чтобы выбирались документы за указанный период и в тоже время остаток на начало был реальный, а не нулевой?
27 viktor_vv
 
25.01.13
15:37
(26) Вот это поясни.

"чтобы выбирались документы за указанный период"

Какие документы ?
Документы сформировавшие движения, или документы являющиеся значением измерения , я так понял Договор.
28 Aleksandra_19
 
25.01.13
15:37
(25) так все равно все документы попадают
29 viktor_vv
 
25.01.13
15:39
(25) А смысл, если в реквизит ДатаДока пишется дата документа движения.
Правда это опять телепатия :).

Может ТС пояснит, какая дата пишется реквизит ДатаДока.
30 Aleksandra_19
 
25.01.13
15:40
(27) Документы сформировавшие движения
31 Aleksandra_19
 
25.01.13
15:41
(29) В реквизит ДатаДока пишется когда была отгружена ТТН или когда  принят Возврат
32 viktor_vv
 
25.01.13
15:42
У меня такое чувство, что это очередное "хочу получить начальный конечный остаток по реквизиту регистра, документу движения".
33 Aleksandra_19
 
25.01.13
15:52
ДатаДока и ВидДока никак не влияют на движения регистра, они просто реквизиты для информации. Остатки на начало и на конец правильные, но движения берутся не за указанный период, а вообще все
34 Ёпрст
 
25.01.13
15:52
Нет, просто автор сам не знает что он хочет и объяснить это не в состоянии
35 Ёпрст
 
25.01.13
15:53
(33) да ну ?
в запросе (25) все движения будут отфильтрованы по твоим реквизитам ДатаДока
36 Aleksandra_19
 
25.01.13
15:57
(35) нет, все равно выводятся все движения
37 Ёпрст
 
25.01.13
16:00
(36)что значит все ?!
Как ты это проверяешь ?!
38 пипец
 
25.01.13
16:02
Группировка ВидДока Оо а виддока текст ?
39 Злопчинский
 
25.01.13
16:03
Александра - позволь объяснить как белорус беларусу.
.
надо различать "документы движения" - те которые минусуют и плюсуют деньги и "кредитные документы" - т.е. документы по которым образовался долг.
.
рассмотрим подробнее.
.
всё по нулям.
Первый документ движения Реализация = 1000
Далее оплата 200, оплата 300
Очевидно, что оплаты - это документы движения, которые закрывают КРЕДИТНЫЙ документ реализация - который образовал долг (этот креддок одновременно является и документом движения).
.
наоборот:
всё по нулям.
.
Предоплата 1000
отгрузка 200, отгрузка 100
- все три дока сами по себе документы движения, первый документ - еще и кредитный док - на сейчас по нему висит наш долг = 700 руб.
.
так вот, если в регистре в КАЧЕТСВЕ ИЗМЕРЕНИЯ отсутствует КРЕДИТНЫЙ ДОКУЕНТ и весь регистр представляет собой простые движения по + и минус деньги - то на любой момент можно определить текущий долг, но не получится (быстро!) сказать из каких документов (сколдок неоплаченных реализаций например) он складывается.
.
чтобы определить из чего складываетяс долг и какие сроки долга - придется получить остаток на сейчас и отматывать назад документы приходов.расходов, чтобы получить список доков, составляющих долг. это - бяка, так ОБЫЧНо не делают.
40 Злопчинский
 
25.01.13
16:10
В твоем случае - утебя есть ВидДока и ДатаДока
например, отгрузили 200 и 150
в регистр записалось СО ЗНАКОМ ПЛЮС что значит долг клиента (Типа Документ движения-ВидДок-ДатаДок-Сумма) Реализация, 10.01.13, +200руб
(Типа Документ движения-ВидДок-ДатаДок-Сумма) Реализация, 15.01.13, +150руб
.
Оплатили 16 числа 420, проводим - в документ пишется со знаком минус (уменьшение долга клиента) - а что пишется - а зависит от "истории" - выбирается итог по регистру - он плюсовой (есть долги ) и плюсы в разрезе дат и видов дока
ОДНА пплата "раскладывается" на эти долги НА НЕСКОЛЬКО строк - в нашем случае будет (примерно) так:
(Типа Документ движения-ВидДок-ДатаДок-Сумма) ВыпискаПриход, Реализация, 10.01.13, -200руб
(Типа Документ движения-ВидДок-ДатаДок-Сумма) ВыпискаПриход, Реализация, 15.01.13, -150руб (все долги кончились!)
(Типа Документ движения-ВидДок-ДатаДок-Сумма) ВыпискаПриход, ВыпискаПриход, 16.01.13, -70руб
.
41 Злопчинский
 
25.01.13
16:11
Поправочка к предыдущему
.
в регистр записалось СО ЗНАКОМ ПЛЮС что значит долг клиента (Типа Документ движения-ВидДок-ДатаДок-Сумма) Реализация№1, Реализация, 10.01.13, +200руб
(Типа Документ движения-ВидДок-ДатаДок-Сумма) Реализация№2, Реализация, 15.01.13, +150руб
.
42 Ёпрст
 
25.01.13
16:12
(39,40) Ну шо за невнимательность а ?

У аутора, ВидДока и ДатаДока - это реквизиты регистра, по ним нема останков :)
43 Злопчинский
 
25.01.13
16:13
Обычно "дебиторка" понимается как непогашенные долги.
Непогашенные долги (а не история как развивались непогашенные долги) - они всегда НА ДАТУ 9а не за период
44 Злопчинский
 
25.01.13
16:16
(42) понял ;-)
.
если ВидДока и датаДока - реквизиты - то дебиторку можно получить только в виде КУЧИ, то есть например 1000 руб. и Все (как я написал выше) - чтобы получить сроки и из чего они складываются - надо этот отстаток "разматывать назад", выбирая только те доки, которые сведут эту сумму к нулю..
.
а выше я написал примерчики - исходя из того, что ВидДок и ДатаДок - ИЗМЕРЕНИЯ РЕГИСТРА 9которые типа кредитный документ)
45 CaMoJleT
 
25.01.13
16:18
Так а разве ТС не сможет получить еще и историю, как ей и надо?

У неё есть регистр, в регистре есть движения. Надо получить остаток на одно одну дату, все движения с этой даты по вторую и остатки на вторую дату.

Я был уверен, что совет из (17) поможет. На крайний случай и (25) тоже. Хз чего у неё выбираются движения и раньше НачДата.
46 Злопчинский
 
25.01.13
16:19
(45) тут понимаешь в чем вопрос - Епрст написал ей запрос. а ей не нравятся результат. После этого ТС пропал...
47 CaMoJleT
 
25.01.13
16:20
(46) походу пытается как-то реализовать всё, что тут написано)
48 Aleksandra_19
 
25.01.13
16:23
http://ge.tt/2Ze0kSW/v/0?c
Вот что у меня получается, если переписать запрос как в (25)
Мне не понятно, почему сюда попадают ТТН, которые были проведены 11-м месяцем?
49 Ёпрст
 
25.01.13
16:25
(48) Если ВидДока и ДатаДока - это реквизиты регистра, то по ним нет Останков вообще, вы определитесь, что есть
ВидДока и ДатаДока у вас в регистре - Измерения регистра это или всё же Реквизиты регистра.
50 Ёпрст
 
25.01.13
16:25
+ нам отсюда не виден ваш вывод результатов запроса в эту форму.
51 Злопчинский
 
25.01.13
16:28
(49) не зря я писал ей пояснялку! ;-)

Александра:

я все-таки думаю что это
а) измерения - по ним и вылазит долг (и это правильно), потому что если долг образовался по документу 11 месяца, то он будет висеть хот  10 лет, пока его не "заминусуют" в текущем периоде.

б) если это реквизиты - то как там определяются и выбираются цифры/доки из результатов запроса - нам отсюда не видно.. ;-)
52 Злопчинский
 
25.01.13
16:30
Проще будет целиком увидет код модуля начиная с формирования текста запроса до Таб.Показать()
.
помог бы, но убегаю - надо гифт купить на ДР
53 Aleksandra_19
 
25.01.13
16:32
Это измерения. Я наверное уже поняла, в чем проблема.. Текст скину позже, рабочий день закончился уже. Спасибо
54 Ёпрст
 
25.01.13
16:34
(53) тогда ты тупо видишь ОСТАНКИ по этим измерениям.. а в самих движениях за этот период твоих видДок и датаДок не булдет
55 Ёпрст
 
25.01.13
16:34
ну и структуру регистра - в топку.
56 Злопчинский
 
25.01.13
16:34
(53) Втыкай. Александра - в пояснялки мои и мысли над текстом Епрста.
57 Злопчинский
 
25.01.13
16:35
Хорошо жить в Минске, рабочий день до 16-30...
58 Злопчинский
 
25.01.13
16:35
(55) все в топку! ;-)