Имя: Пароль:
1C
1С v8
1С 8.2: язык запросов - функция "В" и "В ИЕРАРХИИ", релиз платформы 8.2.16.368
0 Kleo
 
07.01.13
20:09
не работает код в языке запросов, где используется функция "В" или "В ИЕРАРХИИ":


|ВЫБРАТЬ
       |    ТоварныеОграничения.Номенклатура,
       |    ТоварныеОграничения.НормативноеКоличествоЗапаса,
       |    ЕСТЬNULL(СвободныеОстаткиОстатки.ВНаличииОстаток, 0)
       |ИЗ
       |    РегистрСведений.ТоварныеОграничения КАК ТоварныеОграничения
       |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстатки.Остатки(&ДатаДок, Склад В ИЕРАРХИИ(&Склады)) КАК СвободныеОстаткиОстатки
       |        ПО ТоварныеОграничения.Номенклатура = СвободныеОстаткиОстатки.Номенклатура
       |ГДЕ
       |    ТоварныеОграничения.Склад = &СкладПолучатель";


где Запрос.УстановитьПараметр("Склады", СЗ);
СЗ - список значений, реквизит формы внешней обработки, не пустой
1 Wobland
 
07.01.13
20:10
первый, первый, вас понял
2 Kleo
 
07.01.13
20:11
(1) и?
3 Александр_
Тверь
 
07.01.13
20:12
(1) а что ты хотел то? после условия
ТоварныеОграничения.Склад = &СкладПолучатель
4 Kleo
 
07.01.13
20:12
не работает условие виртуальной таблицы:

Склад В ИЕРАРХИИ(&Склады)
5 Александр_
Тверь
 
07.01.13
20:13
(4) да с чего ты это взял-то? Что не работает?
6 Александр_
Тверь
 
07.01.13
20:14
у тебя ПОСЛЕ получения виртуальной таблицы стоит еще один фильтр. Убери:
ТоварныеОграничения.Склад = &СкладПолучатель
и посмотри, думаю поймешь
7 Kleo
 
07.01.13
20:15
(5) в консоли запросов проверяю, если даже в Товарных огрничениях и Свободных остатках разные склады, то все работает. а вот если спсиок значений, так не понимает, и вообщем получается, чтов левом соединении одни 0
8 Kleo
 
07.01.13
20:16
(6) вот именно, мне нужно проверять Товарные ограничения на одном складе, а Свободные остатки по списку других складов
9 Александр_
Тверь
 
07.01.13
20:17
(7) вот даже не знаю чем тебе помочь.
вот еще раз
ТоварныеОграничения.Склад = &СкладПолучатель

т.е. у тебя склад РАВЕН списку значений. Не "В" не "В ИЕРАРХИИ" а равен.
10 Александр_
Тверь
 
07.01.13
20:18
стоп. у тебя же две переменные склад ) не обратил внимание.
11 Александр_
Тверь
 
07.01.13
20:20
а номенклатура точно одинаковая?
12 Kleo
 
07.01.13
20:20
(9) значит так: первая таблица - это Товарные органичения только по ОДНОМУ складу. это условие ТоварныеОграничения.Склад = &СкладПолучатель - работает.

затем нужно взять Свободные остатки из списка складов. если присваиваю:

ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстатки.Остатки(&ДатаДок, Склад = &Склад))
где Склад - это просто элемент спр.Склады, то все работает. а если проверяю по вхождению в список значений, который состоит из того же самого склада, то не работает
13 Александр_
Тверь
 
07.01.13
20:21
остается только проверять список значений. если все так как ты говоришь
14 Kleo
 
07.01.13
20:22
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстатки.Остатки(&ДатаДок, Склад В ИЕРАРХИИ(&Склады)) - так уже не работате, хотя в список значений "Склады" - находится одна запись с тем же самым складом
15 Kleo
 
07.01.13
20:22
(13) вот и я думаю. СЗ - не пустой, является реквизитом формы обработки на УФ.
16 Александр_
Тверь
 
07.01.13
20:24
(15) в таком случае надо упрощать.
убери условие ГДЕ, попробуй просто получить данные из  СвободныеОстатки без соединения с ТоварныеОграничения
17 Александр_
Тверь
 
07.01.13
20:24
и ищи в какой момент происходит косяк.
18 Александр_
Тверь
 
07.01.13
20:26
т.е.
1. получи отдельно только данные егистрНакопления.СвободныеОстатки.Остатки(&ДатаДок, Склад В ИЕРАРХИИ(&Склады)) - получает?
2. Получить данные ТоварныеОграничения - получает?
3. Соедини данные - выводит?
4. поставь условие ГДЕ - получается?
19 GROOVY
 
07.01.13
20:26
Покажи как параметр устанавливаешь.
20 Kleo
 
07.01.13
20:27
Запрос.УстановитьПараметр("Склады", СЗ);
21 Kleo
 
07.01.13
20:28
СЗ - реквизит формы обработки. тип значения - Склады
22 Kleo
 
07.01.13
20:28
обработчиком смотрела СЗ - не пустой
23 kotletka
 
07.01.13
20:29
(22)в обработчике тип значения какой?
24 Kleo
 
07.01.13
20:31
проверяю в консоли запросов с разными складами, где устанавливаю функцию "В", но там указываю в параметрах один склад, то все работает.
а
(23) Склады
25 Kleo
 
07.01.13
20:32
(23) тип значения СЗ - СправочникиСсылка.Склады
26 Александр_
Тверь
 
07.01.13
20:34
(25) сделай как сказано в (18) и расскажи результат.
27 Kleo
 
07.01.13
20:34
пишу в отладчике СЗ.ТипЗначения = Склад (складская территория)
28 nunzio
 
07.01.13
20:37
Народ, а есть какие-нибудь нюансы, когда ко временной таблице
подцепляю через левое/полное соединение "реальную" таблицу ?
29 боксер
 
07.01.13
20:38
в склады загони все склады из нужной иерархии и убери в Иерархии из запроса и не парься так и быстрее будет работать и правильнее
30 Kleo
 
07.01.13
20:39
(26) вхождение в список значений не работает((
31 Kleo
 
07.01.13
20:39
(29) не поняла...
32 боксер
 
07.01.13
20:40
Склад В (&МассивСкладов)
33 Kleo
 
07.01.13
20:40
(29) склады в принципе без иерархии внесены... я проверяю и "В" и "В ИЕРАРХИИ"  - не работает((( хотя по книге описания языка запросов должно... вот и думаю... что может чем-то Список значений как реквизит УФ не нравится(((
34 боксер
 
07.01.13
20:41
ну или список значений в запросе одинаково отрабатывает
в иерархии не рекомендует 1С делать в запросе
35 nunzio
 
07.01.13
20:41
(28) А то недавно, в результате даже полного соединения в выборку не попадали данные временной таблицы. После того как загнал вторую таблицу во временную стало все нормально.
36 nunzio
 
07.01.13
20:48
(33) Попробуй все во временные загнать, а их уже соединить.
37 Kleo
 
07.01.13
20:48
(32) не работает "В"... какая разница как назваать и зачем все в общий массив?
38 Kleo
 
07.01.13
20:49
(36) не работает само вхождение в СЗ(((
39 nunzio
 
07.01.13
20:50
(38) Даже если просто одиночный запрос ?
40 Kleo
 
07.01.13
21:08
(39) да, проверила. если просто только свободные остатки по условию вхождения в список значений
41 runoff_runoff
 
07.01.13
21:26
а измерений у регистра сколько?..
42 hhhh
 
08.01.13
01:35
(40) а в списке значений что?
43 Kleo
 
08.01.13
04:29
(42) список складов
44 DexterMorgan
 
08.01.13
04:50
(0) Установи параметром не список значений а массив
45 DexterMorgan
 
08.01.13
04:51
уже было такое список значений не всегда отрабатывает
46 Kleo
 
08.01.13
04:58
как сделать, чтобы в консоли запросов задать для параметра тип список значений определнного типа?
47 Kleo
 
08.01.13
04:59
(44) ок. попробую
48 Kleo
 
08.01.13
05:23
(45) попробовала... в массив записала значения из СЗ... и подставила в качестве параметра запроса... не работает
49 DexterMorgan
 
08.01.13
05:31
(48) внешнюю обработку пересохранила?)) там есть же глюки что ты меняешь, а изменения не сохраняются)
50 DexterMorgan
 
08.01.13
05:31
(48) а так иначе хз(
51 Kleo
 
08.01.13
05:56
(49) да, уже поняла про этот глюк.. пересохраняла и проверяла.. вообще мне УФ не нравятся - это какой-то большой и недоделанный глюк
52 Kleo
 
08.01.13
08:58
Массив еще раз попробовала. Массив не пустой, есть занчения с типом значений СправочникиСсылка.Склады.

ставлю в запросе условие вхождения Склада для регистра Свободные остатки в Массив со складами - не работает условие... релиз платформы 8.2.17.143

может кто-нибудь еще что-то подскажет?

Выполняется обработка НаСервере в модуле формы внешней обработки.

и подскажите, как задать параметр в Консоле запросов с типом Список
53 Kleo
 
08.01.13
09:04
|ВЫБРАТЬ
       |    ТоварныеОграничения.Номенклатура,
       |    0,
       |    ТоварныеОграничения.НормативноеКоличествоЗапаса,
       |    ЕСТЬNULL(СвободныеОстаткиОстатки.ВНаличииОстаток, 0)
       |ИЗ
       |    РегистрСведений.ТоварныеОграничения КАК ТоварныеОграничения
       |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстатки.Остатки(&ДатаДок, Склад В ИЕРАРХИИ(&Склады)) КАК СвободныеОстаткиОстатки
       |        ПО ТоварныеОграничения.Номенклатура = СвободныеОстаткиОстатки.Номенклатура
       |ГДЕ
       |    ТоварныеОграничения.Склад = &СкладПолучатель";
Запрос.УстановитьПараметр("Склады", МассивЗначений);
54 Kleo
 
08.01.13
09:16
ничего не понимаю в консоле запросов работает, если список значений тот же самый задать... а если тот же самый запрос, но уже в модуле формы обработки НаСервере, то список значений как будто пустой и по ним не выполняется услови вхождения в регистр Свободные остатки
55 Kleo
 
08.01.13
09:24
Неужели никто не сталкивался с проблемой вхождения параметра в запросе в список значений для управялемого приложеия?
56 dmpl
 
08.01.13
09:55
(55) Попробуй в ЖР содержимое списка значений на сервере перед исполнением запроса вывести (включая описание типа). Возможно какие-то заморочки с передачей контекста СЗ на сервер.
57 Kleo
 
08.01.13
10:03
(56) вообщм беру перед запросом создаю свой Список значений:


СписокЗн = Новый СписокЗначений;
СписокЗн.Добавить(Справочники.Склады.НайтиПоНаименованию("Торговый зал"));

Запрос.УстановитьПараметр("Склады", СписокЗн);

и

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

то все работает... а если формирую Список значений из формы обарботки, то не выполняется условие...
58 Kleo
 
08.01.13
10:04
а до этого делала через СЗ, где СЗ - это реквизит формы обработки - список значений, тип значения Склады
59 Kleo
 
08.01.13
10:05
(56) не совсем поняла, что нжно сделать
60 Kleo
 
08.01.13
10:16
вообщем вся ошибка оказалась не в запросе, а как взять значения в УФ с формы обработки из реквизита Объект.Список (это Таблица значений), или из реквизита формы СЗ - список значений
61 Kleo
 
08.01.13
10:18
если есть ревизит УФ Объект.Список - таблица значений, и затем без разницы в какой обработке я буду обращаться к нему: на сервере или на клиенте?
62 dmpl
 
08.01.13
10:21
(59) Есть процедура ЗаписьЖурналаРегистрации(). С ее помощью можно в ЖР отладочную информацию выводить для анализа проблем.
63 Kleo
 
08.01.13
10:53
и на сервере и на клиенте заполняется список, а затем в процедуре СЗ определяется в парамтерах запроса
64 hhhh
 
08.01.13
14:16
(63) ну на клиенте же нет этих складов. Как ты там список умудряешься заполнять? Заполняй на сервере.
65 nunzio
 
08.01.13
14:17
(52) щелкаешь на крестик при выборе и выборах типа выбираешь список.
66 Команданте
 
08.01.13
14:18
а почему СЗ
может В
а если В ИЕРАРХИИ, то указывать один склад
у меня как раз так
но я делаю более щадяще, несколько ИЛИ по родителям
67 Kleo
 
08.01.13
16:36
(66) дело не "В" и "В ИЕРАРХИИ"  - эти функцмм работают. дело все в Списке значений с УФ обработки, который не видит затем запрос
68 dmpl
 
08.01.13
16:39
(67) Надо смотреть, что там в этом списке на сервере - в частности, какого типа там элементы. А то, может, строка - тогда естественно что не будет работать.
69 Kleo
 
08.01.13
16:51
(68) не строка, проверяла отладчиком. если свой список создаю, добавляю просто свой список значений в процедуре, куда свои значения добавления... то работает...
70 Kleo
 
08.01.13
16:51
уже сил нет никаких - вот всяко мелочь какая-то... по которой не работает...
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан