Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

1С 8.2: язык запросов - функция "В" и "В ИЕРАРХИИ", релиз платформы 8.2.16.368

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


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


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

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

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

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

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

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

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

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


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

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

и

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

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


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует