Имя: Пароль:
1C
1С v8
Параметры в скд
,
0 DexterMorgan
 
13.11.12
12:46
Есть отчет на скд, в запросе есть две вирт. таблицы, имеющие одинаковый параметр, например "склад". Если в пользовательском режиме сделать отбор по складу, то скд (при вкл. автозаполнении) добавит этот параметр в обе вирт. таблицы. Вопрос, чтобы она добавляла только в одну таблицу обязательно выключать автозаполнение и самому прописывать все параметры,поля и отборы? В смысле других вариантов нет?
1 Irek-kazan
 
13.11.12
12:49
два параметра?
2 DexterMorgan
 
13.11.12
12:50
(1) ну два одинаковых измерения, в доступных полях отбора они идут как одно.
3 DexterMorgan
 
13.11.12
12:51
(1) В смысле склад измерение и в первой и во второй вирт таблице
4 Irek-kazan
 
13.11.12
12:55
Хрусталеву почитай, Стр.363
5 DexterMorgan
 
13.11.12
12:56
(4) А тебе не лень страницу искать было? Если не трудно можешь ответь просто есть другой вариант или нет?
6 Irek-kazan
 
13.11.12
13:00
попробуй поиграться с фигурными скобками или я чего-то не догоняю
7 DexterMorgan
 
13.11.12
13:01
(6) Все верно, но для этого нужно отключать автозаполнение
8 DexterMorgan
 
13.11.12
13:02
(6) Фигурные скобки позволяют указать явно, то что ты хочешь заполнять. А мне нужно указать то, что я НЕ хочу заполнять, но автозаполнение не отключая)
9 Пеппи
 
13.11.12
13:04
(8) непонятно чего ты хочешь? Параметр автоматом не добавится для вирт.таблиц это раз-его нужно все таки указать, а если ты отбор делаешь в пользовательском режиме то отбор будет работать для обоих таблиц автоматом, ничего здесь не сделаешь.
10 DexterMorgan
 
13.11.12
14:03
(9) Добавится, если пользователь укажет отбор по полю Склад добавляется параметр в обе вирт таблицы. Смотрел в консоли скд, где макет xml посмотреть можно.

<<отбор будет работать для обоих таблиц автоматом, ничего здесь не сделаешь.
Сделаешь. Можно отключить автозаполнение и указать вручную где будет применяться этот отбор. Просто это затронет и другие поля. Ну походу только так придется.
11 Ork
 
13.11.12
14:05
(0) имеющие одинаковый параметр, например "склад"
Задать для разных таблиц разные псевдонимы?
12 DexterMorgan
 
13.11.12
14:09
(11) Поясни. В запросе псевдонимы разные, это не одна таблица два раза выбрана, это просто разные регистры. Но поле склад в досупных полях появляется одно, ну и отбор соответственно только по одному полю можно указать
13 К_Дач
 
13.11.12
14:11
(11) ничего это не даст...

так понимаю, тебе нужно делать отбор в первой виртуально таблице и соединять ее с правой (второй) таблицей, в которой отбора быть не должно?
14 Ork
 
13.11.12
14:11
(12) В тексте запроса :
Таблица1.Склад КАК СкладИзТаблицы1
Таблица2.Склад КАК СкладИзТаблицы2
15 К_Дач
 
13.11.12
14:12
поясни, что ты делаешь с этими таблицами - соединяешь, объеденяешь?
16 DexterMorgan
 
13.11.12
14:14
(15) Да, в первой отбора по складу быть не должно. Первую соединяю со второй, где пользователь может указать отбор по складу.
17 DexterMorgan
 
13.11.12
14:15
Ну вообщем в (13) тоже самое
18 DexterMorgan
 
13.11.12
14:17
(14) Мне склад нужен только из одной таблицы. Я выбираю его из одной таблицы, но когда пользователь указывает отбор, он автоматически на обе накладывается.
19 ДемонМаксвелла
 
13.11.12
14:22
обе таблицы, и с отбором, и без отбора, закинь во временные таблицы, а их уже соединяй
20 Irek-kazan
 
13.11.12
14:23
та не прокатит вариант с запросом по условию без параметров вирт.таблицы?
21 DexterMorgan
 
13.11.12
14:24
(19) Так и есть. Есть Вр1 есть Вр2. В обоих есть поле склад. Затем их соединяю. Выбирается только поле Вр1.Склад. Когда пользоваетль накладывает отбор Склад = ...., скд его накладывает и на Вр1 и на Вр2
22 DexterMorgan
 
13.11.12
14:25
(20) Да не заполнены параметры их скд заполняет!
23 К_Дач
 
13.11.12
14:25
Дело в том, что как только накладывается отбор - ЛЕВОЕ ВНЕШНЕЕ соединение в СКД сразу превращается в ПОЛНОЕ ВНУТРЕННЕЕ. Хотел тебе предложить делать через два набора данных, но из-за этого - ничего не выйдет...

1. Отбора нет - первая таблица по полям связи соединяется со второй. Все записи из первой + совпадающие записи из второй
2. Отбор на вторую таблицу. Должны получить все записи из первой + отобранные записи из второй по полям связи.

Вторая таблица должна стоять справа - это раз.
Во второй на параметр надо прописать что-то вроде:

ВЫБОР КОГДА &Склад ССылка Справочник.Склад ТОГДА ВиртуальнаяТаблица.Склад КОНЕЦ
24 bzaugolnov
 
13.11.12
14:26
Попробуй
Вирт таблица остатков1(, {(Склад) КАК Склад1})
Вирт таблица остатков2(, {(Склад) КАК Склад2})
25 К_Дач
 
13.11.12
14:27
Условия можно писать прямо в полях задания параметров ВТ
26 vmv
 
13.11.12
14:28
(18) группировки правильно настрой и не забывай, что есть группировка <детальные записи>.

Я обычно делаю <детальные записи> корневой без всяких отборов, чтобы можно было получать все детальные записи в функциях СКД ГРУППОВАЯОБРАБОТКА() ВЫЧИСЛИТЬ() и т.д., а уже отборы делаю во вложенних(минимизированных) группировках
27 Irek-kazan
 
13.11.12
14:29
(22) я имел ввиду что пользователь при отборе должен заполнить не параметр вирт.таблицы, а условие для отбора в вирт.таблицах:
Выбрать склад из ВТ()
ГДЕ склад=&УсловиеОтбораСклада
28 К_Дач
 
13.11.12
14:31
ВЫБОР КОГДА &Склад ССылка Справочник.Склад ТОГДА &Склад = Неопределено КОНЕЦ

вот так точнее
29 DexterMorgan
 
13.11.12
14:39
(28) При автозаполнении вообще фигурные скобки игнорирует походу
30 К_Дач
 
13.11.12
14:41
Блин... словом "параметр" сбил меня с толку. Склад - это просто выбираемое поле? Если да, то делай через два набора данных, в каждом из них назови склад уникально, связывай по этому полю. А чтобы получить при утсановке отбора все записи из первого набора, не теряя при отборе во втором - делай как посоветовали в (26)
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан