Имя: Пароль:
1C
1С v8
Проверить поле на существование в запросе
0 deadpuma
 
12.09.12
12:44
что-то туплю
как проверить поле нТаблицаТоваров.СерияНоменклатуры на существование?
т.е если оно существует то делать вот эту часть
?(ОригинальнаяПечать,"нТаблицаТоваров.СерияНоменклатуры КАК СерияНоменклатуры,","")

иначе пропускать эту часть и делать все остальное.

   Запрос.Текст =
   "ВЫБРАТЬ
   |    нТаблицаТоваров.Номенклатура КАК НоменклатураНаименование,
   |    нТаблицаТоваров.ХарактеристикаНоменклатуры КАК ХарактеристикаНаименование,
   |    нТаблицаТоваров.ЕдиницаИзмерения КАК ЕдиницаИзмеренияНаименование,
   |    нТаблицаТоваров.Количество КАК Количество,
   |    нТаблицаТоваров.Цена КАК Цена,
   |   " + ?(ОригинальнаяПечать,"нТаблицаТоваров.СерияНоменклатуры КАК СерияНоменклатуры,","") + "                  
   |   " + ?(НЕ ОригинальнаяПечать,""""" КАК СерияНоменклатуры,","") + "                  
   |    нТаблицаТоваров.Сумма КАК Стоимость
   |ПОМЕСТИТЬ МВТ
   |ИЗ
   |    &нТаблицаТоваров КАК нТаблицаТоваров";
1 ZanderZ
 
12.09.12
12:46
при передаче ТЗ в запрос проверять есть поле или нет и вставлять в запрос
2 salvator
 
12.09.12
12:47
Через "Выбор"
3 Reset
 
12.09.12
12:47
Выбор когда &ОригинальнаяПечать тогда нТаблицаТоваров.СерияНоменклатуры иначе """" конец КАК СерияНоменклатуры
4 Reset
 
12.09.12
12:48
дословно, "Проверить поле на существование в запросе" - никак
5 deadpuma
 
12.09.12
12:49
(3) а это запись ?(ОригинальнаяПечать,"нТаблицаТоваров.СерияНоменклатуры КАК СерияНоменклатуры,","") аналогичная ведь, разве нет?
6 acsent
 
12.09.12
12:49
я бы через построительзапроса делал
7 Reset
 
12.09.12
12:50
(5) Нет. (3) на языке запросов
8 deadpuma
 
12.09.12
12:50
дело в том что в одних случаях при формировании нТаблицаТоваров она не содержит колонки
СерияНоменклатуры и вылетает ошибка
9 Reset
 
12.09.12
12:51
хм, кстати я не уверен, (3) может ошибку дать при отсутвии поля. Проверь
10 deadpuma
 
12.09.12
12:51
КОнструкторор запроса не открывается, пишет ошибка (8,1) Синтаксическая ошибка

вроде же в (0) запрос синтаксически правильно написан?
11 deadpuma
 
12.09.12
12:52
(9) дело в том что в Выбор когда &ОригинальнаяПечать тогда нТаблицаТоваров.СерияНоменклатуры иначе """" конец КАК СерияНоменклатуры

проверяется наличие флажка ОригинальнаяПечать , а мне надо проверять наличие поля нТаблицаТоваров.СерияНоменклатуры
12 Reset
 
12.09.12
13:01
Провел, (3) ошибку дает, отбой
13 Reset
 
12.09.12
13:01
проверил*
14 Reset
 
12.09.12
13:03
Выправил условие в (0)
   Запрос.Текст =
   "ВЫБРАТЬ
   |    нТаблицаТоваров.Номенклатура КАК НоменклатураНаименование,
   |    нТаблицаТоваров.ХарактеристикаНоменклатуры КАК ХарактеристикаНаименование,
   |    нТаблицаТоваров.ЕдиницаИзмерения КАК ЕдиницаИзмеренияНаименование,
   |    нТаблицаТоваров.Количество КАК Количество,
   |    нТаблицаТоваров.Цена КАК Цена,
   |   " + ?(ОригинальнаяПечать,"нТаблицаТоваров.СерияНоменклатуры","""""")+" КАК СерияНоменклатуры,"
   |    нТаблицаТоваров.Сумма КАК Стоимость
   |ПОМЕСТИТЬ МВТ
   |ИЗ
   |    &нТаблицаТоваров КАК нТаблицаТоваров";
15 Reset
 
12.09.12
13:04
или (6), но я не готов объяснять сейчас
16 petrowsky
 
12.09.12
13:24
(0) думаю так, если правильно понял (8)
" + ?(ОригинальнаяПечать И нТаблицаТоваров.Колонки.Найти("СерияНоменклатуры" <> Неопределено),"нТаблицаТоваров.СерияНоменклатуры КАК СерияНоменклатуры,","") + "

где нТаблицаТоваров - это т.з., которую ты передаешь параметром в запрос
17 petrowsky
 
12.09.12
13:24
(16) забыл скобку закрыть
нТаблицаТоваров.Колонки.Найти("СерияНоменклатуры")
18 deadpuma
 
12.09.12
13:30
(14) а тут тоже есть ошибка?
?(НЕ ОригинальнаяПечать,""""" КАК СерияНоменклатуры,","") + "
19 deadpuma
 
12.09.12
13:31
(16) спасибо буду пробывать!
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший