Имя: Пароль:
1C
1С v8
И снова о настройках СКД (ресурсы, вычисляемые поля и еще черт знает что)
,
0 DenYuliya
 
21.06.19
18:02
Уже неприличное количество времени вожусь с отчетом.
Отчет - регистр накоплений "Взаиморасчеты",Остатки и обороты, периодичность по регистратору.

Сам отчет, в целом, не сложный:

ВЫБРАТЬ
    ВзаиморасчетыСПокупателямиОстаткиИОбороты.Регистратор,
    ВзаиморасчетыСПокупателямиОстаткиИОбороты.КредитныйДокумент,
    ВзаиморасчетыСПокупателямиОстаткиИОбороты.Договор,
    ВзаиморасчетыСПокупателямиОстаткиИОбороты.Грузополучатель,
    ВзаиморасчетыСПокупателямиОстаткиИОбороты.Покупатель КАК Контрагент,
    ЕСТЬNULL(ВзаиморасчетыСПокупателямиОстаткиИОбороты.КредитныйДокумент.СуммаДокумента, 0) КАК СуммаОтгрузкиПоНакладной,
    ВзаиморасчетыСПокупателямиОстаткиИОбороты.ДолгРасход + ВзаиморасчетыСПокупателямиОстаткиИОбороты.АвансРасход КАК СуммаОплатыЗаПериод,
    ВзаиморасчетыСПокупателямиОстаткиИОбороты.ДолгКонечныйОстаток КАК ДолгКонечныйОстаток,
    ВзаиморасчетыСПокупателямиОстаткиИОбороты.КредитныйДокумент.ОриентировочнаяДатаОплаты КАК ПлановаяДатаОплаты,
    ВзаиморасчетыСПокупателямиОстаткиИОбороты.Регистратор.Дата КАК ФактическаяДатаОплаты,
    ВзаиморасчетыСПокупателямиОстаткиИОбороты.КредитныйДокумент.Дата КАК ДатаОтгрузки,
    ВзаиморасчетыСПокупателямиОстаткиИОбороты.Договор.АналитикаУчета КАК АналитикаУчета,
    ВзаиморасчетыСПокупателямиОстаткиИОбороты.ДолгНачальныйОстаток,
    -ВзаиморасчетыСПокупателямиОстаткиИОбороты.АвансНачальныйОстаток КАК АвансНачальныйОстаток,
    -ВзаиморасчетыСПокупателямиОстаткиИОбороты.АвансКонечныйОстаток КАК АвансКонечныйОстаток,
    ВзаиморасчетыСПокупателямиОстаткиИОбороты.ДолгПриход + ВзаиморасчетыСПокупателямиОстаткиИОбороты.АвансПриход КАК Приход,
    ВзаиморасчетыСПокупателямиОстаткиИОбороты.КредитныйДокумент.Автор,
    ВзаиморасчетыСПокупателямиОстаткиИОбороты.КредитныйДокумент.Контрагент.ГоловнойКонтрагент,
    ВзаиморасчетыСПокупателямиОстаткиИОбороты.Регистратор.Автор
ПОМЕСТИТЬ ВТ_Взаиморасчеты
ИЗ
    РегистрНакопления.ВзаиморасчетыСПокупателями.ОстаткиИОбороты(&НачалоПериода, КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), Регистратор, , Покупатель.ЮрФизЛицо = ЗНАЧЕНИЕ(Перечисление.ЮрФизЛицо.Юрлицо)) КАК ВзаиморасчетыСПокупателямиОстаткиИОбороты
ГДЕ
    ТИПЗНАЧЕНИЯ(ВзаиморасчетыСПокупателямиОстаткиИОбороты.Регистратор) <> ТИП(Документ.РасходнаяНакладная)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_Взаиморасчеты.АналитикаУчета,
    ВТ_Взаиморасчеты.Контрагент,
    ВТ_Взаиморасчеты.Грузополучатель,
    ВТ_Взаиморасчеты.Договор,
    ВТ_Взаиморасчеты.Регистратор КАК ДокументОплаты,
    ВТ_Взаиморасчеты.КредитныйДокумент КАК ДокументОтгрузки,
    ВТ_Взаиморасчеты.СуммаОтгрузкиПоНакладной,
    ВТ_Взаиморасчеты.ДатаОтгрузки,
    ВТ_Взаиморасчеты.ПлановаяДатаОплаты,
    ВТ_Взаиморасчеты.ФактическаяДатаОплаты КАК ФактическаяДатаОплаты,
    ВЫБОР
        КОГДА РАЗНОСТЬДАТ(ВТ_Взаиморасчеты.ПлановаяДатаОплаты, ВТ_Взаиморасчеты.ФактическаяДатаОплаты, ДЕНЬ) > 0
            ТОГДА РАЗНОСТЬДАТ(ВТ_Взаиморасчеты.ПлановаяДатаОплаты, ВТ_Взаиморасчеты.ФактическаяДатаОплаты, ДЕНЬ)
        ИНАЧЕ 0
    КОНЕЦ КАК ПросроченоДней,
    ВТ_Взаиморасчеты.ДолгНачальныйОстаток,
    ВТ_Взаиморасчеты.ДолгКонечныйОстаток КАК ДолгКонтрагентаНаКонецПериода,
    ВТ_Взаиморасчеты.СуммаОплатыЗаПериод,
    ВТ_Взаиморасчеты.КредитныйДокументАвтор КАК МенеджерДокументаОтгрузки,
    ВТ_Взаиморасчеты.РегистраторАвтор КАК МенеджерДокументаОплаты,
    ВТ_Взаиморасчеты.КредитныйДокументКонтрагентГоловнойКонтрагент КАК ГоловнойКонтрагент
ИЗ
    ВТ_Взаиморасчеты КАК ВТ_Взаиморасчеты

УПОРЯДОЧИТЬ ПО
    ДолгКонтрагентаНаКонецПериода УБЫВ

Сложность возникла с отображением и настройками ресурсов, в разрезе регистратора.
Не получается таким образом настроить отчет, чтобы "Долг контрагента на конец периода" отображался корректно.
Корректно - это:
1) остаток долга по реализации (Сумма реализации - сумма всех платежек по этой реализации на конец периода) напротив каждой реализации
2) внизу в "Итоге" сумма всех задолженностей по реализациям, по контрагенту.

Сейчас у меня 1) реализовано, а вот при попытке реализовать 2) все ползет.

- Так реализована группировка в отчете: https://b.radikal.ru/b27/1906/e8/ffad63e66611.png
- Так настроена вкладка "Ресурсы": https://c.radikal.ru/c20/1906/e0/56ff9a75719c.png
Обведен проблемный ресурс, с которым не получается.
- Так выглядит отчет: https://a.radikal.ru/a39/1906/a8/caff4f2a4e87.png
В нем все хорошо, кроме того. что в Итогах пусто. И в итогах по группировкам тоже пусто.

Подскажите, как обойти этот момент?

Брать просто таблицу остатков не вариант, т.к. мне нужны регистраторы.
1 DenYuliya
 
21.06.19
18:20
В продолжение...
Пробовала так и сяк играться с настройкой "Выражения" и "Рассчитать по" ресурса "ДолгКонтрагентаНаКонецПериода" на вкладке Ресурсы.
Получается фигня.
Например, если поставить "Рассчитать по " в значение "ДокументОтгрузки, Контрагент, Общий итог", получается так: https://c.radikal.ru/c36/1906/3d/7e216f40220c.png

Откуда взялась сумма "1 878,5" - я понимаю, а вот как это обойти, не понимаю: https://b.radikal.ru/b18/1906/96/d5433fdae71f.png

Цифра "1 878,5" - это МИНИМАЛЬНОЕ значение в колонке "ДолгКонтрагентаНаКонецПериода", которое как бы при этом даже не является долгом
(по Реализации в между ДатойНАчала и ДатойОкончания было несколько платежек- Регистраторов (записи регистра), и после одной из них остаток долга составлял 1 878,5, но на КонецПериода долга уже нет, потому что следующая платежка его погасила).
При группировке по Реализации  у меня отсутствие долга (0) нормально отрабатывает, а по всему отчету почему-то берется минимальное число.
Не знаю, насколько понятно объяснила... В общем, вообще тупик, совсем не знаю, что с этим делать.
Все известные мне варианты проверила - не работает.
2 singlych
 
21.06.19
18:24
"почему-то берется минимальное число"

дык написано ж в выражении ресурса Минимум(...), вот и берется
3 DenYuliya
 
21.06.19
18:28
(2) это я понимаю. Есть другие варианты, чтобы при группировке по документу бралась не сумма всех записей по каждому из регистраторов (платежек), а
СуммаРеализации - СуммаВсехПлатежек ?
4 palsergeich
 
21.06.19
18:29
(3) Вариант то есть.
Но это всякие ВычислитьВыражение
5 DenYuliya
 
21.06.19
18:35
(2) это хорошо видно на примере https://radikal.ru/lfp/b.radikal.ru/b18/1906/96/d5433fdae71f.png/htm

3 записи в регистре:
Реализация на сумму 20 202,84 р (измерение регистра "КредитныйДокумент") - на этот момент ресурс ДолгКонтрагента = 20 202,84
Платежка на  18 324,34 (Регистратор в регистре) - на этот момент ресурс ДолгКонтрагента = 1 878,5
Платежка на  1 878,5   (Регистратор в регистре) - последняя запись на КонецПериода, долга нет.

Если я беру не Минимум, то в итоге по Реализации на КонецПериода отображается якобы долг, = сумме всех записей. Т.е. 20 202,84 + 1 878,5.
А на самом деле долга нет.

Я понимаю, почему косяк, но не понимаю, как его обойти грамотно. Или хотя бы не грамотно)).
6 DenYuliya
 
21.06.19
18:38
(4) я в курсе, о чем и писала в посте (0) - "- Так настроена вкладка "Ресурсы": https://c.radikal.ru/c20/1906/e0/56ff9a75719c.png  "
Я прямо честно, совсем не знаю, как надо-то? Про то, что существует некое "ВычислитьВыражение" - знаю, и даже пробовала его применять, одни из вариантов приведены в (0) и в (1), еще пробовала так:
1) Минимум(ВычислитьВыражениеСГруппировкойМассив("ДолгКонтрагентаНаКонецПериода", "ДокументОплаты"))
2) Сумма(ВычислитьВыражениеСГруппировкойМассив("ДолгКонтрагентаНаКонецПериода", "ДокументОплаты")) - все так же фигня.
7 DenYuliya
 
21.06.19
18:41
(4) возможно, и даже скорее всего, я просто не знаю, как правильно нужно использовать данное выражение в разрезе данной задачи. Поискала примеры в отчетах  используемой конфигурации (франчевая самопись) - ничего подходящего не нашла, вообще не используются в отчетах настройки Ресурсов.
Если вы мне подскажете или хотя бы намекнете, "куда копать" - буду оч.признательна.
8 singlych
 
21.06.19
18:46
зачем вообще минимумы
почему бы из суммы отгрузки не вычитать сумму оплат
9 DenYuliya
 
21.06.19
18:49
(8) по-идее да, но я не могу понять, как это написать в Выражение?
Пробовала использовать "Вычисляемые поля", но там получилось еще хуже(((. В "ВычисляемыхПолях" не получается получить "Сумму платежек по одной реализации", чтобы потом вычесть эту сумму из Реализации
10 DenYuliya
 
21.06.19
18:50
(8) и как бы это вообще какое-то изобретание велосипеда выходит, т.к. у меня же как-бы, по-идее, уже есть остаток на конец периода...
11 DenYuliya
 
21.06.19
18:52
(8) вычитание Суммы оплаты из Суммы Отгрузки и так происходит типовыми средствами регистра, результат по каждой из строк у меня есть.
Проблема в том, что мне нужны только последние строки как бы, итоги по каждой из реализаций, понимаете?
Идеально этот вопрос решает таблица Остатков без оборотов, но увы...
12 singlych
 
21.06.19
18:57
(9) "как это написать в Выражение"
<выражение для ресурса СуммаОтгрузки> - <выражение для ресурса СуммаОплат>
не?
13 singlych
 
21.06.19
18:59
(11) таблица Остатков без оборотов, но увы...
ну можно взять и присоединить таблицу остатков к таблице оборотов
14 DenYuliya
 
21.06.19
19:01
(13) пробовала, все тут же адски висит. Нормально пробовала, с нормальными соединениями).
Могу выложить пример.
15 DenYuliya
 
21.06.19
19:02
(12) СуммаОтгрузкиПоНакладной - Сумма(ВычислитьВыражениеСГруппировкойМассив("ДолгКонтрагентаНаКонецПериода", "ДокументОплаты"))

Так?
16 singlych
 
21.06.19
19:08
(15) начни заново
СуммаОтгрузкиПоНакладной - это что, выражение ресурса?
ДолгКонтрагентаНаКонецПериода - это что, сумма оплаты?
17 DenYuliya
 
21.06.19
19:08
(15) вообще ерунда какая-то вышла  https://b.radikal.ru/b27/1906/db/d55f58677c83.png .  

Я не понимаю, как написать вот это **:

СуммаОтгрузкиПоРеализации  - (ОБЩАЯ СУММА по каждой из Платежек в разрезе этой самой реализации)
18 DenYuliya
 
21.06.19
19:10
(16)
нет, СуммаОтгрузкиПоНакладной  - это реквизит документа Реализация. Тупо сумма документа.
ДолгКонтрагентаНаКонецПериода  - это СуммаОтгрузки (которая = реквизит документа Реализация "Сумма") - сумма всех оплат по документу отгрузки.

Сумма документа отгрузки - сумма всех документов оплат, привязанных к этому документу реализации.
19 DenYuliya
 
21.06.19
19:13
(16) хотя я несколько в заблуждение ввела в (18).
Если смотреть с точки зрения объекта Регистр накоплений Взаиморасчеты, то
ДолгКонтрагентаНаКонецПериода  - это последняя запись ресурса ВзаиморасчетыСПокупателямиОстаткиИОбороты.ДолгКонечныйОстаток в разрезе документа отгрузки.
20 DenYuliya
 
21.06.19
19:14
Структура регистра: https://b.radikal.ru/b17/1906/35/2ccf46da49a0.png
21 DenYuliya
 
21.06.19
19:15
К (20) - измерение "КредитныйДОговор" - это и есть документ Реализация.
Платежка - это один из регистраторов движения регистра. Но Реализация - тоже регистратор (одновременно может быть и регистратором движения, и измерением).
22 singlych
 
21.06.19
19:20
да пофиг на метаданные
я тебе про выражения ресурсов в СКД говорю
1. найди выражение ресурса СуммаОтгрузки
2. найди выражение ресурса СуммаОплаты
вычти одно из другого
23 singlych
 
21.06.19
19:22
типа там
Максимум(СуммаОтгрузки) - Сумма(СуммаОплаты), рассчитывать по ДокументОтгрузки
Сумма(ВычислитьВыражениеСГруппировкойМассив("Максимум(СуммаОтгрузки)", "ДокументОтгрузки")) - Сумма(СуммаОплаты), рассчитывать по Общие
или что там у тебя
24 DenYuliya
 
21.06.19
20:33
(23), спасибо, попробую так, примерно направление поняла!
Уже в понедельник, домой ушла...
25 Dmitry1c
 
22.06.19
08:05
(20) нафига разрез регистра - дата оплаты?
26 DenYuliya
 
24.06.19
09:59
(25) да, для понимания, что уже оплачено на дату и полностью, или нет.
27 DenYuliya
 
24.06.19
10:12
(25) похоже, я не так поняла вопрос. Речь про измерение "Ориентировочная дата оплаты"? Это отсрочка по договору с момента отгрузки. Почему это сделано именно в таком виде - не могу сказать, не знаю.
28 DenYuliya
 
24.06.19
11:47
(23) спасибо большое, так взлетело.
Я просто не знала, что можно комбинировать в Выражениях таким образом.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший