|
помогите с запросом | ☑ | ||
---|---|---|---|---|
0
yanejsh
04.07.13
✎
08:52
|
Есть табличка
номенклатура реквизит1 реквизит2 есть регистр сведений, измерения 1)номенклатура 2)реквизит1 или реквизит2 ресурс Подразделение Нужно из первой таблицы составить соответствие номенклатура - подразделение условие такое нужно задать: Если есть привязка в РС номенклатуры и реквизит1, то подразделение определяем по ним, если есть привязка в РС номенклатуры и реквизит2, то подразделение определяем по ним. Если не было таких привязок, то подразделение определять только по номенклатуре и пустому второму измерению. Как это сделать в запросе? |
|||
1
Allexe
04.07.13
✎
09:02
|
(0) Первый вложенный запрос с условием Если есть привязка в РС номенклатуры и реквизит1, второй с условием номенклатура и реквизит2. Результаты объединить.
|
|||
2
Allexe
04.07.13
✎
09:03
|
(0) 2)реквизит1 или реквизит2 не понятно что это значит? у тебя два реквизита? или это один реквизит с двумя разными значениями?
|
|||
3
yanejsh
04.07.13
✎
09:05
|
(2) это разные реквизиты
|
|||
4
yanejsh
04.07.13
✎
09:06
|
(1) а если будет две привязки, то результаты не задвоятся при объединении?
|
|||
5
kosts
04.07.13
✎
09:13
|
Напиши какие сведения хочешь хранить.
|
|||
6
yanejsh
04.07.13
✎
09:18
|
это не так важно
Номенклатура РамкаКартины ЗадникКартины РамкаКартины ЗадникКартины - это отдельные реквизиты не связанные с номенклатурой. |
|||
7
kosts
04.07.13
✎
09:21
|
(6) А подразделение зачем тут?
|
|||
8
yanejsh
04.07.13
✎
09:24
|
(7) нужно привязать номенклатуру к подразделению в зависимости от дополнительных реквизитов
|
|||
9
kosts
04.07.13
✎
09:30
|
(8) Точный, но совершенно бесполезный ответ.
|
|||
10
yanejsh
04.07.13
✎
09:34
|
(9) у тебя такие же вопросы.
Зачем задавать вопрос, если ответ на него не изменить общую картину? |
|||
11
hhhh
04.07.13
✎
09:38
|
Это старый анекдот про консультанта 1с:
Летит человек на воздушном шаре. И вдруг попадает в густой туман. Ничего не видно. Снижается. На земле стоит человек. "Скажите, пожалуйста, где я нахожусь?". Ответ: "Вы находитесь на воздушном шаре, а ваш шар летит в густом тумане". |
|||
12
Drac0
04.07.13
✎
09:39
|
(0) Как обрабатывать ситуацию когда регитсре есть записи?:
Товар1 Реквизит1 Подразделение1 Товар1 Реквизит2 Подразделение2 |
|||
13
yanejsh
04.07.13
✎
09:42
|
(12) брать запись
Товар1 Реквизит1 Подразделение1 то есть реквизит1 первостепенен, на втором месте реквизит2. если нет ни первого ни второго, то искать просто соответствие Товар1 Подразделение1 |
|||
14
kosts
04.07.13
✎
09:43
|
(10) > Зачем задавать вопрос, если ответ на него не изменить общую картину?
Хочется увидеть картинку целиком, т.к. возможно есть проблема выше уровнем. |
|||
15
yanejsh
04.07.13
✎
09:44
|
(14) тебе просто скучно :)
подумай пожалуйста только над запросом, не надо залезать выше |
|||
16
Drac0
04.07.13
✎
09:51
|
(0) Тогда самый простой вариант через временные таблицы.
ВЫБРАТЬ РС.Товар РС.Подразделение ПОМЕСТИТЬ ВТ_Реквизит1 ИЗ РегистрСведений КАК РС ГДЕ РС.Реквизит ССЫЛКА Справочник.РамкаКартины ; ВЫБРАТЬ РС.Товар РС.Подразделение ПОМЕСТИТЬ ВТ_Реквизит1 ИЗ РегистрСведений КАК РС ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Реквизит1 КАК ПО НЕ ВТ_Реквизит1.Товар = РС.Товар ГДЕ РС.Реквизит ССЫЛКА Справочник.ЗадникКартины и для случая с пустым реквизитов, а потом объединить |
|||
17
kosts
04.07.13
✎
09:51
|
(15) Над запросом не думаю пока не увижу вашей (пусть и не очень правильной реализации).
> не надо залезать выше как скажешь |
|||
18
hhhh
04.07.13
✎
09:53
|
(15) но вообще, согласись, начсчет измерений ты соврал, ну не может быть такого измерения:
2)реквизит1 или реквизит2 фантастика какая-то. поэтому костс и сомневается. |
|||
19
yanejsh
04.07.13
✎
09:55
|
(18) на основании чего ты решил, что я соврал?
что не так в реквизит1 ? |
|||
20
Drac0
04.07.13
✎
10:14
|
(18) Что не так с составным типом?
|
|||
21
yanejsh
04.07.13
✎
11:37
|
(16) как-то не так получается
в первой Вт получится несколько строк, и соединятся со второй ВТ, и произойдет размножение строк второй ВТ на те товары, где НЕ ВТ_Реквизит1.Товар = РС.Товар |
|||
22
viktor_vv
04.07.13
✎
11:43
|
(21) А номенклатуру, которой нет в регистре надо выводить ?
|
|||
23
yanejsh
04.07.13
✎
11:53
|
пока запрос такой
|
|||
24
yanejsh
04.07.13
✎
11:53
|
ВЫБРАТЬ
ВЫРАЗИТЬ(ТаблицаМатериалов.Номенклатура КАК Справочник.Номенклатура) КАК Номенклатура, ВЫРАЗИТЬ(ТаблицаМатериалов.ЕдИзм КАК Справочник.ЕдиницыИзмерения) КАК ЕдиницаИзмерения, ВЫРАЗИТЬ(ТаблицаМатериалов.РамкаКартины КАК Справочник.РамкиКартины) КАК РамкаКартины, ВЫРАЗИТЬ(ТаблицаМатериалов.ЗадникКартины КАК Справочник.ЗадникиКартины) КАК ЗадникКартины, ТаблицаМатериалов.Количество КАК Количество ПОМЕСТИТЬ ТЗ ИЗ &ТаблМатериалов КАК ТаблицаМатериалов ; /////////////////////////////////////////////////////////// ВЫБРАТЬ МатериалыВПодразделении.Номенклатура, МатериалыВПодразделении.РамкаКартины КАК РамкаКартины, МатериалыВПодразделении.Подразделение ПОМЕСТИТЬ ВТ_РамкаКартины ИЗ РегистрСведений.МатериалыВПодразделении КАК МатериалыВПодразделении ГДЕ МатериалыВПодразделении.РамкаКартины ССЫЛКА Справочник.РамкиКартины ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ МатериалыВПодразделении.Номенклатура, МатериалыВПодразделении.РамкаКартины КАК ЗадникКартины, МатериалыВПодразделении.Подразделение ПОМЕСТИТЬ ВТ_ЗадникиКартины ИЗ РегистрСведений.МатериалыВПодразделении КАК МатериалыВПодразделении ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_РамкаКартины КАК ВТ_РамкаКартины ПО (НЕ МатериалыВПодразделении.Номенклатура = ВТ_РамкаКартины.Номенклатура) ГДЕ МатериалыВПодразделении.РамкаКартины ССЫЛКА Справочник.ЗадникиКартины ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ МатериалыВПодразделении.Номенклатура, МатериалыВПодразделении.Подразделение ПОМЕСТИТЬ ВТ_Общая ИЗ РегистрСведений.МатериалыВПодразделении КАК МатериалыВПодразделении ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_РамкаКартины КАК ВТ_РамкаКартины ПО (НЕ МатериалыВПодразделении.Номенклатура = ВТ_РамкаКартины.Номенклатура) ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ЗадникиКартины КАК ВТ_ЗадникиКартины ПО (НЕ МатериалыВПодразделении.Номенклатура = ВТ_ЗадникиКартины.Номенклатура) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_РамкаКартины.Номенклатура, ВТ_РамкаКартины.РамкаКартины, ВТ_РамкаКартины.Подразделение ИЗ ВТ_РамкаКартины КАК ВТ_РамкаКартины ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ВТ_ЗадникиКартины.Номенклатура, ВТ_ЗадникиКартины.ЗадникКартины, ВТ_ЗадникиКартины.Подразделение ИЗ ВТ_ЗадникиКартины КАК ВТ_ЗадникиКартины ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ВТ_Общая.Номенклатура, NULL, ВТ_Общая.Подразделение ИЗ ВТ_Общая КАК ВТ_Общая |
|||
25
yanejsh
04.07.13
✎
11:55
|
(22) номенклатуру надовывести из первой таблицы, ТаблицаМатериалов
а к ней определить какое подразделение из РС |
|||
26
yanejsh
04.07.13
✎
12:10
|
хелп, плиз
|
|||
27
viktor_vv
04.07.13
✎
12:21
|
Можно так еще, не уверен везде ли синтаксис правильный. Ну и по скорости вроде должно быть нормально, там ничего сложного, по идее, нет для планировщика.
И МассивПустыхТипов - это массив типов измерения составного типа. В типовой должна быть функция Функция МассивПустыхЗначений(ОписаниеТипов) Экспорт Описание типов можно через метаданные выдернуть, сразу не вспомню точный синтаксис. ТекстЗапроса = " |Выбрать | СпрНоменклатура.Ссылка КАК Номенклатура, | Выбор | КОГДА Рег1.Номенклатура IS NOT Null Тогда | Рег1.Подразделение | Когда Рег2.Номенклатура IS NOT Null Тогда | Рег2.Подразделение | Иначе | ISNULL(Рег3.Поразделение,Справочник.Подразделения.ПустаяСсылка) | Конец КАК Подразделение |ИЗ | Справочник.Номенклатура КАК СпрНоменклатура | Левое соединение РегистрСведений. КАК Рег1 | ПО Рег1.Номенклатура = СпрНоменклатура.Ссылка | И Рег1.Измерение2 = СпрНоменклатура.Реквизит1 | Левое соединение РегистрСведений. КАК Рег2 | ПО Рег2.Номенклатура = СпрНоменклатура.Ссылка | И Рег2.Измерение2 = СпрНоменклатура.Реквизит2 | Левое соединение РегистрСведений. КАК Рег3 | ПО Рег3.Номенклатура = СпрНоменклатура.Ссылка | И Рег3.Измерение2 в (&МассивПустыхЗначений) | |"; |
|||
28
viktor_vv
04.07.13
✎
12:22
|
* МассивПустыхТипов -> МассивПустыхЗначений
|
|||
29
viktor_vv
04.07.13
✎
12:35
|
МассивПустыхЗначений = ОбщегоНазначения.МассивПустыхЗначений(Метаданные.РегистрыСведений.ТвойРегистр.Измерения.Измерение2.Тип);
|
|||
30
yanejsh
04.07.13
✎
14:12
|
(27) спасибо, вроде похоже на правду результат получается.
потестирую дальше |
|||
31
Drac0
04.07.13
✎
14:14
|
(21) Не обращай внимание, о чем-то не том думал в это время :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |