|
Вопрос по запросу к регистру сведений. | ☑ | ||
---|---|---|---|---|
0
pazhar
20.04.12
✎
08:18
|
Помогите, пожалуйста, решить следующую задачу. Есть регистр сведений, изменяемый регистраторами, с одним измерением с ресурсом сумма. Мне из регистра нужно получить измерению только те регистраторы которые последними меняли ресурс сумма, т.е если сумма по последнему регистратору не изменилась, то регистратор показывать не нужно.
|
|||
1
Gesperid
20.04.12
✎
08:27
|
Отлично сформулирован повпрос:
"с одним измерением с ресурсом сумма" "нужно получить измерению только те регистраторы" |
|||
2
vmv
20.04.12
✎
08:31
|
справа кнопка "пожертвовать", предлагаю создать фонд покупки сп для автора
|
|||
3
Плот
20.04.12
✎
08:34
|
(0) Написать запрос
|
|||
4
КМ155
20.04.12
✎
08:35
|
(0) что-то мешает соединить срез последних с записями Рг по не равенству ресурса и сгруппировать по максимуму дату регистратора ?
|
|||
5
pazhar
20.04.12
✎
08:37
|
Если выбирать в запросе Регистр.СрезПоследних, то он берет последние записи регистраторов, а мне не нужны регистраторы с повторяющимся ресурсом. Как из таблицы регистра вытащить предыдущие записи если ресурс не изменялся?
|
|||
6
КМ155
20.04.12
✎
08:39
|
(5) что-то мешает соединить срез последних с записями Рг по не равенству ресурса и сгруппировать по максимуму дату регистратора ?
|
|||
7
pazhar
20.04.12
✎
08:41
|
Если я так соединю, то получу регистратор предпоследнего измененного ресурса, а мне нужен первый регистратор, изменивший последний ресурс.
|
|||
8
Ненавижу 1С
гуру
20.04.12
✎
08:42
|
(7) ну епты, минимум! ну немного самому думать, кстати на неравенство не надо
|
|||
9
КМ155
20.04.12
✎
08:43
|
(7) по не равенству ресурса
|
|||
10
pazhar
20.04.12
✎
08:46
|
Попробую разъяснить на примере, что мне нужно. Регистратор1 - 100 руб, Регистратор2 - 100 руб регистратор3 - 120 руб., Регистратор4 - 120 руб. Исходя из логики (8) я получу Регистратор1, а мне нужен регистратор3.
|
|||
11
КМ155
20.04.12
✎
09:08
|
(10) блеать, три раза всё разжевал:
ВЫБРАТЬ ЦеныНоменклатурыСрезПоследних.Номенклатура, ЦеныНоменклатурыСрезПоследних.Цена ПОМЕСТИТЬ Текущие ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Текущие.Номенклатура, МАКСИМУМ(ЦеныНоменклатуры.Период) КАК Период ПОМЕСТИТЬ ДатаПоследнегоИзмения ИЗ Текущие КАК Текущие ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ПО Текущие.Номенклатура = ЦеныНоменклатуры.Номенклатура И Текущие.Цена <> ЦеныНоменклатуры.Цена ГДЕ ЦеныНоменклатуры.ТипЦен = &ТипЦен СГРУППИРОВАТЬ ПО Текущие.Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ДатаПоследнегоИзмения.Номенклатура, ЦеныНоменклатуры.Регистратор, ЦеныНоменклатуры.Цена ИЗ ДатаПоследнегоИзмения КАК ДатаПоследнегоИзмения ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ПО ДатаПоследнегоИзмения.Номенклатура = ЦеныНоменклатуры.Номенклатура И ДатаПоследнегоИзмения.Период = ЦеныНоменклатуры.Период ГДЕ ЦеныНоменклатуры.ТипЦен = &ТипЦен |
|||
12
КМ155
20.04.12
✎
09:09
|
(11) + 1
если есть вариант, что регистратор единственный то связать налево и добавить UNION сам с собой |
|||
13
Ненавижу 1С
гуру
20.04.12
✎
09:23
|
мой
ВЫБРАТЬ ЦеныНоменклатурыСрезПоследних.Номенклатура, ЦеныНоменклатурыСрезПоследних.Цена ПОМЕСТИТЬ Срез ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ЦеныНоменклатуры.Номенклатура, МАКСИМУМ(ЦеныНоменклатуры.Период) КАК Период ПОМЕСТИТЬ ПоследниеПлохие ИЗ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ВНУТРЕННЕЕ СОЕДИНЕНИЕ Срез КАК Срез ПО ЦеныНоменклатуры.Номенклатура = Срез.Номенклатура И ЦеныНоменклатуры.Цена <> Срез.Цена И (ЦеныНоменклатуры.ТипЦен = &ТипЦен) СГРУППИРОВАТЬ ПО ЦеныНоменклатуры.Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ЦеныНоменклатуры.Номенклатура, МИНИМУМ(ЦеныНоменклатуры.Период) КАК Период ПОМЕСТИТЬ ПервыеХорошие ИЗ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ЛЕВОЕ СОЕДИНЕНИЕ ПоследниеПлохие КАК ПоследниеПлохие ПО ЦеныНоменклатуры.Номенклатура = ПоследниеПлохие.Номенклатура ГДЕ ЦеныНоменклатуры.ТипЦен = &ТипЦен И ЦеныНоменклатуры.Период > ЕСТЬNULL(ПоследниеПлохие.Период, ДАТАВРЕМЯ(1, 1, 1)) СГРУППИРОВАТЬ ПО ЦеныНоменклатуры.Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ЦеныНоменклатуры.Номенклатура, ЦеныНоменклатуры.Регистратор, ЦеныНоменклатуры.Цена, ЦеныНоменклатуры.Период ИЗ ПервыеХорошие КАК ПервыеХорошие ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ПО ПервыеХорошие.Номенклатура = ЦеныНоменклатуры.Номенклатура И ПервыеХорошие.Период = ЦеныНоменклатуры.Период И (ЦеныНоменклатуры.ТипЦен = &ТипЦен) |
|||
14
Cube
20.04.12
✎
09:41
|
Мой:
ВЫБРАТЬ ВложенныйЗапрос.Номенклатура КАК Номенклатура, ВложенныйЗапрос.ТипЦен КАК ТипЦен, ЦеныНоменклатуры.Цена, ВложенныйЗапрос.Регистратор КАК Регистратор ИЗ (ВЫБРАТЬ ВложенныйЗапрос.Номенклатура КАК Номенклатура, ВложенныйЗапрос.ТипЦен КАК ТипЦен, МАКСИМУМ(ВложенныйЗапрос.Регистратор) КАК Регистратор ИЗ (ВЫБРАТЬ ЦеныНоменклатурыТекущие.Номенклатура КАК Номенклатура, ЦеныНоменклатурыТекущие.ТипЦен КАК ТипЦен, ЦеныНоменклатурыТекущие.Цена КАК Цена, ЦеныНоменклатурыТекущие.Регистратор КАК Регистратор, МАКСИМУМ(ЦеныНоменклатурыПредыдущие.Регистратор) КАК ПредыдущийРегистратор ИЗ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатурыТекущие ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатурыПредыдущие ПО ЦеныНоменклатурыТекущие.Номенклатура = ЦеныНоменклатурыПредыдущие.Номенклатура И ЦеныНоменклатурыТекущие.Период > ЦеныНоменклатурыПредыдущие.Период И ЦеныНоменклатурыТекущие.ТипЦен = ЦеныНоменклатурыПредыдущие.ТипЦен СГРУППИРОВАТЬ ПО ЦеныНоменклатурыТекущие.Номенклатура, ЦеныНоменклатурыТекущие.Регистратор, ЦеныНоменклатурыТекущие.Цена, ЦеныНоменклатурыТекущие.ТипЦен) КАК ВложенныйЗапрос ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ПО ВложенныйЗапрос.Номенклатура = ЦеныНоменклатуры.Номенклатура И ВложенныйЗапрос.ТипЦен = ЦеныНоменклатуры.ТипЦен И (ВложенныйЗапрос.ПредыдущийРегистратор ЕСТЬ NULL ИЛИ ВложенныйЗапрос.ПредыдущийРегистратор = ЦеныНоменклатуры.Регистратор) ГДЕ (ВложенныйЗапрос.ПредыдущийРегистратор ЕСТЬ NULL ИЛИ ВложенныйЗапрос.Цена <> ЦеныНоменклатуры.Цена) СГРУППИРОВАТЬ ПО ВложенныйЗапрос.Номенклатура, ВложенныйЗапрос.ТипЦен) КАК ВложенныйЗапрос ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ПО ВложенныйЗапрос.Номенклатура = ЦеныНоменклатуры.Номенклатура И ВложенныйЗапрос.ТипЦен = ЦеныНоменклатуры.ТипЦен И ВложенныйЗапрос.Регистратор = ЦеныНоменклатуры.Регистратор УПОРЯДОЧИТЬ ПО Номенклатура, ТипЦен, Регистратор АВТОУПОРЯДОЧИВАНИЕ |
|||
15
Gesperid
20.04.12
✎
10:18
|
(11)
Цены номенклатуры -------------------- t+1 Регистратор1 Номенкл1 100 руб t+2 Регистратор2 Номенкл1 100 руб t+3 Регистратор3 Номенкл1 120 руб t+3 Регистратор4 Номенкл1 120 руб ВТ Текущие -------- Номекл1 120 руб ВТ ДатаПоследнегоИзмения ------------------------- Номекл1 t+2 Результат ------------------------- Регистратор2 Номенкл1 100 руб а должно быть t+3 Регистратор3 Номенкл1 120 руб |
|||
16
Gesperid
20.04.12
✎
10:40
|
(13) отлично
(14) неоптимально и вложенность процент доверия мисты - 33,3% |
|||
17
Cube
20.04.12
✎
10:58
|
(16) "неоптимально и вложенность" - чем не оптимально? На скорость работы, вроде, не влияет.
Да, к тому же, на демо базе УПП мой запрос выдает на две строки (правильных строки) больше, чем (13). |
|||
18
Gesperid
20.04.12
✎
11:12
|
(17) вложенность хуже воспринимается, а оптимальность - я не замерял, но имхо срез не зря придумали
|
|||
19
Gesperid
20.04.12
✎
11:13
|
(17) и приведи пример строк которые не даёт (13)
|
|||
20
Cube
20.04.12
✎
11:17
|
(19) Если поставить фильтр по типу цен "Розничная", то номенклатура "Кресло офисное "Комфорт"" в выборку не попадает, хотя в РС записи.
|
|||
21
Cube
20.04.12
✎
11:19
|
+(20) Но имхается мне, что это из-за характеристик и на другом примере всё будет работать как надо.
|
|||
22
Gesperid
20.04.12
✎
11:23
|
(21) во-во, у тебя из-за них вообще куча дублей будет
|
|||
23
Cube
20.04.12
✎
11:35
|
(22) Я бы сказал, оба молодцы: у одного дублирует, у другого не выводит))
|
|||
24
Gesperid
20.04.12
✎
11:40
|
(23) посмотрел ещё раз - у тебя ошибки и помимо дублей =)
вроде правильно вот так:
|
|||
25
Cube
20.04.12
✎
11:59
|
(24) Ну вот, теперь и этот запрос дубли выдает)))
А на счет моего запроса - да, есть один косяк: Когда я сворачиваю функцией МАКСИМУМ() вот эти два регистратора "Установка цен номенклатуры 00000000012 от 08.06.2009 0:00:00" и "Установка цен номенклатуры 00000000001 от 01.01.2012 12:00:00", то запрос мне выдает документ от 08.06.2009 почему-то... Странно это всё... |
|||
26
Ненавижу 1С
гуру
20.04.12
✎
12:03
|
(23) я исходил из того, что характеристик нет вообще, вот и все
|
|||
27
Cube
20.04.12
✎
12:05
|
(26) По поводу (25) есть идеи?
|
|||
28
Ненавижу 1С
гуру
20.04.12
✎
12:12
|
(27) а запрос какой смотреть?
|
|||
29
Cube
20.04.12
✎
12:15
|
(28) Ну из (14)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |