Имя: Пароль:
1C
1С v8
Выборка остатков товаров, которых нет в заказе поставщику
0 Deryni
 
26.05.15
17:58
Есть заказ поставщику. В нём есть Товар и его цвет.
Нужно выбрать то, что есть в самом заказе + такой же товар, но другого цвета, который есть на остатке, но нет именно в этом заказе.
Выбрать в запросе.
Заказов в запросе может быть несколько.
1 Maniac
 
26.05.15
18:04
Обычный запрос по товару без условия по характеристике
2 Deryni
 
26.05.15
18:21
(1) Не получится. Мне нужно вывести товары с цветами.
Т.е.
Товар - Цвет - Заказ - Остаток
3 Deryni
 
26.05.15
18:22
Просто дополнить то, что уже есть в заказе теми цветами, которых в заказе нет, но на остатке есть.
4 Maniac
 
26.05.15
18:24
ну выводи, кто мешает
5 Deryni
 
26.05.15
18:26
(4) Вот я и спрашиваю, как это сделать.
6 Deryni
 
26.05.15
18:29
Да, я забыл сказать, что нужно группировка по заказам.
Т.е. отчёт выглядит примерно так:
Заказ 1
Товар 1; цвет 1; 10; 15
Товар 1; цвет 2; 10; 0
Товар 1; цвет 3; 0; 10
7 Maniac
 
26.05.15
18:34
Типа такого?
http://subsystems.ru/upload/iblock/324/tab_20.png

Активные заказы - внизу по каждому анализ, плюс наличие.
8 Deryni
 
26.05.15
18:39
(7) Тут, как я понимаю показывает только то, что есть в выбранном вверху заказе.
А мне нужно то, что в заказе, вне зависимости от того, есть ли оно на остатке + то, те товары, которые в заказе есть, но в самом заказе нет цветов.

Например есть товар iPhone. Он может быть Белый, Черный или Красный.
В заказе у меня только Чёрный, но на остатке есть и Белый и Красный.
Хочу по этому заказу показать, что Чёрных заказано 10, на остатке столько то,
По этому же заказу показываю Крансый и Белый, но количество заказано = 0, а остаток тот, который есть.
А в другом заказе может быть наоборот.
И этих заказов у меня может быть 10 и всё нужно в одном отчёте.
9 Maniac
 
26.05.15
18:40
цвета = характеристики.

делаешь запрос по остаткам по товару - выйдут все характеристики что есть на остатках.
10 Deryni
 
26.05.15
18:43
У меня цвета - это цвета но это не важно.
Запрос по остаткам я сделал. Но я иду от заказа, а не от остатков. Остатки - вспомогательный.
11 Maniac
 
26.05.15
18:44
У меня есть обработка подбора - справочник номенклатуры - где выводится вся информация что может быть нужна при работе с товарами при продаже.

http://subsystems.ru/upload/iblock/f5e/rmm_prodaz_1.png

Там есть закладки все - остатки, заказы, резервы, все в детализациях полных.

Все что нужно набрать в поиске товар и все выйдет.
12 Maniac
 
26.05.15
18:45
(10) ну два запроса.

По заказам а к нему левым соединением только по товару запрос по остаткам всего товара без соединения по характеристике
13 Maniac
 
26.05.15
18:45
вернее один запрос.

заказы, и левым соединением остатки
14 Deryni
 
26.05.15
18:46
У меня стойкое ощущение, что ты не понимаешь, чего я хочу.
Ещё раз перечитай № 8, то, что у тебя в обработке мне вообще не подходит.
Я и могу сделать то, что мне нужно выполнив два запроса, один по остаткам, второй по заказам, а потом идти по заказам и добавлять нужные мне товары в цикле. Но я хочу сделать всё в одном запросе.
15 Maniac
 
26.05.15
18:46
Ну или по римеру (7) можно тоже элементарно вывести остатки товара по другим характеристикам.
делов на пять минут.
16 DexterMorgan
 
26.05.15
18:47
(11) это че 10.3?
17 Maniac
 
26.05.15
18:47
(14) еще раз. один запрос.

Заказы - к нему левое соединение по остаткам с условием соединения только по номенклатуре. Без характеристики.

Тогда выйдет отчет - все заказы - товары и товары которые есть на остатках но с другими характеристиками
18 Maniac
 
26.05.15
18:48
да пофиг че. и ут10 и ут11 все делается и у меня есть и там и там.
19 DexterMorgan
 
26.05.15
18:49
(18) Ты свою обработку подбора в ут11 на базе свыше 100ГБ и 200к номенклатуры открывал?
20 Maniac
 
26.05.15
18:49
(19) размер базы пофигу. открывал на 500к в автозапчастях.

И странный вопрос - типовой же открывается. а мой еще быстрее типового.
21 Deryni
 
26.05.15
18:50
Так?
ВЫБРАТЬ
    ВТЗаказы.Номенклатура КАК Номенклатура,
    ВТЗаказы.Цвет КАК ЦветЗ,
    ВТОстатки.Цвет КАК Цвет,
    ВТЗаказы.ЗаказПоставщику
ИЗ    
    ВТЗаказы
    ЛЕВОЕ СОЕДИНЕНИЕ ВТОстатки
        ПО ВТЗаказы.Номенклатура = ВТОстатки.Номенклатура
22 Maniac
 
26.05.15
18:50
Там вся информация - выборка происходит при активации строки с товаром и нужной закладки.
А по умолчанию все основные (первые закладки) не делают запросов.

Поэтому там все быстро
23 DexterMorgan
 
26.05.15
18:51
(20) чиво, чиво? Это где у тебя 100500 объединений с вложенными запросами в дин списке быстрее?
24 Maniac
 
26.05.15
18:52
(21) да
25 Maniac
 
26.05.15
18:53
(23) ты путаешь. разработки.
подбор номенклатуры у меня запрос - легче типового. там никаких 100500 соединений нет
26 DexterMorgan
 
26.05.15
18:54
(22) выборка происходит при активации строки с товаром и нужной закладки

Ааа, ну тада ясно.
27 Deryni
 
26.05.15
18:54
(24) не работает
Выводит таблицу, где скажем для цвета белый из заказа повторяются все возможные цвета из остатков. При этом эти же цвета есть и в заказе.
28 Maniac
 
26.05.15
18:54
в моем подборе есть основной динамический список, где все просто.

а дополнительные инфо выходят запросами при активации нужной строки и при условии активации определенной закладки.

то есть

1) имеем основной список - где все просто
2) все доп расшифровки = отдельные мини запросы при определенных действиях с интерфейсом.
29 Deryni
 
26.05.15
18:54
Работает только если в заказе товар встречается один раз
30 Deryni
 
26.05.15
18:56
А не, даже в этом случае не работает
31 Maniac
 
26.05.15
18:58
Все должно работать.
32 Deryni
 
26.05.15
19:03
Но не работает :)
Проблема вот в чём. Простое левое соединение таблицы заказов и таблицы остатков только по номенклатуре даст мне результирующую таблицу, где для каждой строки из заказа будут все строки этой же номенклатуры из остатков. Так?
Но мне нужны не все, а только те, которых в этом заказе вообще нет.

Смотри. Предположим у меня в заказе 2 цвета Красный и Белый. На остатке есть все три: Красный, Белый, Чёрный.

Что я получу на выходе простым соединением:
Красный - Красный
Красный - Белый
Красный - Черный
Белый - Красный
Белый - Белый
Белый - Черный

А мне нужно так:
Красный - Красный
Белый - Белый
Черный - нет такого цвета в заказе
33 Maniac
 
26.05.15
19:04
ПО ВТЗаказы.Цвет  <> = ВТОстатки.Цвет
34 Maniac
 
26.05.15
19:04
ПО ВТЗаказы.Цвет  <> ВТОстатки.Цвет
35 Maniac
 
26.05.15
19:06
сделай запросом через ОБЪЕДЕНИТЬ

но в запросе по остаткам в фильтр поставить условие не выгребать характеристики которые есть в заказе
36 Maniac
 
26.05.15
19:08
не (35) не нужно.

достаточно (34) в соединение добавить чтобы не выходили остатки цветов которые есть в заказе. тоесть условие неравенства
37 Deryni
 
26.05.15
22:52
Пробовал я и через неравенство. Не работает. Потому, что он тогда для каждого цвета из заказа берёт всё из остатков с другим цветом. А мне опять же всё не нужно.
38 Maniac
 
26.05.15
23:07
Я понял что тебе нужно.

ОБЪЕДИНИТЬ ВСЕ
39 Maniac
 
26.05.15
23:08
тогда у тебя будет ровная таблица как тебе нужно.

Единственное что в запрос по остаткам нуждно будет сделать условие какие товары выгребать.
40 Maniac
 
26.05.15
23:09
ну в принципе


1) запрос по заказам
ОБЪЕДИНИТЬ ВСЕ
2) запрос по остаткам

но в нем условие брать товары которые есть в заказах поставщикам
41 Maniac
 
26.05.15
23:09
тогда будет четкая таблица
42 Maniac
 
26.05.15
23:10
то есть не нужно будет два раза иметь переменную с цветом
43 Maniac
 
26.05.15
23:15
Стартмани, в самом слове звучит Старт Мани.
44 Maniac
 
26.05.15
23:16
опс не туда
45 Deryni
 
26.05.15
23:16
Вот так получилось:

ВЫБРАТЬ РАЗЛИЧНЫЕ
    ОЗ.НоменклатураО,
    ОЗ.ЦветО,
    ОЗ.ЗаказПоставщику,
    ОЗ.Остаток
ИЗ (
    ВЫБРАТЬ РАЗЛИЧНЫЕ
        ВТЗаказы.Номенклатура КАК Номенклатура,
        ВТЗаказы.Цвет КАК ЦветЗ,
        ВТЗаказы.ЗаказПоставщику КАК ЗаказПоставщику,
        Остатки.Номенклатура КАК НоменклатураО,
        Остатки.Цвет КАК ЦветО,
        Остатки.Остаток
    ИЗ
        ВТЗаказы, ВТОстаткиБезСклада Остатки
    ГДЕ
        ВТЗаказы.Номенклатура = Остатки.Номенклатура
        И ВТЗаказы.Цвет <> Остатки.Цвет
    ) ОЗ
    ЛЕВОЕ СОЕДИНЕНИЕ
    ВТЗаказы ПО
        ВТЗаказы.Номенклатура = ОЗ.НоменклатураО
        И ВТЗаказы.Цвет = ОЗ.ЦветО
        И ВТЗаказы.ЗаказПоставщику = ОЗ.ЗаказПоставщику
ГДЕ
    ВТЗаказы.ЗаказПоставщику ЕСТЬ NULL
46 Deryni
 
26.05.15
23:18
Т.е. вначале делаем полное пересечение таблиц, получаем все возможные сочетания цветов и номенклатуры с заказами. Потом снова соединяем с заказами и всё, что взято из остатков и где соединение с заказом поставщику даёт NULL.
47 ЧеловекДуши
 
27.05.15
06:40
(0) Потрудитесь пояснить теперь, как у вас ведется разделения товара по цветовой дифференциации?
48 ЧеловекДуши
 
27.05.15
06:42
(45) Ужас. Делай через Временные таблицы.
И ... как долго будет выполняться запрос при полном пересечении?...
49 Deryni
 
27.05.15
10:31
(47) а какая разница как он ведётся? В данном случае у меня это отдельный справочник. Но можно и через характеристики.

(48) не знаю на полной записи ещё не тестировал. Но других вариантов я всё равно не нашёл.