Имя: Пароль:
1C
1С v8
Срез последних - не совсем срез?
🠗 (mikecool 16.08.2021 15:57)
,
0 brainguard
 
28.07.21
23:39
Только сейчас обнаружил, что если в запросе будут не все измерения, то срез последних "превращается в тыкву". Например, измерения "поставщик", "номенклатура". Делаем запрос по одному измерению "номенклатура" и не получаем срез последних по этому измерению. Это действительно так? Или я что-то "неправильно готовлю" (версия платформы 8.3.18.1208)?
1 youalex
 
28.07.21
23:44
Срез РС всегда возвращается по всем сочетаниям измерений, в отличие от вирт. таблиц РН, например.
2 brainguard
 
28.07.21
23:51
(1) Поленились, значит. Буду знать
3 PR
 
29.07.21
01:15
(2) Кто поленился? Ты прочитать документацию?
4 Merkalov
 
29.07.21
01:42
(1) По РН вообще агрегируются ресурсы по не выбранным измерениям.
5 Жан Пердежон
 
29.07.21
01:45
(2) > я что-то "неправильно готовлю"?
да
6 brainguard
 
29.07.21
02:39
(3) Разработчики платформы, кто!
7 brainguard
 
29.07.21
02:41
(5) Что именно? Вроде только что выяснили в (1), что срез именно таким образом недоделан. У вас есть какая-то другая информация? Какая?
8 Ненавижу 1С
 
гуру
29.07.21
03:18
При неполном наборе измерений день пропадает уникальность, а значит срез последних построить нельзя
9 Гобсек
 
29.07.21
05:00
(8) идеологи от фирмы 1С так решили
10 Мимохожий Однако
 
29.07.21
06:25
(0) Если не выполнять правила, заложенные в систему, то не стоит удивляться, что результат неверный. Если сказано, что нужны ВСЕ измерения, то будь добр выполнять и не удивляйся, если забыл снять штанишку до  того как писаешь.
11 Ненавижу 1С
 
гуру
29.07.21
07:20
(9) ну построили такую модель, попробуйте предложить свою с мадемуазелями и преферансом
12 brainguard
 
29.07.21
08:47
(8) Вы неправы. Срез последних никоим образом не зависит от уникальности. Исходные данные для получения среза всегда не уникальны
13 brainguard
 
29.07.21
08:48
(9) Если бы решили. Просто поленились
14 brainguard
 
29.07.21
08:50
(10) Разработчики решили, что вход с улицы должен всегда вести прямо на последний этаж. Почему бы в этом месте не поудивляться?
15 Дух пролетариата
 
29.07.21
08:51
Хыхы, ну да, конечно, один из важных элементов платформы именно разработчики захотели сделать именно таким.

Мне это напоминает ситуацию, когда из института приходит мальчик-кодер, видит корпоративную систему издалека и тут же заявляет, что делали её идиоты и надо всё переделывать.
16 Гобсек
 
29.07.21
08:56
(11) когда-то в молодости я писал свои модели, но все кончилось тем, что занимаюсь 1С-ом

Правила устанавливают те, у кого решение взлетело и выдержало испытание временем
17 Ненавижу 1С
 
гуру
29.07.21
08:57
(12) слышали про такое, что набор Период+Измерения являются уникальным ключом на уровне платформы?
18 brainguard
 
29.07.21
09:04
(17) Вы упорствуете в заблуждении. Уникальность и срез - это две НЕЗАВИСИМЫХ друг от друга фичи.

Исходные данные
01.01.2021 ООО Ромашка Свистелка 100 руб.
01.02.2021 ООО Одуванчик Свистелка 105 руб.
01.03.2021 ООО Ромашка Свистелка 106 руб.

Срез по двум измерениям
01.02.2021 ООО Одуванчик Свистелка 105 руб.
01.03.2021 ООО Ромашка Свистелка 106 руб.

Срез по одному измерению
01.03.2021 Свистелка 106 руб.

В этом месте, если вы сделаете запрос к срезуПОСЛЕДНИХ с одним измерением 1С выдаст
01.02.2021 Свистелка 105 руб.
01.03.2021 Свистелка 106 руб.
19 Kassern
 
29.07.21
09:18
(18) И это нормальная логика. К примеру: Есть некий Вася, который работает на 2 рабочих местах.
01.03.2020 Кабинет1 Вася
01.04.2020 Кабинет2 Вася

Если вы сделаете срез последних по этому регистру с отбором по Васе, то у вас выйдет 2 строчки, проще говоря 1ска сделает срез по каждому измерению (последний раз когда вася в кабинет1 и кабинет2 работал). Даже если вы не выберите поле кабинета, то все равно в результате будет 2 строчки.
Еще раз отмечу, что СрезПоследних в 1с представляет из себя последние данные на указанную дату для УНИКАЛЬНОЙ комбинации измерений.
20 PuhUfa
 
29.07.21
09:18
(18) А потом у тебя будут исходные данные:
01.03.2021 ООО Ромашка Свистелка 106 руб.
01.03.2021 ООО Одуванчик Свистелка 105 руб.

И срез последних по твоей свистелке что должен будет вернуть? цены через запятую?
21 Kassern
 
29.07.21
09:20
(20) по его "логике" последняя запись в таблице походу)
22 Галахад
 
гуру
29.07.21
09:22
(0) Поддержу. Да что этот 1С себе позволяет! Придумывают не удобную для меня фигню.
23 trad
 
29.07.21
09:23
(20) присоединюсь. Ровно это же хотел спросить
24 brainguard
 
29.07.21
09:25
(19) Еще раз. Уникальность и срез - две независимых по самой своей природе фичи. Регистр сведений поддерживает уникальность - это одна его фича. Далее, регистр сведений, если поставить галку, может генерить срез последних. Это другая фича. Нет никакого смысла увязывать эти две фичи друг с другом. Нет такого правила, срез последних должен строиться по всем измерениям. Банальная лень разработчиков и просто дырка в платформе
25 Мимохожий Однако
 
29.07.21
09:26
(14) Продолжу еще раз. Сначала надо выполнить то, что в инструкции, а потом удивляться. Если ты отклоняешься от инструкции по разным причинам (незнание, несогласие и т.п.), то удивляться не нужно.
26 Мимохожий Однако
 
29.07.21
09:27
(24) Не надо трактовать понятия на свой лад. Тогда и не будет "дырок".
27 Kassern
 
29.07.21
09:27
(24) Есть понятие Срезпоследних, у него есть свое определение данное 1с. В нем четко сказано, как срез отрабатывает. Но вы придумали свое определение срезу и удивляетесь, почему так не работает...
28 brainguard
 
29.07.21
09:27
(20) Любую
29 Мимохожий Однако
 
29.07.21
09:28
(28) Поясни )
30 Вафель
 
29.07.21
09:29
(28) нету такой функции в запросах 1с
31 Kassern
 
29.07.21
09:30
(28) ну круто что, возьмем регистр цен номенклатуры и не отберем по виду цен, а потом возьмем любую на дату, круто же)
32 PuhUfa
 
29.07.21
09:30
(28) А чего ты тогда паришься? Бери любую запись из того что тебе сейчас возвращает срезпоследних -))
33 Kassern
 
29.07.21
09:30
(31) а если еще и в валюте есть цены, то еще круче))
34 brainguard
 
29.07.21
09:32
(20) Спасибо! Навели на мысль, где я "не умею готовить"
35 ДенисЧ
 
29.07.21
09:32
(24) "Нет такого правила, срез последних должен строиться по всем измерениям"
Есть. И ничего ты с этим не поделаешь.
36 VladZ
 
29.07.21
09:32
Вообще не понимаю, что тут можно обсуждать:
Разработчик предоставил нам механизм, который работает определенным образом. На этом всё.
37 brainguard
 
29.07.21
09:33
(35) Это - не баг, это - фича ))))
38 PuhUfa
 
29.07.21
09:34
(36) А поговорить? И вообще... 1С еще сырая (с)
39 brainguard
 
29.07.21
09:35
(38) Воистину сырая
40 mikecool
 
29.07.21
09:35
(37) напиши свой срез, за то время, как закидывать на вентилятор уже бы справился
41 ДенисЧ
 
29.07.21
09:35
(37) Это описанное в документации поведение. И если оно тебе не нравится - у тебя есть два пути.
42 Вафель
 
29.07.21
09:36
Эхх придется самому срез писать.
Кстати не самая тривиальная задача
43 mikecool
 
29.07.21
09:36
+40 раньше сталкивался, что на постгри запрос возвращал не последнюю запись, а тот же запрос на мсскл - последнюю
надо и тут похоливарить
44 Вафель
 
29.07.21
09:37
Но конечно сеньор 1сник должен это с закрытыми глазами делать
45 Вафель
 
29.07.21
09:37
(43) так ордер бай нужно таки указывать
46 ДенисЧ
 
29.07.21
09:39
(43) Это документировано тоже...
47 kumena
 
29.07.21
09:44
Напишите в 1с, что у них не хватает еще одной функции - срез совсем последних! )))
48 ptiz
 
29.07.21
10:48
(28) Гениальное решение. Бери тогда МАКСИМУМ() или МИНИМУМ() и не парься.
49 brainguard
 
29.07.21
10:57
(48) Эээ...

01.02.2021 Свистелка 105 руб.
01.03.2021 Свистелка 106 руб.

Все-таки не срез последних. А в случае (20) можно брать все записи, тогда будет

01.03.2021 Свистелка 105 руб.
01.03.2021 Свистелка 106 руб.

Или действительно МНИМУМ(МАКСИМУМ), тогда
01.03.2021 Свистелка 105 руб.
или
01.03.2021 Свистелка 106 руб.

И первое и второе и третье будут самыми настоящими срезами последних. Все таки - это дырка в платформе
50 brainguard
 
29.07.21
11:04
(36) Язык 1С - это жест благотворительности со стороны разработчиков. Он существует, пока мы им пользуемся
51 brainguard
 
29.07.21
11:04
(50) не жест
52 trad
 
29.07.21
11:06
(49) не выдумывай, нет никакой дырки в платформе.
Срез работает логично и правильно.

Если тебе нужно свернуть срез последний, сворачивай как тебе надо и агрегируй ресурсы как тебе надо. В общем случае это (сворачивание) не решается, поэтому и нет его.
53 brainguard
 
29.07.21
11:28
(52)
Исходные данные
01.01.2021 ООО Ромашка Свистелка 100 руб.
01.02.2021 ООО Одуванчик Свистелка 105 руб.
01.03.2021 ООО Ромашка Свистелка 106 руб.
01.03.2021 ООО Василек 107 руб.

Что больше похоже на срез последних?

01.02.2021 Свистелка 105 руб.
01.03.2021 Свистелка 106 руб.
01.03.2021 Василек 107 руб.

или

01.03.2021 Свистелка 106 руб.
01.03.2021 Василек 107 руб.
54 brainguard
 
29.07.21
11:28
Исходные данные
01.01.2021 ООО Ромашка Свистелка 100 руб.
01.02.2021 ООО Одуванчик Свистелка 105 руб.
01.03.2021 ООО Ромашка Свистелка 106 руб.
01.03.2021 ООО Василек Свистелка 107 руб.

Что больше похоже на срез последних?

01.02.2021 Свистелка 105 руб.
01.03.2021 Свистелка 106 руб.
01.03.2021 Свистелка 107 руб.

или

01.03.2021 Свистелка 106 руб.
01.03.2021 Свистелка 107 руб.
55 ДенисЧ
 
29.07.21
11:29
(54) Ни одно из. Это больше похоже на твои фантазии
56 Ненавижу 1С
 
гуру
29.07.21
11:31
(28) системный поход, че
57 kumena
 
29.07.21
11:33
(54) ты же сам можешь свой срез написать, все же виртуальные таблицы это вьюхи от 1с, они ничего волшебного не делают, точно так же выбирают данные из физических таблиц.
58 trad
 
29.07.21
11:34
(53) поясни про последнюю строку исходных данных. Там что, второе измерение - пустое?
59 Ненавижу 1С
 
гуру
29.07.21
11:35
(49) дырка в голове
60 trad
 
29.07.21
11:37
(54) больше похоже на срез последних:
01.02.2021 ООО Одуванчик Свистелка 105 руб.
01.03.2021 ООО Ромашка Свистелка 106 руб.
01.03.2021 ООО Василек Свистелка 107 руб.
- чем оно и является
61 brainguard
 
29.07.21
11:40
(60) Но 1С выдает

01.02.2021 Свистелка 105 руб.
01.03.2021 Свистелка 106 руб.
01.03.2021 Свистелка 107 руб.

И это ни на что не похоже, согласитесь
62 brainguard
 
29.07.21
11:40
(58) Исправил в (54)
63 trad
 
29.07.21
11:58
(61) нет. Тут ты показываешь то что выдает твой запрос, а не срез последних.
Срез последних выдает (60), а уже ты выводишь только одно измерение из двух.
64 Kassern
 
29.07.21
12:00
(63) именно так, но ТС не хочет это понять походу...
65 brainguard
 
29.07.21
12:04
(63) Получается, что срез последних выдает не срез последних
66 Kassern
 
29.07.21
12:04
(65) откуда вы взяли определение среза последних? Из своей "логики"?
67 brainguard
 
29.07.21
12:05
(66) Из значения слова "последний"
68 trad
 
29.07.21
12:05
(65) ты или тролишь или действительно не понимаешь
69 Kassern
 
29.07.21
12:06
(67) последний для уникального сочетания измерений, что не так?
70 Kassern
 
29.07.21
12:07
(68) видимо, когда занимаешься преподавательской деятельностью и имеешь множество сертификатов 1с, то по другому начинаешь смотреть на методы 1с))
71 brainguard
 
29.07.21
12:08
(68) Ни то, ни другое. Срез последних - это когда выдаются последние значения. Что делать, когда таких значений несколько - это тема для обсуждения. Но оставлять так, как сейчас реализовано - это неправильно
72 brainguard
 
29.07.21
12:09
(69) А должен быть последний для заданного тобой набора измерений
73 Kassern
 
29.07.21
12:14
(72) кому должен быть? Где вы такое определение взяли? Вы с тем же успехом можете сказать, что кнопка пуск в винде должна быть по середине экрана, вас спросят почему, а вы мол так же "логичней", пуск же должен быть на самом видном месте!
74 Kassern
 
29.07.21
12:15
в общем, есть метод, описанный и названный 1с. Этот метод отрабатывает, как и был задуман. Все что вы пишите, это ваши хотелки, которые при желании можете реализовать запросом.
75 brainguard
 
29.07.21
12:16
(73) Должен тем, кто пользуется языком
76 ДенисЧ
 
29.07.21
12:16
(74) "Чтобы выключить компьютер, нажмите кнопку Пуск" (с)
77 ДенисЧ
 
29.07.21
12:16
(75) Надо не только языком болтать, в смысле пользоваться. Но и мозги включать. Правда, похоже, для тебя эта задача невыполнима.
78 Hornit
 
29.07.21
12:19
(73) А ещё по нажатию на неё должен запускаться видимо пуск ракет, а то какого .. она называется "Пуск" а не "Выключение")))
(75) Докопаться до значения слова и это в русскоязычном языке. Чтоже с вами будет если программировать на англ.
79 trad
 
29.07.21
12:20
(75) я пользуюсь. Реализация среза - правильная. То что ты хочешь - хрень.
80 brainguard
 
29.07.21
12:22
(79) Но и я тоже пользуюсь
81 Kassern
 
29.07.21
12:23
(80) всем не угодишь
82 trad
 
29.07.21
12:23
(80) но ты проиграл ))
83 brainguard
 
29.07.21
12:24
(81) А не надо всем
84 brainguard
 
29.07.21
12:24
(82) А ты и вовсе не играл
85 Kassern
 
29.07.21
12:24
(82) погоди, вот скоро будет новый убивца 1с с блекджеком и "правильным" срезом последних)
86 Said_We
 
29.07.21
12:25
(0) Я так понимаю тебе нужны две таблицы:
То что сейчас называется срез - назвать НикальностьПоследних(), А то что ты хочешь назвать СрезПоследних()
87 VladZ
 
29.07.21
12:26
(71) Срез последних формируется по всем реквизитам, заданным в структуре регистра. Только такой функционал заложен в платформу.
Это не дыра, и не ошибка. Это штатное поведение программы.

Если тебе нужно получать срез последних не по всем реквизитам - получай запросом.
88 Said_We
 
29.07.21
12:26
К (86) Описался
"То что сейчас называется срез - назвать УникальностьПоследних(), А то что ты хочешь получить на выходе назвать СрезПоследних()".
89 Said_We
 
29.07.21
12:30
(0) Представь что у тебя чистый SQL, и нет там никаких ни срезов последних, ни уникальностей последних. Красота! :-)
Из минусов, только то что в 1С нет чистого SQL, а есть сильно обрезанный. :-)

1С реализовала Срез последних так как задумали и назвали они это так как назвали.
90 brainguard
 
29.07.21
12:31
(87) Это - штатная ошибка. Назовем это так )))
91 Said_We
 
29.07.21
12:32
(90) Нет. Это максимум - не совсем корректно назвали Срез срезом.
92 brainguard
 
29.07.21
12:32
(88) Зачем плодить лишние сущности? Достаточно того, чтобы срез последних выдавал действительно последние записи и все
93 Said_We
 
29.07.21
12:33
(92) А если нужны уникальности последних?
94 brainguard
 
29.07.21
12:35
(93) Задай в запросе полный комплект измерений
95 Said_We
 
29.07.21
12:36
(94) А если мне на выходе нужен не весь комплект измерений, а уникальность нужна вся?
96 brainguard
 
29.07.21
12:37
(95) Дай кейс на этот случай. Я пока не вижу - где это могло бы быть полезно
97 Said_We
 
29.07.21
12:38
(0) 1С реализовала то, что реализовала. Другого пока ничего нет.
Пишите им (1С) на телеграмм канал, что бы вы хотели видеть в будущем. Такой канал от самой фирмы 1С есть.
98 Said_We
 
29.07.21
12:40
(96) Например, анализ того как часто по тем или иным измерениям происходят изменения в разрезе остальных измерений.
99 brainguard
 
29.07.21
12:40
(97) Я лучше в Спортлото напишу )))
100 brainguard
 
29.07.21
12:41
(98) Мне кажется, что этот кейс слабее моего
101 Said_We
 
29.07.21
12:41
(96) На самом деле всегда проектируют Рс так что бы нужен был срез по всем измерениям. Если вам нужен не по всем, то надо смотреть сам РС.
102 Kassern
 
29.07.21
12:41
(96) просто поймите, чтобы получить одну запись верную надо полностью отобрать измерения. Тогда вы получите верный последний ресурс. Если же вы не отобрали, тогда что у вас может быть не верная 1 запись, что 1с выплюнет несколько записей, из которых вам нужна 1 а остальные не нужные. В общем, в любом кейсе вам все равно нужно указывать все измерения для получения верной 1 записи.
103 Said_We
 
29.07.21
12:42
(99) Если не напишите, то они и не узнают о такой необходимости. Пишите им в 1С обязательно.
104 ДенисЧ
 
29.07.21
12:43
(103) Обязательно СС:Спортлото, Лига сексуальных реформ не забыть добавиьт...
105 Said_We
 
29.07.21
12:48
(100) см. (101)
Если бы 1С поддерживал все конструкции стандартного SQL, то такими таблицами как СрезПоследних и СрезПервых вы бы не могли не пользоваться, а легко написать свой запрос, который бы вытащил необходимые вам данные. Сейчас тоже можно, но с левыми JOIN.
106 K1RSAN
 
29.07.21
12:54
А я хочу, чтобы машина могла ехать влево и вправо без поворота. Но это почему-то никто не сделал
107 Said_We
 
29.07.21
12:56
(100) Если брать ваше трактование среза, то в срезе Последних в платформе 1С сейчас есть возможность указать только Период и Условие (отбор), но нет возможности указать перечень измерений, в разрезе которых необходимо считать это срез. То что вы какие-то поля указываете в ВЫБРАТЬ, это не имеет ровным счетом никакого отношения в самому срезу, так как ВЫБРАТЬ выполняется уже позже на основе результата из Среза.
Надеюсь так понятно объяснил?
108 Said_We
 
29.07.21
13:01
К (105) Описался
"вы бы МОГЛИ не пользоваться, "
109 Yardman
 
29.07.21
13:02
(107) При том что автора (0) не поддерживаю, аргумент на самом деле слабый.
Например, в таблице остатков тоже не указываются измерения - но ресурсы тем не менее сворачиваются по задействованным измерениям.

Просто исходная постановка вопроса в (0) и дальнейшие уточнения про "последние" записи бредовая.
В СУБД ведь нет такого понятия как последняя вообще запись, есть только последняя при какой-то сортировке.
Ну а как уже много раз в этой ветке написали - при отсутствии уникальности в полях сортировки - сортировка будет не стабильной.
Т.е. такой срез будет (как минимум время от времени) выдавать рандомные записи.
110 ptiz
 
29.07.21
13:04
(107) У ТС проблема с логикой. Он хочет "какую-нибудь" запись в случае совпадения периодов.
111 Said_We
 
29.07.21
13:13
(109) Ещё раз прочитай внимательно (107).
1С реализовала срез последних так как она его реализовала. Если не в разрезе всех измерений необходимо вытаскивать срез, значит как-то странно спроектирован РС.

Что такое СрезПоследних с точки зрения чтения в языке запросов 1С - по большому счету это подзапрос. Реализован технически он иначе, но это НЕ с точки зрения его понимания при написании запроса.
Если упрощенно, то срез это вот такая некая запись:

ВЫБРАТЬ
     СРЕЗПОСЛЕДНИХ.Поле
    ,....
ИЗ
    (ВЫБРАТЬ
          т.Измерение1, т.Измерение2, ... ,т.ИзмерениеN
         ,т.Ресурс1, т.Ресурс2,...,т.РесурсN
         ,т.Реквизит1, т.Реквизит2,....,т.РеквизитN
     ИЗ
     ...
         <Условие на период>
         <Условие на прочие поля>
     ...
    ) КАК СРЕЗПОСЛЕДНИХ

(110) Да это понятно. Я пытаюсь уже с другой стороны объяснить.
112 Said_We
 
29.07.21
13:30
(109) "Например, в таблице остатков тоже не указываются измерения" - в остатках есть агрегатная функция SUM() по ресурсам. Всё остальное хотя бы можно свернуть. И не надо таблицу остатков воспринимать как подзапрос по аналогии с РС - это не так.

В РС нет никаких агрегатных функций. Никак и ни чего свернуть нельзя.

Вот так в 1С реализованы дополнительные источники данных и так работает язык запросов. Так он задуман и так он всех устраивает.

Повторюсь уже в третий раз. Если необходимо тащить данные из РС не по всем измерениям, то смотрите на структуру регистра или он спроектирован не так как необходимо, либо для решаемой задачи необходим другой РС.
113 brainguard
 
29.07.21
13:39
(112) В регистре два измерения "Поставщик" и "Номенклатура". Иногда нужны последние цены по двум измерениям, а иногда только по "Номенклатуре". Так бывает... почти всегда. В реальном мире сущности так соотносятся друг с другом. При вашем подходе получается, что я должен создать и поддерживать отдельный регистр с одним измерением. А теперь представьте что у меня четыре измерения. Сколько я должен буду создать дополнительных регистров?
114 серый КТУЛХУ
 
29.07.21
13:54
типичный случай разрухи в голове. причем даже вопреки разжевыванию.
по таблице - срез последних значений таблицы по всем измерениям таблицы.
прочее - производное от среза последних. называть их "срезами последних" - глупость.
115 серый КТУЛХУ
 
29.07.21
13:54
"по всем сочетаниям измерений"
116 Said_We
 
29.07.21
14:02
(113) Вы не слушаете даже. И выше писали и в (110) коротко даже резюмировали. Вы это в упор не видите.
117 brainguard
 
29.07.21
14:10
(116) Что там резюмировали? Что моя схема выдаст дубли? Так и 1С сейчас выдает дубли. Только 1С выдает еще и старые дубли
118 Said_We
 
29.07.21
14:22
(117) Неа.... резюмировали, то что если выдавать НЕ дубли, как Вам необходимо, то что?
"какую-нибудь" запись.
"какую-нибудь" - это какую? Какая из записей с разным значением ресурса будет более правильная?

Я уже и с другой стороны объяснить пытался. Но всё тщетно.

Считайте что для Вас среза не существует, есть просто таблица с движениями. Пишите свой срез. Шутка. :-)
119 brainguard
 
29.07.21
15:36
(118) Есть три варианта решения вопроса дубля:

1. Оставить дубли
2. Выдавать максимум
3. Выдавать минимум

Меня бы устроил любой вариант
120 Said_We
 
29.07.21
15:42
(119) Так они все есть.
1. Как и есть.
2. Примени в выборке к полю ресурса Макс()
2. Примени в выборке к полю ресурса Мин()
121 Said_We
 
29.07.21
15:44
Короткий текст запроса брось сюда если есть сложности. Подскажут как взязть максимум или минимум.
122 Вафель
 
29.07.21
15:45
самое сложное в этой задаче, если есть несколько ресурсов и нужно вернуть все ресурсы по 1 записи, а не произвольным образом (мин-макс)
123 brainguard
 
29.07.21
15:48
(121) У меня (в отличии от 1С) сложностей нет
124 Kassern
 
29.07.21
15:48
(122) не используй срез, а просто обратись к регистру и получи нужные ресурсы за период, не понимаю, что тут сложного?
125 brainguard
 
29.07.21
15:48
(121) Но все равно, спасибо!
126 Вафель
 
29.07.21
15:49
(124) я уже и не про срез, а про решение задачи.
те запрос с условиями (122) будет сложнее чем без них
127 Вафель
 
29.07.21
15:49
если (122) не нужно, то проще взять срез и его свернуть взяв МАКС по ресурсу
128 brainguard
 
29.07.21
15:49
(124) Я решал (и решил, еще до того, как написал сюда) задачу именно среза, и именно по одному измерению
129 brainguard
 
29.07.21
15:50
(127) Срез вернет лишние записи (не последние)
130 Kassern
 
29.07.21
15:50
(128) просто вы по своему поняли определение среза и не удосужились прочитать официальную инфу по данному методу. Вот и суть всей этой ветки.
131 Вафель
 
29.07.21
15:51
(129) он вернет, а потом ты сгруппируешь
132 Kassern
 
29.07.21
15:52
(129) это для вас они лишние, а по логике 1с они не лишние, а кому то даже очень нужные. Это вам не регистр накопления, где можно пропустить какие то измерения и ресурс чудесным образом сложится. В РС все должно быть точно и не должно быть неопределенностей в результате
133 Вафель
 
29.07.21
15:57
(131) хотя нет, не сработает, там период может же быть другой.
надо самому разворачивать срез
134 Сергиус
 
29.07.21
16:13
(18)Это логично в плане начально заданной структуры. Если очень хочется, можно сделать группировку и взять Максимум по периоду.
135 серый КТУЛХУ
 
29.07.21
16:20
так не понимать - это надо талант иметь. да что там талант - талантище!
136 1CnikPetya
 
29.07.21
16:28
(119) А я хочу Среднее.
137 mistеr
 
29.07.21
16:28
Я один так и не понял, какого поведения ожидал ТС? И что он понимает под "срез по одному измерению"?
138 Kassern
 
29.07.21
16:32
(137) ну типа есть у вас:
10.05.2021 Закупочная морковь 45р
11.05.2021 Закупочная морковь 46р
10.05.2021 Продажная морковь 60р
11.05.2021 Продажная морковь 63р
По "логике" ТС, при отборе среза последних по морковке он хочет чтобы 1ска однозначна выдала лишь:
11.05.2021 Продажная морковь 63р
Почему он это требует от нее я хз. 1с здорового человека выдает
11.05.2021 Закупочная морковь 46р
11.05.2021 Продажная морковь 63р
Даже если не указан вид цены, то все равно будет результат из 2 строк. Для более точного результата 1с требует указать ВСЕ измерения. В данном случае вид цены и это нормально!
139 mistеr
 
29.07.21
16:36
(138) А, он просто не знает про ПЕРВЫЕ 1? Ясно.
140 H A D G E H O G s
 
29.07.21
16:36
(0) И этот человек ведет курсы в Бауманке.
Это жестяночка.
141 Kassern
 
29.07.21
16:37
(140) курсы 1с?
142 H A D G E H O G s
 
29.07.21
16:37
(141) Ну да.
143 Kassern
 
29.07.21
16:38
(141) если по 1с, хотел бы я послушать кусочек связанный регистрами сведений и правильного архитектурного применения его.
144 Вафель
 
29.07.21
16:38
пора ему на марс лететь, город там строить
145 fisher
 
29.07.21
16:42
(137) У ТС появился кейс, когда ему нужно получить срез без учета всех измерений (как если бы у него был более простой РС - это иногда имеет смысл). И он интуитивно ожидал, что так оно и сработает. Такая опция была бы удобна, но для нее пришлось бы либо интеллектуальный парсинг запроса запиливать, либо параметров виртуальной таблице досыпать.
146 Kassern
 
29.07.21
16:46
(145) а потом другие бы словили кучу косяков, забыв указать отбор по измерению( а дубли они не увидят по логике ТС), на тесте мог и верный результат сегодня показаться. А потом через месяц бы поняли, что отчетом можно только подтереться.
147 H A D G E H O G s
 
29.07.21
16:46
148 Kassern
 
29.07.21
16:51
(147) эх... не услышу я лекцию из уст ТС про архитектурные решения РС(
149 mistеr
 
29.07.21
16:52
(145) Если не обращать внимания на часть измерений, то "последних" записей будет несколько в общем случае (как и в примере (138) ). То есть в случае ТС все равно нужно использовать ПЕРВЫЕ 1. То есть овчинка выделки не стоит.
150 Aleksandr N
 
29.07.21
16:59
(140) А я то сначала подумал, что это новый ник ливингстара, хехе.
151 fisher
 
29.07.21
17:05
(149) ПЕРВЫЕ не лечат. Разве что через коррелирующий подзапрос. В общем случае ведь не по единственному значению данные получать надо. Понятно, что выкрутиться можно. Я просто отвечал на твой вопрос.
152 Said_We
 
29.07.21
17:15
(147) С чего взято, что это кто-то из этих курсов?
153 fisher
 
29.07.21
17:20
(152) Это Калимулин вроде. Он использует такой ник. Тусовался раньше под своим именем и вроде как под этим тут тоже деанонимизировался. Но зуб не дам.
154 Kassern
 
29.07.21
17:22
(153) весной была его ветка на тему "зачем нужны регистры..." там вроде и деанонимизация прошла)
155 fisher
 
29.07.21
17:23
(154) Точно! Он там ссылку на свою статью на хабре давал.
156 H A D G E H O G s
 
29.07.21
17:26
(155) Именно.
157 H A D G E H O G s
 
29.07.21
17:26
158 Said_We
 
29.07.21
17:40
Как в анекдоте получается.
Один доцент другому:
- Вот студенты тупые пошли! Я им раз объяснил. Второй раз объяснил. Уже сам понял, а они не могут понять.
159 fisher
 
29.07.21
17:43
(158) Анекдоту до жизни далеко. Ты почитай его труды. Там все очень концептуально. Человек способен подняться над толпой и задать вопросы, которые серой массе даже в голову не приходят.
160 Said_We
 
29.07.21
17:52
(159) Пытался уже... Вообще не понял о чём. По всей видимости я совсем серая масса и об этом до сих пор не думаю.
Тут нет стёба. Я реально не понимаю о чём там.
161 fisher
 
29.07.21
17:54
(160) А то. Не только лишь все могут в завтрашний день смотреть.
162 H A D G E H O G s
 
29.07.21
17:54
(159) (160) (161) Художники - странные люди.
163 fisher
 
29.07.21
17:59
Художника обидеть каждый может.
164 brainguard
 
29.07.21
21:33
(143) Написать вам статью?
165 brainguard
 
29.07.21
21:35
(145) Ничего этого не надо. Просто формировать срез по набору измерений, который указан в запросе. В РН же это так работает
166 brainguard
 
29.07.21
21:36
(137) См. (18)
167 brainguard
 
29.07.21
21:40
(132) Да неопределенностей не должно быть. Но сейчас они есть. Сделайте запрос к регистру сведений по одному измерению (когда их больше, чем одно) и получите неопределенность. Именно так работает штатный механизм сейчас
168 brainguard
 
29.07.21
21:52
(138) Вы неточно передаете, что я хочу. Я хочу чтобы в результате было:

Морковь 63р.
Морковь 46р.

или

Морковь 63р.

или

Морковь 46р.

Меня бы устроил любой из этих трех вариантов
169 1CnikPetya
 
29.07.21
21:53
(165) Вам ведь уже много раз пытались донести мысль, что в РН есть агрегация ресурсов, а в РС ее нет. Отсюда и принципиальная разница в работе с измерениями.
(166) Вам на этот пример уже привели контрпример, с данными:

01.02.2021 ООО Одуванчик Свистелка 105 руб.
01.02.2021 ООО Ромашка Свистелка 106 руб.

и неопределённым результатом, если пытаться применить вашу логику. Причем любой вариант не будет достаточно прозрачным.

(167) Сейчас неопределенности, как раз, нет. Текущее поведение логично и, что главное, задокументировано.

(168) А меня ни один из них не устраивает. Хочу среднее арифметическое.
170 brainguard
 
29.07.21
21:54
(169) Сейчас есть задокументированная неопределенность
171 1CnikPetya
 
29.07.21
22:03
(170) Ее нет. Неопределённость пытаетесь создать вы. Из приведённых вами примеров в (168) ни один вариант не имеет явной причины для существования. И, да, я хочу среднее арифметическое. Почему нет этого варианта?
172 youalex
 
29.07.21
22:17
(165) Я перефразирую это иначе - будет не лишней возможность определять логику своих виртуальных таблиц. В терминах того же tsql - обычные табличные функции. Временные таблицы же внедрили (кто застал 1С до 8.1.15 может помнить всю красоту многоуровневых вложенных запросов). Но функций думаю не будет. Это не так критично и файловая версия, движок которой тоже придется дописывать. Сейчас
173 youalex
 
29.07.21
22:26
(172) то же самое кстати, касается и cte. Одно дело = транслировать запрос с общими табличными выражениями для СУБД, которые это поддерживают. И совсем другое - реализовать этот функционал, с его основной фичей -рекурсивным запросом -  на файловом, чисто одинэсном  движке. То же касается и апдейтов во временных таблицах. Было бы иногда прикольно создать каркас временной таблицы, и дальше в пакете отдельным запросами заполнять ее поля. Но тоже нет.
174 brainguard
 
29.07.21
22:59
(171) Потому что нет кейса
175 mistеr
 
29.07.21
22:59
(167) "неопределенности не должно быть" + (168) "неопределенность меня устроит" — ты сам себе противоречишь.
176 brainguard
 
29.07.21
23:04
(175) В этом посте (167) я обращаю внимание на то, что неопределенности и сейчас есть
177 mistеr
 
29.07.21
23:14
(176) Давай начнем с того, что ты дашь новое название и четкое определение тому, что ты хочешь получить. Не надо называть это "срезом последних", срез последних четко определен не тобой, а 1С. Срез последних не бывает "по одному измерению", он делается сразу по всем измерениям, не зафиксированным в отборе. Тут и проявляется связь среза с уникальностью, которую ты упускаешь.
178 mistеr
 
29.07.21
23:16
(173) Да ладно, это не бог весть какая задача, не надо преувеличивать. Если будет реальная потребность, реализуют.
179 Said_We
 
29.07.21
23:17
(173) Файловую в топку и тогда можно будет в 1С нормальный SQL использовать. Нет нормльного SQL так как есть файловая и это надо там реализовывать. Хотя есть бесплатный SQL постгри.
Сделали бы спец лицензию с сервером 1С и на SQL постгри - в замен файловой и всего делов. Не надо файловой тормозить развитие функционала, который бы существенно упростил разработку и существенно ускорил бы работу запросов в 1С. Мы бы имели возможность писать короткие понятные запросы, а не миллион вложенных внутренних таблиц и подзапросов с тучей JOIN.

(176) Уже сказали как её обойти.
Выбрать
       т.Измерение1
      ,т.Измерение3
      ,ИмяАгрегатнойФункции(т.Ресурс1)
из
      РегистрСвдедений.ИмяРегистра.СрезПоследних(&ДатаСреза, ) как т
Сгруппировать по
       т.Измерение1
      ,т.Измерение3
180 Ненавижу 1С
 
гуру
29.07.21
23:27
(179) это если периоды совпадут, то агрегатная функция, если различные - то будет неправильно
181 Said_We
 
29.07.21
23:29
(180) Неправильно это как?
182 Said_We
 
29.07.21
23:32
В (179) Не выбирается период. Поэтому разные периоды или не разные - фиолетово. Далее всё свернется по измерениям.
183 Мигрень
 
29.07.21
23:41
я бы лучше сделал срез крайних, это решило бы все проблемы
184 youalex
 
29.07.21
23:43
(178) Нет. Именно потому, что не такая большая проблема, и именно потому что есть файловая, совместимость с которой задекларирована.
Возможно, когда-нибудь 1с решатся и провозгласят. что есть две разных 1С - одна для ларьков, собственно,  - а вторая - для солидных господ. А пока есть файловая СУБД от 1с. и пока ими декларируется обоюдная совместимость(которой кстати изначально нет и не было - по длине индексов)- всех этих плюшек "взрослых" СУБД - ждать самонадеянно.
185 youalex
 
29.07.21
23:54
(178) Повторюсь - это огромная разница между тем чтобы транслировать Запрос.Текст с тем же cte - в запрос СУБД, которая поддерживает этот механизм. То есть это просто преобразование текста по сути.
И совсем другое - допилить свой движок запросов, чтобы он понимал и умел обрабатывать эту инструкцию.
186 Said_We
 
30.07.21
00:09
(183)
Ну один из способов, но не лучший наверно - не сильно думал. Но это не 1С язык запросов.
Только опять же где в реальных задачах это применять? Какое-то значение ресурса...

with data as
    (Select
     '2017-01-10' as d
    ,'sklad_1' as sklad
    ,'tovar_1' as tov
    ,10 as cena

    union all select '2017-02-23', 'sklad_1', 'tovar_1', 20
    union all select '2017-02-23', 'sklad_2', 'tovar_2', 30
    union all select '2017-02-25', 'sklad_2', 'tovar_1', 40
    union all select '2017-02-28', 'sklad_1', 'tovar_1', 50
    union all select '2017-03-15', 'sklad_1', 'tovar_1', 60
    union all select '2017-03-23', 'sklad_1', 'tovar_1', 70
    union all select '2017-03-23', 'sklad_2', 'tovar_1', 80
    union all select '2017-03-23', 'sklad_1', 'tovar_2', 90
    union all select '2017-03-23', 'sklad_2', 'tovar_2', 100
    union all select '2017-03-25', 'sklad_1', 'tovar_2', 110
    union all select '2017-03-26', 'sklad_2', 'tovar_1', 120
    union all select '2017-03-28', 'sklad_1', 'tovar_1', 130
    )
select
    *
from
    (select
         d
        ,tov
        ,cena
        ,row_number() over(partition by tov order by d) as npp
        ,count(*) over(partition by tov) as Max_tov
    from
        data
    where
        d <= '2017-03-23'
    ) as t
where
    t.npp = t.max_tov


Результат даст:
d            tov    cena    npp    Max_tov
2017-03-23    tovar_1    80    7    7
2017-03-23    tovar_2    100    3    3
187 Said_We
 
30.07.21
00:16
,row_number() over(partition by tov order by d,cena desc) as npp

результат:
d        tov    cena    npp    Max_tov
2017-03-23    tovar_1    70    7    7
2017-03-23    tovar_2    90    3    3

,row_number() over(partition by tov order by d,cena) as npp
результат:
d        tov    cena    npp    Max_tov
2017-03-23    tovar_1    80    7    7
2017-03-23    tovar_2    100    3    3
188 Said_We
 
30.07.21
00:21
Так же можно прикрутить агрегатные функции среднего логарифма синуса и косинуса - любой каприз. :-)
Можно получать несколько записей и далее брать МИН МАКС у даты и применять агрегатную функцию к ресурсу.

(0) Собственно Вы какой результат хотите?
189 Said_We
 
30.07.21
00:45
Аналог типового среза наверное будет такой, только в итоговой выборке не все поля *, а перечисление всех измерений, ресурсов и реквизитов.
В оконной функции в конструкции "partition by sklad,tov,...." перечисление всех измерений.
Но опять же это не лучший и не единственный вариант получения среза.

select
    *
from
    (select
         *
        ,row_number() over(partition by sklad,tov order by d) as npp
        ,count(*) over(partition by sklad,tov) as Max_tov
    from
        data

    where
        d <= '2017-03-23'
        AND <Тут условия по виртуальной таблице>
    ) as t
where
    t.npp = t.max_tov
190 brainguard
 
30.07.21
00:55
(188) Я хочу чтобы из исходных данных:

01.02.1999 ООО Лихие девяностые Свистелка 10 руб.
01.02.2021 ООО Одуванчик Свистелка 105 руб.
01.03.2021 ООО Ромашка Свистелка 106 руб.
01.03.2021 ООО Василек Свистелка 107 руб.

В срез последних не попадали данные из прошлого века
191 Said_We
 
30.07.21
00:58
(190) В (186) и (187) есть все ответы и такой вариант тоже есть.
192 brainguard
 
30.07.21
01:01
(177) Срез последних не обязательно привязывать к уникальности. У самой 1С они по факту отвязаны друг от друга. Срез последних - это ПОСЛЕДНИЕ записи. Например, для набора данных:

01.02.1999 ООО Лихие девяностые Свистелка 10 руб.
01.02.2021 ООО Одуванчик Свистелка 105 руб.
01.03.2021 ООО Ромашка Свистелка 106 руб.
01.03.2021 ООО Василек Свистелка 107 руб.

Срез последних по номенклатуре это:

01.03.2021 Свистелка 106 руб.
01.03.2021 Василек Свистелка 107 руб.

а не:

01.02.1999 Свистелка 10 руб.
01.02.2021 Свистелка 105 руб.
01.03.2021 Свистелка 106 руб.
01.03.2021 Свистелка 107 руб.

как делает 1С сейчас
193 Aleksandr N
 
30.07.21
01:07
Думаю, что нужно прекратить кормить тролля и закрыть ветку КЁМ. И даже если это не тролль, то закрыть её за непроходимую тупость топикстартера. Простите за мое скромное мнение, если что не так.
194 Said_We
 
30.07.21
01:08
(192) Напишите в 1С, что СрезПоследних() не достаточно и есть острая необходимость в дополнительной конструкции СрезПослденихСовсемПоследних().
Как видите по (186) и (187) эти варианты проще в реализации, чем аналог типового среза в (189).

Дело за малым - определиться с кусочком "order by d,cena desc". DESC или не DESC использовать и там по мелочи.
195 Aleksandr N
 
30.07.21
01:09
(194) хе хе, да :-)
196 mistеr
 
30.07.21
01:10
(185) И я повторюсь, реализовать CTE в файловом движке не так уж сложно. Потому, что сам движок намного проще "взрослых" СУБД. В крайнем случае можно реализовать через временные таблицы.

В SQLite давно есть и CTE, и оконные функции, и много чего еще. А его пилит практически один человек.
197 Said_We
 
30.07.21
01:12
(193) За 8 лет всего 1054 сообщения и всего три темы и тут не выдержал :-)
198 Сергиус
 
30.07.21
01:12
(192)Ты т.е. ты хочешь, чтобы в 1с был ИИ, который был определял, какой именно срез нужен тебе в данном случае?) В рамках указанной структуры регистра, всё выводит как надо. Дальше уже можно своими силами его обработать как нужно(например взять максимум по периоду)
199 Said_We
 
30.07.21
01:13
Скоро абсолютные читатели начнут писать :-)
200 Aleksandr N
 
30.07.21
01:18
(197) Да, иногда могу себя не сдерживать.
201 mistеr
 
30.07.21
01:18
(192) Срез последних — это последние записи в разрезе измерений регистра. И для каждого набора значений измерений последняя запись всегда одна. Так работает периодический регистр сведений 1С.

А что хочешь ты, я так толком и не понял. Если хочешь серьезного разговора, напряги мозги и роди формальное определение, не допускающее разных толкований и пригодное к реализации. А с такими хотелками, как "не попадали данные из прошлого века" тебя кто угодно пошлет, не только разработчики платформы.

Не уподобляйся Гению с его ламерским подходом к сложным вопросам.
202 Said_We
 
30.07.21
01:20
(196) Ну, не знаю.... 1С только обещает в 8.3.20 несколько математических функций добавить и на этом всё.
Оконные функции существуют около десятка лет. Зачастую их использование дает прирост в скорости в несколько порядков, по сравнению с классическими запросами.
А в 1С тем временем, примерно в момент появления оконных функций решило ускоряться путем внедрения тонкого клиента и управляемых форм - по крайней мере в начале это была одна из главных причин. Как итог эти управляемые формы работают по ощущениям только медленнее чем обычные. Понятно что управляемые формы и тонкого клиента внедряли не для ускорения, но продавали это в самом начале именно так.
203 Said_We
 
30.07.21
01:27
К (202)
Не проверял, но тут:
https://habr.com/ru/post/474458/

такая информация:

"Необходимый инструмент – оконные функции – впервые появился только стандарте SQL:2003. К этому моменту они уже были в Oracle (версия 8i). А вот реализация в других СУБД задержалась на 5-10 лет: SQL Server 2012, MySQL 8.0.2 (2018 год), MariaDB 10.2.0 (2017 год), PostgreSQL 8.4 (2009 год), DB2 9 для z/OS (2007 год), и даже SQLite 3.25 (2018 год)."
204 Said_We
 
30.07.21
01:32
(196) "А его пилит практически один человек." - этому человеку памятник надо поставить. SQLite Просто шедевр.
Или пригласить его за 1 000 000 в день что бы допилил запросы в 1С. :-)
205 Said_We
 
30.07.21
01:35
(203)
"Производительность оконных функций будет зависеть от специфики вашей СУБД (и её версии!), размеров таблицы, и наличия индексов. Но в большинстве случаев этот метод будет самым эффективным. Тем не менее, оконные функции недоступны в старых версиях СУБД (которые ещё в ходу). Кроме того, их нет в таких СУБД как Microsoft Access и SAP/Sybase ASE. Если необходимо вендоро-независимое решение, следует обратить внимание на альтернативы."

Вот чем надо с SAP бороться.
206 серый КТУЛХУ
 
30.07.21
01:45
(201): строго говоря - он хочет виртуальную таблицу среза последних такую, для которой при ее параметризации можно было указать любое сочетание измерений, по которому бы выдавался срез. типа
рс: (период) измерение1 изменение2 ... измерениеN ресурс1 ...
запрос виртуальной таблицы. чтобы поимо параметра "Пеиод" и условий - можно было еще в какой-нибудь параметр засунуть список имен измерений, по которым бы выдавался срез (а не по всем). ну типа
рс: (период) изм:Номенклатура изм:Поставщик изм:ГородДоставки рес:Цена
а ему в запрос надо виртуальную таблицу среза последних стобы через параметры этой вирт.таблицы можно было указать - что нужен срез этот по измерению Номенклатура и Поставщик - т.е. последние с игнором измерения ГородДоставки.
чухня жуткая, даже не придумывается - где это может пригодиться при том, что стандартный срез последних позволяет выдернуть это же самое по любому комплекту интересующих/игнорируемых измерений.
я же говорю - типичная разруха в голове.
207 Said_We
 
30.07.21
01:45
(195) Пусть человек напишет (без сарказма, а на полном серьёзе).
И каждый пусть напишет. И чем больше человек напишет, тем быстрее 1С прикрутит нам счастье в виде оконных функций. Пусть в 1С 9.0, но прикрутит.
Данная задача должна стать приоритетной для 1С.
За что чаще всего критикуют 1С - правильно за неповоротливость и долгую работу. А тут хоть переписанные отчеты летать начнут.
208 youalex
 
30.07.21
01:46
(196) не буду спорить, сложно не сложно, но об этом даже пока и не заикаются.
А раз 1С это не нужно, значит и никому это не нужно) Вот тригонометрические функции и прочие дисперсии - сообществу были просто необходимы. Поэтому - получите и радуйтесь тому что есть. Но строковые функции - да
209 Said_We
 
30.07.21
01:50
(208) А Релиз уже вышел?
210 H A D G E H O G s
 
30.07.21
01:54
(209) А за счет чего оконные функции дают прирост?
211 youalex
 
30.07.21
01:55
(209) Я знаю не больше вас - то что было заявлено в Зазеркалье.
И я пока еще не уверен, это будут нативные функции СУБД, или родная "постобработка" - т.е. поля, которые тут же в запросе не получится использовать.
212 Said_We
 
30.07.21
01:59
(211) Вот и я про это же.
Они уже добавили АвтоНомерЗаписи(), который можно использовать только во внутренних таблицах и с обязательным указанием сортировки. А если указал сортировку во внутреннее таблице, то в выбрать обязательно должен использовать первые "оченьмного". Сплошные ограничения высосанные из пальца, которые друг на друга накладываются и приводя к тому что этим пользоваться нормально нельзя.
213 youalex
 
30.07.21
02:00
(207) >1С прикрутит нам счастье в виде оконных функций.
Есть же СКД, где на движке 1с реализуются аналоги оконных функций, и есть даже расширенный STRING_AGG ()
214 Said_We
 
30.07.21
02:07
(210) Поля, которые получаются с помощью оконной функции заполняются за один проход. А информация, которая может быть содержаться при этом в этом поле может помочь отказаться использоваться от разных не нужных JOIN, которые могли использоваться ранее для решения необходимых задач. JOIN - убийца производительности запросов. Если задачу можно решить без JOIN, то нужно решать без JOIN.
217 H A D G E H O G s
 
30.07.21
02:16
(214) и ЕЩЕ раз.

Вот  у меня запрос, с джоин

ВЫБРАТЬ
    ТоварыНаСкладах.Номенклатура КАК Номенклатура,
    Номенклатура.Наименование КАК Наименование
ИЗ
    РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
        ПО ТоварыНаСкладах.Номенклатура = Номенклатура.Ссылка

Как оконная функция поможет его обойти?
218 Said_We
 
30.07.21
02:18
(213)  Прелесть оконных функций, что далее по запросы используется их результат в логике задачи, а не просто результат для показать.
Посмотри внимательно на (186), (187), (189). Сами поля npp и max_tov (правлиьнее назвать max_npp) как результат итогового запроса вообще не нужны. Их результаты нужны только для выполнения логики запроса, для решения задачи.
219 Said_We
 
30.07.21
02:20
(217) Плохой пример. Оконные функции помогают, когда источник данных одна и та же таблица.
Например посчитать нарастающим итогом сумму. Срез какой-то и т.д.
220 Said_We
 
30.07.21
02:22
(217) 8.3 Накопленный итог запросом
Тут в посте 21 пример, когда надо по РС построить таблицу с периодами изменения.
221 H A D G E H O G s
 
30.07.21
02:24
(219) Так. Работает только с одной таблицей? Типа буфера, так?
222 Said_We
 
30.07.21
02:30
(221)
На входе:
with data as
    (Select '2017-01-10' as d, 'rabotaet' as s
    union all select '2017-02-23', 'rabotaet'
    union all select '2017-02-28', 'otpusk'
    union all select '2017-03-11', 'bolnichniy'
    union all select '2017-03-15', 'bolnichniy'
    union all select '2017-03-17', 'bolnichniy'
    union all select '2017-03-30', 'rabotaet'
    union all select '2017-04-02', 'rabotaet'
    union all select '2017-04-08', 'otpusk'
    union all select '2017-04-14', 'rabotaet'
    union all select '2017-04-28', 'uvolen'
    )

Надо получить на выходе таблицу:
dateN    dateK    s
2017-01-10    2017-02-27    rabotaet
2017-02-28    2017-03-10    otpusk
2017-03-11    2017-03-29    bolnichniy
2017-03-30    2017-04-07    rabotaet
2017-04-08    2017-04-13    otpusk
2017-04-14    2017-04-27    rabotaet
2017-04-28    NULL    uvolen

Т.е. во первых не учитывать записи в которых состояние не менялось, во вторых определить дату окончания, кроме последней записи

Данную задаче решает вот такой простой запрос без использования JOIN, но с использованием оконных функций:
select
     t.d as dateN
    ,Cast(DateADD(day, -1, LEAD(t.d) OVER(ORDER BY t.d)) as date) dateK
    ,t.s
from
    (select
         t.d
        ,t.s
        ,LAG(t.s) OVER(ORDER BY t.d) prev_s
    from
        data as t

    ) as t
where

    t.s <> t.prev_s
    or t.prev_s is null
223 H A D G E H O G s
 
30.07.21
02:30
(222) Нахрена это?
224 H A D G E H O G s
 
30.07.21
02:31
(222) Вы маетесь ерундой и 1С правильно делает, что не дает вам инструменты для ваших извращений.
225 H A D G E H O G s
 
30.07.21
02:32
(222) Запрос должен вытаскивать данные из базы наиболее просто и наиболее точно. Всё.
226 H A D G E H O G s
 
30.07.21
02:32
Обрабатывать данные вы должны не в запросе, а в коде.
227 Said_We
 
30.07.21
02:44
(223) Реши данную задачу с помощью запроса без оконных функций. Решение есть в посте (17) в ветке, которая указана в (220).
Реши с помощью кода.
Посмотри на объем написанного текста.
Замерь производительность.
Убедись что запрос в (222) быстрее всех и количество написанного текста в нем минимальна.

(224) Не согласен.
(225) Как раз это и делает запрос в (222). Просто быстро и коротко.
(226) Если мне нужен результат в отчет и я его могу получить простым и коротким запросом, то зачем что-то обрабатывать?

Все так думают как в H A D G E H O G s ?
Кто думает не так?

Хоть голосовалку открывай и отдельную тему. Только не вижу я в этом смысла. Эта ветка и так сплошной - не пойми что. Автор ветки постарался. Аш, читатели форума писать начали. :-) Фантастика.
228 Ненавижу 1С
 
гуру
30.07.21
03:03
(182) вот это и плохо
229 Дух пролетариата
 
30.07.21
05:42
(227) А я с вами согласен. Оконные функции - полезная и нужная штука. Вообще, чем ближе 1С язык запросов подведёт к современным фичам SQL, тем лучше. Другой вопрос в том, что порог входа для понимания чужих запросов подрастёт существенно, т.к. в современных фичах много неочевидных вещей. Тот же CROSS/OUTER APPLY, очень эффективный инструмент, довольно сложен для понимания "среднему" 1С-нику без хорошей базы разработчика.
230 DrZombi
 
гуру
30.07.21
06:06
(18) Утро, но вы пишите какой-то, бред :)
Вас послушать, так вы обсуждаете не запрос использующий "СрезПоследнего", а функцию получения цены, где 1С программист написал то правило получение цен, какое уразумел своей фантазией :)
231 DrZombi
 
гуру
30.07.21
06:07
(0) Запрос покажи свой, который не работает, как срез последнего :)
232 DrZombi
 
гуру
30.07.21
06:10
+ Вдогонку огласи релиз и версию конфы.
+ Для ленивых, напиши тут Имярегистра, и его структуру:
     Измерения...
     Ресурс....
     Реквизит...
   Периодичность, Регистратор (Да/ Нет) :)))
233 Дух пролетариата
 
30.07.21
06:18
(230) Там на второй странице градус неадеквата существенно растёт :)
234 Kassern
 
30.07.21
09:01
(164) Будьте любезны, желательно в разрезе различных бизнес-процессов.
235 piter3
 
30.07.21
09:03
(234) путь гени вижу я)
236 ДенисЧ
 
30.07.21
09:05
(235) не... Вот когда видео начнёт снимать...
237 Kassern
 
30.07.21
09:25
(236) можно и на видео лекцию запилить, показать как отрабатывает срез последних/первых, какой запрос в итоге получает скуль, в каких вариантах лучше использовать РС, как его правильно строить  и чем он отличается от того же справочника (можно в разрезе того же скуля). А далее можно взять несколько типовых бизнес-процессов и показать как регистры сведений помогают для их реализации. В конце что-нить резюмировать и вуаля, даешь понимание РС для новичков)
238 brainguard
 
30.07.21
09:36
(198) Зачем сразу ИИ? Какой набор измерений задал в запросе, по такому и строится срез
239 brainguard
 
30.07.21
09:38
(201) Нет. Сейчас регистр работает не так, как вы описали. Если в запросе задать не полный набор измерений, тогда записи могут дублироваться
240 Kassern
 
30.07.21
09:41
(238) А как 1ске понять без ИИ, какую из 2х записей дать в результате, если период одинаковый?
241 Kassern
 
30.07.21
09:41
(240) вам же не нравится самому выбирать нужный результат из 2х записей, вы хотите чтобы 1ска за вас решала
242 Kassern
 
30.07.21
09:47
(241) это ладно если 2 записи, а если их 6, а нужно по факту пятую получить? В таких ситуациях напрашивается все таки дозаполнить отбор по измерению, если такой возможности нет, то стоит задуматься над архитектурой регистра.
243 brainguard
 
30.07.21
09:54
(206) Зачем параметр? Есть список полей запроса. Этого достаточно
244 ptiz
 
30.07.21
09:57
(239) см. (34)
245 brainguard
 
30.07.21
09:58
(230) Я предлагаю получать последние значения там, где 1С выдает не последние (хотя обращение идет к срезуПОСЛЕДНИХ). Где бред?
246 brainguard
 
30.07.21
09:59
(244) И что?
247 brainguard
 
30.07.21
10:00
(240) Можно выдавать обе
248 ptiz
 
30.07.21
10:07
(247) Она и выдаёт обе.
249 brainguard
 
30.07.21
10:09
(248) Она выдает больше, чем обе. Она выдает не только последние, а я предлагаю только последние
250 ptiz
 
30.07.21
10:13
(249) И будет каша: по каким-то наборам измерений будет 2 записи, по каким-то - одна.
251 brainguard
 
30.07.21
10:14
(250) Так и сейчас каша
252 1CnikPetya
 
30.07.21
10:17
(251) Сейчас не каша, сейчас четкая, прозрачная и задокументированная логика. А вот в вашем варианте - каша. Но, по факту, такая ситуация - это ошибка проектирования регистров в прикладном решении.
253 ДенисЧ
 
30.07.21
10:19
Каша не результатах.
Каша у кого-то в голове. Наверное, водицы с Солнца попил
254 vde69
 
30.07.21
10:24
(95) заведи второй регист
255 Йохохо
 
30.07.21
10:24
(243) пойми что субд отбирает _строки_ а не поля
256 Said_We
 
30.07.21
10:25
(251) Еще раз внимательно прочитайте пожалуйста (194).
257 Said_We
 
30.07.21
10:28
(223) Попробовал (227) или нет?
258 Said_We
 
30.07.21
10:32
(229) Ветка будит абсолютных читателей (не писателей) форума. :-)
259 brainguard
 
30.07.21
11:27
(252) Нет никакой ошибки в проектировании. Например, когда я проектирую РН продажи, я задаю измерения "номенклатура", "контрагент", "склад". А потом получаю продажи по любому набору измерений. И я не делаю ШЕСТЬ регистров, чтобы решить эту задачу. Я делаю один и это правильно
260 brainguard
 
30.07.21
11:28
(254) См (259)
261 Злопчинский
 
30.07.21
11:29
(259) "И я не делаю ШЕСТЬ регистров, чтобы решить эту задачу. Я делаю один и это правильно"
то есть, разнеся остатки и резервы по разным регистрам - архитектор типовой УТ11 - сделал неправильно?
262 Said_We
 
30.07.21
11:31
(259) см. (112)
263 brainguard
 
30.07.21
11:34
(261) Сколько измерений в регистре продажи в УТ11?
264 Злопчинский
 
30.07.21
11:34
(263) еврей?
265 brainguard
 
30.07.21
11:35
(262) Не вижу там дополнительной информации
266 brainguard
 
30.07.21
11:36
(264) У меня просто нет под рукой
267 Said_We
 
30.07.21
11:36
(265) Когда вы прекратите сравнивать РН и РС?
В РН ресурс всегда число. И остатки это всегда агрегатная функция SUM(). На входе есть все данные что бы свернуть.
В РС ресурс - это что угодно и нет никакой агрегатной функции.
268 1CnikPetya
 
30.07.21
11:37
(259) А вас не смущает наличие двух регистров для учета Товаров во многих решениях? Один только количество, другой еще стоимость и партии.
269 Злопчинский
 
30.07.21
11:37
Короче, пора закрывать ветку.
Автор считаем себя самым умным.
Бывает.
Проходит со временем.
270 Said_We
 
30.07.21
11:38
(269) Автор не молод. Уже не пройдет.
271 Kassern
 
30.07.21
11:38
(267) автор не хочет этого понимать...
272 Said_We
 
30.07.21
11:39
(223)  Попробовал (227) или нет?
273 brainguard
 
30.07.21
11:41
(267) Агрегатная функция есть всегда. МИНИМУМ(МАКСИМУМ) работают с чем угодно. Но дело даже не в этом. Сравнение совершенно обосновано. Срез последних мог бы работать точно так же, как работает SUM() в РН. И это было бы более логично, чем то, что мы имеем сейчас. Получать срез можно по любому набору измерений
274 Said_We
 
30.07.21
11:44
(273) А где Вы сказали СРезуПоследних() Вам МИН() или МАКС() ?
Такая опция в нем не предусмотрена.

Ещё раз прочитайте (194). Ответ уже дан.
275 brainguard
 
30.07.21
11:44
(274) Там нет никакой дополнительной информации
276 brainguard
 
30.07.21
11:54
(274) Кратко резюмирую обсуждение.
В принципе есть возможность получать последние записи по любому набору измерений? Ответ - есть.
Это в чем-то сложнее, чем получать последние записи по полному набору измерений? Ответ - нет.
Почему 1С это не делает? Ответ - потому что для неполного набора измерений возможно появление дублей.
Если сейчас выполнить запрос к срезу последних по неполному набору измерений, дублей не будет? Ответ - дубли будут.
Тогда почему бы не получать последние записи? Ответ - будут дубли.
А сейчас дублей нет? Ответ - сейчас есть.
А почему тогда... Потому что, гладиолус
277 Said_We
 
30.07.21
11:57
(276) Неверный вывод.
278 brainguard
 
30.07.21
11:58
(277) В каком месте?
279 Eiffil123
 
30.07.21
11:58
(238) срез возвращает таблицу, а ты хочешь одно значение. Это так не работает. Если смущает слово СРЕЗ - ну что ж, с этим нужно смириться.
280 brainguard
 
30.07.21
11:58
(279) Я тоже хочу таблицу
281 Kassern
 
30.07.21
11:59
(276) потому что делая запрос, указывая не не все измерения в отборе, 1ска полагает, что вы хотите получить срез последний по всем уникальным связям. К примеру вы захотите посмотреть все последние цены по номенклатуре в разрезе видов цен. И 1ска это сделает, если же вы не укажите в выводе вид цены, то и смысла делать такой отбор - нет. Какое то одно значение из перечня цен вам номенклатура не выберет, это глупо. Еще пример, вы делаете сложный ответ и в какой нить связи с РС пропустили одно измерение. В результате отчета вы увидите дубли и поправите отчет, а в вашем варианте вы даже об этом не узнаете, вам 1ска подсунет сегодня какой нить результат, возможно даже верный.
282 brainguard
 
30.07.21
11:59
(279) Если бы я хотел одно значение, этой темы бы не было
283 Kassern
 
30.07.21
12:00
(280) ну так выведите все измерения в Выбрать и увидите цельную таблицу.
284 Eiffil123
 
30.07.21
12:00
(276) "В принципе есть возможность получать последние записи по любому набору измерений? Ответ - есть. "   Ответ - нет. В запросах ты не можешь получить последнюю запись по неполному набору измерений+период.   Если повезет - получишь, если не повезет - не получишь.
285 Kassern
 
30.07.21
12:00
(282) вы же сами в начале писали, чтобы 1ска какое то одна вам дало, вам без разницы какое
286 Kassern
 
30.07.21
12:01
(281) *сложный запрос
287 brainguard
 
30.07.21
12:01
(285) В самом начале я писал, что мне без разницы: будет это одно значение или несколько. Будьте точны
288 brainguard
 
30.07.21
12:02
(284) Интересно, и что я получу, если "не повезет"?
289 Said_We
 
30.07.21
12:03
(276) В 1С срез реализован так как и задуман. Задокументирован. Написаны миллионы строк кода в разных конфигурациях и все ВНИМАТЕЛЬНО прочитав документацию понимают как это работает.
Вам понадобился иной алгоритм получения своего иного среза. Но вместо того что бы написать письмо с просьбой добавить ещё одни вариант среза с дополнительными параметрами, в которых можно было бы указать Мин(), Макс() и т.д. Вы требуете что бы сейчас 1С пересмотрела свой подход к тому, что реализовано в Срезе и что всех устраивает и переписать миллионы строк кода везде.

Вот так это реально выглядит.
А ответы и даже пример реализации находится в это ветке выше.
290 Eiffil123
 
30.07.21
12:04
(288) несколько записей в результате. Просто объясните, как система должна выбирать "любую" запись по неполному набору? и на сколько корректно в таком случае получать разные результаты на одних и тех же выборках?
291 Kassern
 
30.07.21
12:05
(287) вы можете назвать хоть 1 бизнес процесс где такое поведение нужно?
292 Said_We
 
30.07.21
12:06
(290) Он уже объяснял. Его не смущает каждый раз разный результат на одних и тех же данных.
Ему надо писать письмо в 1С - срочно.
293 Said_We
 
30.07.21
12:08
(291) Он уже отвечал. Ему нужна последняя цена закупки номенклатуры вне зависимости от поставщика. Если закупалась номенклатура последний раз одновременно у нескольких поставщиков одновременно, но по разной цене, то любую из цен. Если запрос при выполнении будет давать каждый раз разный результат, то для него это не страшно.
294 Kassern
 
30.07.21
12:09
(292) "ало! это одинесочная? Срочно приезжайте, у вас тут срез не правильный!")) А если серьезно, если ТС нужен такой функционал, пилишь свою библиотеку и юзаешь, на входе нужная таблица с отбором, на выходе нужный вам результат.
295 Kassern
 
30.07.21
12:09
(293) а он не задумывался, почему в регистре цен номенклатуры нет поставщика?)
296 Kassern
 
30.07.21
12:10
(295) хотя есть еще цены номенклатуры поставщиков, но он как раз и нужен чтобы в разрезе поставщиков анализировать.
297 Said_We
 
30.07.21
12:11
(294) Не, ему надо что бы резко было у всех поменяны логика Среза под его правила, переписана документация и все кинулись переписывать миллионы строк кода. А он просто в одном своем месте просто использовал. :-)
Такой вид эгоизма.
298 Said_We
 
30.07.21
12:12
А завтра ему понадобится так же как и сейчас работает. И опять всё переписывать. :-)
299 Said_We
 
30.07.21
12:15
(296) Да перед ним какой-нибудь финансист поставил задачу - дать ему последнюю цену закупки номенклатуры без учета поставщика. Человек страдает. Не понимает простой срез из регистра цены поставщиков ему не подходит. Ему нужно самому смотреть весь регистр и самостоятельно строить свой срез и в качестве периода использовать позицию документа поступления ТМЦ.
Собственно и всё.
300 Said_We
 
30.07.21
12:17
К (299) Проблема что об этом за (300) постов в ветке ни разу (0) не была озвучена реальная задача. Уже бы давно дали и ответ.
Хотя он где-то написал что задачу он решил уже. Но вот возмутило его что нельзя в его случае использовать Срез. Собственно родилась ветка.
301 Eiffil123
 
30.07.21
12:18
(293) ну такой кейс конечно имеет право на жизнь. Если пользователь хочет грубо оценить цену, ему не важна цена конкретного поставщика. Но тут целых 2 решения: завести отдельный регистр сведений без этого измерения, и делать срез последних, а агрегатной функцией брать максимум. В обоих случаях цель будет достигнута.
302 Said_We
 
30.07.21
12:18
Из плюсов. Писать стали в этой ветке даже читатели форума. А это для сообщества на форуме очень хорошо.
303 Kassern
 
30.07.21
12:21
(300) я вот тоже возмущен, что 1ска до сих пор сфтп не замутило, но ведь сижу себе спокойно, ноздри не надуваю, бочку на 1с не гоню. Я человек простой, нашел библиотеку, прикрутил в 1с и все. Мое возмущение еще можно понять, функционал нужный, а его встроенного нет, а тут море возможностей решить задачу инструментами 1с, но только одни возмущения...
304 Eiffil123
 
30.07.21
12:21
(303) еще Паузы нет )
305 Said_We
 
30.07.21
12:24
Ещё из плюсов.
Так как ветка получилась из-за автора флудной, то обсудили оконные функции и как с помощью них можно быстро получать любой срез.
Правда не все сошлись во мнении почему оконные функции это плюс.
H A D G E H O G s - против использования оконных функций и считает, что это зло. Но пока на не дал ответа быстрее у него отработали запросы на чистом SQL с оконными функциями и без и с помощью обработки на языке 1С. Да и не даст скорее всего. Сколько людей столько и мнений.
306 Злопчинский
 
30.07.21
12:25
(304) нет кнопки "Сделать все" и "Сделать все хорошо"
307 nodrama
 
30.07.21
12:25
Ни чего не понял.. Человек хочет "СрезПоследних" с Измереним номенклатура, при условии, что в РС еще есть Период, регистратор, количество, сумма и еще куча полей?)

А если у номенклатуры будет две строчки с разными датами и разными ООО.. то срезПоследних должен показать только 1 строчку а не 2-е ?


01.01.2000, Рога и Копыта, Тумбочка, 200 рублей.
02.01.2000, Рога и Копыта, Тумбочка, 201 рубля.

При таком раскладе, СрезПОследних выдаст тебе
02.01.2000, Рога и Копыта, Тумбочка, 201 рубля.

_______________________________________________________
01.01.2000, Рога и Копыта, Тумбочка, 200 рублей.
02.01.2000, Копыта и Хвосты, Тумбочка, 201 рубля.
03.01.2000, Копыта и Хвосты, Тумбочка, 201 рубля.

При таком раскладе СрезПоследних выдаст тебе 2 строчки
01.01.2000, Рога и Копыта, Тумбочка, 200 рублей.
03.01.2000, Копыта и Хвосты, Тумбочка, 201 рубля.

Так всегда было. Если хочешь что бы выдало срезПОследних без учета других измерений если они разные, так поставь в Условие, что Организация <> Рога и Копыта или еще что нибдуь, так всегда было, я даже ни когда не задумывался
308 Said_We
 
30.07.21
12:27
(307) Не задумывался, наверное из-за того что документацию читал. А автор ветки не читал. Вся разница.
309 nodrama
 
30.07.21
12:48
(308) Ну просто проблемы вывести так как тебе надо из РС нету. Автору не нравится по какой методики работает СрезПОследних. Ну напиши запрос чуть по другому и все. ПРоблемы то по сути нету. Автор еще даже версию платформы написал ))

и кстати 8.3.18.1208 ... очень косячная платформа.. от слова "совсем". 1с быстренько выпустили другую более адекватную. я бы сменил ее на месте автора как можно быстрее.
310 brainguard
 
30.07.21
12:51
(290) А их и сейчас несколько. Только я хочу, чтобы в эти "несколько" попадали только ПОСЛЕДНИЕ записи
311 nodrama
 
30.07.21
12:56
(310) у Вас разные организации как минимум в примере. она и показывает срез последних на основании в данном случаи разных организаций.
В одной организации срезпоследних такая то сумма и строка, в другой такая-то.
Если это убрать, то данные будут не верны, либо ведите организации не в одной базе а разных. что бы ООО Ромашка и ООО Василек или что там не пересикались
312 youalex
 
30.07.21
13:02
(306) И "Вернуть всё взад"
313 nodrama
 
30.07.21
13:03
ООО Ромашка, продавала стулья по
100
200
300 рублей
ООО Василек продавала стулья по
100
200
310 рублей.

Логично что будет 2 строки
ооо ромашка 300 рублей
ооо василек 310 рублей.
314 Kassern
 
30.07.21
13:04
(311) вы не понимаете, ТС хочет, чтобы срез работал по его "логике". Если 2 записи в 1 период последний, то вывести 2, но срезать все остальные записи с отличным от последнего периодом. Ему всего то нужно получить дату последней цены для номенклатуры, а потом связать по дате и и номенклатуре и получить последнюю цену без привязки поставщика, а ТС хочет чтобы так срез работал. Мол не указал какие то измерения в отборе, на тебе последние строчки по периоду. Только вот ТС не хочет понимать, что добавляя поля в "Выбрать" в запросе к регистру сведений, результат запроса не меняется, но ТС хочет чтобы от этого зависела выборка. Мол указал дай мне в разрезе поставщиков, ему стандартная логика, указал без поставщика, ему его логика. Так это не работает.
315 nodrama
 
30.07.21
13:06
(314) Да только тогда запрос будет сложнее )) а ТС видимо не умеет)
316 nodrama
 
30.07.21
13:09
(314) Мне кажется ТСу нужно просто помочь написать запрос, так как он хочет, что бы выводилось.
А обсуждения СрезаПоследних просто как повод))))))))
317 Kassern
 
30.07.21
13:09
(313) вот смотрите что ТС нужно:

01.01.2020 "ООО Джонсон" чай  100р
01.03.2020 "ООО Джонсон" чай  120р

01.03.2021 "ООО Ромашка" чай  100р
02.03.2021 "ООО Ромашка" чай  120р
03.03.2021 "ООО Ромашка" чай  200р

01.03.2021 "ООО Котофей" чай  50р
02.03.2021 "ООО Котофей" чай  60р
03.03.2021 "ООО Котофей" чай  80р

Он из этой таблицы хочет получить:
03.03.2021  чай  200р
03.03.2021  чай  80р
Все остальное срезать. Вот что он понимает под срезом последних. Проще говоря ему надо все записи за последний период по отбору. А если понадобится типовое решение, то он хочет тупо добавить в запросе в Выбрать "РС.поставик, как поставщик" и вуаля, ему выдаст по его "логике":
01.03.2020 "ООО Джонсон" чай  120
03.03.2021 "ООО Ромашка" чай  200р
03.03.2021 "ООО Котофей" чай  80р
318 Kassern
 
30.07.21
13:11
(317) но ТС всячески не хочет понять, что РС так не работает, выбор полей не меняет его результат.
319 Kassern
 
30.07.21
13:12
(318) РН да может просуммировать ресурс, но это РС!
320 nodrama
 
30.07.21
13:47
03.03.2021  чай  200р
03.03.2021  чай  80р
а 01.03.2020 "ООО Джонсон" чай  120р убрать, потому что число 01, а то что там еще ООО Джонсон его не волнует.. хех

03.03.2021 "ООО Ромашка" чай  200р
03.03.2021 "ООО Котофей" чай  80р
Имеют ОДНУ дату, если у первой строки будет 02.03.2021 ее то же не будет. в результате запроса.
То есть человек хочет просто крайнею цену Чая поступившего, вне зависимости от поставщика, даты, организации и цены.
Возникает вопрос, зачем? зачем ему крайняя цена даты, без других данных. Ну узнал что 03 числа ты купил ай за 80 рублей. Не понятно у кого. и что дальше?
321 Kassern
 
30.07.21
13:48
(320) ну вот надо ему и все тут)
322 nodrama
 
30.07.21
13:57
(321) Ну могу посоветовать выбирать Чай прямо из доков поступления) сортировать там "Дата - по убыванию" ) и "Первые 1" )
Будет у него последний час с последней ценой)))) ну не быстро, а что поделать .
323 nodrama
 
30.07.21
13:57
последний чай*
324 Kassern
 
30.07.21
14:00
(322) а если массив чаев? тогда первые 1 не сканает)
325 brainguard
 
30.07.21
14:05
(311) Это не организации, а поставщики
326 brainguard
 
30.07.21
14:09
(320) Как раз мой кейс очень показательный. Но если вам все еще не понятно, тогда представьте себе РН продажи с тремя измерениями. Контрагент, Номенклатура, Склад. Иногда нужны продажи сразу по всем измерениям. Но не менее часто (а скорее всего и чаще) нужны продажи по Контрагентам только, по Номенклатуре только, по Контрагентам и Номенклатуре, по Номенклатуре и Складу
327 nodrama
 
30.07.21
14:10
(326) Так уже ответили что РС это не РН. Разные вещи то. Если бы они были одинаковыми, то не было бы смысла делить на РС и РН
328 brainguard
 
30.07.21
14:11
(316) Запрос давно написан. До того, как была заведена тема
329 nodrama
 
30.07.21
14:11
(326) Вытаскивай последнею цену чая по РН, от туда то же можно получить то что ты хочешь
330 nodrama
 
30.07.21
14:12
(328) Это был сарказм или шутка. Просто не понятен сам вопрос, когда РС и Срез, работали так всю жизнь а сейчас уже 2021 год
331 Said_We
 
30.07.21
14:38
(328) Покажи хоть что написал.
332 vde69
 
30.07.21
14:53
(259) ты получаешь обороты, их всегда можно свернуть до нужного количества измерений.
А вот срез последних тупо получает последнее значение и таблицы итогов и это поведение точно такое же как и с оборотами. Но нюанс в том что это потом нельзя свернуть, то есть из 2 строчек сделать одну нельзя

Вот пример
Измерения
1 организация
2 сотрудник

Ресурс
1 ставка


В регистре 2 записи
01.01.2000 Иванов ромашка 1
01.01.2000 Иванов васиьек 0

Делаем срез последних только для Иванова, чкакую ставку он должен вернуть?
333 brainguard
 
30.07.21
15:01
(331) Срез через соединение. Что там смотреть? Я тему завел, чтобы проверить - не упустил ли я чего. Может 1С умеет работать логично, а я просто не знаю
334 brainguard
 
30.07.21
15:01
(332) Срез можно строить на любом наборе измерений
335 brainguard
 
30.07.21
15:02
(332) Обе
336 Said_We
 
30.07.21
15:05
(333) Ну пару дней тут пишем. Интересно же взглянуть.
337 nodrama
 
30.07.21
15:08
(333) 1с работает логично, просто твоя логика не сходится с логикой 1с.
Пользуюсь срезомпоследних с начала своей карьеры) проблем 0
338 nodrama
 
30.07.21
15:09
(337) точно так же как спорить стакан на половину пусть или полон.
339 nodrama
 
30.07.21
15:10
Если бы РС работал точно так же как РН, как ты говоришь что по РН можно посмотреть в разрезе 1 измерения так что бы тебя по твоей логике устроил результат.
То зачем было бы создавать РС и РН создали бы один регистр)
340 TirWorm
 
30.07.21
15:15
Периодический РС работает по составным ключам из всех измерений. Решение логичное и простое. Так работало изначально и будет работать, потому что другие решения ведут к "двусмысленности".
Из этого срез всегда строится по составному ключу целиком, а потом разраб в запросе может делать с результатами что ему угодно, то есть, решать эти "двусмысленности".

Если нужно для 3х измерений РС делать кучу разных вариантов срезов - или делай на каждый ключ свой периодический РС (и потом будешь решать проблему уникальности), или делай в запросе свертку результата среза.
РС и РН имеют разную логику работы, их сравнивать как-то странно.
341 nodrama
 
30.07.21
15:17
(340) Ну я пытаюсь это сказать автору.. но в середине темы он все равно упоминает, что вот по РН ч могу получить результат меня удовлетворяющий
а из РС со срезом, я не могу)
342 Said_We
 
30.07.21
15:17
(333) Покажи результат.
343 nodrama
 
30.07.21
15:19
(342) он стесняется )
344 Said_We
 
30.07.21
15:20
(343) Неее.... Тему на 350 постов не стесняется, а тут застеснялся - не верю.
345 Said_We
 
30.07.21
15:23
(343) И не может быть там чего-то страшного. То что он хотел получить на выходе, мы уже проговорили многократно. Хочется увидеть на языке запросов 1С.
346 nodrama
 
30.07.21
15:33
(345) Всмысле не может? Может он через через "Г" написал этот запрос, ибо банально взять "Срез" не получается, что бы было 2 строки запроса))
Результат выдает, но через "Ж".. Ведь запрос так можно написать, что смотришь и плачешь потом и думаешь, кто ж писал такое.
347 Said_We
 
30.07.21
15:45
(346) Не. Там сложно напортачить, но есть разные варианты реализации. Хотелось просто взглянуть на каком остановился.
348 vde69
 
30.07.21
15:46
(335) и какой в этом будет смысл?
349 brainguard
 
30.07.21
15:46
(346) В этом запросе негде запутаться.

ВЫБРАТЬ
    ЦеныНоменклатурыПоставщиков.Номенклатура,
    МАКСИМУМ(ЦеныНоменклатурыПоставщиков.Период) КАК Период
ПОМЕСТИТЬ Т1
ИЗ
    РегистрСведений.ЦеныНоменклатурыПоставщиков КАК ЦеныНоменклатурыПоставщиков

СГРУППИРОВАТЬ ПО
    ЦеныНоменклатурыПоставщиков.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Т1.Номенклатура,
    ЦеныНоменклатурыПоставщиков.Цена,
    Т1.Номенклатура.Код,
    ЦеныНоменклатурыПоставщиков.Регистратор
ИЗ
    Т1 КАК Т1
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыПоставщиков КАК ЦеныНоменклатурыПоставщиков
        ПО Т1.Номенклатура = ЦеныНоменклатурыПоставщиков.Номенклатура
            И Т1.Период = ЦеныНоменклатурыПоставщиков.Период

Я сейчас в сторону более общего решения думаю
350 brainguard
 
30.07.21
15:47
(348) Если это будут последние записи, как я предлагаю, тогда смысл будет.
Если же это будут не последние записи, как сделано сейчас в 1С, тогда смысла нет.
351 Вафель
 
30.07.21
15:47
(349) не отрабатывается случай 2х цен в 1 период
352 Said_We
 
30.07.21
15:48
(346) Надеюсь про запросы в (186), (187), (189) таких мыслей нет... :-)
353 brainguard
 
30.07.21
15:49
(351) Будут обе. Как я уже раз 50 здесь говорил, меня это устраивает
354 vde69
 
30.07.21
15:50
(350) какой смысл, на какой вопрос будет отвечать такой псевдо срез?
355 Вафель
 
30.07.21
15:52
(354) для цен поставщиков вполне есть смысл.
сегодня брали у одного, завтра у другого.
нужно просто найти последнего
356 Kassern
 
30.07.21
15:52
(349) Я так понимаю виды цен поставщиков у вас не используются?
357 Вафель
 
30.07.21
15:53
(356) а чем помогут виды цен?
358 Kassern
 
30.07.21
15:55
(357) выбрать верный ресурс
359 nodrama
 
30.07.21
15:56
(355) Что бы найти тупо последнего поставщика и последнию цену. конкретного товара.
Можно и легче сделать без всяких поместить в таблицу и тд ))
360 Вафель
 
30.07.21
15:57
ну вместо временной будет вложенная.
легче - не особо
361 Said_We
 
30.07.21
16:04
(349) А если так (писал на коленке, без проверки в консоле, поэтому мог где-то синтаксис упустить):

ВЫБРАТЬ Первые 9999999999999
     ЦеныНоменклатурыПоставщиков.Период
    ,ЦеныНоменклатурыПоставщиков.Номенклатура
    ,ЦеныНоменклатурыПоставщиков.Цена
    ,АвтоНомерЗаписи() как нпп
ПОМЕСТИТЬ Т1
ИЗ
    РегистрСведений.ЦеныНоменклатурыПоставщиков КАК ЦеныНоменклатурыПоставщиков
Упорядочить по
     ЦеныНоменклатурыПоставщиков.Номенклатура
    ,ЦеныНоменклатурыПоставщиков.Период Убыв
;

Выбрать
     т.Номенклатура
    ,Мин(т.нпп) как Мин_НПП
ПОМЕСТИТЬ ВТ_МИН_НПП
Из
    Т1 как т
Сгруппировать по
    т.Номенклатура
;

ВЫБРАТЬ
     т1.Период
    ,т1.Номенклатура
    ,т1.Цена
//    ,т1.НПП как нпп
//    ,т2.Мин_НПП как Мин_НПП
ИЗ
    т1 как т1
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_МИН_НПП КАК т2
        ПО Т1.Номенклатура = т2.Номенклатура
            И Т1.НПП = т2.Мин_НПП
362 Said_We
 
30.07.21
16:12
К (361) Ещё правильнее предварительно взять срез в ВТ и уже в следующей ВТ его нуимировать. Так просто ВТ будут меньше на много.
363 vde69
 
30.07.21
16:12
(355) для этого регистр должен быть такой

Измерение
1. Номенклатура
Ресурс
1. Цена
Рреквизит
1. Поставщик


И все будет работать
364 Вафель
 
30.07.21
16:12
(363) ну вообще то типовые регистры никто не меняет ради своих хотелок
365 Eiffil123
 
30.07.21
16:13
(334) нельзя. структура регистра сведений не позволяет получить одно значение по неполному набору.
366 Вафель
 
30.07.21
16:13
(363) по такому регистру не узнаешь последнюю цену от поставщика
367 Eiffil123
 
30.07.21
16:14
(339) а ведь еще есть регистры расчета, которые работают вообще по третьему сценарию и могут возвращать записей больше, чем было в реальных таблицах при проведении ))
368 Said_We
 
30.07.21
16:21
(0) Посмотрел (361) + (362)?
Это твой универсальный случай?
369 ДядяМитяй
 
30.07.21
17:22
Элементарно делается срез последних по "не всем" измерениям. Надо только не вспоминать статью Гилева "За что увольняют программистов 1С". В параметры в запросе пихаешь только дату, остальные условия в ГДЕ. Работает 100%. Но некошерно...
370 brainguard
 
30.07.21
18:36
(354) Мой срез будет выдавать последние записи
371 brainguard
 
30.07.21
18:38
(359) Заказчик просил таблицу
372 brainguard
 
30.07.21
18:42
(363) Во-первых, типовые регистры нет смысла трогать, когда просят всего лишь сиюсекундный отчет.
А во-вторых, рассмотрите общую ситуацию. Если у вас два измерения, тогда нужно делать три регистра, чтобы закрыть все возможные варианты.
Для трех измерений потребуется шесть регистров. Для четырех тринадцать
373 brainguard
 
30.07.21
18:43
(369) И какое условие я должен был поставить в ГДЕ, чтобы получить последние?
374 brainguard
 
30.07.21
18:50
(368) Зачем так сложно? В (349) проще
375 Said_We
 
30.07.21
19:00
(373) Оно ставится не в ГДЕ
(374) Что сложного?
376 mistеr
 
30.07.21
21:15
(293) То есть он хочет, чтобы алгоритм (запрос) для решения его одной частной задачи 1С вкрячила в платформу? То есть вся гибкость языка запросов не нужна, хочу просто обратиться к виртуальной таблице Регистр.СрезИмениBrainguard()?

Понятно. Ну что ж, хотеть не вредно.
377 brainguard
 
30.07.21
21:51
(376) Это - не частная задача, а вполне общая. И все, что я хочу - это чтобы при обращении к виртуальной таблице среза последних мне выдавали последние записи. Что в этом странного?
378 Valdis2007
 
30.07.21
22:26
"Делаем запрос по одному измерению "номенклатура" и не получаем срез последних по этому измерению" ... Ты сам себе противоречишь, как можно получить "множественное число", по одному измерению? Это же срез -"ПОСЛЕДНИХ", а не "ПОСЛЕДНЕГО"))
379 brainguard
 
30.07.21
22:37
(378) Это - срез последних записей. Количество измерений здесь ни при чем
380 brainguard
 
30.07.21
22:42
(375) Аааа. Сразу не увидел. Ты решил задачу получения любой записи. Ничего так, годная штука. АвтоНомерЗаписи() быстро работает?
381 Valdis2007
 
30.07.21
23:23
ок, без проблем, я просто пошутил))
382 27200802018
 
30.07.21
23:52
Как мы писали "Срез последних" в 7.7? Точнее, вообще - осуществляли. Вспомните, наложите на современный мир и поймете, что удобнее и логичнее, а что нет.
383 brainguard
 
31.07.21
11:11
Кстати, кто-нибудь хоть раз использовал срез первых?
384 mistеr
 
31.07.21
13:38
(377) Странно то, средств для решения твоей задачи вполне достаточно и сейчас, по твоим же словам. А оснований для реализации в виде вирт. таблицы я не вижу.

А насчет того, частная это задача или общая — приведи свою реальную задачу, где это нужно, посмотрим. Я вот ни разу такой не встречал, но может просто не попадалось. И никто больше здесь не написал "да, я тоже с такой задачей сталкивался, решил так-то".
385 mistеr
 
31.07.21
13:40
(383) Я как-то использовал один раз, зачем, уже не помню.
386 Said_We
 
01.08.21
10:29
(380) Очень быстро.
387 Said_We
 
01.08.21
14:20
(380) Возьми самую длинную таблицу, которая есть в Вашей базе, что бы она влезла в ПОМЕСТИТЬ.
Два запроса с АвтоНомерЗаписи() несколько раз выполнить и без несколько раз. Сравнить разницу в скорости выполнения. Если конечно эта разница у Вас получиться.
388 brainguard
 
02.08.21
00:26
(384) А и не надо дополнительных виртуальных таблиц. Пусть уже имеющаяся выдает последние записи в полном соответствии со своим названием "СрезПоследних".
Кейс я уже в самом начале привел. Два измерения "Поставщик" и "Номенклатура". Нужны последние цены по одному измерению "Номенклатура"ё
389 brainguard
 
02.08.21
00:33
(386) (387) Спасибо! Буду знать теперь
390 Said_We
 
02.08.21
10:23
(389) Запрос соединение: ограничение количества записей
Примерно такой же вопрос. Я сначала думал дежавю. Потом нет Автор в 7-м посте сам решение нашел.
391 ДядяМитяй
 
02.08.21
10:41
(375) а где же если не в где? )))
392 brainguard
 
02.08.21
11:04
(391) Чтобы получить последние записи, нужно делать соединение. Так что, не в ГДЕ , а в ПО
393 ДядяМитяй
 
02.08.21
11:14
(392) нет, ну можно многими обходными путями идти, если много времени.
но то, что описано в (369) работает
ВЫБРАТЬ Чегото ИЗ
НашРегистрСТремяИзмерениями.СрезПоследних(&Дата)
ГДЕ
Измерение1 = &Адын И
Измерение2 = @Дыва
394 Said_We
 
02.08.21
11:33
(393) А если так:

ВЫБРАТЬ
     Чегото
ИЗ
    НашРегистрСТремяИзмерениями.СрезПоследних(&Дата, Измерение1 = &Адын И Измерение2 = @Дыва)
395 ДядяМитяй
 
02.08.21
11:45
(394) тогда возвращаемся к началу. Срез последних будет больше похож на срез первых. Потому что будет строится с учетом третьего измерения, которое будет первым встреченным (так как не указано в условиях)
396 ДядяМитяй
 
02.08.21
11:47
(395) *не указано в ПАРАМЕТРАХ
397 Said_We
 
02.08.21
12:15
(395) Ничего из сказанного не понял.
Если есть условие на измерение в резе, его в срезе и указывают, а не в ГДЕ. Связанно это с тем что сам срез в 1С строится не быстро на больших множествах, а вы при построении срез ничем не ограничиваете.
Далее уже ограничиваете трудоемко полученный результат в ГДЕ. Быстрее отработает, если вы в качестве условия передадите свои ограничение, а не в ГДЕ. Такой срез может построится на порядок, или много порядков быстрее - от данных зависит на сколько будет быстрее.
398 ДядяМитяй
 
02.08.21
12:17
(396) "нет времени объяснять". Просто попробуй. Или прочти всю ветку.
399 Said_We
 
02.08.21
12:20
(398) Я всю ветку прочитал. Я не понимаю о чём Вы говорите.
400 Said_We
 
02.08.21
12:23
(398) Запросы в (393) и (394) идентичны с точки зрения получаемого результата. Но разные с точки зрения производительности. В (394) в общем случае будет быстрее и на сколько быстрее зависит от самих данных.
401 Said_We
 
02.08.21
12:35
(398) в (189) я написал аналог запроса, который будет, скорее всего даже быстрее чем типовой СрезПослдених().
Только там вместо row_number() правильнее будет RANK() или DENSE_RANK(), по логике работы среза как он есть сейчас.
Если в 1С будут оконные функции, то СрезПоследних() и СрезПервых(), скорее всего будут не нужны. По крайней мере в той реализации, в которой они сейчас, так как они, скорее всего, будут медленнее.
Зависит от того как эти оконные функции 1С реализует и сделает ли она это когда либо.
402 brainguard
 
02.08.21
12:39
(393) Исходные данные

01.01.2013 ООО Ромашка Свистелка 50 руб.
01.01.2021 ООО Василек Свистелка 150 руб.
01.02.2021 ООО Ландыш Свистелка 151 руб.
01.02.2021 ООО Одуванчик Свистелка 152 руб.

Как в общем случае(!) получить

01.02.2021 Свистелка 151 руб.
01.02.2021 Свистелка 152 руб.

С помощью ГДЕ?
403 Said_We
 
02.08.21
12:43
ВЫБРАТЬ
     т.*
ИЗ
    НашРегистрСведений.СрезПоследних(, Измерение2 = @Свистелка) как т
404 Said_We
 
02.08.21
12:44
Только там будут все четыре записи
405 brainguard
 
02.08.21
12:44
(404) Вот-вот. С чего все и началось
406 ДядяМитяй
 
02.08.21
12:46
(403) получишь свистелка 50. Потому что это срез последних по всем комбинациям измерений. Срез последних не выдает, насколько я помню несколько записей.
407 Said_We
 
02.08.21
12:46
Так зачем нужны две, и что с ними планируется делать - как анализировать или разными колонками выводить?
408 brainguard
 
02.08.21
12:47
(406) В смысле - не выдает? Не выдает неуникальные записи?
409 brainguard
 
02.08.21
12:48
(407) Нужны последние. А сколько их будет неважно
410 Said_We
 
02.08.21
12:48
(406) да ладно? :-)
(0) зачем вся ветка - не выдает оказывается и срез первых без учета измерений будет вместо среза последних. :-)
411 brainguard
 
02.08.21
12:48
(406) Нет. Получишь все четыре записи
412 Said_We
 
02.08.21
12:49
(409) Ну считай что они есть, что дальше с этим делается?
413 Ыцшесрук
 
02.08.21
12:50
(409) Ну вот и получишь все последние по всем измерениям, которые ты не указал.
414 Said_We
 
02.08.21
12:50
Как мне как пользователю это анализировать? На какую цифру ориентироваться?
415 brainguard
 
02.08.21
12:51
(412) В моем конкретном кейсе этого было достаточно. Получил записи, визуализировал в отчете, заказчик доволен.
416 brainguard
 
02.08.21
12:51
(414) На любую
417 ДядяМитяй
 
02.08.21
12:51
(411) ну да, наверное. Но в срезе последних ты ждешь одну, поэтому возьмешь первую :Р
418 Said_We
 
02.08.21
12:52
(416) Вот пусть я специалист по закупкам и для меня "любую" не понятно. Если они сильно разные.
419 brainguard
 
02.08.21
12:52
(417) Нет, я уже сделал нормальный срез последних, который работает по неполному набору измерений
420 brainguard
 
02.08.21
12:53
(418) Разберешься как-нибудь. Ты ж специалист )))
421 brainguard
 
02.08.21
12:54
(413) А мне нужны последние по измерениям, которые я указал
422 nodrama
 
06.08.21
09:38
(421) В продолдении темы. Если так смотреть, то 1с во многом не логична. И придератся можно к чему угодно. СредПОследних так работал всегда и у него есть описания, но Вас он не устроил и вы хотите что бы он Логично работак так как вы считаете, было бы "Логичном" ))

Вот банальный пример, взять даже Запросы

...........
.....
...
Выбор
Когда
     Пупкин = &Параметр
Тогда 1
Конец как БольшойКОнец )))
......

Логичное, если Пупкин попал под Параметр, то в ячейки встанет цифра "1"..
Если не попал под Параметр, то в ячейки ни чего не встанет.
Только вот по моей логике, там должно встать цифра "0". а не оставить вообще пустым NULL
Но пока ты не допишешь
Тогда 1
Иначе 0

Ноль там не встанет. ЧТо бы ты потом легко мог математически складывать нужные ячейки.  А было бы логично, если в первом варианте ты передаешь цифру 1, то если она не встает, то логично поставить туда цифру 0. Если ты передаешь в первом варианте Строку "алалал". то логично если она не встает передавать туда пустоую строку "" и так далее. Но нет же. ПОка ты не напишешь что ты хочешь место "1" увидеть там, там будет тупо NULL
А как бы ускорило работу, если бы тебе не пришлось везде дописывать лишние строки запроса, если ты изначально хочешь записать туда только цифры допустим.
А вот если тебе надо
Тогда 1
Иначе "Лалала" или Выразить(лалала как строка(111) ну не суть.. тогда да пожалуйста..
Но нет. же.

Мне вот надо было создать отчет. Выводить в ячейки цифры по номенклатуре. не суть. И вот ты как дурак пишешь.. Тогда 1, Иначе 0, ТОгда 1 иначе 0.. ну я образно. лишний код на 50% получается))
423 nodrama
 
06.08.21
09:39
Что бы все работало по "Логике" какой человек хочет, а не по какой написана программа. Человек должен сам создать программу себе))
424 brainguard
 
06.08.21
09:39
Короче, сделал себе универсальный срез последних. Его можно применять к любым наборам данных, где есть дата. Вот шаблон.

        зап=новый запрос;
        если не пустаястрока(колонкиизмерений) тогда
            зап.Текст="ВЫБРАТЬ "+всеколонки+" Поместить Т1 ИЗ &тз как тз;
            |ВЫБРАТЬ "+колонкиизмерений+",МАКСИМУМ(т1."+колонкадаты+") как "+колонкадаты+" Поместить Т2 ИЗ Т1 СГРУППИРОВАТЬ ПО "+колонкиизмерений+";
            |ВЫБРАТЬ Т2."+колонкадаты+","+колонкиизмерений2+",Т1."+колонкаресурса+" ИЗ Т2 СОЕДИНЕНИЕ Т1 ПО "+условиесоединения;
        иначе
            зап.Текст="ВЫБРАТЬ "+всеколонки+" Поместить Т1 ИЗ &тз как тз;
            |ВЫБРАТЬ МАКСИМУМ(т1."+колонкадаты+") как "+колонкадаты+" Поместить Т2 ИЗ Т1;
            |ВЫБРАТЬ Т2."+колонкадаты+",Т1."+колонкаресурса+" ИЗ Т2 СОЕДИНЕНИЕ Т1 ПО "+условиесоединения;
        конецесли;
        
        зап.УстановитьПараметр("тз",тзтип);
        рез=зап.Выполнить().Выгрузить();


Я использую его в универсальном просмотрщике базы. Поэтому в качестве источника у меня таблица значений. Можете переделать на любой источник.
Схему запроса не использовал из-за ее громоздкости
https://infostart.ru/public/1492741/
425 Ыцшесрук
 
06.08.21
09:42
ОМГ, ты всегда такой вырвиглазный код пишешь?
426 brainguard
 
06.08.21
09:46
(425) Мне лень на Shift-е плясать
427 nodrama
 
06.08.21
09:47
зап. тз тзтип ))

Как кусок песни Скриптонита какого нибуть)
428 Kassern
 
06.08.21
09:47
(426) сегодня зап, рез, а завтра уже з=Новый Запрос; р=з.Выполнить();?
429 Kassern
 
06.08.21
09:48
(426) если уж лениться, так лениться))
430 nodrama
 
06.08.21
09:49
(428) А после завтра я опять на форуме пишу, что бывший програмист мне нафигачил

о=ор.
о.Организация = с.Ор;
сп=О.ПолучитьОбъект
и тд и тому подобное
431 brainguard
 
06.08.21
09:54
(428) Все эти переменные умирают через строчку. Какая разница?
432 Вафель
 
06.08.21
09:56
(431) читабельность кода?
Не не слышал
433 Вафель
 
06.08.21
09:56
Как ты преподавал то?
434 brainguard
 
06.08.21
10:01
(432) В данном случае чем короче, тем читабельнее
435 Ыцшесрук
 
06.08.21
10:09
(434) Да вообще ни разу.
436 brainguard
 
06.08.21
10:10
(435) Это потому что у вас опыта мало
437 brainguard
 
06.08.21
10:19
Вот данный конкретный случай:

рез=зап.Выполнить().Выгрузить();
ЗначениеВРеквизитФормы(рез, "РабочееПоле");
ЭтаФорма.Заголовок="Всего строк: "+строка(рез.количество());

Если бы не третья строка, я написал бы:

ЗначениеВРеквизитФормы(зап.Выполнить().Выгрузить(), "РабочееПоле");

Но я не могу обойтись без переменной, которая умрет через строчку. Поэтому написано, как написано. Но зачем этой переменной давать длинное имя? Для кого? Для того, кто дойдя до третьей строчки, забывает, что было в первой?
438 mistеr
 
06.08.21
10:23
(437) Ты, видимо, не знаком с командной разработкой. Бывает.
439 Вафель
 
06.08.21
10:24
(437) те ты считаешь себя умней тех, кто стандарты разработки писал?
440 brainguard
 
06.08.21
10:26
(438) Я думаю, что тем, кто на третьей строчке забывает про первую, не место в команде
441 brainguard
 
06.08.21
10:26
(439) Определенно )))
442 VladZ
 
06.08.21
10:27
(424) Жуть.
443 mistеr
 
06.08.21
10:28
(440) Поэтому ты до сих пор без команды?
444 lodger
 
06.08.21
10:40
(442) получается, это был промо-пост к своей публикации на нимфостарте.
445 nodrama
 
06.08.21
10:48
Человек просто не заботится о своих коллегах.
Банально когда пишут "ДокРеализация. ляляляля .. лялял " Ты понимаешь что он берет найденый Документ Реализацию и что то делает с ней.
А когда пишут как в моей базе бывшие.. д.Ор.ПОлучитьОбъект(); и тд.. Ты тратишь на много больше времени, что бы понять что такое "Д" и что такое "ОР".. грубо говоря. ))
А если вы одновременно в 3-ом, разрабатываете что-то в одной конфигурации. Но это уже другая история)
446 Ыцшесрук
 
06.08.21
10:52
(436) Нет, это потому что пишешь ты отвратительно.
447 fisher
 
06.08.21
10:54
Спрашивать за читабельность? У brainguard? Муа-ха-ха-ха.
ЕМНИП это тот чел, что топил за вред использования длинных мнемонических, сбивающих с толку настоящих программистов.
Мол настоящие программисты должны схватывать суть алгоритма без странных костылей в виде говорящих имен, которые легко могут ввести в заблуждение если не совсем соответствуют своему названию.
Поэтому чем бессмысленнее имена сущностей, тем более они полезны. А тем, кто не может читать обфусцированный код с листа прозревая его суть - просто не место в программировании. Это самозванцы какие-то.
448 lodger
 
06.08.21
11:08
(447) давайте ещё проголосуем за переменные вида
a
b
c
в коде 1с. ага.
449 fisher
 
06.08.21
11:19
(448) Какой смысл в голосовании? brainguard'а этим не проймешь. Он постиг дзен, а ты нет. Просветленных по определению не может быть много. Поэтому и голосование неспособно выявить истину.
450 brainguard
 
06.08.21
11:31
(445) Ага. Сначала в ДокРеализация был документ реализации, а потом... стало так, что иногда там реализация, а иногда что-то иное.
Да, ты должен ПОНИМАТЬ что такое "Д" и что такое "ОР". Но ты также ДОЛЖЕН ПОНИМАТЬ что такое "ДокРеализация". И вовсе не из названия, а из контекста. Когда ты начинаешь ориентироваться на названия, ты вступаешь на тонкий лед. Потому что смысл переменной находится не СЛЕВА, а СПРАВА
451 K1RSAN
 
06.08.21
11:38
(419) не "нормальный", а "кастомный". Нормальным он и так был, просто ваши потребности - "нестандартные". Поэтому сами ваяете. Это как говорить, что типовая плохая, потому что не может творить дичь, а тебе нужна дичь
452 Kassern
 
06.08.21
11:40
(450) поэтому и не стоит называть ДокРеализация переменную, если там хранится другой тип объекта. Если правильно заывать переменные и функции, то нет смысла постоянно смотреть "на право", имена переменных должны помогать и не вводить в заблуждение.
453 Cyberhawk
 
06.08.21
11:47
(402) Всю ветку не читал. Из основной таблицы достаешь максимальные даты (с условием на нужный набор измерений и группировкой по ним), запоминаешь их в ВТ, далее во втором запросе пакета соединяешь основную таблицу с датами и значениями измерений из ВТ.
454 K1RSAN
 
06.08.21
11:51
(450) Это банальное нарушение правил хорошего кода. Назвать реквизит "количество", а там будет цена или вообще контрагент)
455 Вафель
 
06.08.21
11:52
(454) Прям как
#define TRUE FALSE //счастливой отладки
456 brainguard
 
06.08.21
11:53
(452) А ее сначала и назвали нормально. А потом что-то добавилось в процессе. Скажете, так не бывает?
457 brainguard
 
06.08.21
11:57
(453) Спасибо. Это и было сделано. До появления ветки и после появления ветки (в универсальном варианте). Но все равно спасибо за то, что кратко и по делу
458 Kassern
 
06.08.21
11:57
(456) в нормальной среде обработки - не бывает. Нельзя присваивать переменной ДокРеализация к примеру ДокПоступления.
459 Ыцшесрук
 
06.08.21
11:58
Ляяя... Многократное использование переменных, меняя их типы за счёт неявной типизации - это не просто говнокод, это за гранью добра и зла.
460 brainguard
 
06.08.21
11:58
(452) Программист обязан смотреть направо всегда. Смотреть налево нехорошо
461 ДенисЧ
 
06.08.21
11:59
(460) "Вас, Сидоровых, не поймёшь... Она говорит, что хорошо, ты - что плохо..."
462 Kassern
 
06.08.21
12:00
(460) программист должен придерживаться стандартов разработки, но вам видимо это не понять
463 K1RSAN
 
06.08.21
12:00
(456) Переименовать переменную религия не позволяет? Или спустя несколько итераций будет реквизит Количество, а там сидеть физ лицо?) Потом приходит новый программист, и пытается понять, как вообще можно работать в этом балагане
464 K1RSAN
 
06.08.21
12:01
Хотя о чем я. Это хороший такой задел на "Незаменимого Васю" )
465 Ыцшесрук
 
06.08.21
12:02
(464) О да, незаменимых васей ждёт отдельный котёл в аду.
466 brainguard
 
06.08.21
12:02
(458) Еще как бывает! Вы намеренно берете антонимы. Реализация, Поступление. А если так: Реализация, ВозвратРеализации? Или так РеализацияСтарая, РеализацияНовая? Или так: РеализацияОпт, РеализацияРозн?
467 brainguard
 
06.08.21
12:03
(463) А ее уже вставили в 100500 мест
468 fisher
 
06.08.21
12:05
Вдруг кто еще не читал: https://infostart.ru/1c/articles/966234/
Для пятницы самое оно.
469 Kassern
 
06.08.21
12:23
(466) Ну так у вас должны быть разные переменные, прочитав которую было бы понятно о каком объекте идет речь.
470 Kassern
 
06.08.21
12:24
Ректальное программирование - это, прежде всего, программирование свободного человека, если хотите - венца творения. Это программирование, свободное от всяких предрассудков, навязанных рамок следования стандартам, параноидальной боязни демонстрировать свой код другим участникам проекта. Ректальное программирование - это путь состоявшегося программиста, уверенного в своём абсолютном превосходстве и компетенции, не нуждающегося в поучениях и не поддающегося стадному инстинкту постоянно обучаться.
471 Kassern
 
06.08.21
12:24
(468) веселая статья)
472 Злопчинский
 
06.08.21
12:30
(471) Главное - полезная!
473 Kassern
 
06.08.21
12:31
Нравится вам такой код? Если уж лениться на шифт, то можно лениться и на энтер с табом:

процедура создатьдокумент(отказ,сс,массив,тч,сообщпользчтнельзсозддок=ложь)
если отказ=истина тогда отказ=ложь; возврат; конецесли;
если типзнч(сс)=тип("документссылка.заказклиенту")тогда...
474 K1RSAN
 
06.08.21
12:31
(467) Ну если вы пишите не код, а говнокод - то да, всё бесполезно и надо жить переменными, которые вообще не соответствуют своему названию.
475 nodrama
 
06.08.21
13:23
(450) Если  у тебя в "Переменной"  ДокРеализация. КОД КОД КОД.
Оказался не "ДокРеализация." найденный.. а что-то другое..
То опять же возникает вопрос, по грамотности написания кода. Такого быть не должно.
476 nodrama
 
06.08.21
13:27
Нормально написанный код.
Не может быть, что у тебя сначала ДокРеализация. переменная..
А в середине кода, ЭТА ЖЕ Переменна ДокРеализация. Получила документ ПОступления товаров и услуг.
Это не нормально как минимум.

А если к этому добавить... что сначала у тебя была переменная "с." "о." с чем-то.. А в середине кода.. эти же переменные с и о у тебя с другим чем-то..
То это еще более не нормально).

Зачем так делать изначально? Из за экономии времени на набор лишних букв? или из за желания сделать хуже программисту который будет читать и редактировать этот код в будующем?
477 nodrama
 
06.08.21
13:30
Если ты пишешь программу себе дома для себя.. можно делать хоть a b c d а в середине кода А Б С  Д..
Но когда ты делаешь это для организации за деньги при этом считаешь себя адекватным программистом, то зачем?)
Вот сейчас ты в единственном лице. А через месяц возьмут второго программиста, вы будете сидеть с ним рядом. Он откроет обработку.. А там черт ногу сломит.
Посмотрит на тебя, ты посмотришь на него.. ))) он поржет и заплачет ))
478 brainguard
 
06.08.21
13:46
Ребята! Вы мне напоминаете героя анекдота, который устроился работать пожарным. И все его устраивало. И зарплата, и коллеги, и начальство, и офис. Но вот только... как пожар, так прям хоть увольняйся. Я искренне не понимаю - если тебе так тяжело программировать, то зачем заниматься этим?
История вопроса проста и банальна. Когда человек учится программировать, он сперва осваивает сериализацию, т.е. превращение мысли в текст. Через некоторое время, когда он уже успел наполниться гордостью за себя, человек сталкивается с необходимостью проделывать обратную операцию, структуризацию, т.е. превращение текста в мысль. Эта операция действительно существенно более сложная, чем сериализация и многие тут по началу обламываются. И по свойственной человеческой натуре склонности тут же начинают искать виновного. Дескать, это не я пока еще слаб в программировании, это другой человек плохо написал программу. А я-то молодец, гораздо лучше, чем тот козел!
Лет через 20 это точно проходит.
Впрочем, на самом деле, спор ни о чем. В ближайшем будущем мы будем избавлены от необходимости выполнять сериализацию и структуризацию. Будем записывать мысль не виде текста, а виде мысли. И спор об именах переменных уйдет в историю
479 Ыцшесрук
 
06.08.21
13:49
Ля, он ещё и идеологическую базу под копрокод подводит.
Клиника.
480 ДенисЧ
 
06.08.21
13:52
(478) Ты молодец. Лучше всех окружающих. И весь в белом.
А нет. В белом - врачи вокруг тебя...
481 Вафель
 
06.08.21
13:53
(478) но таки при этом большинство пишет г. код. да и мой древний код такое же г.
482 fisher
 
06.08.21
13:53
(478) > Лет через 20 это точно проходит.
К счастью, эволюция нормальных программистов обычно идет в другом направлении.
Поначалу видишь код - мама родная! Какой козел это написал? И все с тобой соглашаются. Глядишь - а это ты же когда-то и написал.
А лет через 20 видишь код - красота-то какая! И все с тобой соглашаются. Глядишь - а это ты же когда-то и написал.
483 Вафель
 
06.08.21
13:57
просто чел не освоил 10 пальцевой метод, поэтому ему тяжело много букв набирать
484 ildary
 
06.08.21
13:58
(483) наверное хорошо, когда столько времени освобождается от набивки переменных, да и голова не устаёт.
485 Вафель
 
06.08.21
13:58
с хорошо отформатированным кодом как минимум приятно работать.
486 brainguard
 
06.08.21
13:59
(482) Ну значит я ошибся. Не через 20, а через 30. Просто не засекал точно. Через 30 лет глядишь на тот и другой код. Код, как код. И тот и другой делают одно и то же. Все говорят, что один хороший, а другой плохой, а ты искренне не понимаешь - в чем разница )))
487 Вафель
 
06.08.21
14:00
просто в 1с код ревью не приняты поэтому такие как ТС и могут писать такой свой код
488 fisher
 
06.08.21
14:00
(483) Шутки-шутками, но когда нет необходимости отрывать взгляд от монитора то и мысль меньше рвется и ошибок меньше допускаешь.
489 Вафель
 
06.08.21
14:01
(486) у тебя повреждено чувство прекрасного. а может и вообще никогда не было
490 fisher
 
06.08.21
14:05
(486) Эффективность понимания кода зависит от его оформления. Для всех. Но не для тебя. Допустим, ты сверхчеловек и для тебя - не зависит. Проблема в том что для работы в команде нельзя тебя ксерокопировать. Тебе придется работать с обычными недалекими людьми, для которых эффективность понимания кода от его оформления зависит. Отсюда вывод какой? Для команды такие сверхлюди отказывающиеся играть по правилам - противопоказаны.
491 brainguard
 
06.08.21
14:07
(489) "рез" звучит прекрасно, как полет стрижа или взмах самурайского меча. А как звучит РезультатЗапроса?
492 ildary
 
06.08.21
14:08
(491) А почему целых три буквы? Достаточно "р" - и именно незаглавной - чтобы сэкономить на шифте.
493 fisher
 
06.08.21
14:10
(492) Видимо он не потянул чистоту своего пути. И каким-то людоедским словарем пользоваться все же вынужден.
494 Вафель
 
06.08.21
14:11
кстати в других языках переменные принято со строчной буквы начинать
495 brainguard
 
06.08.21
14:11
(490) Вот тут кроется самое главное. С чего вы взяли, что зависит? У человека проблема со структуризацией. Он, как и многие другие, хочет в мыслях переложить свою проблему на другого, чтобы не чувствовать себя ущербным. Все находится в области психологического и субъективного. А где объективный критерий?
496 brainguard
 
06.08.21
14:12
(493) Ну я пишу же букву "й" )))
497 ildary
 
06.08.21
14:12
(493) Надеюсь, что текст "РезультатЗапроса" был скопирован из типовой, чтобы не утруждать себя набором такого количества символов.

(494) Это случайно не вредная венгерская нотация, которую надо похоронить в 80-х, когда ей самое место.
498 Вафель
 
06.08.21
14:12
(495) ты отрицаешь что по разному написанный код требует разного уровня структуризации?
499 Вафель
 
06.08.21
14:13
(497) почему вредная? у гугла код стайл такой например
500 Вафель
 
06.08.21
14:13
с большой буквы объекты пишутся
501 ildary
 
06.08.21
14:16
(499) потому что читать код, где переменные и объекты содержат в себе префиксы - удовольствие, чуть лучше кода с рез = 0. Венгерская нотация была хороша, когда редакторы не умели в контекстные подсказки, а сейчас даже 1С-ная EDT понимает тип входящей переменной.
502 ildary
 
06.08.21
14:17
+(501) Особое счастье видеть префиксы от нескольких команд разработки - и дерево конфигурации (+ текст модуля) превращается в угадай мелодию.
503 brainguard
 
06.08.21
14:17
(498) Тебе надо превратить текст в мысль. Сложность этого процесса мало зависит от имен переменных. Если у тебя слабая "оперативная память" и ты не можешь одновременно манипулировать 6-7 абстрактными понятиями, не можешь запомнить что чего означает, то никакие красивые имена тебе не помогут.
Сложность скорее зависит от выделения блоков. Но сейчас везде автоформатирование и этот вопрос давно перестал быть вопросом.
504 fisher
 
06.08.21
14:17
(495) Объективный критерий очень прост. Скорость "структуризации", как ты ее называешь. Секундомера достаточно.
505 Ненавижу 1С
 
гуру
06.08.21
14:18
(499) пруфы будут?
506 brainguard
 
06.08.21
14:19
(504) Вы проводили измерения? Рандомное тестирование на 1000 разработчиков?
507 Ненавижу 1С
 
гуру
06.08.21
14:20
(494) в разных по-разному
например C# использует большие буквы вначале методов, а Java нет
508 fisher
 
06.08.21
14:21
(506) Нет, конечно. Для меня в этом нет смысла. Но это стоит сделать вам, раз вы в меньшинстве. Утрете всем нос.
509 brainguard
 
06.08.21
14:22
(508) А мне это неинтересно по причинам, которые я описал в (478)
510 fisher
 
06.08.21
14:25
(509) Вы себе же противоречите. Раз вы признаете, что мнение "молодых и неопытных" разрабов до 30 лет опыта противоречит вашему, то чтобы результаты опыта оказались в вашу пользу - все эти люди должны заблуждаться. То есть думать что "плохой код" снижает их эффективность, а на самом деле он ее снижать не будет. То есть вы всех к психиатру отправляете. Я правильно понял?
511 brainguard
 
06.08.21
14:35
(510) Нет. Мне это неинтересно, потому что мы скоро откажемся от текста в программировании. И, соответственно, сам предмет исследований станет неактуальным
512 fisher
 
06.08.21
14:42
<brainguard знал, что в будущем программировать будут без текста и поэтому, опережая свое время, начал программировать без текста когда это еще не было модным. Ну, насколько мог>
513 brainguard
 
06.08.21
14:48
Теперь можно и статью про регистры сведений. Помнится, кто-то в этой ветке просил
514 Kassern
 
06.08.21
15:03
(513) вперед, главное по больше реальных примеров и интересных архитектурных решений с пояснениями.
515 Митяйский
 
06.08.21
16:23
Ребзя, вам не стыдно над человеком уже больше недели издеваться?
516 brainguard
 
09.08.21
08:23
Кстати, кто помнит, в 8.0 ведь уже были регистры сведений?
517 ДенисЧ
 
09.08.21
08:30
(512) Он начал программировать без мозга...
(516) Нет, их ввели только в 8.3.15
518 brainguard
 
09.08.21
08:43
(517) А не в 8.3.18? )))
519 ДенисЧ
 
09.08.21
08:48
(518) Нет.
520 brainguard
 
09.08.21
08:53
(519) Да ладно!
521 Чинухов
 
09.08.21
08:53
(515) Так это он над всеми издевается, на самом то деле :)
522 brainguard
 
09.08.21
08:54
(521) В чем это выражается, по-вашему?
523 Чинухов
 
09.08.21
09:12
(522) Инспектор ГАИ любит Баха и Гейне,
Инспектор ГАИ - Рамайаны знаток,
Инспектор ГАИ - частый гость в Эрмитаже,
Инспектор ГАИ врубается в рок.

Инспектор ГАИ - он зависает на Фройде,
Инспектор ГАИ лихо пляшет брейк дэнс,
Инспектор ГАИ - ученик Сен-Мен Муна,
Инспектор ГАИ - гуру и экстрасенс.

А то, что он машет дубинкой -
Таков его имидж.
А то, что он дует в свисток -
Это тонкий пристеб.
524 brainguard
 
09.08.21
09:17
(523) Не очень понятно. Вы не могли бы своими словами выразить суть претензий?
525 fisher
 
09.08.21
09:18
(516) В 8.0 были уже все прикладные объекты, которые в таблички складываются. С тех пор ничего принципиально нового в этой части не появилось.
526 brainguard
 
09.08.21
09:22
(525) Да, я уже посмотрел на users.v8 Но все равно спасибо!
527 Чинухов
 
09.08.21
09:42
(524) Ну если не понятно, значит так тому и быть. А претензий нет, какие могут быть претензии к дождю или ветру?
528 brainguard
 
10.08.21
15:38
Кстати, кто их изобрел? Регистры сведений? Какой сумрачный гений?
529 Ыцшесрук
 
10.08.21
15:39
А он точно в УЦ работает?
530 Вафель
 
10.08.21
15:39
Итоги по регистрм ввели не так давно. Сами регистры были всегда
531 brainguard
 
10.08.21
15:43
(530) Разумеется я не про итоги, а про сам регистр. Меня интересует - кто это был. 1С-овцы или ТБ-совцы
532 Вафель
 
10.08.21
15:43
Кто такие тбсовцы?
533 mistеr
 
10.08.21
16:14
(528) У меня встречный вопрос. Есть примеры систем (не 1С), где есть аналог среза последних, и даже срез последних "по части измерений", который работает по твоей логике?

Ну, чтобы понимать, что это не просто у тебя взбрык такой (перепутал РС с РН), а люди действительно так делают.
И кстати, пример реальной задачи все жду.
Если будет и то, и другое принесу искренние извинения.
534 Чинухов
 
10.08.21
16:17
(531) Разве у ТБ-совцев в их системе были были регистры сведений?
535 brainguard
 
10.08.21
17:55
(533) С реальной задачи все и началось. Попросили отчет о последних закупочных ценах. По товарам, но без поставщиков. Я взял регистр ЦеныНоменклатурыПоставщиков обратился к виртуальной таблице СрезПоследних и был в полной уверенности, что получу последние записи. Но не тут-то было. Я решил задачу запросом к основной таблице, но призадумался. Может я чего-то не знаю. И есть способ получать последние записи из среза последних-то. Поэтому и запостил сюда
536 brainguard
 
10.08.21
17:56
(534) Не знаю, поэтому и спрашиваю
537 brainguard
 
10.08.21
17:56
(533) А пример системы я уже сам сделал
538 Eiffil123
 
10.08.21
18:01
завтра будет ровно 2 недели обсуждению этого вопроса. давайте как-то отметим чтоли
539 mistеr
 
10.08.21
18:18
(535) Конечно есть, и тебе сразу на него указали. Сворачивать ненужные измерения после получения среза.
540 brainguard
 
10.08.21
18:20
(539) Это не даст последние записи
541 brainguard
 
10.08.21
18:22
(538) Как видите, тема вечноживая. Всегда найдется кто-нибудь, кто не въехал
542 mistеr
 
10.08.21
18:46
(540) Конечно даст. Приведи пример, когда не даст.
543 Eiffil123
 
10.08.21
18:57
(542) ну пример и я приведу.
Измерения: поставщик, номенклатура. Ресурс: Цена. Периодичность - по регистратору.

Записи в регистре:
01.07.2021  |  ООО Ромашка         |  Стол     | 1000 руб.
01.07.2021  |  ООО Ромашка         |  Табурет  | 300 руб.
05.07.2021  |  Основной поставщик  |  Стол     | 1200 руб.
05.07.2021  |  Основной поставщик  |  Табурет  | 200 руб.

Делая нормальный срез последних получаешь 4 разных записи. Далее можно с помощью агрегатных функций свернуть до двух, используя агрегатную функцию Мин или Макс, но они точно не вернут последнюю запись. В данном примере, функция минимум не вернет последнее значение по Столу, а функция Максимум не вернет последнее значение по табурету.
544 brainguard
 
10.08.21
19:02
(543) НЕнормальный срез последних. Я настаиваю. Нормальный должен возвращать последние записи, раз уж его так назвали. И это - не придирка к словам. Я потерял какое-то количество своего рабочего времени. Теперь умножьте на количество разработчиков в среде 1С и поймете, почему важно все делать аккуратно
545 Чинухов
 
10.08.21
19:30
(544) А может, важно читать документацию, прежде чем что-то делать?
546 brainguard
 
10.08.21
19:57
(545) Нет. Никто не держит в голове всю документацию. И не читает ее от начала до конца прежде, чем выполнить элементарную работу. Вам же не придет в голову лезь в документацию, чтобы выяснить что будет если к двум прибавить два. Вдруг там какие-то особые случаи описаны
547 Чинухов
 
10.08.21
20:16
(546) Но РС синтетический объект, не специфицированный нигде, кроме как в документации от 1С, и ожидать от него некоего поведения, отличного от указанного в документации, на основании каких-то предположений по меньшей мере странно. При чём тут 2+2?
548 brainguard
 
10.08.21
20:25
(547) При том что слово "последние" имеет совершенно прозрачный смысл. Уровень прозрачности не меньше, чем у 2+2
549 Чинухов
 
10.08.21
20:36
(548) Тяжёлый случай. Ладно, Миша, оставайся в своём мире, где значения слов отделены от контекста их использования.
550 1CnikPetya
 
10.08.21
21:45
(548) Да, ладно. И сколько же будет "2" + 2? А 2 + "2"?
551 brainguard
 
10.08.21
22:49
(550) Не надо кавычек. У вас есть в точности 2+2. Вы полезете в документацию за разъяснениями?
552 Сергиус
 
11.08.21
00:17
(551)Ничто, в принципе, не мешает вам написать свою систему, где все это будет реализовано, как хочется)
553 brainguard
 
11.08.21
00:23
(552) Ничто не мешает. Полностью с вами согласен
554 fisher
 
11.08.21
09:36
(544) >  НЕнормальный срез последних. Я настаиваю.
Зря настаиваешь.
(548) > При том что слово "последние" имеет совершенно прозрачный смысл
Нет. При указании части измерений - нифига не прозрачный.
РС предназначен для хранения сведений по комбинациям измерений. Типовое его применение - когда сведения имеют смысл для полных комбинаций.
И поэтому вариант, когда я указываю не все измерения чтобы получить "последние" по всем полным комбинациям (как сейчас и работает) - абсолютно нормален.
Твой вариант, когда работа с подмножеством комбинаций измерений может иметь смысл самостоятельного РС - это скорее исключение. Я могу привести стотыщ примеров, когда это будет не так и твои "интуитивные последние" не будут иметь никакого смысла вообще. А получение последних по полным комбинациям - всегда имеет однозначный смысл.
То, что ты хочешь - теоретически можно было бы реализовать отдельной опцией. Но в качестве дефолтного поведения (на котором ты наставиваешь) - это нифига не логично, поскольку покрывает гораздо меньшее количество кейсов.
555 brainguard
 
11.08.21
09:44
(554) Так, как работает сейчас, не покрывает никакой кейс. Оно просто никуда не годится. Результат, который выдает срез последних по неполному набору измерений, полностью лишен смысла. Разработчикам было лень дорабатывать и они не нашли ничего лучшего, как просто написать в документации: "а вы так не делайте". Ха-ха. Если так нельзя делать, вызывайте исключительную ситуацию. Так, как сделано сейчас, приводит к потерям рабочего времени
556 ДенисЧ
 
11.08.21
09:47
(555) Если делать так, как не предусмотрено документацией - то действие лишено смысла.
Посмотри на радужных, которые не читали инструкцию.
557 fisher
 
11.08.21
09:56
(555) Ты прав - в твоей конкретной ситуации результат никуда не годится. И да, если не задумываться о работе внутренних механизмов интуитивным был бы другой результат.
Но я готов поспорить, что на месте разрабов платформы ты поступил бы точно так же. И я бы поступил точно также. Потому что твой кейс - краевой. И даже если у разраба достаточно опыта, чтобы его предусмотреть, то для того чтобы покрыть этот редкий кейс пришлось бы прикручивать целый блок анализа структуры запроса, наподобие того что есть в СКД. А это явно нецелесообразно.
558 ДенисЧ
 
11.08.21
09:56
(557) Если бы он был на месте разработчиков платформы - мы бы все повесились...
559 Ыцшесрук
 
11.08.21
10:03
(558) Эта платформа умерла бы, ещё не родившись. Так что никто не повесился бы)
560 mistеr
 
11.08.21
11:38
(543) >В данном примере, функция минимум не вернет последнее значение по Столу, а функция Максимум не вернет последнее значение по табурету.

Это ты применяешь ее к полю Цена что ли? С какого бодуна? Ее нужно применять к дате, а потом брать цену на эту дату.
561 mistеr
 
11.08.21
11:40
(555) >Результат, который выдает срез последних по неполному набору измерений, полностью лишен смысла.

Ага, лишен смысла, но в типовых он применяется в хвост и в гриву. Ты скатываешься в демагогию. Не стоит, это отбивает всякое желание продолжать дискуссию.
562 brainguard
 
11.08.21
12:20
(561) Приведите хотя бы два примера
563 mistеr
 
11.08.21
12:24
(562) (560) Прошу прощения, прочитал как "по полному набору измерений". Для неполного не встречал кейса нигде.
564 Eiffil123
 
11.08.21
13:20
(560) хорошо. Тогда если применять агрегатную функцию к периоду, тогда такой пример:

Записи в регистре:
01.07.2021  |  ООО Ромашка         |  Стол     | 1000 руб.
01.07.2021  |  ООО Ромашка         |  Табурет  | 300 руб.
01.07.2021  |  Основной поставщик  |  Стол     | 1200 руб.
01.07.2021  |  Основной поставщик  |  Табурет  | 200 руб.

Т.е. дата одна и та же. в рамках одной даты купили мебель у двух разных поставщиков. Если брать максимум даты, то она будет одна и та же, и в итоге в результирующий набор попадут 4 записи.

Возможно сделать периодичность - в пределах регистратора. Но и это тоже глобально ничего не меняет. вероятность дублирования записей в итоговой выпорке будет меньше, но не нулевая.
565 brainguard
 
11.08.21
14:23
(557) Есть довольно простая операция получения последних значений. Группировка с получением максимума по дате, а затем соединение с основной таблицей. Ее можно применять вообще к любому набору данных, лишь бы дата была. Разработчики применяют именно ее. Но почему-то только к полному набору измерений. Что им мешает применить ту же самую операцию к неполному набору измерений? То, что виртуальная таблица будет строиться динамически, исходя из набора полей выбранных в запросе? Но в РН они ровно это и делают. То, что в результате могут получиться неуникальные записи? Так они и сейчас получаются.
Чтобы я сделал на месте разработчиков, читайте в будущей статье
566 brainguard
 
11.08.21
14:28
(557) И еще раз. Реализация того, о чем я говорю, проста


        если не пустаястрока(колонкиизмерений) тогда
            зап.Текст="ВЫБРАТЬ "+всеколонки+" Поместить Т1 ИЗ &тз как тз;
            |ВЫБРАТЬ "+колонкиизмерений+",МАКСИМУМ(т1."+колонкадаты+") как "+колонкадаты+" Поместить Т2 ИЗ Т1 СГРУППИРОВАТЬ ПО "+колонкиизмерений+";
            |ВЫБРАТЬ Т2."+колонкадаты+","+колонкиизмерений2+",Т1."+колонкаресурса+" ИЗ Т2 СОЕДИНЕНИЕ Т1 ПО "+условиесоединения;
        иначе
            зап.Текст="ВЫБРАТЬ "+всеколонки+" Поместить Т1 ИЗ &тз как тз;
            |ВЫБРАТЬ МАКСИМУМ(т1."+колонкадаты+") как "+колонкадаты+" Поместить Т2 ИЗ Т1;
            |ВЫБРАТЬ Т2."+колонкадаты+",Т1."+колонкаресурса+" ИЗ Т2 СОЕДИНЕНИЕ Т1 ПО "+условиесоединения;
        конецесли;
567 Вафель
 
11.08.21
14:29
(566) да никто не спорит что просто. просто никому не надо.
568 Вафель
 
11.08.21
14:29
да и такой код стремно использовать. ты же только для себя пишешь, а не для людей
569 brainguard
 
11.08.21
14:29
(567) Это - неправда
570 brainguard
 
11.08.21
14:30
(568) Да ладно. Перепиши эти 9 строчек, как тебе нравится и используй
571 Вафель
 
11.08.21
14:39
тут строчек явно побольше. ибо где определения и заполнения переменных?
572 Вафель
 
11.08.21
14:40
опять же колонка ресурса одна, а если их несколько?
573 brainguard
 
11.08.21
14:57
Вот видите, вам хватило 10 минут, чтобы въехать в суть кода. Примерно столько и надо, чтобы его написать. Разработчики пожалели 10 минут для нас. Пусть лучше мы их теряем, чем они
574 Вафель
 
11.08.21
14:58
потому что могут быть неопределенности. они реши их не разруливать
575 brainguard
 
11.08.21
15:00
(574) Они решили оставить все как есть. С теми же неопределенностями
576 ildary
 
11.08.21
15:36
(573) Вы других разработчиков тоже не жалеете качеством своего кода, так что у 1С было право жалеть время на Вас.
577 mistеr
 
11.08.21
16:19
(564) дальше уже вопрос к brainguard, какая из этих записей ему нужна, и соответственно сворачивать дальше.
578 mistеr
 
11.08.21
16:28
(565) >Что им мешает применить ту же самую операцию к неполному набору измерений?

Мешает то, что появляются дубли. Для полного набора измерений понятие "последняя запись" определено однозначно. А для не полного оно расплывается, а вслед за ним и понятие "срез последних по части измерений".

Но, опять повторю, что писал выше. Если ты формализуешь свой "срез", опишешь алгоритм, разберешь крайние случаи, предложишь удобный API (в данном случае синтаксис и параметры виртуальной таблицы), и, главное, опишешь реальные жизненные сценарии, где это востребовано, то есть шанс, что 1С прислушается и реализует.

С последним пунктом, думаю, будет сложнее всего. Если бы потребность в таких срезах возникала, в типовых давно бы уже появилась функция, генерирующая соответствующий запрос. Но я такой не встречал. А может есть, встречал кто?
579 Yardman
 
11.08.21
16:48
(578) и раньше - автор ветки тролль или просто непробиваемый Д’Артаньян.
Зачем вы продолжаете его кормить?
580 fisher
 
11.08.21
17:05
(566) Чуть посложнее. Это же может быть подзапросом в сложном запросе. Но да - не сложнее чем неявная свертка, которая уже реализована.
581 fisher
 
11.08.21
17:06
(569) Почти правда. Твой случай достаточно редкий.
582 brainguard
 
11.08.21
17:10
(576) Нет. Меня много, а 1С мало. Мои потери времени не идут ни в какое сравнение с затратами 1С. Тем более что конкретно это дело - плевое
583 brainguard
 
11.08.21
17:16
(578) А сейчас дубли разве не появляются?
Что там описывать и формализовывать? Я за 10 минут сделал функцию, которая выдает срез последних по любому набору данных.
Не надо никаких дополнительных параметров виртуальной таблицы. Просто сделать так, чтобы записи, которые называются "последние" были действительно последними
584 nodrama
 
11.08.21
17:22
Я думал уже все обсудили в этой теме)) а споры все идут.
585 brainguard
 
11.08.21
17:33
(584) Потому что это важная и очень показательная тема
586 brainguard
 
11.08.21
18:04
(581) Не согласен. Получить последние приходные цены - это не экзотика, а нормальная потребность у клиентов. С другой стороны, хватило же у разработчиков сил на никому не нужный срез первых. А вот на нужное почему-то не хватило
587 mistеr
 
11.08.21
19:06
(583) Дубли появляются всегда, когда сворачиваются измерения. И в твоем коде (566) потенциально тоже. Если от них не избавиться, результат не может называться "срезом последних" ни в каком смысле.
588 brainguard
 
11.08.21
19:23
(587) Почему же не может? Очень даже может. Записи-то последние, и это главное. А есть там дубли или нет - это уже другой вопрос
589 mistеr
 
12.08.21
08:17
(588) Но какая самая последняя, вот главный вопрос.

Ну и с прикладной точки зрения, ты что будешь с ними делать? Запросил последнюю цену, а получил три. Все равно сворачивать.
590 brainguard
 
12.08.21
10:29
(589) Достаточно того, что они все последние. На этом задача решена. Срез либо подставляется под светлые очи пользователя, либо обрабатывается дальше программно тем или иным способом. В чем проблема? Получить одно значение из множества? Вы не знаете - как это делается?
591 Чинухов
 
12.08.21
11:00
(590) Возьмём регистр Поставщик Товар Цена. Зачем может понадобиться срез последних по Поставщику без Номенклатуры? Ваши предположения?
592 brainguard
 
12.08.21
11:05
(591) Зато может потребоваться срез последних по номенклатуре без поставщиков. А, например, в документах может потребоваться срез последних документов по контрагенту, может потребоваться срез последних документов по складу или срез последних документов по номенклатуре
593 brainguard
 
12.08.21
11:06
Это все реальные потребности
594 ptiz
 
12.08.21
11:08
(593) А выглядит как попытка самоутвердиться на протяжении 500 постов.
595 Пиняев
 
12.08.21
11:14
(592) Если понадобился такой срез - ты его легко получишь запросом. Абсолютно никаких проблем. Используй срез последних только тогда, когда это имеет смысл.
596 Вафель
 
12.08.21
11:26
(595) эта ветка просто поныть.
В 1с такое часто. Сама 1с мало думает о разрабах
597 Пиняев
 
12.08.21
11:37
(596) Согласен в общем. Только вот ТС уж больно смешной, сам придумал, сам обиделся, сам ноет.
598 brainguard
 
12.08.21
12:05
(596) Для вас, может, и поныть. А для меня тут есть практический результат. Я уже сделал универсальный срез последних. Сейчас статью опубликую. Почитаете, повеселитесь. А наиболее продвинутые задумаются, я надеюсь
599 brainguard
 
12.08.21
12:06
(597) Вы полагаете, что вопрос каким быть ЯП 1С не важен? Или место неподходящее?
600 Вафель
 
12.08.21
12:11
(598) Читайте статью (с)
Где-то я уже это слышал.
Уж ли  не мой гений дарит вам?
601 brainguard
 
12.08.21
13:08
(600) Ну, статьи пишут, чтобы их читали. Неудивительно, что вы это уже слышали
602 Пиняев
 
12.08.21
13:11
(599) Я полагаю, что вы последний человек, которого будут слушать разработчики платформы.
603 Пиняев
 
12.08.21
13:12
(598) Ну, мы вас поздравляем. Теперь не будете кривой код при получении данных из регистров сведений писать.
604 brainguard
 
12.08.21
13:36
(602) И какие практические выводы вы делаете из этого своего полагания?
605 Пиняев
 
12.08.21
13:51
(604) Что надо читать документацию от авторов платформы. И не ждать от платформы решения частных задач Миши Каллимулина.
606 brainguard
 
12.08.21
16:00
(605) И все это потому, что разработчики слушают меня в последнюю очередь?
А если бы они слушали меня в первую очередь? Какой бы вы тогда сделали вывод?
607 Пиняев
 
12.08.21
16:06
(606) Что вы врёте, конечно. Если бы разработчики слушали всех, кого попало, не было бы никакой платформы.
608 Eiffil123
 
12.08.21
16:10
(588) т.е. тебя не смущает, что в выборке будут 2 записи по одной номенклатуре с разными ценами? тогда это тоже не срез, а черт знает что
609 Пиняев
 
12.08.21
16:11
(608) Зато "последних". Миша такой Миша :))
610 Yardman
 
12.08.21
16:12
(608) В предыдущих сериях было - он считает что нужно выбрать рандомную из них.
(607) Слушать то можно кого угодно, просто предъявы автора выглядит наркоманией в чистом виде.
611 Митяйский
 
12.08.21
16:21
Прекращайте его учить, давайте лучше будем им восторгаться!
612 Пиняев
 
12.08.21
16:22
(611) А я давно им восторгаюсь, уникальный человечище.
613 brainguard
 
12.08.21
16:22
(607) Это уже интересно. Разработчики не должны никого слушать, кроме тараканов в своих головах?
614 Пиняев
 
12.08.21
16:22
(610) Не, ну сейчас он уже пишет, что сам выберет ту, которую ему надо :)
615 Пиняев
 
12.08.21
16:25
(613) В первую очередь они должны слушать точно ни кого попало с улицы, а специалистов. А чудики, вроде тебя, должны написать свою платформу и стать легендами, известными всему миру.
616 Митяйский
 
12.08.21
16:30
(612) Блин, это просто кладезь воодушевления, оказывается.

Давайте просто признаем интеллектуальное превосходство Михаила над всеми нами, засчитаем ему победу в этом вопросе и перейдем к более насущным вопросам, например к этому:

https://brainguard.ru/page14575698.html

тл;др

Пользователи 1С нехорошие и криворукие, поэтому чтобы перебороть их в вечной битве разрабов с юзерами, мы теперь будем хэшировать каждую строчку РТиУ. А потом проверять внесение изменений пересчетом хэшей. Всех.
617 brainguard
 
12.08.21
16:34
(608) Нет, не смущает. Если эти записи последние, то наличие нескольких не является проблемой. Проблемой является появление в срезе последних старых записей, как это происходит сейчас.
Вообще проблема дублей последних имеет свое очевидное решение, но это тема другого разговора
618 brainguard
 
12.08.21
16:35
(615) Хороший же вопрос. Должны ли разработчики массового продукта слушать "улицу"?
619 Пиняев
 
12.08.21
16:38
(618) Не должны, конечно. Но могут и послушать. Но не в первую очередь, не всегда самые крикливые на улице являются самыми умными :)
620 Пиняев
 
12.08.21
16:41
(617) Ну тогда не надо их называть "срез последних". Потому как в терминологии 1С "срез последних" - это последние записи по всему набору измерений. Не называйте это срезом последних, назовите "набором последних", "прибором последних", "перебором последних". И тогда к вам не будет ровно никаких претензий.
621 brainguard
 
12.08.21
17:06
(620) А может быть не стоит называть срезом последних то, что не дает последних записей? Вы не находите это более логичным?
622 Eiffil123
 
12.08.21
18:40
(621) нет никакого общеутвержденного термина срез последних.
623 Чинухов
 
12.08.21
18:47
(621) 1С придумали этот термин, его нигде больше нет. И то, что ты вкладываешь в этот термин свой смысл, это исключительно твои проблемы.
624 Митяйский
 
12.08.21
19:00
(623) В экселе есть срез. Только там этим словом называются скорее быстрые пользовательские отборы по значению, которые гораздо ближе по своему смыслу к 1Совской СКДшной расшифровке или к тому, над чем упоролся ТС.
625 Пиняев
 
12.08.21
19:06
(624) Срез сам по себе может и есть. А вот именно "среза последних" нет. Да, можно предъявить претензию к 1С, что свои термины выдумывают, но а смысл?
626 brainguard
 
12.08.21
19:08
(622) Зато есть общепринятый смысл слова "последний"
627 brainguard
 
12.08.21
19:11
(623) Что значит мои проблемы? Я потерял время. Не так много, конечно. Но таких, как я десятки тысяч. И мы все так или иначе несем потери. В этом конкретном случае из-за того, что разработчикам было не лень делать никому не нужный срез первых, но лень сделать нормально срез последних. Но разве этот случай единственный?
628 Пиняев
 
12.08.21
19:17
(627) Это и есть твои проблемы -  "Я потерял время". Ты потерял его из-за незнания документации, и не почему другому.
629 brainguard
 
12.08.21
19:20
(628) Встречный вопрос. А разработчики документацию к русскому языку читали? Видимо, нет. Никто не будет лезть в документацию за расшифровкой очевидного
630 Пиняев
 
12.08.21
19:21
(626) Ещё раз, выдирать слова из контекста - глупо. Очень глупо. Термин звучит "срез последних", и никак иначе. Исчерпывающий его смысл приведён в документации. Если бы 1С обозвал, условно "синус" как "срез угла", претензии были бы обоснованы. А так - 1С придумал свой термин, дал его определение и использует его согласно этого определения.
631 Пиняев
 
12.08.21
19:22
(629) Мда, бесполезно. Ты упёртый, как баран.
632 brainguard
 
12.08.21
19:29
(630) А делать массовый продукт, в котором "+" и "-" будут поменены местами и говорить потом: ну вот же, ребята, мы в документации все написали, плюс это минус, а минус это плюс, не читали? сами виноваты! Вот так делать не глупо? Здесь ведь то же самое
633 Yardman
 
12.08.21
19:37
(628) > А разработчики документацию к русскому языку читали? Видимо, нет. Никто не будет лезть в документацию за расшифровкой очевидного

Как бы Вы, видимо прочитавший документацию к русскому языку, назвали то что сейчас в 8ке называется СрезПоследних?
634 brainguard
 
12.08.21
19:58
(631) И, кстати, в синтакс-помощнике сказано буквально следующее:

"Получает наиболее поздние записи регистра, соответствующие установленным в параметрах метода значениям ключевых полей. Записи подбираются для каждого сочетания из всех имеющихся значений измерений регистра."

И как из ЭТОГО можно однозначно понять работу среза? "... из всех имеющихся значений ...". Имеющихся где? В моем запросе? Вот я ровно так и понял. Все-таки есть польза в длинных обсуждениях. До этого момента я был уверен, что я просто не дочитал чего-то в документации или просто забыл. А выходит, что я ничего не забыл. И действовал как раз по документации. Спасибо вам, ребята!
635 brainguard
 
12.08.21
19:58
(633) Срез последних, с явной ошибкой в реализации
636 brainguard
 
12.08.21
20:01
С недокументированной явной ошибкой в реализации
637 brainguard
 
12.08.21
21:17
Там же, в синтакс-помощнике, в разделе "Работа с запросами" описание виртуальной таблицы среза последних:

Предназначена для получения наиболее поздних записей регистра сведений на указанную дату (включительно). Включает только активные записи. По каждой комбинации измерений будет найдена наиболее поздняя запись, но не более поздняя, чем указанная дата.

Ха-ха! На протяжении 600 постов в ветку приходят самые разные люди и строго отчитывают ТС за то, что он не читал документацию. ТС поддавшись стадному чувству в это верит. И только на 634 посте он решает проверить и выясняется, что документацию никто, кроме ТС не читал. "Документацию не читал, но осуждаю тех, кто не читал" Прикольно! Эта ветка станет легендарной
638 Чинухов
 
12.08.21
21:24
(634) (637) То есть, ты не в состоянии понять то, что написано, и обвиняешь в этом 1С? Фееричненько.
639 brainguard
 
12.08.21
21:39
(638) А ничего не написано. Прочтите сами
640 brainguard
 
12.08.21
21:46
(639) Вернее, написано прямо противоположное тому, что вы утверждаете. Прямо соответствующее моим ожиданиям. И не соответствующее тому, что реализовано

"... по каждой комбинации измерений..."

Как это можно понять еще, кроме как то что вы получите последние записи и по "Номенклатура+Поставщик" и по "Номенклатура"?
641 Вафель
 
12.08.21
22:22
Очевидно же сто по каждой комбинации ЗНАЧЕНИЙ измерений
642 mikecool
 
12.08.21
22:34
7я сотня сообщений из пустого в порожнее...
автор, ты в этой ветке потерял гораздо больше времени
643 brainguard
 
12.08.21
22:40
(642) Ошибаетесь. Не знаю как для кого, а для меня ветка на редкость продуктивная. Давно такой не было
644 brainguard
 
12.08.21
22:42
(641) Это теперь, в контексте обсуждения, очевидно. А так нет, конечно же
645 Чинухов
 
12.08.21
22:49
(644) Вот тебе это в контексте обсуждения стало очевидно. А другим это было очевидно сразу. И кто тут не прав?
646 Вафель
 
12.08.21
23:01
Ну понятно же что ни про какие сочетания изменений речи и быть не может.
Кто то просто слишком много тервера изучал
647 acanta
 
12.08.21
23:05
(646) что? И что теперь делать без терверах и разных сочетаний измерений в срезе последних?
648 brainguard
 
12.08.21
23:15
(645) Кому это было очевидно сразу? И как это можно проверить?
649 brainguard
 
12.08.21
23:16
(646) Тервер здесь ни при чем. Просто последние записи должны быть последними. Вот и все
650 brainguard
 
12.08.21
23:22
(647) Писать срез последних самостоятельно всякий раз, когда надо получить его по неполному набору измерений
651 Чинухов
 
12.08.21
23:23
(648) Тем, кто читал документацию, и понял её, конечно. А как можно проверить, что ты психически нормальный?
652 Чинухов
 
12.08.21
23:24
(650) Гениально! Никто до этого раньше не додумался...
653 brainguard
 
12.08.21
23:31
(651) Да никто ее не читал, кроме меня, как выяснилось
654 acanta
 
12.08.21
23:34
(653) а зачем это читал ты?
655 brainguard
 
12.08.21
23:43
(654) А меня застыдили )))
656 Ыцшесрук
 
13.08.21
05:08
(616) АХАХАХАХ %)
Божечки, это шедевр. Он же реально Геня 2.0.
657 Eireen_zh97
 
13.08.21
07:14
Выше вы спрашивали, надо будет 4 измерения, делать регистр с 4? Ответ - Да. Правильней всего в вашей задачей делать несколько регистров. Надо по одному измерению, делайте еще один регистр с одним измерением.  Надо с 2мя - делать с 2мя еще. И это нормальное решение. А не менять работу СрезПоследних. Меня устраивает, как работает срез, а вы как умный разработчик можете написать свой запрос для среза под конкретно ваш кейс :)
658 brainguard
 
13.08.21
10:40
(657) Вот у вас есть, например, оборотный регистр "Продажи" с измерениями "Номенклатура","Контрагент","Склад". Вы ведь не делаете из него шесть регистров. Вы получаете продажи по Номенклатура+Контрагент, Номенклатура+Склад, Склад+Контрагент и т.д. все из одного регистра
659 Kassern
 
13.08.21
10:46
(658) Не путайте теплое с мягким. РН<>РС
660 Йохохо
 
13.08.21
10:48
(658) "Вы получаете продажи по Номенклатура+Контрагент" и чем период лучше склада? почему по нему надо вдруг взять максимум? в общем случае ничем.
хранить итоги with rollaup забавно конечно было бы)
661 brainguard
 
13.08.21
10:52
(659) (660) И там и там выполняется агрегирование. Просто разными способами
662 fisher
 
13.08.21
10:56
(616)(656) ЕМНИП, я встречал на инфостарте ГОТОВУЮ РЕАЛИЗАЦИЮ логов на концепции блокчейна. Еще в те времена, когда слово "блокчейн" только-только на слуху появилось.
Но там это подавалось более вменяемо. Без мясорубки Бородина, как у ТС.
Просто с целью контроля вмешательства админов. Без пересчетов - просто с функцией контроля целостности и обнаружения факта вмешательства.
663 brainguard
 
13.08.21
11:01
(662) Интересно. Не найдете публикацию? Я в свое время искал все, что есть по теме, но то, о чем вы говорите не находил
664 fisher
 
13.08.21
11:03
(663) Навскидку не нахожу.
665 brainguard
 
13.08.21
11:05
(664) Ну ладно, тогда
666 brainguard
 
16.08.21
13:47
Обещанная статья здесь: https://habr.com/ru/post/572446/
и здесь: https://brainguard.ru/page21448209.html
667 Вафель
 
16.08.21
14:01
Уникальность даты - это что-то новое
668 brainguard
 
16.08.21
14:08
(667) Эйнштейн велит, ничего не поделаешь )))
А если серьезно. А почему нет? Ну раньше байты экономили. Сейчас какие проблемы?
669 Пиняев
 
16.08.21
14:37
(666) "Мой гений дарит вам" (с)
670 Arbuz
 
16.08.21
14:40
Это уже шизофрения, не?
Но Вы не волнуйтесь, голубчик, она не лечится, а с годами только прогрессирует. (с)
Для безопасности это неважно. (с)

Неофитов только жаль немного, которым в голову это льют такие "преподаватели". Хотя по собственному опыту такие были всегда, по крайней мере 40 лет назад у меня, по итогу трудоёмкого снятия лапши, они вызывали оторопь от той чуши, которою на полном серьёзе и с чувством собственного превосходства выливали на ничего не подозревающих нас, под видом сакральной истины доступной их снисходительному гению.
671 Вафель
 
16.08.21
14:44
(668) дата дискретна. и размер ограничен
672 brainguard
 
16.08.21
15:20
(671) В реальном мире дата континуальна. Конечно, любая модель будет дискретна. Но тут вопрос практический. 32 байта дают число сравнимое с количеством атомов в наблюдаемой вселенной. Если нам жаль 32 байтов, то давайте прикинем сколько у нас всего будет документов в информационной базе. Миллион? Миллиард? Триллион? Последнее влезает в 4 байта.
673 brainguard
 
16.08.21
15:20
(670) По существу есть что возразить?
674 Вафель
 
16.08.21
15:24
(672) вот поставил ты дату в конец дня и все далее уже ничего не записать
675 Вафель
 
16.08.21
15:26
(672) по твоей логике и секунды вполне хватает. что кто то цены устанавливает чаще чем раз  в секунду?
676 brainguard
 
16.08.21
15:28
(675) Да постоянно. У вас может быть куча документов на начало дня или на конец дня. Ни разу не сталкивались?
677 Вафель
 
16.08.21
15:29
(676) и как тогда уникальность даты обеспечивать?
678 brainguard
 
16.08.21
15:31
(674) Это как платформу спроектировать. Конец дня - это 23:59:59. Именно этим понятием оперирует разработчик. А дальше платформа сама впихивает в эту секунду документы один за другим. И, в принципе, может впихнуть хоть все
679 brainguard
 
16.08.21
15:32
(677) Ровно также, как обеспечивается уникальность всего прочего. Там нет никакой магии
680 Вафель
 
16.08.21
15:33
(678) а как порядком в этой секунде рулить тогда?
681 brainguard
 
16.08.21
15:35
(680) Что значит - рулить порядком?
682 Raxla
 
17.08.21
00:47
brainguard, вы несёте ахинею: вы не конфигурируете срез, тем что внутри скобочек прописываете значения измерений. Значения внутри скобочек это фильтр к уже готовому срезу, размерность которого равна размерности регистра и никак иначе. Таким образом, вы можете отфильтровать данные среза и только. Никаких срез эН измерений вам никто не обещал, просто довольствйтесь тем, что к срезу есть фильтр уменьшающий данные выборки.
683 Raxla
 
17.08.21
00:50
Вы серьёзно, хреначите 20 лет запросы, с пониманием ниже плинтуса предметной области и никто вам по рукам не дал?
684 brainguard
 
17.08.21
01:15
(682) Ничто не мешало разработчикам вместо того, чтобы делать никому не нужный срез первых, сделать нормальный срез последних. Всех делов-то правильную группировку задать, в соотвествии с выбранными измерениями