|
и снова про периодический регистр сведений в запросе | ☑ | ||
---|---|---|---|---|
0
Cthulhu
25.08.20
✎
19:13
|
есть монструозный запрос.
в нем в том числе есть "ВЫБРАТЬ ... ИсточникДанных.Номенклатура КАК Номенклатура, ИсточникДанных.ДокументОприходования КАК ДокументОприходования, ..." для этой сладкой парочки надо вытаскивать из РС ЦеныНоменклатуры значение ресурса Цена на дату ДокументОприходования.ДатаДок. повторюсь - запрос монструозный, для универсального отчета - поэтому просто тупо перелопачивать его, тасуя порядок выборки - не получаеется. вопрос. собственно, простой как торшер: на что нужно заменить "ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКурса, ) КАК ЦеныПрайса" чтобы вместо параметра запроса использовать ДокументОприходования.Дата ?.. вот моно ли тупо вот этот кусок заменить на что-то другое, не трогая в тексте запроса больше ничего (работает - не трогай)?.. и на что именно (если "да")?.. заранееблагодаренивсетакое... прим.: - да, в базу знаний ходил. гугль пытал с пристрастем, но все неудачно. |
|||
1
RomanYS
25.08.20
✎
19:23
|
Левое соединение мояТаблицаСрезовСПериодами
По ... ДатаОприходования между мояТаблицаСрезовСПериодами.ДатаС и мояТаблицаСрезовСПериодами.ДатаПо |
|||
2
Cthulhu
25.08.20
✎
19:32
|
(1): спасибо, добрый человек.
во-первых, не понял. уж извини, а как бы прямо на вопрос кодом, который надо вставить вместо нерабочего - как в вопросе сформулировано - можно пожалуйста?.. прим.: не оговорил сразу, все осложняется тем, что период неизвестен!.. документы прихода - не из периода выбираются, а из измерения регистра остатков типа "документ"....... |
|||
3
H A D G E H O G s
25.08.20
✎
19:46
|
ВЫБРАТЬ
ПартииТоваровНаСкладахОстатки.Номенклатура, ПартииТоваровНаСкладахОстатки.КоличествоОстаток, ПартииТоваровНаСкладахОстатки.СтоимостьОстаток, ПартииТоваровНаСкладахОстатки.ДокументОприходования ПОМЕСТИТЬ МаксимальноОтфильтрованнаяОсновнаяТаблица ИЗ РегистрНакопления.ПартииТоваровНаСкладах.Остатки(, Склад = &Склад) КАК ПартииТоваровНаСкладахОстатки ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ЦеныНоменклатуры.Номенклатура, МАКСИМУМ(ЦеныНоменклатуры.Период) КАК Период ПОМЕСТИТЬ МаксимумыПериодов ИЗ МаксимальноОтфильтрованнаяОсновнаяТаблица КАК МаксимальноОтфильтрованнаяОсновнаяТаблица ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ПО МаксимальноОтфильтрованнаяОсновнаяТаблица.Номенклатура = ЦеныНоменклатуры.Номенклатура И МаксимальноОтфильтрованнаяОсновнаяТаблица.ДокументОприходования.Дата >= ЦеныНоменклатуры.Период СГРУППИРОВАТЬ ПО ЦеныНоменклатуры.Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ЦеныНоменклатуры.Номенклатура, ЦеныНоменклатуры.Цена ПОМЕСТИТЬ Цены ИЗ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ВНУТРЕННЕЕ СОЕДИНЕНИЕ МаксимумыПериодов КАК МаксимумыПериодов ПО ЦеныНоменклатуры.Номенклатура = МаксимумыПериодов.Номенклатура И ЦеныНоменклатуры.Период = МаксимумыПериодов.Период ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ МаксимальноОтфильтрованнаяОсновнаяТаблица.Номенклатура, МаксимальноОтфильтрованнаяОсновнаяТаблица.КоличествоОстаток, МаксимальноОтфильтрованнаяОсновнаяТаблица.СтоимостьОстаток, МаксимальноОтфильтрованнаяОсновнаяТаблица.ДокументОприходования, ЕСТЬNULL(Цены.Цена, 0) КАК Цена ИЗ МаксимальноОтфильтрованнаяОсновнаяТаблица КАК МаксимальноОтфильтрованнаяОсновнаяТаблица ЛЕВОЕ СОЕДИНЕНИЕ Цены КАК Цены ПО МаксимальноОтфильтрованнаяОсновнаяТаблица.Номенклатура = Цены.Номенклатура |
|||
4
H A D G E H O G s
25.08.20
✎
19:47
|
Обэрэжно с
ДокументОприходования.Дата Если есть возможность, используйте Выразить() |
|||
5
Вафель
25.08.20
✎
21:00
|
в скд можно
|
|||
6
Ёпрст
25.08.20
✎
21:38
|
(3) че то вот это
И МаксимальноОтфильтрованнаяОсновнаяТаблица.ДокументОприходования.Дата >= ЦеныНоменклатуры.Период не комильфо..тогда уж дату раньше положить во времянку хотя бы |
|||
7
Джинн
25.08.20
✎
22:02
|
||||
8
H A D G E H O G s
25.08.20
✎
22:29
|
(6) Очень даже комильфо
|
|||
9
Cthulhu
26.08.20
✎
00:05
|
(8): спасибо, добрый человек, обязательно поковыряючь. хотя ответа на вопрос "на что нужно заменить "ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКурса, ) КАК ЦеныПрайса" чтобы вместо параметра запроса использовать ДокументОприходования.Дата ?.." -- не нашел, аломать оттюненный лютый запрос - все-таки не могу, но обязательно поковыряюсь..
(7): спасибо, читано-перечитано (я вроде упоминл об этом). |
|||
10
Ёпрст
26.08.20
✎
00:53
|
(8) не.. кучка левых соединений для ссылки чтоб потом фильтр по дате, ну так себе..там еще и case влепят в on
|
|||
11
H A D G E H O G s
26.08.20
✎
01:09
|
(10) Ну так она везде куча будет
|
|||
12
H A D G E H O G s
26.08.20
✎
01:10
|
(10) Чтобы кучи не было - надо постобработкой кодом, если ты более-менее уверен, что табличного разнообразия в выборке будет немного.
|
|||
13
Cthulhu
26.08.20
✎
01:16
|
(12): в том-то и дело, что это монструозный запрос, подготовленный для универсального отчета, и можно только им родным. есть связка - надо другую. казалось бы. но вот - как???
|
|||
14
H A D G E H O G s
26.08.20
✎
01:27
|
(13) Я показал как в (3)
|
|||
15
Конструктор1С
26.08.20
✎
07:23
|
(0) "есть монструозный запрос"
Скорее всего банальный рукожоп-стайл. Я бы на твоём месте переписал этот запрос по-человечачи |
|||
16
Cthulhu
26.08.20
✎
10:51
|
(14): во-первых, там в теле запроса источникданных составлен не по остаткам, а по остатками и оборотам, и к этому регистру напристегнуто дофига чего, а ты предлагаешь перепиливать его, всовывая свой алгоритм расчета показателей. насколько я понял. я же прошу о том, чтобы только(!) указанны кусок привязки значений к срезу последних р.с. - заменить на привязку к показателям этого р.с. на дату документа, получаемого в запросе.
ну или я не понял просто - какой же кусок из (3) нужно встатвить вместо "ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКурса, ) КАК ЦеныПрайса" не меняя всей остальной логики запроса. (15): 1) нет. 2) нет смысла, он для универсального отчета и оттюнен, и в коде куча привязанных к нему доп.настроек этого универсального отчета. и оно работает норм, надо только добавить колонку цены из р.с. на дату док.поступления партии. только. а по твоей логике - там и вся конфига рукожоп-стайл и можно преждожить в ответ на любой вопрос по ней - переписать всю конфигу по-человечачи. я конечно перфекционист - но не до такой степени, чтобы от этого подохнуть... |
|||
17
Ёпрст
26.08.20
✎
10:55
|
(16) дык в (3) показано как сделать срезпоследних на дату документа, грубо, это 2 запроса в серединке, для формирования таблички цен.
Далее в свой изначальный запрос подставляй как в запросе в конце и всё. Ну и первый запрос замени на свой. |
|||
18
Cthulhu
26.08.20
✎
11:32
|
(17): т.е. какую-то врем.таблицу надо сначала подготовить, а потом в том месте привязку к срезу последних заменить на привязку к этой врем.таблице - я правильно понял?.. если "да" - тогда осталось в (3) ковыряться искать - где и как формировать врем таблицу, а также придумать код привязки к ней для замены кода привязки к срезу последних... я правильно понимаю?
|
|||
19
Cthulhu
26.08.20
✎
11:35
|
(17): блин. все равно не вижу в (3) - КАК подготовить врем.таблицу. там делается попытка выдрать рабочие данные (не так, как в основном моем запросе!) - и использовать их для построения врем таблицы... это не не то.
|
|||
20
Salimbek
26.08.20
✎
13:33
|
(19) Делайте все по порядку.
Для начала, вам надо выбрать максимальную Дату из ЦеныНоменклатуры, которая будет меньше ДатыОприходования. Т.е. соединяем с Регистром (не со срезом) по условию Период<=ДатаОприходования и Номенклатура=Номенклатура. В этой выборке берем Максимум(Период) КАК МаксДата. Далее, так как мы теперь знаем Период установки цены для данной строки, то вытаскиваем уже саму цену, для этого еще раз соединяем с ЦеныНоменклатуры, но уже по условию Период=МаксДата и Номенклатура=Номенклатура, и вот из этой выборки берем Цену. |
|||
21
Ёпрст
26.08.20
✎
13:48
|
(18) да
|
|||
22
Ёпрст
26.08.20
✎
13:49
|
в том запросе где у тебя левое соединение срезпоследних, выкидываешь срез последних и помещаешь во времянку - это запрос 1 из (3)..далее как в (3) все остальные и всё.
|
|||
23
Дык ё
26.08.20
✎
13:51
|
(0) если вдруг это в СКД - можно вынести срез в отдельный запрос и на вкладке соединений передать дату из первого запроса во второй параметром
|
|||
24
Сергиус
26.08.20
✎
16:04
|
(0)В обычном запрос тупо заменить на что-то аналогичное с передачей даты документа, не получится. Надо все делать по методике из (7), но там явно больше телодвижений.
|
|||
25
Cthulhu
27.08.20
✎
13:40
|
спасибо, люди.
1) слепил врем.таблицы по максимальной повторной выборке, с результирующей вт "... КАК втЦеныПрайса" 2) заменил строку "ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКурса, ) КАК ЦеныПрайса" на "ЛЕВОЕ СОЕДИНЕНИЕ втЦеныПрайса КАК ЦеныПрайса" все получилось - хотя далеко не так просто, как ожидалось... прим.: всунуть без вт вложенные запросы - не получилось. но да и ладно, так работает |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |