Имя: Пароль:
1C
1С v8
ВЫБОР КОГДА - одно и то-же условие для нескольких значений
,
0 palpetrovich
 
13.05.13
15:08
повторять это "для нескольких значений"?

ВЫБОР КОГДА ВЫРАЗИТЬ(ЕСТЬNULL(РС.НаименованиеНоменклатурыКонтрагента, """") КАК СТРОКА(100))  <> """" ТОГДА
   РС.Номенклатура
КОГДА ЕСТЬNULL(Спр.Наименование, 0) <> 0 ТОГДА
   Спр.Ссылка
ИНАЧЕ
   &ПустаяНоменклатура
КОНЕЦ КАК Номенклатура

или есть другой способ?
1 ДенисЧ
 
13.05.13
15:09
повторять
2 Maxus43
 
13.05.13
15:10
КОГДА ЕСТЬNULL(Спр.Наименование, 0) <> 0 ТОГДА

тут я просто смысла не вижу, но не суть...

А вообще - так и проверять, но проверка последовательна как в обычном Если Тогда ИначеЕсли
3 Рэйв
 
13.05.13
15:10
ты же Если...  не можешь одно на всех написать если не через ИЛИ.  Пишешь отдельно для каждого случая.

Так и тут
4 olegves
 
13.05.13
15:10
(0) копипастить
5 viktor_vv
 
13.05.13
15:11
Сейчас еще запинают за :))

КОГДА ЕСТЬNULL(Спр.Наименование, 0) <> 0 ТОГДА

кажись так

Когда Спр.Ссылка IS NOT NULL Тогда
6 palpetrovich
 
13.05.13
15:14
(2) там левое соединение
(5) КОГДА ЕСТЬNULL(Спр.Наименование, 0) <> 0 ТОГДА - работает

ясно, спасибо ...просто как в реале запрос работать будет? ...можно конечно замерить :)
7 viktor_vv
 
13.05.13
15:14
И таки да, можно оставить только
Иначе
ЕСТЬNULL(Спр.Ссылка, &ПустаяНоменклатура
)
8 zak555
 
13.05.13
15:14
весь код покажи
9 Maxus43
 
13.05.13
15:15
(6) мне без разницы на соединение, у тебя наименование же строка, а ты сравниваешь с Числом. ответ подсказать? или так проверяешь на null лихо?
10 Maxus43
 
13.05.13
15:16
(6) работать будет, а вот результат будет волшебным. Ну если такой и надо - пусть будет кончено...
11 palpetrovich
 
