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

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

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


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

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

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