Вход | Регистрация
    1  2  3  4  5  6  7   
1С:Предприятие :: 1С:Предприятие 8 общая

Срез последних - не совсем срез?

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

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

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

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

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

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

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

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

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

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

Возможно сделать периодичность - в пределах регистратора. Но и это тоже глобально ничего не меняет. вероятность дублирования записей в итоговой выпорке будет меньше, но не нулевая.
   brainguard
 
565 - 11.08.21 - 14:23
(557) Есть довольно простая операция получения последних значений. Группировка с получением максимума по дате, а затем соединение с основной таблицей. Ее можно применять вообще к любому набору данных, лишь бы дата была. Разработчики применяют именно ее. Но почему-то только к полному набору измерений. Что им мешает применить ту же самую операцию к неполному набору измерений? То, что виртуальная таблица будет строиться динамически, исходя из набора полей выбранных в запросе? Но в РН они ровно это и делают. То, что в результате могут получиться неуникальные записи? Так они и сейчас получаются.
Чтобы я сделал на месте разработчиков, читайте в будущей статье
   brainguard
 
566 - 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
да и такой код стремно использовать. ты же только для себя пишешь, а не для людей
   brainguard
 
569 - 11.08.21 - 14:29
(567) Это - неправда
   brainguard
 
570 - 11.08.21 - 14:30
(568) Да ладно. Перепиши эти 9 строчек, как тебе нравится и используй
   Вафель
 
571 - 11.08.21 - 14:39
тут строчек явно побольше. ибо где определения и заполнения переменных?
   Вафель
 
572 - 11.08.21 - 14:40
опять же колонка ресурса одна, а если их несколько?
   brainguard
 
573 - 11.08.21 - 14:57
Вот видите, вам хватило 10 минут, чтобы въехать в суть кода. Примерно столько и надо, чтобы его написать. Разработчики пожалели 10 минут для нас. Пусть лучше мы их теряем, чем они
   Вафель
 
574 - 11.08.21 - 14:58
потому что могут быть неопределенности. они реши их не разруливать
   brainguard
 
575 - 11.08.21 - 15:00
(574) Они решили оставить все как есть. С теми же неопределенностями
   ildary
 
576 - 11.08.21 - 15:36
(573) Вы других разработчиков тоже не жалеете качеством своего кода, так что у 1С было право жалеть время на Вас.
   mistеr
 
577 - 11.08.21 - 16:19
(564) дальше уже вопрос к brainguard, какая из этих записей ему нужна, и соответственно сворачивать дальше.
   mistеr
 
578 - 11.08.21 - 16:28
(565) >Что им мешает применить ту же самую операцию к неполному набору измерений?

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

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

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

Ну и с прикладной точки зрения, ты что будешь с ними делать? Запросил последнюю цену, а получил три. Все равно сворачивать.
   brainguard
 
590 - 12.08.21 - 10:29
(589) Достаточно того, что они все последние. На этом задача решена. Срез либо подставляется под светлые очи пользователя, либо обрабатывается дальше программно тем или иным способом. В чем проблема? Получить одно значение из множества? Вы не знаете - как это делается?
   Чинухов
 
591 - 12.08.21 - 11:00
(590) Возьмём регистр Поставщик Товар Цена. Зачем может понадобиться срез последних по Поставщику без Номенклатуры? Ваши предположения?
   brainguard
 
592 - 12.08.21 - 11:05
(591) Зато может потребоваться срез последних по номенклатуре без поставщиков. А, например, в документах может потребоваться срез последних документов по контрагенту, может потребоваться срез последних документов по складу или срез последних документов по номенклатуре
   brainguard
 
593 - 12.08.21 - 11:06
Это все реальные потребности
   ptiz
 
594 - 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) Согласен в общем. Только вот ТС уж больно смешной, сам придумал, сам обиделся, сам ноет.
   brainguard
 
598 - 12.08.21 - 12:05
(596) Для вас, может, и поныть. А для меня тут есть практический результат. Я уже сделал универсальный срез последних. Сейчас статью опубликую. Почитаете, повеселитесь. А наиболее продвинутые задумаются, я надеюсь
   brainguard
 
599 - 12.08.21 - 12:06
(597) Вы полагаете, что вопрос каким быть ЯП 1С не важен? Или место неподходящее?
   Вафель
 
600 - 12.08.21 - 12:11
(598) Читайте статью (с)
Где-то я уже это слышал.
Уж ли  не мой гений дарит вам?
  1  2  3  4  5  6  7   

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.