13.05.13
15:18
(10) нормальный результат... ну разве что на """" заменить
(8) -
   "ВЫБРАТЬ
   |    ТЗ.КодНоменклатурыКонтрагента,
   |    ВЫРАЗИТЬ(ТЗ.НаименованиеНоменклатурыКонтрагента КАК СТРОКА(100)) КАК НаименованиеНоменклатурыКонтрагента
   |    ПОМЕСТИТЬ ВТ
   |ИЗ
   |    &ТЗ КАК ТЗ
   |;
   |ВЫБРАТЬ
   |    ВТ.КодНоменклатурыКонтрагента,
   |    ВТ.НаименованиеНоменклатурыКонтрагента,
   |    ВЫБОР КОГДА ВЫРАЗИТЬ(ЕСТЬNULL(РС.НаименованиеНоменклатурыКонтрагента, """") КАК СТРОКА(100))  <> """" ТОГДА
   |        РС.Номенклатура
   |   КОГДА ЕСТЬNULL(Спр.Наименование, 0) <> 0 ТОГДА
   |        Спр.Ссылка
   |   ИНАЧЕ
   |        &ПустаяНоменклатура
   |   КОНЕЦ КАК Номенклатура,
   |    ВЫБОР КОГДА ВЫРАЗИТЬ(ЕСТЬNULL(РС.НаименованиеНоменклатурыКонтрагента, """") КАК СТРОКА(100))  <> """" ТОГДА
   |        ЛОЖЬ
   |   КОГДА ЕСТЬNULL(Спр.Наименование, 0) <> 0 ТОГДА
   |        ИСТИНА
   |   ИНАЧЕ
   |        ЛОЖЬ
   |   КОНЕЦ КАК Сохранять,
   |    ВЫБОР КОГДА ВЫРАЗИТЬ(ЕСТЬNULL(РС.НаименованиеНоменклатурыКонтрагента, """") КАК СТРОКА(100))  <> """" ТОГДА
   |        РС.ЕдиницаНоменклатурыКонтрагента
   |   КОГДА ЕСТЬNULL(Спр.Наименование, 0) <> 0 ТОГДА
   |        Спр.БазоваяЕдиницаИзмерения
   |   ИНАЧЕ
   |        &ПустаяЕдиница
   |   КОНЕЦ КАК ЕдиницаНоменклатурыКонтрагента
   |ИЗ ВТ
   |    
   |ЛЕВОЕ СОЕДИНЕНИЕ
   |    РегистрСведений.НоменклатураКонтрагентов КАК РС
   |ПО ВЫРАЗИТЬ(РС.НаименованиеНоменклатурыКонтрагента КАК СТРОКА(100)) = ВТ.НаименованиеНоменклатурыКонтрагента
   |
   |ЛЕВОЕ СОЕДИНЕНИЕ
   |    Справочник.Номенклатура КАК Спр
   |ПО ВЫРАЗИТЬ(Спр.Наименование КАК СТРОКА(100)) = ВТ.НаименованиеНоменклатурыКонтрагента
   |";
   Запрос.УстановитьПараметр("ТЗ", ТЗ);
   Запрос.УстановитьПараметр("ПустаяНоменклатура", Справочники.Номенклатура.ПустаяСсылка());
   Запрос.УстановитьПараметр("ПустаяЕдиница", Справочники.КлассификаторЕдиницИзмерения.ПустаяСсылка());
12 zak555
 
13.05.13
15:19
(11) ТЗ откуда получил ?
13 Ёпрст
 
13.05.13
15:20
А зачем в РС хранить наименование номенклатуры клиентосов ?
14 palpetrovich
 
13.05.13
15:21
(12) из MXL - файла, от поставщика
15 palpetrovich
 
13.05.13
15:21
(13) автоматизация "приходок", поставщик выдает не только  бумажный вариант, но и MXL - файл
16 viktor_vv
 
13.05.13
15:25
А тут может таки не понаименованию соединять, там в РС есть ссылка на номенклатуру.
17 viktor_vv
 
13.05.13
15:25
ВЫРАЗИТЬ(Спр.Наименование КАК СТРОКА(100)) = ВТ.НаименованиеНоменклатурыКонтрагента
18 palpetrovich
 
13.05.13
15:26
(16) в РС-то конечно есть ссылка, а вот в Файле - только наименование :)
19 viktor_vv
 
13.05.13
15:27
Разве что у вас не все вносится в номенклатуру поставщика.
20 palpetrovich
 
13.05.13
15:27
+18 собственно ее, ССЫЛКУ-то и ищем ;)
21 Maxus43
 
13.05.13
15:28
(13) это в типовых есть даже
22 palpetrovich
 
13.05.13
15:28
(19) пока что вообще ничего не вносится :)
23 viktor_vv
 
13.05.13
15:29
(18) Ну так в предыдущем соединении ты ж соединяешь с рС номенклатура поставщика там и есть ссылка на номенклатуру, или это дополнительно ищется еще, если вдруг нету в РС ?
24 palpetrovich
 
13.05.13
15:33
(23) ну да, сначали ищем в РС, потом в Справочнике
Потом, после заполнения "пустых" оператором - все заносится в РС
25 viktor_vv
 
13.05.13
15:34
Ну и таки в условиях заменил был

КОГДА ВЫРАЗИТЬ(ЕСТЬNULL(РС.НаименованиеНоменклатурыКонтрагента, """") КАК СТРОКА(100))  <> """" ТОГДА

на

Когда РС.НаименованиеНоменклатурыКонтрагента IS NOT NULL Тогда

читабельнее будет.
26 acsent
 
13.05.13
15:35
(25) это не то условие
27 viktor_vv
 
13.05.13
15:38
(26) Я имел ввиду подобные условия.
Фактически это он на NULL, не NULL проверяет.
28 palpetrovich
 
13.05.13
15:41
(25) не надо менять, и ограничение 100 убирать нельзя
вот так примерно выглядит: http://4put.ru/pictures/max/614/1888376.jpg

на рис. выделена строка. которая есть в РС, те строки, где Сохранять=Да - есть в справчнике, остальных нет нигде
29 viktor_vv
 
13.05.13
15:50
Так в результате ничего не поменяется

   |    ВЫБОР КОГДА ВЫРАЗИТЬ(ЕСТЬNULL(РС.НаименованиеНоменклатурыКонтрагента, """") КАК СТРОКА(100))  <> """" ТОГДА
   |        ЛОЖЬ
   |   КОГДА ЕСТЬNULL(Спр.Наименование, 0) <> 0 ТОГДА
   |        ИСТИНА
   |   ИНАЧЕ
   |        ЛОЖЬ
   |   КОНЕЦ КАК Сохранять,


на

   |    ВЫБОР КОГДА РС.НаименованиеНоменклатурыКонтрагента IS NOT NULL ТОГДА
   |        ЛОЖЬ
   |   КОГДА Спр.Ссылка IS NOT NULL ТОГДА
   |        ИСТИНА
   |   ИНАЧЕ
   |        ЛОЖЬ
   |   КОНЕЦ КАК Сохранять,
30 palpetrovich
 
13.05.13
15:53
(29) может  и так, сейчас попробую  ...хотя, если "в результате ничего не поменяется"  - зачем платить больше?(цы) :)
31 viktor_vv
 
13.05.13
15:54
(30) Ну если честно, продираться через эти ЕстьNULL тяжеловато :), при чтении.
32 palpetrovich
 
13.05.13
15:56
+(30) да, так тоже работает ...и наверное получше, спасибо :)