|
Запрос. К каждой номенклатуре по складу вывести свою норму | ☑ | ||
---|---|---|---|---|
0
StillEnough
13.04.15
✎
16:07
|
Всем добрый день.
Есть банальный запрос ВЫБРАТЬ ТоварыНаСкладахОстаткиИОбороты.Склад, ТоварыНаСкладахОстаткиИОбороты.Номенклатура, ИЗ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Регистратор, ДвиженияИГраницыПериода, ) КАК ТоварыНаСкладахОстаткиИОбороты Надо вот так. в регистре 2 измерения Склад, Номенклатура и Ресурс "Норма" http://c2n.me/3g0JVal К каждой номенклатуре по складу вывести свою норму Помогите, пожалуйста! |
|||
1
ХардHard
13.04.15
✎
16:11
|
(0) А что у нас нормы хранятся в РегистрНакопления.ТоварыНаСкладах ?
|
|||
2
spiller26
13.04.15
✎
16:12
|
(0) Что за РС (регистр сведений), какой он периодический или нет, и по чем его связывать?
Что за "Норма"? |
|||
3
Drac0
13.04.15
✎
16:15
|
(0)
ВЫБРАТЬ ТоварыНаСкладахОстаткиИОбороты.Склад, ТоварыНаСкладахОстаткиИОбороты.Номенклатура, Нормы.Норма ИЗ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Регистратор, ДвиженияИГраницыПериода, ) КАК ТоварыНаСкладахОстаткиИОбороты ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИмяТвоегоРегистра КАК Нормы ПО Нормы.Склад = оварыНаСкладахОстаткиИОбороты.Склад И Нормы.Номенклатура = ТоварыНаСкладахОстаткиИОбороты.Номенклатура Если регистр периодеский, то надо ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИмяТвоегоРегистра.СРезПоследних() КАК Нормы |
|||
4
Drac0
13.04.15
✎
16:16
|
Опечатки и синтаксис сам проверь
|
|||
5
spiller26
13.04.15
✎
16:20
|
(3) Но ещё бывает. что приходиться РС в виртуальную таблицу запихивать. Не помню уже в каких случаях.
|
|||
6
Drac0
13.04.15
✎
16:24
|
(5) Соединение самой с собой, многократное использование. В данном случае это немного облегчит работу скульного оптимизатора, но если у регистра стоит галка формировать физическую таблицу среза последних, то и здесь профита не будет.
|
|||
7
StillEnough
13.04.15
✎
16:41
|
(3) окей я сделал левым. Но у меня идет дублирование записей из накопления, потому что в РС (он кстати говоря переодический) по каждому складу и номенклатуре несколько значений. Мне же нужно всегда брать одно последнее.
|
|||
8
Drac0
13.04.15
✎
16:45
|
(7) В конце специально для этого случай оставил комментарий же... Ну что такое.
|
|||
9
StillEnough
13.04.15
✎
16:52
|
(8) прощу прощения, страница не обновилась. Прочитал комментарий, и честно сказать ничего не понял. Пошел погуглить - наткнулся на Книга знаний: Срез последних на каждую дату в запросе
Вроде по теме, буду разбираться. Но если вы знаете, можете сказать как быстрее и правильнее сделать? Сейчас у меня выводиться блок записей с нужной нормой на последнюю дату, после начинается дубли |
|||
10
Drac0
13.04.15
✎
16:55
|
(9) Ты это прочитал: "Если регистр периодеский, то надо ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИмяТвоегоРегистра.СРезПоследних() КАК Нормы"
И ты это не смог понять? |
|||
11
StillEnough
13.04.15
✎
16:58
|
(10) я про (6) написал. Из вашего коммента все осознал, сделал, но результат не изменился
РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Регистратор, ДвиженияИГраницыПериода, ) КАК ТоварыНаСкладахОстаткиИОбороты ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДвижениеСебестоимости.СрезПоследних(&КонецПериода, ) КАК ДвижениеСебестоимостиСрезПоследних |
|||
12
StillEnough
13.04.15
✎
17:00
|
(11) вернее он, конечно, изменился, но проблему дублей это не решило
|
|||
13
Drac0
13.04.15
✎
17:01
|
(11) Значит, в ДвижениеСебестоимости есть еще одно измерение.
|
|||
14
Drac0
13.04.15
✎
17:01
|
(13) или даже больше.
|
|||
15
StillEnough
13.04.15
✎
17:04
|
(14) да вы правы. Есть еще пара измерений. Как же быть в этой ситуации?
|
|||
16
spiller26
13.04.15
✎
17:05
|
(12) Структуру давай, а то долго будем соображать.
РегистрСведений.ДвижениеСебестоимости пока интересует Измерения |
|||
17
StillEnough
13.04.15
✎
17:06
|
ДвижениеСебестоимостиМатериалов
-- Документ СкладПолучатель Номенклатура Движение |
|||
18
Drac0
13.04.15
✎
17:09
|
(17) Сами регистр делали?
|
|||
19
spiller26
13.04.15
✎
17:09
|
(17) В левое соединение по чем делаешь
запрос кинь полностью |
|||
20
StillEnough
13.04.15
✎
17:10
|
(19) ВЫБРАТЬ
ТоварыНаСкладахОстаткиИОбороты.Регистратор, ТоварыНаСкладахОстаткиИОбороты.Склад, ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура, ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток, ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход КАК КоличествоПриход, ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход КАК КоличествоРасход, ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток, ТоварыНаСкладахОстаткиИОбороты.Период КАК Период, ВЫБОР КОГДА ДвижениеСебестоимостиСрезПоследних.Количество <> 0 ТОГДА ДвижениеСебестоимостиСрезПоследних.СебестоимостьСумма / ДвижениеСебестоимостиСрезПоследних.Количество КОНЕЦ КАК ЧегоТоТам, ДвижениеСебестоимостиСрезПоследних.Период КАК Период1, ДвижениеСебестоимостиСрезПоследних.Количество КАК ПолОднородный ИЗ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Регистратор, ДвиженияИГраницыПериода, ) КАК ТоварыНаСкладахОстаткиИОбороты ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ДвижениеСебестоимости.СрезПоследних(&КонецПериода, ) КАК ДвижениеСебестоимостиСрезПоследних ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ДвижениеСебестоимостиСрезПоследних.Номенклатура И ТоварыНаСкладахОстаткиИОбороты.Склад = ДвижениеСебестоимостиСрезПоследних.СкладПолучатель И (ТоварыНаСкладахОстаткиИОбороты.Регистратор = ДвижениеСебестоимостиСрезПоследних.Документ ИЛИ ТоварыНаСкладахОстаткиИОбороты.Регистратор.ДокументОснование = ДвижениеСебестоимостиСрезПоследних.Документ) УПОРЯДОЧИТЬ ПО Период1 |
|||
21
StillEnough
13.04.15
✎
17:10
|
(18) так точно
|
|||
22
StillEnough
13.04.15
✎
17:11
|
(20) не с той консоли скоппировал. У меня 2 последних условия удалены про сравнение регистраторов. Это тестовый вариант
|
|||
23
Drac0
13.04.15
✎
17:13
|
(22) Почему измерение Документ, а не подчинение регистратору сделали? Это раз. Что лежит в измреении Движение? Это два.
|
|||
24
spiller26
13.04.15
✎
17:13
|
(21) жесть конечно
|
|||
25
StillEnough
13.04.15
✎
17:16
|
(23) 1) не смог придумать как реализовать само Движение в системе. У меня в каждой записи регистра хранится значение себестоимости партии на предыдущем участке на этом складе. Расчет проходит в конце месяца с учетом 10 документов. В запись регистра при расчете записываются данные, подчиненную регистратору не перезаписать из модуля другого документа.
2) ИСТИНА - ЛОЖЬ |
|||
26
StillEnough
13.04.15
✎
17:17
|
(24) ну жесть не жесть, но работает как надо. Осталось только 1 цифру в группировку вывести.
|
|||
27
Drac0
13.04.15
✎
17:22
|
Сначала собираешь временную таблицу:
ВЫБРАТЬ РС_ДС_Срез.СкладПолучатель, РС_ДС_Срез.Номенклатура, МАКСИМУМ(РС_ДС_Срез.Период) КАК МаксПериод ПОМЕСТИТЬ ВТ_РеальноПоследние ИЗ РегистрСведений.ДвижениеСебестоимости.СрезПоследних(&КонецПериода, ) КАК РС_ДС_Срез СГРУППИРОВАТЬ ПО РС_ДС_Срез.СкладПолучатель, РС_ДС_Срез.Номенклатура Дальше переделываешь соединение на ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДвижениеСебестоимости.СрезПоследних(&КонецПериода, ) КАК ДвижениеСебестоимостиСрезПоследних ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_РеальноПоследние КАК ВТ_РеальноПоследние ПО ВТ_РеальноПоследние.СкладПолучатель = ВТ_РеальноПоследние.Номенклатура = ВТ_РеальноПоследние.МаксПериод = ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ДвижениеСебестоимостиСрезПоследних.Номенклатура И ТоварыНаСкладахОстаткиИОбороты.Склад = ДвижениеСебестоимостиСрезПоследних.СкладПолучатель Правда ,если у тебя две записи в рамках одной секунды, то все равно херня будет. Но тогда нужна еще одна ВТ, а мне лень писать. |
|||
28
Drac0
13.04.15
✎
17:22
|
(26) Это и есть ошибка проектирования. Когда ради одно циферки получаешь геморрой.
|
|||
29
StillEnough
13.04.15
✎
17:24
|
(28) да кто же спорит. Но я 3 раза концепцию расчета себестоимости менял в процессе разработки. Экономист по итогам "раза" понимал, что-то не так... и начинались заплатки
|
|||
30
StillEnough
13.04.15
✎
17:26
|
(27) спасибо. в разрезе склада и номенклатуры не будет такого
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |