Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Срез последних не так работает или что-то подзабыл

Срез последних не так работает или что-то подзабыл
Я
   ig0z
 
19.11.20 - 16:09
ВЫБРАТЬ
    
    ЗакупкиСоглосованиеДатыПоступленияСрезПоследних.Номенклатура,
    ЗакупкиСоглосованиеДатыПоступленияСрезПоследних.ПроизводственныйЗаказ,
    ЗакупкиСоглосованиеДатыПоступленияСрезПоследних.ДатаСоглосования
ИЗ
    РегистрСведений.ЗакупкиСоглосованиеДатыПоступления.СрезПоследних(
            ,
            Номенклатура = &Номенклатура
                И ПроизводственныйЗаказ = &ПроизводственныйЗаказ) КАК ЗакупкиСоглосованиеДатыПоступленияСрезПоследних

Измерения:
ПроизводственныйЗаказ = &ПроизводственныйЗаказ И Номенклатура = &Номенклатура

Ресурс:
ЗакупкиСоглосованиеДатыПоступленияСрезПоследних.ДатаСоглосования


НО почему он возвращает 5 строк с одинаковыми ПроизводственныйЗаказ и Номенклатура? и 5 разных ДатаСоглосования
   PR
 
1 - 19.11.20 - 16:10
(0) Потому что нечего было ДатаСоглосования в измерения пихать
   ig0z
 
2 - 19.11.20 - 16:16
(1) бляя специлально написал
Ресурс:
ЗакупкиСоглосованиеДатыПоступленияСрезПоследних.ДатаСоглосования
   ig0z
 
3 - 19.11.20 - 16:17
обновлял отдельно итоги
   Волшебник
 
4 - 19.11.20 - 16:18
пишется "ДатаСогласования"
   mkalimulin
 
5 - 19.11.20 - 16:18
(0) Id номенклатуры и заказов посмотри
   sikuda
 
6 - 19.11.20 - 16:19
"ДатаСогласования" <> Период
   ig0z
 
7 - 19.11.20 - 16:19
(5) одинаково
   mkalimulin
 
8 - 19.11.20 - 16:19
(4) Может это дата внесения в глоссарий
   RomanYS
 
9 - 19.11.20 - 16:19
(0) Значит есть ещё измерения, которые ты в запросе не выбираешь
   ig0z
 
10 - 19.11.20 - 16:19
(6) период
   CHerypga
 
11 - 19.11.20 - 16:20
измерений больше чем два, не иначе
   ig0z
 
12 - 19.11.20 - 16:20
(9) блин ты когда итоги из регистра итогового берёшь дубли строк получаешь или суммированные данные?
   ig0z
 
13 - 19.11.20 - 16:21
(11) 7
   mkalimulin
 
14 - 19.11.20 - 16:21
(0) Период включи в запрос
   mkalimulin
 
15 - 19.11.20 - 16:22
(13) Семь измерений? И чего ты нам голову морочишь тогда?
   CHerypga
 
16 - 19.11.20 - 16:22
(12) не в случае со срезом последних, тут если есть еще измерения, то надо агрегатную функцию
   RomanYS
 
17 - 19.11.20 - 16:22
(12) Это не регистр накопления. Срез всегда возвращает все записи среза, свёртки нет и быть не должно.
   mkalimulin
 
18 - 19.11.20 - 16:23
(12) Регистр сведений - не регистр, а справочник с составным уникальным кодом.
   ig0z
 
19 - 19.11.20 - 16:25
когда курс валют получаем по срезу последних получаем измерение с отбором по валюте и сам курс последний, все же строки не показаны
   CHerypga
 
20 - 19.11.20 - 16:25
(4) всё правильно, проверочное словосочетание "голое сование" в котором нет ни одной "а"
   CHerypga
 
21 - 19.11.20 - 16:26
(19) там измерение одно
   Волшебник
 
