|
Помогите разобраться с скд(точнее с запросами) | ☑ | ||
---|---|---|---|---|
0
ksenod
02.11.18
✎
11:25
|
Хочу видеть все конечные остатки, и приходы-расходы номенклатуры за период(+ дату последнего поступления и текущую цену). Подскажите пожалуйста как мне их получить, если беру обороты из регистра оборотов, а остатки из регистра остатков то получаю не все данные(там где есть остатки но нет оборотов пустая номенклатура), если делаю как написал ниже получаю все остатки после каждого прихода-расхода, куча хлама. Так же буду благодарен всем кто укажет мне мои ошибки по оптимизации в коде.
Есть ли способ объединить таблицы в следующем виде: товар1 1 2 товар2 1 1 + товар1 Х товар3 Х = Товар1 1 2 Х Товар2 1 1 Товар3 Х ВЫБРАТЬ МАКСИМУМ(ПартииТоваровНаСкладахОстаткиИОбороты.Период) КАК Период, ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура, ПРЕДСТАВЛЕНИЕ(ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура) ПОМЕСТИТЬ ДатаПоступлений ИЗ РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты(, , Регистратор, , ) КАК ПартииТоваровНаСкладахОстаткиИОбороты ГДЕ ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг СГРУППИРОВАТЬ ПО ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ТоварыНаСкладахОстаткиИОбороты.Номенклатура, ПРЕДСТАВЛЕНИЕ(ТоварыНаСкладахОстаткиИОбороты.Номенклатура), СУММА(ВЫБОР КОГДА НЕ ТоварыНаСкладахОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПеремещениеТоваров ТОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход КОНЕЦ) КАК КоличествоПриход, СУММА(ВЫБОР КОГДА НЕ ТоварыНаСкладахОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПеремещениеТоваров ТОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход КОНЕЦ) КАК КоличествоРасход, ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток ПОМЕСТИТЬ обороты ИЗ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&naper, &koper, Регистратор, , ) КАК ТоварыНаСкладахОстаткиИОбороты СГРУППИРОВАТЬ ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура, ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ЦеныНоменклатурыСрезПоследних.Цена, ЦеныНоменклатурыСрезПоследних.Номенклатура, ПРЕДСТАВЛЕНИЕ(ЦеныНоменклатурыСрезПоследних.Номенклатура) ПОМЕСТИТЬ ценаа ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ТоварыВРезервеНаСкладахОстатки.Номенклатура, ПРЕДСТАВЛЕНИЕ(ТоварыВРезервеНаСкладахОстатки.Номенклатура), ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток ПОМЕСТИТЬ резервы ИЗ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&koper, ) КАК ТоварыВРезервеНаСкладахОстатки ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ обороты.Номенклатура КАК Номенклатура, ПРЕДСТАВЛЕНИЕ(обороты.Номенклатура), СУММА(обороты.КоличествоПриход) КАК КоличествоПриход, СУММА(обороты.КоличествоРасход) КАК КоличествоРасход, обороты.КоличествоКонечныйОстаток, МАКСИМУМ(ДатаПоступлений.Период) КАК Период, резервы.КоличествоОстаток КАК КоличествоОстаток, ценаа.Цена ИЗ обороты КАК обороты ЛЕВОЕ СОЕДИНЕНИЕ ДатаПоступлений КАК ДатаПоступлений ПО обороты.Номенклатура = ДатаПоступлений.Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ резервы КАК резервы ПО обороты.Номенклатура = резервы.Номенклатура ВНУТРЕННЕЕ СОЕДИНЕНИЕ ценаа КАК ценаа ПО обороты.Номенклатура = ценаа.Номенклатура СГРУППИРОВАТЬ ПО обороты.Номенклатура, обороты.КоличествоКонечныйОстаток, резервы.КоличествоОстаток, ценаа.Цена УПОРЯДОЧИТЬ ПО Номенклатура, КоличествоОстаток |
|||
1
ksenod
02.11.18
✎
12:00
|
Тут неверный запрос на дату, забыл поправить, там тоже ВЫБОР КОГДА регистратор=ссылка док.пост.тов
|
|||
2
catena
02.11.18
✎
12:08
|
>>там где есть остатки но нет оборотов пустая номенклатура
Чтобы так не было, используй конструкцию ЕстьNULL(ЛеваяТаблица.Номенклатура, ПраваяТаблица.Номенклатура) |
|||
3
ksenod
02.11.18
✎
12:15
|
(2) Спасибо! Ты лучший.
|
|||
4
ksenod
02.11.18
✎
12:20
|
Лучшая*
|
|||
5
ksenod
02.11.18
✎
12:29
|
Буду так же очень рад если мне подскажут полноценную документацию/книжку с хорошими примерами по запросам в 1с(находящуюся в свободном доступе).
|
|||
6
xXeNoNx
02.11.18
✎
13:45
|
(0)а что мешает получить приходы/расходы по реальной таблице, исключая определенный вид регистратора, а остатки получить из регистра остатков?
|
|||
7
xXeNoNx
02.11.18
✎
13:47
|
в ПОМЕСТИТЬ обороты написана ересь. Конечный остаток будет получаться на каждый движение регистра, соответственно фактический остаток не будит иметь с ним ничего общего
И переставай использовать вирт таблицу ОстаткиИОбороты |
|||
8
ksenod
06.11.18
✎
08:03
|
(7) С остатком я все понял, почему плохо использовать эту таблицу и какие есть альтернативы для получения приходов и расходов за период?
|
|||
9
xXeNoNx
06.11.18
✎
08:06
|
(8) с детализацией по дате я за реальную таблицу
|
|||
10
Web00001
06.11.18
✎
08:08
|
(8) Мне тоже очень интересно как получить остатки на каждое движение\дату не используя ОстаткиИОбороты
|
|||
11
xXeNoNx
06.11.18
✎
08:09
|
(8) не имеет смысла использовать таблицу оборотов с детализацией меньше месяца, т.к. результат будет вычисляться по реальной таблице.
|
|||
12
xXeNoNx
06.11.18
✎
08:11
|
+(11) можно убедиться открыв профайлер, либо запустить консоль запроса с возможностью показывать план запроса
|
|||
13
ksenod
06.11.18
✎
08:14
|
(9) Можете уточнить что вы подразумеваете под реальной таблицей? Имеете в виду делать конечный поиск по этому же регистру не использую вирт таблиц?
|
|||
14
MuxaH
06.11.18
✎
11:08
|
СКД обязательно нужны парные поля остатков, и роли этим полям назначить надо. А если брать только конечный остаток, то при группировке она итоги хрен знает как посчитает. Так что выбрать в запросе Начальный остаток, Приход, Расход, Конечный остаток. Остаткам назначить роль. Ну а если поле начальный остаток никому не надо, то ограничить его использование галками.
|
|||
15
ksenod
06.11.18
✎
12:34
|
(14) хм, вроде бы уже протестировал только с конечными остатками и все хорошо, итоги считал через вкладку ресурсов. Можете поподробнее рассказать как воспроизвести баг или я его уже случайно обошел?
Можете так же в двух словах рассказать про роли для полей для общего развития? |
|||
16
ksenod
06.11.18
✎
12:35
|
(15) (14) Про роли нашел, ушел изучать
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |