Имя: Пароль:
1C
 
Соединение всех цен и остатков
0 Maniac
 
05.04.19
19:39
Короче мучу запрос и туплю....

СКД.

По номенклатуре цены по видам цен и остатки по складам.
Все вместе.
Проблема с запросом.

Если ЛЕВОЕ СОЕДИНЕНИЕ К ЦЕНАМ то в отчет не выпадут например позиции у которых нет цен но есть остатки.
ЛЕВОЕ СОЕДИНЕНИЕ К ОСТАТКАМ - не попадут товары у которых нет остатков но есть цены.

ДРУГИЕ СОЕДИНЕНИЯ - соединять возможно только по номенклатуре. Так как например у видов цен нет складов, у складов нету видов цен.
И если например ставлю отбор по остаткам больше 0 - то в отчет вылазят только остатки.а цен вообще нет.
Так как при таком соединении нельзя объединить необъединяемое.

А нужно чтобы была гибкость с отборами и по видам цен и по складам, и по остатку и тп.
1 Maniac
 
05.04.19
19:41
если например делаю ОБЪЕДИНИТЬ ВСЕ
указывая для запроса цен - поле склад пустым, а для запроса остатков - виды цен пустой элемент.

То если например по общему запросу потом ставлю остаток больше 0 условие, то в отчет цены вообще не выпадают.
Оно и понятно, ведь у цен нету складов и остатков. Запрос видит 0 - и вообще цены не берет.
2 GreyK
 
05.04.19
19:45
(0) А может несколько таблиц объединить? Ну то есть взять Логан и добавить на него что-нибудь из Мерседеса.
3 Maniac
 
05.04.19
19:46
Вот работает отлично. до тех пор пока какой то отбор не ставится не по номенклатуре

ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ЗапросПрайс.Номенклатура КАК Номенклатура,
    ЗапросПрайс.Характеристика КАК ХарактеристикаНоменклатуры,
    ЗапросПрайс.Номенклатура.Код КАК Код,
    ЗапросПрайс.Номенклатура.Артикул КАК Артикул,
    ЗапросПрайс.Номенклатура.НаименованиеПолное КАК НаименованиеПолное,
    ЗапросПрайс.Номенклатура.Производитель КАК Производитель,
    ЗапросПрайс.Номенклатура.Родитель КАК Родитель,
    ЗапросПрайс.Номенклатура.ЦеноваяГруппа КАК ЦеноваяГруппа,
    ЗапросПрайс.Номенклатура.ЭтоГруппа КАК НоменклатураЭтоГруппа,
    ЗапросПрайс.Номенклатура.КодДляПоиска КАК КодДляПоиска,
    ЗапросПрайс.Номенклатура.ВидНоменклатуры КАК ВидНоменклатуры,
    ВЫРАЗИТЬ(ЗапросПрайс.Номенклатура.Описание КАК СТРОКА(1000)) КАК Описание,
    ЗапросПрайс.Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
    ЗапросПрайс.ВидЦены КАК ВидЦены,
    ЗапросПрайс.Валюта КАК Валюта,
    ЗапросПрайс.Склад КАК Склад,
    ЗапросПрайс.Цена КАК Цена,
    ЗапросПрайс.СвободныйОстаток КАК СвободныйОстаток,
    ШтрихкодыНоменклатуры.Штрихкод КАК Штрихкод
ИЗ
    (ВЫБРАТЬ
        ВложенныйЗапрос.Номенклатура КАК Номенклатура,
        ВложенныйЗапрос.Характеристика КАК Характеристика,
        ВложенныйЗапрос.ВидЦены КАК ВидЦены,
        ВложенныйЗапрос.Валюта КАК Валюта,
        ВложенныйЗапрос.Склад КАК Склад,
        МАКСИМУМ(ВложенныйЗапрос.Цена) КАК Цена,
        СУММА(ВложенныйЗапрос.СвободныйОстаток) КАК СвободныйОстаток
    ИЗ
        (ВЫБРАТЬ
            ЦеныНоменклатуры.Номенклатура КАК Номенклатура,
            ЦеныНоменклатуры.Характеристика КАК Характеристика,
            ЦеныНоменклатуры.ВидЦены КАК ВидЦены,
            ЦеныНоменклатуры.Валюта КАК Валюта,
            ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка) КАК Склад,
            МАКСИМУМ(ЦеныНоменклатуры.Цена) КАК Цена,
            0 КАК СвободныйОстаток,
            0 КАК ОстаткиПоставщиков
        ИЗ
            РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ) КАК ЦеныНоменклатуры
        {ГДЕ
            ЦеныНоменклатуры.ВидЦены.* КАК ВидЦеныОтбор,
            ЦеныНоменклатуры.Период КАК ДатаИзмененияЦенОтбор}
        
        СГРУППИРОВАТЬ ПО
            ЦеныНоменклатуры.Номенклатура,
            ЦеныНоменклатуры.Характеристика,
            ЦеныНоменклатуры.ВидЦены,
            ЦеныНоменклатуры.Валюта
        
        ОБЪЕДИНИТЬ ВСЕ
        
        ВЫБРАТЬ
            Остатки.Номенклатура,
            Остатки.Характеристика,
            ЗНАЧЕНИЕ(Справочник.ВидыЦен.ПустаяСсылка),
            ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка),
            Остатки.Склад,
            0,
            СУММА(Остатки.ВНаличииОстаток - Остатки.ВРезервеСоСкладаОстаток),
            0
        ИЗ
            РегистрНакопления.СвободныеОстатки.Остатки(, {(Склад).* КАК СкладКомпании}) КАК Остатки
        
        СГРУППИРОВАТЬ ПО
            Остатки.Номенклатура,
            Остатки.Характеристика,
            Остатки.Склад) КАК ВложенныйЗапрос
    
    СГРУППИРОВАТЬ ПО
        ВложенныйЗапрос.Номенклатура,
        ВложенныйЗапрос.Характеристика,
        ВложенныйЗапрос.Склад,
        ВложенныйЗапрос.ВидЦены,
        ВложенныйЗапрос.Валюта) КАК ЗапросПрайс
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
        ПО ЗапросПрайс.Номенклатура = ШтрихкодыНоменклатуры.Номенклатура
            И ЗапросПрайс.Характеристика = ШтрихкодыНоменклатуры.Характеристика
4 Maniac
 
05.04.19
19:47
(2) ну так и обьединяю. все выводится нормально. номенклатура, а колонками цены и остатки.
Но как только какой то отбор например остатки больше 0. то все выводит только остатки.
5 GreyK
 
05.04.19
19:58
(4) Ужос, а ты вначале сделай табличку с ценами, выгрузи её в табличку, а потом прицепи остатки.
6 Maniac
 
05.04.19
20:00
(5) и что? что изменится? ты говори шь - это левое соединение к ценам.
Оно не подходит потому что тогда не будет товаров у которых нет цен.
7 RomanYS
 
05.04.19
20:02
(1) а как тебе надо чтобы работали условия?
8 Maniac
 
05.04.19
20:02
отчет делается так чтобы в нем можно было формировать с любыми отборами.
И все вместе, и то что на остатках без цен, и то что с ценами без остатков.

и то что есть цена и есть остаток.
9 Maniac
 
05.04.19
20:02
(7) во все стороны
10 RomanYS
 
05.04.19
20:05
(9) конкретнее, что ты хочешь видеть поставив условие на остаток?
11 Maniac
 
05.04.19
20:05
все комбинации условий цен, остатков и прочего. даже с выбором складов, конкретных видов цен, условий по остаткам или ценам.
12 Maniac
 
05.04.19
20:06
(10) хочу увидеть номенклатуру у которой есть остатки и все выбранные виды цен.

Так и наоборот. могу поставить условие по виду цены, цена больше 0, и нужные остатки.
13 RomanYS
 
05.04.19
20:07
Делай два левых к номенклатуре, но количество записей перемножится
14 Maniac
 
05.04.19
20:09
(13) да скорее всего будут увеличенные цены и затроенные количества
15 GreyK
 
05.04.19
20:09
(6) При чём здесь левое соединение? Ты просто на табличку цен наложь табличку остатков.
16 Maniac
 
05.04.19
20:15
короче наверное проще галки добавить опциями и в выборке программно проверять количества и пропускать строки.... фиговый вариант.

но видимо только такой. видимо я набрел как раз на то чего 1С не умеет делать
17 RomanYS
 
05.04.19
20:16
(16) ты объясни что тебе надо для начала?
18 Garykom
 
гуру
05.04.19
20:17
Полный по номенклатуре (справочнике) и условия на остатки и вид цен
19 Garykom
 
гуру
05.04.19
20:18
(17) Мозгов наверно отсыпать
20 Maniac
 
05.04.19
20:21
(15) для начала пиши терминами 1С. а то слова наложи, положи - я так методов в 1С не знаю.
А по левому соединению точно ничего путевого не выходит (даже для полного отчета)
21 Maniac
 
05.04.19
20:23
(17) отчет в котором все цены, все остатки.

Но в отчете можно настраивать также отборами и цены и остатки.
ПАри этом если если ставим отборы на остатки, то выпдают только товары у которых они есть, но выводятся все выбранные цены.
так и наоборот.....


зы.. что тут непонятного. простая задача.
22 Черный маклер
 
05.04.19
20:25
основная таблица СпрНоменклатура уже к ней остатки и цены
23 Maniac
 
05.04.19
20:26
(22) это левые соединения. при выводе отчета по строке номенклатуры остатки будут умножаться на количество видов цен. а цены на количество складов.
24 Maniac
 
05.04.19
20:27
это таблицы с разными наборами полей.
Если их скрещиваешь целиком, то ресурсы начинают сходить с ума.
25 Maniac
 
05.04.19
20:28
там еще и характеристики.
26 Garykom
 
гуру
05.04.19
20:28
Мляяя я думал это я херово запросы 1С знаю.
27 Maniac
 
05.04.19
20:29
так что тут мало номенклатуры. и не просто так даже к ней даже левые делать.
28 Maniac
 
05.04.19
20:30
(26) а что ты уже решил задачу? она нерешаема.
29 Maniac
 
05.04.19
20:31
может быть. может. надо делать наборы запросов.
вот этот вариант может быть что то и может
30 Garykom
 
гуру
05.04.19
20:32
(23) Сначала два левых Ном-Цены и Ном-Склады, а затем внутреннее Цены-Склады по Ном
31 Maniac
 
05.04.19
20:33
(30)....еееее... и чем это будет ОТЛИЧАТЬСЯ от того что я итак написал
32 Maniac
 
05.04.19
20:34
внутренее вообще ничего не решит.
а делать два левых вообще безсмысленно.
еще и характеристики тогда нужно к номенклатуре лепить. а они общими могут быть. заипешся запрос рисовать.
33 Garykom
 
гуру
05.04.19
20:34
(30)+ И да в результате если разные виды цен и разные склады то получишь хрень.
Потому что у тебя нет привязки что на этом складе лежит этот вид цены, он на всех складах лежит.

Ты изначально что то не то хочешь
34 GreyK
 
05.04.19
20:34
(20) Моя твоя не понимае, пиши тундра, ща оленям наложу и начну писать по вашему.
(28) Не тешь себя иллюзиями, задачка на уровне части экзамена по проф.
35 Garykom
 
гуру
05.04.19
20:35
Ном1 - Склад1 - Цена1
Ном1 - Склад1 - Цена2
Ном1 - Склад2 - Цена1
Ном1 - Склад2 - Цена2

Это совершенно нормально же
36 GreyK
 
05.04.19
20:56
(23) Да посмотри ты стандартный отчёт "Валовая прибыль", там пример как удалять ненужные строки.
37 Рэйв
 
05.04.19
20:58
(0)Делать общие таблицы в ПОМЕСТИТЬ, а потом соединять уже предлагали?
38 Dotoshin
 
05.04.19
21:05
(0) Вот тут http://forum-1c.ru/index.php?topic=8664.0
не смотрел?
39 RomanYS
 
05.04.19
23:22
(21) Если условия параметрами, то вообще проблем нет.
Если отборы пользовательские СКД, то их надо (пользователю или программно) засовывать в группу ИЛИ.
Например, условие на цену должно превратиться в группу:

ИЛИ
   <условие на цену>
   НЕ ЭтоЦена
40 RomanYS
 
05.04.19
23:27
(21) >>зы.. что тут непонятного. простая задача.
Из твоих постов совсем не очевидно, что ты хочешь получить. В таких случаях неплохо бы нормальный пример нарисовать.
Из (14) ни капли не ясно, что такой вариант тебя не устраивает. Каждый с каждым (склад с ценой) вполне себе решение, если пользователь может это правильно интерпретировать.
41 Сияющий в темноте
 
05.04.19
23:44
Делаешь соединение номенклатуры с видами цен получаешь матрицу,потом запросом ее нужно заполнить,потом тоже по остаткам,а потом через скд матрицу разворачиваешь,чтобы виды цен и склады встали в строки.
отбор,если нужно,накладывается на матрицу,а значения просто добавлятся согласно отбору.
42 Maniac
 
09.04.19
11:57
Решил проблему достаточно легко
43 Maniac
 
09.04.19
11:58
с кодом из 3.

Оставил объединение! но к первому запросу добавил левое соединение со свернутыми остатками (учитывающими в том числе отбор)

Таким образом цены не пропадают, так как в подзапросе есть цены и свернутые остатки.
А второй запрос прибавляет развернутые по складам остатки.

Получается все логично и идеально!
44 Maniac
 
09.04.19
12:02
к развернутым ценам присоединяются свернутые остатки.
Получаем таблицу всех цен ПЛЮС по пустому складу (принудительно) отобранные остатки. (пустой склад в последствии игнорится). Это дает то что при указании отборов (склады или количества) - цены не пропадают.

Далее идет полное объединение с детализированными остатками (группировкой).

это позволяет объединить и все развернутые цены и развернутые остатки. При этому срабатывают любые отборы.

В итоге отчет формируется отлично выполняя все поставленные задачи.
45 Вафель
 
09.04.19
12:04
остатки в разрезе скалдов? а как выводить то это потом будешь?
Это же 3х мерная таблица будет
46 Вафель
 
09.04.19
12:04
ну а так
ном + ЛС остатки + ЛС цены
где остаток не есть null и цена не есть null
47 Maniac
 
09.04.19
12:05
у меня СКД но вывод программный кодом (как по старинке)
48 Maniac
 
09.04.19
12:06
(46) к номенклатуре фигня. во первых ее мало, так как еще характеристики (а они могут быть и общие)
Во вторых к номенклатуре если несколько таких разномастных соединение то остатки будут замножены на количество выводимых цен.
49 Maniac
 
09.04.19
12:08
короче голову не ломал. получилось как описал. Пока что все как нужно.
Если вылезет что то новое, тогда буду уже новые комбинации искать до победного
50 Рэйв
 
17.08.19
19:01
Маня, ты и так всем нравишься:-)..Ну прочти.
Может уже хватит доказывать всем какой ты крутой?.\
51 Рэйв
 
17.08.19
19:16
жжжжж.
Спокойной ночи.
52 Рэйв
 
17.08.19
19:17
только я не сплю. и приду :))))
53 Рэйв
 
17.08.19
19:18
Испугались?
54 Рэйв
 
17.08.19
19:19
А мог и прийти.
55 Рэйв
 
17.08.19
19:19
спок.