22 - 19.11.20 - 16:26
(18) Регистр сведений - не справочник, а регистр. Ключ регистра сведений похож на ссылку на элемент справочника.
Для регистров сведений ключом является комбинация всех измерений + регистратор (если подчинён) + период (если периодический)
   ig0z
 
23 - 19.11.20 - 16:26
(18) сдела составной отбор, где единичный результат
   mkalimulin
 
24 - 19.11.20 - 16:26
(19) А там других измерений нет.
   ДенисЧ
 
25 - 19.11.20 - 16:26
(19) В курсах валют сколько у тебя измерений?
(21) не подсказывай...
   ig0z
 
26 - 19.11.20 - 16:27
блин, всё дошло, сорян
   ig0z
 
27 - 19.11.20 - 16:28
перепутал с регистром итогов
   Волшебник
 
28 - 19.11.20 - 16:29
(27) регистров итогов не бывает
   ig0z
 
29 - 19.11.20 - 16:31
ладно уговорил перепутал с регистром накопления или бухгалтерии с видом регистра "Остатки"
   CHerypga
 
30 - 19.11.20 - 16:32
(27) Я на собеседованиях задаю вопрос о том как из регистра накопления Закупки получить срез последних закупочных цен по контрагентам. Вот там то народ жёстко начинает путаться. Привыкли все к виртуальным таблицам и что за них адинэска сама думает
 
 Рекламное место пустует
   PR
 
31 - 19.11.20 - 16:47
(13) LOL
   Kassern
 
32 - 19.11.20 - 16:58
(30) Что то типа такого?
ВЫБРАТЬ
    Закупки.Контрагент КАК Контрагент,
    МАКСИМУМ(Закупки.Период) КАК Период,
    Закупки.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры
ПОМЕСТИТЬ ЗакупкиНаДату
ИЗ
    РегистрНакопления.Закупки КАК Закупки
ГДЕ
    Закупки.Период <= &Дата
    И Закупки.Контрагент = &Контрагент

СГРУППИРОВАТЬ ПО
    Закупки.Контрагент,
    Закупки.АналитикаУчетаНоменклатуры
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ЗакупкиНаДату.Контрагент КАК Контрагент,
    ЗакупкиНаДату.Период КАК Период,
    ВЫРАЗИТЬ(Закупки.Сумма / Закупки.Количество КАК ЧИСЛО(10, 2)) КАК ЦенаЗакупа,
    ЗакупкиНаДату.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура
ИЗ
    ЗакупкиНаДату КАК ЗакупкиНаДату
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Закупки КАК Закупки
        ПО ЗакупкиНаДату.Период = Закупки.Период
            И ЗакупкиНаДату.Контрагент = Закупки.Контрагент
            И ЗакупкиНаДату.АналитикаУчетаНоменклатуры = Закупки.АналитикаУчетаНоменклатуры
ГДЕ
    Закупки.Количество > 0
   PR
 
33 - 19.11.20 - 17:07
(32) Неа
Че делать, если в одну секунду попало 100 записей?
   dka80
 
34 - 19.11.20 - 17:09
(33) момент времени. Но это неправильно. Обычно, последняя цена прихода определяется с точностью до дня. В противном случае, будет зависеть от порядка ввода документов
   PR
 
35 - 19.11.20 - 17:12
(34) Спасибо, Кэп
Это, кстати, как раз правильно, потому что момент времени — это как раз и есть дата + регистратор
   PR
 
36 - 19.11.20 - 17:14
+(35) Только так просто взять и прикрутить момент времени не получится, потому что максимум от момента времени не учитывает дату
То есть запрос будет сложнее, чем в (32)
   PR
 
37 - 19.11.20 - 17:16
+(36) Неправильно выразился, ща заклюют
Момент времени — это регистратор, который уточняет секунду, но по моменту времени упорядочивание работает только в пределах секунды, поэтому максимум надо брать сначала по дате, а потом уже по моменту времени
   Kassern
 
38 - 19.11.20 - 17:17
(36) я конечно все понимаю, могут быть разные извращение в базах...Но в реальных условиях, никто не заведет 100500 документов одной датой по одному контрагенту с одинаковой аналитикой товара... Даже если такое произойдет да еще и по разной цене, результатом запроса будет 2 строчки с разной ценой за одну дату.
   PR
 
39 - 19.11.20 - 17:23
(38) Да я согласен, можно вообще не делать всякие эти срезы, ну будет просто куча строк везде вместо одной, подумаешь
Не случалось у тебя, я смотрю, разговоров типа "А почему ваш отчет по оценке склада в последних закупочных ценах показывает какую-то хрень, типа у нас на складе на полтора миллиарда ТМЦ, хотя их там на 600 миллионов максимум?", когда в глазах вопрошающего явно читается непроизнесенное "А можно ли вообще доверять тебе и твоему коду, обезьяна криворукая?"
   PR
 
40 - 19.11.20 - 17:25
(38) Основная проблема даже не та, что будет две разные цены и непонятно, какую брать, а та, что строк будет две, то есть они задвоят ту таблицу, с которой будут соединяньться
   Волшебник
 
41 - 19.11.20 - 17:27
(40) Да, есть такое...
   dka80
 
42 - 19.11.20 - 17:28
так себе проблема. Добавь РАЗЛИЧНЫЕ. И код в (32) написан на коленке в курилке, а не для боевого решения
   Kassern
 
43 - 19.11.20 - 17:32
(40) А кто-то сказал что дальше этот запрос будет соединяться с другими таблицами? Или была цель вывести единую цену, даже при условии что были две цены на эту дату? Задача была поставлена проще. Получить срез последних цен по контрагентам. Я прекрасно понимаю что в этом запросе при определенных условиях может быть несколько строк с ценой на один товар. И использовать его для дальнейших вычислений итоговых полей я бы не стал. Задал бы наводящий вопрос, какая цена нужна заказчику, если например в 2х документах поступления по одному поставщику с одинаковым товаром на одну дату указана разная цена (в 99,9% это косяк тех кто заводил). А уже потом принимал решение.
   PR
 
44 - 19.11.20 - 17:34
(42) Различные ничего не решит, если цены разные
Я и не писал про (32), что сдохни в мучениях, я всего-лишь сказал, что нифига, в таком виде не сработает
   PR
 
45 - 19.11.20 - 17:37
(43) Прелестно
То есть тебе поставили цель получить срез последних, ты ее не выполнил, но почти достиг, поэтому говоришь, что в принципе норм, и так сойдет?
— Какой сегодня курс доллара?
65 рублей за доллар
— Спасибо, пойду оформлю реализацию контрагенту на акулиард бабла
— Э, подожди, тебе точный что ли нужен, я думал просто посмеяться
   Cthulhu
 
46 - 19.11.20 - 17:44
а сделать временные таблицы с вычисляемым полем, в которое загнать по каждому регистратору момент времени в виде ГГГГММДДччммсс{GIIDрегистратора} - и уже его вместо периода в использовать - в типа 32 но уже эти врем.табы вязать?..
   PR
 
47 - 19.11.20 - 17:47
(46) Капец
Все проще
Выбирается времянка с максимальными датами
Выбирается времянка с максимальными моментами времени, соединенная с времянкой с максимальными датами
Выбирается основная выборка, соединенная с времянкой с максимальными моментами времени
   PR
 
48 - 19.11.20 - 17:48
(46) А сортировка по текстовому виду ГУИДа вообще даст нужный порядок?
   Cthulhu
 
49 - 19.11.20 - 18:00
(47): это не "все проще" imho.
(48): да. ( причем, даже если "нет" - это полтора пинка преобразования к числу)
   Cthulhu
 
50 - 19.11.20 - 18:01
(48): оно с пределах секунды по гуид как раз во всех выборках в пределах секунды и сортируется. ))


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