|
Отчет. Список материалов, пришедших за последние 4 дня. | ☑ | ||
---|---|---|---|---|
0
rowflag
30.03.12
✎
23:02
|
Есть 2 склада. Производственный и Центральный. С Центрального склада материалы списываются на производственный по мере необходимости. Надо создать отчет материалов, пришедших на Центральный склад за последние 4 дня.
Результат предоставить в виде: Наименование Текущий остаток ********************* ​********************* ********************* ​********************* ********************* ​********************* ********************* ​********************* Что я пытался сделать: 1. ВЫБРАТЬ ТоварыНаСкладахОстаткиИОбороты.Склад.Наименование, ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток, ТоварыНаСкладахОстаткиИОбороты.Материал.Наименование ИЗ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты КАК ТоварыНаСкладахОстаткиИОбороты ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриходнаяНакладная КАК ПриходнаяНакладная ПО (ПриходнаяНакладная.Дата > ДАТАВРЕМЯ(2012, 3, 27)) СГРУППИРОВАТЬ ПО ТоварыНаСкладахОстаткиИОбороты.Материал.Наименование, ТоварыНаСкладахОстаткиИОбороты.Склад.Наименование, ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток Подскажите новичку пожалуйста. |
|||
1
vs7719
31.03.12
✎
01:03
|
1. Желательно указать название конфигурации.
2. Для получения "предсказуемого" результата соединения лучше делать по полям, присутствующим в обоих таблицах (после слова "ПО"), но в данном случае, можно и без него. 3. Список товаров из поступлений лучше добавить в параметры виртуальной таблицы ОстаткиИОбороты (условный пример: РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(,,Материал в (ВЫБРАТЬ РАЗЛИЧНЫЕ Материал из ПоступлениеТоваров.Материалы ГДЕ ПоступлениеТоваров.Ссылка.Дата > &НужнаяДата))) |
|||
2
rowflag
31.03.12
✎
14:08
|
Спасибо за подсказку. У меня есть 2 объекта. Регистр накопления ТоварыНаСкладах и документы ПриходнаяНакладная.
Нет: ПоступлениеТоваров. Могу ли используя свои 2 объекта выбрать данные который поступили за последние 4 дня? Я новичок в этом деле и в детали не могу вникнуть. Хочу получить просто алгоритм действий. (желательно подробный). А детали я реализую сам. |
|||
3
PVV65
31.03.12
✎
14:15
|
(2) Можешь.
Спасибо за подсказку. Реализуй. |
|||
4
rowflag
31.03.12
✎
15:37
|
Делаю так:
ВЫБРАТЬ ТоварыНаСкладахОстатки.Склад.Наименование, ТоварыНаСкладахОстатки.Материал.Наименование, ТоварыНаСкладахОстатки.КоличествоОстаток ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриходнаяНакладная КАК ПриходнаяНакладная ПО ТоварыНаСкладахОстатки.Материал.Наименование = ПриходнаяНакладная.Материалы.Материал.Наименование При нажатии "Сформировать" в Предприятии выходит сообщение об ошибке: "Ошибка SQL: Неоднозначное поле '_IDRRef'" В чем ошибка господа? |
|||
5
PVV65
31.03.12
✎
17:05
|
(4) Материалы.Материал.Наименование - для меня тупик.
|
|||
6
rowflag
31.03.12
✎
17:09
|
Вот так уже ближе. Отбираются только элементы которые пришли за период, но остаток у всех одинаков и равен остатку первого элемента.
ВЫБРАТЬ ПриходнаяНакладная.Материалы.( Материал.Наименование ), ТоварыНаСкладахОстаткиИОбороты.Склад.Наименование, ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток, ТоварыНаСкладахОстаткиИОбороты.Материал.Наименование ИЗ Документ.ПриходнаяНакладная КАК ПриходнаяНакладная ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты КАК ТоварыНаСкладахОстаткиИОбороты ПО ПриходнаяНакладная.Материалы.Материал.Наименование = ТоварыНаСкладахОстаткиИОбороты.Материал.Наименование ГДЕ ПриходнаяНакладная.Дата < ДАТАВРЕМЯ(2012, 3, 28) И ПриходнаяНакладная.Дата > ДАТАВРЕМЯ(2012, 3, 24) |
|||
7
rowflag
31.03.12
✎
17:10
|
Бьюсь уже 4 день.
|
|||
8
rowflag
31.03.12
✎
17:11
|
Короче получается выбрать приходные накладные по датам. Надо используя список материалов из приходных накладных выбрать для них остатки.
|
|||
9
PVV65
31.03.12
✎
17:15
|
Ааааа, тебе нужны остатки? По документам????
|
|||
10
rowflag
31.03.12
✎
17:19
|
Остатки на складах. Текущие. Но лишь тех, что пришли за последние 2 дня.
|
|||
11
PVV65
31.03.12
✎
17:20
|
(10) я случайно зашел.
|
|||
12
rowflag
31.03.12
✎
17:22
|
Вот так еще ближе. Уже только те элементы, которые нужны (за период) и остатки у них верные. Одно только не так. Дублируются те, которые пришли несколько раз.
ВЫБРАТЬ ПриходнаяНакладная.Материалы.( Материал.Наименование ), ТоварыНаСкладахОстаткиИОбороты.Склад.Наименование, ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток, ТоварыНаСкладахОстаткиИОбороты.Материал.Наименование ИЗ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты КАК ТоварыНаСкладахОстаткиИОбороты ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриходнаяНакладная КАК ПриходнаяНакладная ПО (ПриходнаяНакладная.Материалы.Материал.Наименование = ТоварыНаСкладахОстаткиИОбороты.Материал.Наименование) ГДЕ ПриходнаяНакладная.Дата < ДАТАВРЕМЯ(2012, 3, 28) И ПриходнаяНакладная.Дата > ДАТАВРЕМЯ(2012, 3, 24) |
|||
13
hhhh
31.03.12
✎
21:51
|
ВЫБРАТЬ
ПриходнаяНакладнаяМатериалы.Материал, ТоварыНаСкладахОстаткиИОбороты.Склад, ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток ИЗ Документ.ПриходнаяНакладная.Материалы КАК ПриходнаяНакладнаяМатериалы ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты КАК ТоварыНаСкладахОстаткиИОбороты ПО (ПриходнаяНакладнаяМатериалы.Материал = ТоварыНаСкладахОстаткиИОбороты.Материал) за Материал.Наимкнование = Материал.Наименование вообще-то надо расстреливать. |
|||
14
rowflag
01.04.12
✎
10:13
|
Почему (расстреливать)? Я тока начал изучать тему. Спасибо за поддержку!
|
|||
15
rowflag
01.04.12
✎
10:24
|
И еще. Они так же дублируются как и у меня. То есть если было 2 прихода одного и того же материала, то в отчете создается 2 записи с одним и тем же остатком. Мне надо чтобы запись была одна. Группировка не получается (конструктор пишет что нельзя группировать по вложенным таблицам). Как добиться результата?
|
|||
16
rowflag
01.04.12
✎
10:35
|
Извините, проверил - группировка доступна. НО: выводятся все остатки. Мне же надо которые пришли за определенный период.
|
|||
17
rowflag
01.04.12
✎
10:36
|
Делал так:
ПриходнаяНакладная.Дата < ДАТАВРЕМЯ(2012, 3, 28) И ПриходнаяНакладная.Дата > ДАТАВРЕМЯ(2012, 3, 24) Теперь это невозможно, т.к. нет поля ПриходнаяНакладная.Дата |
|||
18
rowflag
01.04.12
✎
10:52
|
Все!! Спасибо! Вы мне очень помогли! Добавил в конструкторе Дату приходной накладной, условия по ней и запрос стал таким:
ВЫБРАТЬ ПриходнаяНакладнаяМатериалы.Материал, ТоварыНаСкладахОстаткиИОбороты.Склад, ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток, ПриходнаяНакладная.Дата ИЗ Документ.ПриходнаяНакладная.Материалы КАК ПриходнаяНакладнаяМатериалы ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты КАК ТоварыНаСкладахОстаткиИОбороты ПО ПриходнаяНакладнаяМатериалы.Материал = ТоварыНаСкладахОстаткиИОбороты.Материал ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриходнаяНакладная КАК ПриходнаяНакладная ПО ПриходнаяНакладнаяМатериалы.Ссылка = ПриходнаяНакладная.Ссылка ГДЕ ПриходнаяНакладная.Дата < ДАТАВРЕМЯ(2012, 3, 28) И ПриходнаяНакладная.Дата > ДАТАВРЕМЯ(2012, 3, 24) СГРУППИРОВАТЬ ПО ПриходнаяНакладнаяМатериалы.Материал, ТоварыНаСкладахОстаткиИОбороты.Склад, ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток, ПриходнаяНакладная.Дата Теперь задача такая: Как сделать чтобы пользователь мог дату отчета изменять? |
|||
19
bolder
01.04.12
✎
11:01
|
(18) Использовать параметры запроса.
|
|||
20
rowflag
01.04.12
✎
11:08
|
Подскажите как? Я абсолютный нуль. Любая подсказка для меня великое благо!
|
|||
21
rowflag
01.04.12
✎
11:42
|
Сделал так:
ГДЕ ПриходнаяНакладная.Дата > ДАТАВРЕМЯ(2012, 3, 20) И ПриходнаяНакладная.Дата < &ДатаОтчета И ТоварыНаСкладахОстаткиИОбороты.Склад.Наименование = "Центральный" Все работает. Как от &ДатаОтчета вычесть 2 дня? |
|||
22
rowflag
01.04.12
✎
11:42
|
Как установить &ДатаОтчета по умолчанию равной текущей?
|
|||
23
rowflag
01.04.12
✎
12:14
|
Все супер, разобрался, делается это ТАК:
ГДЕ ПриходнаяНакладная.Дата > ДобавитьКДате(&ДатаОтчета, день, -2) И ПриходнаяНакладная.Дата < &ДатаОтчета И ТоварыНаСкладахОстаткиИОбороты.Склад.Наименование = "Центральный" |
|||
24
vicof
01.04.12
✎
12:35
|
(23) почитай "профессиональную разработку" что ли.
|
|||
25
rowflag
01.04.12
✎
12:44
|
Почитаю. Но сейчас срочно надо сделать дело.
|
|||
26
rowflag
01.04.12
✎
12:46
|
Еще вопрос. Как отобрать те материалы, которые закончились на складе?
Так - не выводится ничего: ВЫБРАТЬ ТоварыНаСкладахОстаткиИОбороты.Материал.Наименование, ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток, ТоварыНаСкладахОстаткиИОбороты.Склад.Наименование ИЗ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты КАК ТоварыНаСкладахОстаткиИОбороты ГДЕ ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток = 0 Так - выводятся лишние, ненужные поля ВЫБРАТЬ ТоварыНаСкладахОстаткиИОбороты.Материал.Наименование, ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток, ТоварыНаСкладахОстаткиИОбороты.Склад.Наименование, ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход, ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход ИЗ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты КАК ТоварыНаСкладахОстаткиИОбороты ГДЕ ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток = 0 |
|||
27
rowflag
01.04.12
✎
14:02
|
Как отобрать материалы с нулевым остатком.
|
|||
28
ale-sarin
01.04.12
✎
14:08
|
(27) Запрос по справочнику "Номенклатура" и левое соединение с регистром.
|
|||
29
rowflag
01.04.12
✎
14:51
|
Пример??
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |