|
Сравнение записей регистра сведений в запросе | ☑ | ||
---|---|---|---|---|
0
Adecvator
05.06.15
✎
15:39
|
Подскажите плз. как организовать цикл в запросе, понимаю что через вложенный запрос, но дальше не знаю (
|
|||
1
Fragster
гуру
05.06.15
✎
15:39
|
шта?
|
|||
2
Господин ПЖ
05.06.15
✎
15:40
|
fetch в 1с не завозили
|
|||
3
butterbean
05.06.15
✎
15:42
|
полное соединение по всем интересующим полям + проверка на null... если я правильно понял задачу
|
|||
4
Одинесю
05.06.15
✎
15:43
|
Наконец пятничная ветка!
|
|||
5
Adecvator
05.06.15
✎
15:44
|
Если Запись1 >= Запись2 Тогда
Итого = Итого + (Запись2 - Запись1); Иначе Итого = Итого + Запись2; КонецЕсли; |
|||
6
mehfk
05.06.15
✎
15:46
|
в (5) какая-то байда, похжая на нарастающий итог, но есть мнение что эту байду можно сделать в СКД
|
|||
7
ВРедная
05.06.15
✎
15:51
|
(5) Интересно, в чем смысл функции?
Она проходит по списку чего-то, и если первая запись больше или равна второй, то разницу между записями нужно вычесть из итога, иначе нужно добавить в итог вторую (большую) запись Моя фантазия мне даже не намекает на то, что бы это могло автоматизировать |
|||
8
mistеr
05.06.15
✎
15:53
|
(5) Про ВЫБОР почитай.
|
|||
9
shuhard_серый
05.06.15
✎
15:55
|
(7) чё так слабо
- биллинг - СКУДЫ - скидки |
|||
10
ВРедная
05.06.15
✎
15:57
|
(9) Ну давай экономический пример включающий вот этот код:
Если Запись1 >= Запись2 Тогда Итого = Итого + (Запись2 - Запись1); Иначе Итого = Итого + Запись2; КонецЕсли; Для скидок или биллинга. Если первый платеж не меньше второго, то некий итог надо уменьшить на их разницу. Если меньше - то этому некому итогу надо добавить второй платеж. Вопрос: что показывает итог? |
|||
11
ЧеловекДуши
05.06.15
✎
16:05
|
(5) Дешевле в цикле, перебором :)
Формула какая то не полная, "Огласите весь список, пжалуста" (с) |
|||
12
Adecvator
05.06.15
✎
16:08
|
(11) чего не полная в конце месяца оборот по карточке обнуляется, надо вычислить общий оборот.
|
|||
13
Fragster
гуру
05.06.15
✎
16:16
|
Выбрать
Регистр.СуммаПриход Из РегистрНакопления.Регистр КАК Регистр |
|||
14
Adecvator
05.06.15
✎
16:22
|
(13) просто просуммировать не подойдет, т.к. в течении месяца был нарастающий итог, а в конце месяца он обнуляется.
|
|||
15
Fragster
гуру
05.06.15
✎
16:24
|
по этому СуммаПриход
|
|||
16
Adecvator
05.06.15
✎
16:26
|
(15) дело имеем с регистром сведений (
|
|||
17
Fragster
гуру
05.06.15
✎
16:28
|
(16) сделайте на РН. а то если в РС хранится "накопленный итог" на каждый день - то это ЖП. проще всего добавить реквизит с изменением, и его просуммировать.
|
|||
18
shuhard_серый
05.06.15
✎
16:31
|
(10) см.(12)
ну чё - съела ? биллинг в чистом виде сделанный конечно через ж.опу |
|||
19
Fragster
гуру
05.06.15
✎
16:32
|
либо просуммировать последние записи за каждый период перед обнулением
|
|||
20
ВРедная
05.06.15
✎
17:01
|
(18) ОК.. давайте с цифрами
в регистре оборот по дням нарастающим итогом, так: 100 110 150 300 0 - обнуление Запись1 - это первая видимо, Запись2 - вторая Начало - Итог = 0 1. 110 >= 100 = истина Итог = 0 + (100 - 110) = -10 2. 150 >= 110 = истина Итог = -10 + (110 - 150) = -50 3. 300 >= 150 = истина Итог = -50 + (150 - 300) = -200 4. 0 >= 300 = ложь Итога = -200 + 300 = 100 ... Что это? |
|||
21
shuhard_серый
05.06.15
✎
17:05
|
(20) балдой об стенку побейся
тебе же русским языком ТС всё объяснил |
|||
22
ВРедная
05.06.15
✎
17:06
|
(21) Да, страшно представить, как и что он этой формулой считает. а так все норм
|
|||
23
D_E_S_131
05.06.15
✎
17:19
|
(20) У ТС Запись2-Запись1 в (5), а у тебя наоборот. В итоге "Итог" будет 500 — а ИМХО это есть оборот за период выборки записей.
|
|||
24
itlikbez
05.06.15
✎
17:21
|
(23) У нее как у ТС. Видимо, ТС слегка перепутал.
|
|||
25
Fragster
гуру
05.06.15
✎
17:25
|
(23) нет, "оборот" будет 300, так как первая 100 - это тоже накопительный итог. правильно найти все записи перед обнулением, добавить еще последнюю запись и просуммировать их.
|
|||
26
Fragster
гуру
05.06.15
✎
17:26
|
но проектировщик этого регистра сказочный дятел. регистры нужно проектировать от того, какая информация потом из них будет тягаться (+ делать задел на будущее).
|
|||
27
ВРедная
05.06.15
✎
17:26
|
(23) У меня как раз так, как у ТС.
Он в условии определяет, что запись 1 >= Запись 2, а потом вычитает из меньшего большее |
|||
28
ВРедная
05.06.15
✎
17:27
|
(25) Как я поняла - у него накопительный итог, т.е. складывать все нельзя, надо найти последнюю запись перед нулем - она и будет итогом месяца.
|
|||
29
Fragster
гуру
05.06.15
✎
17:27
|
например если запихивать не итог, а собственно изменение - то получить "итог" можно суммой за последний период. а еще можно отдельный РС с "итогами" хранить. а вот сумму за несколько периодов - получать намного легче, чем в структуре автора
|
|||
30
Fragster
гуру
05.06.15
✎
17:28
|
(28) да, я так и пишу. только месяц в твоем примере один, а у автора - много, видимо
|
|||
31
ВРедная
05.06.15
✎
17:31
|
(30) да тут регистр накопления просится, конечно.
|
|||
32
ВРедная
05.06.15
✎
17:32
|
(30) точно, это я уже в пятницу читаю через слово :)
|
|||
33
Ildarovich
06.06.15
✎
10:25
|
Несмотря на странный вид этого реккурентного соотношения, это всего лишь задача нарастающего итога, осложняющегося его сбрасыванием в конце месяца. Никакого сравнения записей здесь не нужно. Нужна помесячная группировка с агрегатной функцией "максимум".
Если нужен общий итог, то запрос будет таким: ////////////////////// ВЫБРАТЬ СУММА(ВложенныйЗапрос.ИтогМесяца) КАК ИтогВсего ИЗ (ВЫБРАТЬ МАКСИМУМ(Записи.РастущаяВМесяцеСумма) КАК ИтогМесяца ИЗ РегистрСведений.Записи КАК Записи СГРУППИРОВАТЬ ПО МЕСЯЦ(Записи.Период)) КАК ВложенныйЗапрос //////////////////// А если нужно из помесячно-нарастающих итогов получит вообще-нарастающие, то таким: /////////////////// ВЫБРАТЬ ЕСТЬNULL(ВложенныйЗапрос.ИтогМесяца, 0) + Записи.РастущаяВМесяцеСумма КАК РастущаяСумма ИЗ РегистрСведений.Записи КАК Записи ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ МЕСЯЦ(Записи.Период) КАК Месяц, МАКСИМУМ(Записи.РастущаяВМесяцеСумма) КАК ИтогМесяца ИЗ РегистрСведений.Записи КАК Записи СГРУППИРОВАТЬ ПО МЕСЯЦ(Записи.Период)) КАК ВложенныйЗапрос ПО (ВложенныйЗапрос.Месяц < МЕСЯЦ(Записи.Период)) //////////////////// |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |