Имя: Пароль:
1C
1С v8
Работа с запросом
,
0 skd1980
 
19.07.11
13:42
Добрый день! Только начинаю осваивать 1с8, поэтому сильно не пинайте.
Есть регистр накоплений ОстаткиТоваров из него формируется отчет по товарам. Так вот мне нужно в вывести тот товар из справочника Товары, которого нет в регистре ОстаткиТоваров.  Каким образом модернизировать запросик? Вот текст запроса. Подписал там справочник товаров, но как вывести весь товар и из справочника и из регистра в Товар?

"ВЫБРАТЬ
   |    ОстаткиТоваровОстаткиИОбороты.Склад КАК Склад,
   |    ПРЕДСТАВЛЕНИЕ(ОстаткиТоваровОстаткиИОбороты.Склад),
   |    ОстаткиТоваровОстаткиИОбороты.Сектор КАК Сектор,
   |    ПРЕДСТАВЛЕНИЕ(ОстаткиТоваровОстаткиИОбороты.Сектор),
   |    ОстаткиТоваровОстаткиИОбороты.Товар КАК Товар,
   |    ПРЕДСТАВЛЕНИЕ(ОстаткиТоваровОстаткиИОбороты.Товар),
   |    СУММА(ОстаткиТоваровОстаткиИОбороты.КоличествоНачальныйОстаток) КАК КоличествоНачальныйОстаток,
   |    СУММА(ОстаткиТоваровОстаткиИОбороты.КоличествоПриход) КАК КоличествоПриход,
   |    СУММА(ОстаткиТоваровОстаткиИОбороты.КоличествоРасход) КАК КоличествоРасход,
   |    СУММА(ОстаткиТоваровОстаткиИОбороты.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток,
   |    ЕСТЬNULL(ЦеныСрезПоследних.Цена, 0) КАК Цена
   |{ВЫБРАТЬ
   |    Склад.*,
   |    Сектор.*,
   |    Товар.*,
   |    КоличествоНачальныйОстаток,
   |    КоличествоПриход,
   |    КоличествоРасход,
   |    КоличествоКонечныйОстаток,
   |    Цена}
   |ИЗ
   |    Справочник.Товары КАК Товары
   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.ОстаткиИОбороты(&НачДата, &КонДата, , , ) КАК ОстаткиТоваровОстаткиИОбороты
   |            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Цены.СрезПоследних(
   |                    &КонДата,
   |                    Тип = &ТипЦен
   |                        И Регион = &Регион) КАК ЦеныСрезПоследних
   |            ПО ОстаткиТоваровОстаткиИОбороты.Товар.Ссылка = ЦеныСрезПоследних.Номенклатура.Ссылка
   |        ПО (ОстаткиТоваровОстаткиИОбороты.Товар = Товары.Ссылка)
   |{ГДЕ
   |    ОстаткиТоваровОстаткиИОбороты.Склад.*,
   |    ОстаткиТоваровОстаткиИОбороты.Сектор.*,
   |    ОстаткиТоваровОстаткиИОбороты.Товар.*,
   |    ЦеныСрезПоследних.Регион.*}
   |
   |СГРУППИРОВАТЬ ПО
   |    ОстаткиТоваровОстаткиИОбороты.Товар,
   |    ОстаткиТоваровОстаткиИОбороты.Сектор,
   |    ОстаткиТоваровОстаткиИОбороты.Склад,
   |    ЕСТЬNULL(ЦеныСрезПоследних.Цена, 0)
   |
   |УПОРЯДОЧИТЬ ПО
   |    Склад,
   |    Сектор,
   |    Товар
   |ИТОГИ
   |    СУММА(КоличествоНачальныйОстаток),
   |    СУММА(КоличествоПриход),
   |    СУММА(КоличествоРасход),
   |    СУММА(КоличествоКонечныйОстаток),
   |    МАКСИМУМ(Цена)
   |ПО
   |    Склад,
   |    Сектор,
   |    Товар
   |{ИТОГИ ПО
   |    Склад.*,
   |    Сектор.*,
   |    Товар.*}"
1 Fragster
 
гуру
19.07.11
13:45
где ОстаткиТоваровОстаткиИОбороты.Товар есть NULL


Убери идиотские и ненужные .ссылка. соединяй цену к товару, а не к остаткам.
2 Sereja
 
19.07.11
13:45
(1) Так вот мне нужно в вывести тот товар из справочника Товары, которого нет в регистре ОстаткиТоваров

Исполььзуй ПОЛНОЕСОЕДИНЕНИЕ со справочником Номенклатура
3 Fragster
 
гуру
19.07.11
13:45
инструкции построителя/СКД пока не рнаучился - тоже убери нафиг
4 Fragster
 
гуру
19.07.11
13:45
(2) чо?
5 Sereja
 
19.07.11
13:46
(0) Или тебе нужно ТОЛЬКО товары по которым остаток 0 ? Тогда (1)
6 Fragster
 
гуру
19.07.11
13:46
(2) все правильно автор сделал, чуть недодумал
7 skd1980
 
19.07.11
14:11
(5) Нужно вывести и товары которые есть на остатках и тот товар, который есть в справочнике, но нет в регистрах.
8 Fragster
 
гуру
19.07.11
14:12
(7) тогда запрос из (0) это делает
9 Fragster
 
гуру
19.07.11
14:13
только в выбираемых полях вместо ОстаткиТоваровОстаткиИОбороты.Товар надо Товары.Ссылка
10 skd1980
 
19.07.11
14:21
(9)  Ошибка при установке значения атрибута контекста (Текст): {(6, 5)}: Поле не входит в группу "Товары.Ссылка"
<<?>>Товары.Ссылка  КАК Товар,



"ВЫБРАТЬ
   |    ОстаткиТоваровОстаткиИОбороты.Склад КАК Склад,
   |    ПРЕДСТАВЛЕНИЕ(ОстаткиТоваровОстаткиИОбороты.Склад),
   |    ОстаткиТоваровОстаткиИОбороты.Сектор КАК Сектор,
   |    ПРЕДСТАВЛЕНИЕ(ОстаткиТоваровОстаткиИОбороты.Сектор),
   |    Товары.Ссылка  КАК Товар,
//    |    ОстаткиТоваровОстаткиИОбороты.Товар КАК Товар,
   |    ПРЕДСТАВЛЕНИЕ(ОстаткиТоваровОстаткиИОбороты.Товар),
   |    СУММА(ОстаткиТоваровОстаткиИОбороты.КоличествоНачальныйОстаток) КАК КоличествоНачальныйОстаток,
   |    СУММА(ОстаткиТоваровОстаткиИОбороты.КоличествоПриход) КАК КоличествоПриход,
   |    СУММА(ОстаткиТоваровОстаткиИОбороты.КоличествоРасход) КАК КоличествоРасход,
   |    СУММА(ОстаткиТоваровОстаткиИОбороты.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток,
   |    ЕСТЬNULL(ЦеныСрезПоследних.Цена, 0) КАК Цена
   |{ВЫБРАТЬ
   |    Склад.*,
   |    Сектор.*,
   |    Товар.*,
   |    КоличествоНачальныйОстаток,
   |    КоличествоПриход,
   |    КоличествоРасход,
   |    КоличествоКонечныйОстаток,
   |    Цена}
   |ИЗ
   |    Справочник.Товары КАК Товары
   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.ОстаткиИОбороты(&НачДата, &КонДата, , , ) КАК ОстаткиТоваровОстаткиИОбороты
   |            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Цены.СрезПоследних(
   |                    &КонДата,
   |                    Тип = &ТипЦен
   |                        И Регион = &Регион) КАК ЦеныСрезПоследних
   |            ПО ОстаткиТоваровОстаткиИОбороты.Товар.Ссылка = ЦеныСрезПоследних.Номенклатура.Ссылка
   |        ПО (ОстаткиТоваровОстаткиИОбороты.Товар = Товары.Ссылка)
   |{ГДЕ
   |    ОстаткиТоваровОстаткиИОбороты.Склад.*,
   |    ОстаткиТоваровОстаткиИОбороты.Сектор.*,
   |    ОстаткиТоваровОстаткиИОбороты.Товар.*,
   |    ЦеныСрезПоследних.Регион.*}
   |
   |СГРУППИРОВАТЬ ПО
   |    ОстаткиТоваровОстаткиИОбороты.Товар,
   |    ОстаткиТоваровОстаткиИОбороты.Сектор,
   |    ОстаткиТоваровОстаткиИОбороты.Склад,
   |    ЕСТЬNULL(ЦеныСрезПоследних.Цена, 0)
   |
   |УПОРЯДОЧИТЬ ПО
   |    Склад,
   |    Сектор,
   |    Товар
   |ИТОГИ
   |    СУММА(КоличествоНачальныйОстаток),
   |    СУММА(КоличествоПриход),
   |    СУММА(КоличествоРасход),
   |    СУММА(КоличествоКонечныйОстаток),
   |    МАКСИМУМ(Цена)
   |ПО
   |    Склад,
   |    Сектор,
   |    Товар
   |{ИТОГИ ПО
   |    Склад.*,
   |    Сектор.*,
   |    Товар.*}"
11 Fragster
 
гуру
19.07.11
14:24
(10) в сообщении об ошибке все написано
12 Fragster
 
гуру
19.07.11
14:24
в группировках-то тоже поменять надо
13 skd1980
 
19.07.11
14:26
(12) Ага, стормозил. Извиняюсь.
14 skd1980
 
19.07.11
14:27
(12) Отчет работает, но выводит все по-старому. Т.е. выводит только товар который есть в регистре :(
15 Fragster
 
гуру
19.07.11
14:31
ВЫБРАТЬ
   Товары.Ссылка  КАК Товар,
   ОстаткиТоваровОстаткиИОбороты.Склад КАК Склад,
   ОстаткиТоваровОстаткиИОбороты.КоличествоКонечныйОстаток)
ИЗ
   Справочник.Товары КАК Товары
   ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.ОстаткиИОбороты(&НачДата, &КонДата, , , ) КАК ОстаткиТоваровОстаткиИОбороты
ПО (ОстаткиТоваровОстаткиИОбороты.Товар = Товары.Ссылка)
16 Fragster
 
гуру
19.07.11
14:31
(14) не верю
17 skd1980
 
19.07.11
14:46
Код запроса такой:

"ВЫБРАТЬ
   |    Товары.Ссылка  КАК Товар,
   |    ОстаткиТоваровОстаткиИОбороты.Склад КАК Склад,
   |    ПРЕДСТАВЛЕНИЕ(ОстаткиТоваровОстаткиИОбороты.Склад),
   |    ОстаткиТоваровОстаткиИОбороты.Сектор КАК Сектор,
   |    ПРЕДСТАВЛЕНИЕ(ОстаткиТоваровОстаткиИОбороты.Сектор),
//    |    ОстаткиТоваровОстаткиИОбороты.Товар КАК Товар,
//    |    ПРЕДСТАВЛЕНИЕ(ОстаткиТоваровОстаткиИОбороты.Товар),
   |    СУММА(ОстаткиТоваровОстаткиИОбороты.КоличествоНачальныйОстаток) КАК КоличествоНачальныйОстаток,
   |    СУММА(ОстаткиТоваровОстаткиИОбороты.КоличествоПриход) КАК КоличествоПриход,
   |    СУММА(ОстаткиТоваровОстаткиИОбороты.КоличествоРасход) КАК КоличествоРасход,
   |    СУММА(ОстаткиТоваровОстаткиИОбороты.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток,
   |    ЕСТЬNULL(ЦеныСрезПоследних.Цена, 0) КАК Цена
   |{ВЫБРАТЬ
   |    Склад.*,
   |    Сектор.*,
   |    Товар.*,
   |    КоличествоНачальныйОстаток,
   |    КоличествоПриход,
   |    КоличествоРасход,
   |    КоличествоКонечныйОстаток,
   |    Цена}
   |ИЗ
   |    Справочник.Товары КАК Товары
   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.ОстаткиИОбороты(&НачДата, &КонДата, , , ) КАК ОстаткиТоваровОстаткиИОбороты
   |            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Цены.СрезПоследних(
   |                    &КонДата,
   |                    Тип = &ТипЦен
   |                        И Регион = &Регион) КАК ЦеныСрезПоследних
   |            ПО ОстаткиТоваровОстаткиИОбороты.Товар.Ссылка = ЦеныСрезПоследних.Номенклатура.Ссылка
   |        ПО (ОстаткиТоваровОстаткиИОбороты.Товар = Товары.Ссылка)
   |{ГДЕ
   |    ОстаткиТоваровОстаткиИОбороты.Склад.*,
   |    ОстаткиТоваровОстаткиИОбороты.Сектор.*,
   |    ОстаткиТоваровОстаткиИОбороты.Товар.*,
   |    ЦеныСрезПоследних.Регион.*}
   |
   |СГРУППИРОВАТЬ ПО
   |    Товары.Ссылка,
   |    ОстаткиТоваровОстаткиИОбороты.Товар,
   |    ОстаткиТоваровОстаткиИОбороты.Сектор,
   |    ОстаткиТоваровОстаткиИОбороты.Склад,
   |    ЕСТЬNULL(ЦеныСрезПоследних.Цена, 0)
   |
   |УПОРЯДОЧИТЬ ПО
   |    Склад,
   |    Сектор,
   |    Товар
   |ИТОГИ
   |    СУММА(КоличествоНачальныйОстаток),
   |    СУММА(КоличествоПриход),
   |    СУММА(КоличествоРасход),
   |    СУММА(КоличествоКонечныйОстаток),
   |    МАКСИМУМ(Цена)
   |ПО
   |    Склад,
   |    Сектор,
   |    Товар
   |{ИТОГИ ПО
   |    Склад.*,
   |    Сектор.*,
   |    Товар.*}"
18 skd1980
 
19.07.11
14:47
(17) товаров с нулевыми остаткакми в отчет не выводит :(
19 Fragster
 
гуру
19.07.11
14:48
(18) а (15)?
20 73
 
19.07.11
14:51
(17) Соединяй Товары - Остатки, Товары - Цены.
21 skd1980
 
19.07.11
15:28
(19) Еще не пробовал, попробую.
(20) вот так соединил

"ВЫБРАТЬ
   |    Товары.Ссылка  КАК Товар,
   |    ОстаткиТоваровОстаткиИОбороты.Склад КАК Склад,
   |    ПРЕДСТАВЛЕНИЕ(ОстаткиТоваровОстаткиИОбороты.Склад),
   |    ОстаткиТоваровОстаткиИОбороты.Сектор КАК Сектор,
   |    ПРЕДСТАВЛЕНИЕ(ОстаткиТоваровОстаткиИОбороты.Сектор),
//    |    ОстаткиТоваровОстаткиИОбороты.Товар КАК Товар,
//    |    ПРЕДСТАВЛЕНИЕ(ОстаткиТоваровОстаткиИОбороты.Товар),
   |    СУММА(ОстаткиТоваровОстаткиИОбороты.КоличествоНачальныйОстаток) КАК КоличествоНачальныйОстаток,
   |    СУММА(ОстаткиТоваровОстаткиИОбороты.КоличествоПриход) КАК КоличествоПриход,
   |    СУММА(ОстаткиТоваровОстаткиИОбороты.КоличествоРасход) КАК КоличествоРасход,
   |    СУММА(ОстаткиТоваровОстаткиИОбороты.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток,
   |    ЕСТЬNULL(ЦеныСрезПоследних.Цена, 0) КАК Цена
   |{ВЫБРАТЬ
   |    Склад.*,
   |    Сектор.*,
   |    Товар.*,
   |    КоличествоНачальныйОстаток,
   |    КоличествоПриход,
   |    КоличествоРасход,
   |    КоличествоКонечныйОстаток,
   |    Цена}
   |ИЗ
   |    Справочник.Товары КАК Товары
   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.ОстаткиИОбороты(&НачДата, &КонДата, , , ) КАК ОстаткиТоваровОстаткиИОбороты
   |        ПО ( Товары.Ссылка = ОстаткиТоваровОстаткиИОбороты.Товар)
   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Цены.СрезПоследних(
   |                 &КонДата,
   |                  Тип = &ТипЦен
   |                       И Регион = &Регион) КАК ЦеныСрезПоследних
   |           ПО Товары.Ссылка = ЦеныСрезПоследних.Номенклатура.Ссылка
   |{ГДЕ
   |    ОстаткиТоваровОстаткиИОбороты.Склад.*,
   |    ОстаткиТоваровОстаткиИОбороты.Сектор.*,
   |    ОстаткиТоваровОстаткиИОбороты.Товар.*,
   |    ЦеныСрезПоследних.Регион.*}
   |
   |СГРУППИРОВАТЬ ПО
   |    Товары.Ссылка,
   |    ОстаткиТоваровОстаткиИОбороты.Товар,
   |    ОстаткиТоваровОстаткиИОбороты.Сектор,
   |    ОстаткиТоваровОстаткиИОбороты.Склад,
   |    ЕСТЬNULL(ЦеныСрезПоследних.Цена, 0)
   |
   |УПОРЯДОЧИТЬ ПО
   |    Склад,
   |    Сектор,
   |    Товар
   |ИТОГИ
   |    СУММА(КоличествоНачальныйОстаток),
   |    СУММА(КоличествоПриход),
   |    СУММА(КоличествоРасход),
   |    СУММА(КоличествоКонечныйОстаток),
   |    МАКСИМУМ(Цена)
   |ПО
   |    Склад,
   |    Сектор,
   |    Товар
   |{ИТОГИ ПО
   |    Склад.*,
   |    Сектор.*,
   |    Товар.*}"

Результат работает по-старому
22 Fragster
 
гуру
19.07.11
15:29
так у тебя наверное там отбор утановлен п окакой-нить фигне
23 skd1980
 
19.07.11
15:32
(22)да, отбор ставлю по группе. Надо поправить еще  секцию Где?
24 Fragster
 
гуру
19.07.11
15:41
(23) у тебя ж там тоже из регистра товар берется а не из справочника....
25 skd1980
 
20.07.11
11:13
Всем большое спасибо! Разобрался. Окончательно код выглядит так:
ВЫБРАТЬ
   |    ОстаткиТоваровОстаткиИОбороты.Склад КАК Склад,
   |    ПРЕДСТАВЛЕНИЕ(ОстаткиТоваровОстаткиИОбороты.Склад),
   |    ОстаткиТоваровОстаткиИОбороты.Сектор КАК Сектор,
   |    ПРЕДСТАВЛЕНИЕ(ОстаткиТоваровОстаткиИОбороты.Сектор),
   |    Товары.Ссылка КАК Товары,
   |    ПРЕДСТАВЛЕНИЕ(Товары.Ссылка),
   |    СУММА(ОстаткиТоваровОстаткиИОбороты.КоличествоНачальныйОстаток) КАК КоличествоНачальныйОстаток,
   |    СУММА(ОстаткиТоваровОстаткиИОбороты.КоличествоПриход) КАК КоличествоПриход,
   |    СУММА(ОстаткиТоваровОстаткиИОбороты.КоличествоРасход) КАК КоличествоРасход,
   |    СУММА(ОстаткиТоваровОстаткиИОбороты.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток,
   |    ЕСТЬNULL(ЦеныСрезПоследних.Цена, 0) КАК Цена
   |{ВЫБРАТЬ
   |    Склад.*,
   |    Сектор.*,
   |    Товары.*,
   |    КоличествоНачальныйОстаток,
   |    КоличествоПриход,
   |    КоличествоРасход,
   |    КоличествоКонечныйОстаток,
   |    Цена}
   |ИЗ
   |    Справочник.Товары КАК Товары
   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.ОстаткиИОбороты(&НачДата, &КонДата, , , ) КАК ОстаткиТоваровОстаткиИОбороты
   |        ПО Товары.Ссылка = ОстаткиТоваровОстаткиИОбороты.Товар
   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Цены.СрезПоследних(
   |                &КонДата,
   |                Тип = &ТипЦен
   |                    И Регион = &Регион) КАК ЦеныСрезПоследних
   |        ПО Товары.Ссылка = ЦеныСрезПоследних.Номенклатура
   |{ГДЕ
   |    ОстаткиТоваровОстаткиИОбороты.Склад есть NULL,
   |    ОстаткиТоваровОстаткиИОбороты.Сектор.*,
   |   Товары.Ссылка.*,
   |    ЦеныСрезПоследних.Регион.*}
   |
   |СГРУППИРОВАТЬ ПО
   |    ОстаткиТоваровОстаткиИОбороты.Сектор,
   |    ОстаткиТоваровОстаткиИОбороты.Склад,
   |    Товары.Ссылка,
   |    ЕСТЬNULL(ЦеныСрезПоследних.Цена, 0)
   |
   |УПОРЯДОЧИТЬ ПО
   |    Склад,
   |    Сектор,
   |    Товары
   |ИТОГИ
   |    СУММА(КоличествоНачальныйОстаток),
   |    СУММА(КоличествоПриход),
   |    СУММА(КоличествоРасход),
   |    СУММА(КоличествоКонечныйОстаток),
   |    МАКСИМУМ(Цена)
   |ПО
   |    Склад,
   |    Сектор,
   |    Товары.Ссылка
   |{ИТОГИ ПО
   |    Склад.*,
   |    Сектор.*,
   |    Товары.Ссылка.*}