|
Параметр виртуальной таблицы | ☑ | ||
---|---|---|---|---|
0
deathogre
14.10.14
✎
14:02
|
Здравствуйте. Можно ли в параметр вирт. таблицы засадить проверку принадлежности элемента справочника определенной группе?
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | ТоварыНаСкладахОстатки.Склад, | ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, | ТоварыНаСкладахОстатки.Характеристика, | ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоУпаковок, | ТоварыНаСкладахОстатки.КоличествоОстаток КАК Количество |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки(&Дата, Склад = &Склад, Номенклатура.Ссылка В ИЕРАРХИИ (&ГруппаНоменклатуры)) КАК ТоварыНаСкладахОстатки | ГДЕ ТоварыНаСкладахОстатки.КоличествоОстаток > 0"; Данный код не работает |
|||
1
Kuein
14.10.14
✎
14:05
|
Настоятельно рекомендую переписать вот это "&Дата, Склад = &Склад, Номенклатура.Ссылка В ИЕРАРХИИ (&ГруппаНоменклатуры)" на
"&Дата, Склад = &Склад И Номенклатура.Ссылка В ИЕРАРХИИ (&ГруппаНоменклатуры)" |
|||
2
deathogre
14.10.14
✎
14:14
|
Запрос заработал. Но принадлежность не проверяет.
|
|||
3
Peltzer
14.10.14
✎
14:28
|
А зачем Номенклатура.Ссылка?
|
|||
4
Мыш
14.10.14
✎
14:28
|
А почему "Номенклатура.Ссылка", а не "Номенклатура"?
|
|||
5
Peltzer
14.10.14
✎
14:28
|
(4) Синхронненько
|
|||
6
deathogre
14.10.14
✎
14:29
|
Переделал без ссылки, все равно не отбирает :(
|
|||
7
ssh2QQ6
14.10.14
✎
14:33
|
(6) см (1). Запрос с синтаксической ошибкой.
|
|||
8
deathogre
14.10.14
✎
14:34
|
Да я уже сделал как (1)
|
|||
9
Peltzer
14.10.14
✎
14:36
|
У меня в консоли нормально так отбирает. Проверь, что ты параметр нужный передаёшь
|
|||
10
deathogre
14.10.14
✎
14:38
|
Свойство Значение Тип
ГруппаНоменклатуры Растения СправочникСсылка.Номенклатура |
|||
11
deathogre
14.10.14
✎
14:38
|
Свойство Значение Тип
ГруппаНоменклатуры Растения СправочникСсылка.Номенклатура |
|||
12
deathogre
14.10.14
✎
14:39
|
Вроде нормальный параметр
|
|||
13
Мыш
14.10.14
✎
14:40
|
Смутно помнится, что не рекомендуется в условия виртуальных таблиц ставить "В ИЕРАРХИИ".
|
|||
14
Ненавижу 1С
гуру
14.10.14
✎
14:43
|
а ты параметр точно в запрос передаешь?
|
|||
15
Крошка Ру
14.10.14
✎
14:43
|
(11) А что значит "не отбирает". Пустой запрос или наоборот попадает всё?
(13) В ИЕРАРХИИ - это в принципе зло, но иногда необходимое. В данном случае оно ни при чем |
|||
16
Kuein
14.10.14
✎
14:45
|
1. Убираем условие ГДЕ. Запускаем запрос, смотрим результат.
Если "все еще не отбирает" 2. Проверяем как передаем параметр в Запрос. Желательно показать код. Если "все еще не отбирает" 3. Проверяем есть ли вообще хоть что-нибудь в группе "Растения". |
|||
17
palpetrovich
14.10.14
✎
14:46
|
(0) а зачем это: "ГДЕ ТоварыНаСкладахОстатки.КоличествоОстаток > 0" ?
|
|||
18
deathogre
14.10.14
✎
14:47
|
(15) Попадает все
(16) Вот я как раз хотел избежать ГДЕ, так как написано что параметры вирт. таблицы быстрее работают. |
|||
19
Kuein
14.10.14
✎
14:47
|
(13) Это вроде бы к производительности запроса. У ТС другая проблема.
|
|||
20
palpetrovich
14.10.14
✎
14:50
|
(18) параметры как определяешь?
скопируй это в кончсоль запросов, проверь ВЫБРАТЬ ТоварыНаСкладахОстатки.Номенклатура, ТоварыНаСкладахОстатки.КоличествоОстаток ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки( &Дата, Склад = &Склад И Номенклатура В ИЕРАРХИИ (&ГруппаНоменклатуры)) КАК ТоварыНаСкладахОстатки |
|||
21
hhhh
14.10.14
✎
14:51
|
(18) ну, показывайте как обрабатываете результат запроса. и установку параметров.
|
|||
22
Крошка Ру
14.10.14
✎
14:51
|
(17) Ну может отрицательные есть
|
|||
23
deathogre
14.10.14
✎
14:51
|
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | ТоварыНаСкладахОстатки.Склад, | ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, | ТоварыНаСкладахОстатки.Характеристика, | ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоУпаковок, | ТоварыНаСкладахОстатки.КоличествоОстаток КАК Количество |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки(&Дата, Склад = &Склад И Номенклатура В ИЕРАРХИИ (&ГруппаНоменклатуры)) КАК ТоварыНаСкладахОстатки | ГДЕ ТоварыНаСкладахОстатки.КоличествоОстаток > 0"; Запрос.УстановитьПараметр("ГруппаНоменклатуры", ГруппаНоменклатуры); Запрос.УстановитьПараметр("Дата", Объект.Дата); Запрос.УстановитьПараметр("Склад", Объект.Склад); Результат = Запрос.Выполнить().Выгрузить(); Объект.Товары.Загрузить(Результат); |
|||
24
Kuein
14.10.14
✎
14:53
|
(18) "ГДЕ" в условия виртуальной таблицы не передается. Совсем.
Как передается параметр в запрос? *И откуда берется значение &ГруппаНоменклатуры?* И не является ли оно справочником "Группа Номенклатуры"? Рекомендация: попробуйте писать запросы через конструктор запросов. Ошибки из (1) легко можно было бы избежать. |
|||
25
deathogre
14.10.14
✎
14:56
|
ГДЕ я в параметры сувать и не собирался.
ГруппаНоменклатуры это реквизит документа на форме с типом СправочникСсылка.Номенклатура |
|||
26
Kuein
14.10.14
✎
14:56
|
(25) Форма управляемая?
|
|||
27
deathogre
14.10.14
✎
14:57
|
да
|
|||
28
palpetrovich
14.10.14
✎
15:02
|
(25) ГруппаНоменклатуры "реквизит документа на форме". точно реквизит или наФорме?
... почему Объект.Склад, а ГруппаНоменклатуры без Объект? :) |
|||
29
deathogre
14.10.14
✎
15:03
|
ГруппаНоменклатуры просто лежит на форме :)
|
|||
30
palpetrovich
14.10.14
✎
15:08
|
(29) а где запрос выпоняется? если в фоме - нафик Объект? а если нет - то "ГруппаНоменклатуры" просто так не увидишь
|
|||
31
hhhh
14.10.14
✎
15:13
|
(30) не, похоже на правду.
(29) а это всё на клиенте или на сервере происходит? |
|||
32
deathogre
14.10.14
✎
15:15
|
Короче в консоли запрос отработал правильно. Видать неправильный параметр все таки передается
|
|||
33
hhhh
14.10.14
✎
15:17
|
может
Объект.Товары.Загрузить(Результат); не работает. или форму обновить надо. посмотрите отладчиком поле Результат. |
|||
34
palpetrovich
14.10.14
✎
15:22
|
(31) запутал :)
|
|||
35
Ник второй
14.10.14
✎
15:22
|
(13) Надо крестится когда кажется.
|
|||
36
Ник второй
14.10.14
✎
15:27
|
(30) Ты видимо не знаешь упр формы, там объект нужен
|
|||
37
Ник второй
14.10.14
✎
15:28
|
(31) Как ты себе представляешь работу запроса на клиенте?
|
|||
38
ЯЧайник
14.10.14
✎
15:29
|
Отладчиком проходил? У тебя точно ГруппаНоменклатуры принимает необходимое значение?
|
|||
39
palpetrovich
14.10.14
✎
15:34
|
(36) (27) пропустил, но это в данном случае - неважно, важно что ГруппаНоменклатуры, скорее всего, не "доходит" в нужном виде :)
|
|||
40
deathogre
14.10.14
✎
15:34
|
Отладчиком смотрел. Там точно ГруппаНоменклатуры имеет значение группы номенклатуры.
|
|||
41
deathogre
14.10.14
✎
15:35
|
Интересно почему в консоли работает, а в доке нет. Опять загадки природы :)
|
|||
42
Ник второй
14.10.14
✎
15:35
|
(41) потому что разные параметры запросов или данных в таблицах.
|
|||
43
1dvd
14.10.14
✎
15:37
|
(40) >> Там точно ГруппаНоменклатуры имеет значение группы номенклатуры.
А должна быть просто номенклатура |
|||
44
deathogre
14.10.14
✎
15:39
|
(43) Не понял
|
|||
45
1dvd
14.10.14
✎
15:40
|
(44) ГруппыНоменклатуры и Номенклатура - разные справочники
|
|||
46
deathogre
14.10.14
✎
15:41
|
А нет, я имел ввиду что я выбираю группу в справочнике Номенклатуры
|
|||
47
Ник второй
14.10.14
✎
15:42
|
(46) То есть ты открыл в отладчике запрос и в коллекции параметры установлена нужная номенклатура?
давай скриншот |
|||
48
hhhh
14.10.14
✎
15:46
|
(46) попробуй тупо
ДокументОбъект = РеквизитФормыВЗначение("ОБъект"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | ТоварыНаСкладахОстатки.Склад, | ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, | ТоварыНаСкладахОстатки.Характеристика, | ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоУпаковок, | ТоварыНаСкладахОстатки.КоличествоОстаток КАК Количество |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки(&Дата, Склад = &Склад И Номенклатура В ИЕРАРХИИ (&ГруппаНоменклатуры)) КАК ТоварыНаСкладахОстатки | ГДЕ ТоварыНаСкладахОстатки.КоличествоОстаток > 0"; Запрос.УстановитьПараметр("ГруппаНоменклатуры", ГруппаНоменклатуры); Запрос.УстановитьПараметр("Дата", Объект.Дата); Запрос.УстановитьПараметр("Склад", Объект.Склад); Результат = Запрос.Выполнить().Выгрузить(); ДокументОбъект.Товары.Загрузить(Результат); ЗначениеВРеквизитФормы(ДокументОбъект, "Объект"); |
|||
49
deathogre
14.10.14
✎
15:47
|
Только что выяснил. Короче лол, все работает правильно, когда происходит Объект.Товары.Загрузить(Результат), тогда грузятся лишние значение. Вот это поворот! :)
|
|||
50
deathogre
14.10.14
✎
15:47
|
*лишние значения
|
|||
51
Ник второй
14.10.14
✎
15:48
|
(49) Что значит грузятся лишние значения? то все правильно, то не правильно, не понятно. Выражайся яснее.
|
|||
52
deathogre
14.10.14
✎
15:49
|
То есть, запрос отрабатывает полностью правильно с отборами, но когда происходит загрузка в таб часть документа, то докидываются результаты, как будто запрос отработал без отборов
|
|||
53
1dvd
14.10.14
✎
15:50
|
(52) а.. ну это фантомные данные. Всё нормально. Поставь свечку в церкви и всё пройдёт
|
|||
54
deathogre
14.10.14
✎
15:52
|
ну это ваще же жесть какая то
|
|||
55
deathogre
14.10.14
✎
15:55
|
Опытным путем выяснил что это происходит, после ЭтаФорма.Прочитать()
|
|||
56
deathogre
14.10.14
✎
15:56
|
А как тогда обновить данные на форме?
|
|||
57
deathogre
14.10.14
✎
16:05
|
Всем спасибо за беспокойство :) Решил проблему так: Элементы.Товары.Обновить(). Правда прикол с ЭтаФорма.Прочитать() не понял.
|
|||
58
Мыш
14.10.14
✎
16:13
|
(35) "Креститься" надо писать с мягким знаком.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |