Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 22:13

Помогите подкорректировать запрос

Автор SanSay, 19 дек 2013, 11:04

0 Пользователей и 1 гость просматривают эту тему.

SanSay

Есть рабочий запрос для помещения Таблицы значений в менеджервременных таблиц

Запрос.Текст = "
|ВЫБРАТЬ
| *
|ПОМЕСТИТЬ
| ВременнаяТаблица2
|ИЗ
| &ТабЗнач2 ТЗПрайс;
|ВЫБРАТЬ
| *
|ИЗ
| ВременнаяТаблица2";
Запрос.УстановитьПараметр("ТабЗнач2",ТЗПрайс);
Запрос.Выполнить();

в Таблице Значений "ТЗПрайс" есть колонка "Серия", где указывается серийный номер.
нужно подкорректировать запрос так, чтобы во "ВременнаяТаблица2" попадали только те строки, где "Серия" отсутствует.
Как понимаю нужно дописать типо такого:

Запрос.Текст = "
|ВЫБРАТЬ
| *
|ПОМЕСТИТЬ
| ВременнаяТаблица2
|ИЗ
| &ТабЗнач2 ТЗПрайс;
|ВЫБРАТЬ
| *
|ИЗ
| ВременнаяТаблица2
|ГДЕ
| ВременнаяТаблица2.Серия = ***";
Запрос.УстановитьПараметр("ТабЗнач2",ТЗПрайс);
Запрос.Выполнить();

где *** как раз и не знаю как описать пустую ячейку... использование  "" не прокатывает, ругается:

{Обработка.АЦК.Форма.Поиск(133)}: Ошибка при вызове метода контекста (Выполнить): {(13, 55)}: Строка, не закрывающаяся кавычкой
ВЫРАЗИТЬ(ВременнаяТаблица2.Серия КАК Строка(1000)) = <<?>>"
Результат = Запрос.Выполнить().Выбрать();

mixqn

напишите так:
ГДЕ
    ЕСТЬNULL(ВременнаяТаблица2.Серия, <ПустоеЗначениеТипаСерия>) = <ПустоеЗначениеТипаСерия>

Вместо <ПустоеЗначениеТипаСерия> напишите пустое значение того типа, которым является ВременнаяТаблица2.Серия.
Например, если ВременнаяТаблица2.Серия имеет тип СправочникСсылка.Серии, тогда вместо <ПустоеЗначениеТипаСерия> нужно написать: ЗНАЧЕНИЕ(Справочник.Серии.Пустаяссылка)
Добавлено: 19 дек 2013, 11:23


P.S. ошибка может означать то, что вы редактировали запрос не конструктором, а непосредственно в коде и забыли продублировать кавычки - напомню, внутри строки (то есть во внешних кавычках) символ "кавычка" обозначается двойными кавычками.
То есть, чтобы написать условие Серия = "" внутри текста запроса, писать надо вот так: Серия = """" - каждая кавычка заменена на двойную.
надеюсь, понятно изъяснился...
     

SanSay

Цитата: mixqn от 19 дек 2013, 11:21P.S. ошибка может означать то, что вы редактировали запрос не конструктором, а непосредственно в коде и забыли продублировать кавычки - напомню, внутри строки (то есть во внешних кавычках) символ "кавычка" обозначается двойными кавычками.То есть, чтобы написать условие Серия = "" внутри текста запроса, писать надо вот так: Серия = """" - каждая кавычка заменена на двойную.надеюсь, понятно изъяснился...

блин точно... знал же, чет стормозил )
Добавлено: 19 дек 2013, 12:56


так, чет я не понял:
если после запроса

Запрос.Текст = "
|ВЫБРАТЬ
| *
|ПОМЕСТИТЬ
| ВременнаяТаблица2
|ИЗ
| &ТабЗнач2 ТЗПрайс;
|ВЫБРАТЬ
| *
|ИЗ
| ВременнаяТаблица2
|ГДЕ
| ВЫРАЗИТЬ(ВременнаяТаблица2.Серия КАК Строка(1000)) = """"";
Запрос.УстановитьПараметр("ТабЗнач2",ТЗПрайс);
Запрос.Выполнить();

проверить данные в "ВременнаяТаблица2", то показывает данные соответствующие условию "ВременнаяТаблица2.Серия = """
но когда использую "ВременнаяТаблица2" ниже по коду, там почемуто полные данные, т.е. даже те где "ВременнаяТаблица2.Серия не равно """
как так?
Добавлено: 19 дек 2013, 14:41


Цитата: SanSay от 19 дек 2013, 11:46
Цитата: mixqn от 19 дек 2013, 11:21P.S. ошибка может означать то, что вы редактировали запрос не конструктором, а непосредственно в коде и забыли продублировать кавычки - напомню, внутри строки (то есть во внешних кавычках) символ "кавычка" обозначается двойными кавычками.То есть, чтобы написать условие Серия = "" внутри текста запроса, писать надо вот так: Серия = """" - каждая кавычка заменена на двойную.надеюсь, понятно изъяснился...

блин точно... знал же, чет стормозил )
Добавлено: 19 дек 2013, 12:56


так, чет я не понял:
если после запроса

Запрос.Текст = "
|ВЫБРАТЬ
| *
|ПОМЕСТИТЬ
| ВременнаяТаблица2
|ИЗ
| &ТабЗнач2 ТЗПрайс;
|ВЫБРАТЬ
| *
|ИЗ
| ВременнаяТаблица2
|ГДЕ
| ВЫРАЗИТЬ(ВременнаяТаблица2.Серия КАК Строка(1000)) = """"";
Запрос.УстановитьПараметр("ТабЗнач2",ТЗПрайс);
Запрос.Выполнить();

проверить данные в "ВременнаяТаблица2", то показывает данные соответствующие условию "ВременнаяТаблица2.Серия = """
но когда использую "ВременнаяТаблица2" ниже по коду, там почемуто полные данные, т.е. даже те где "ВременнаяТаблица2.Серия не равно """
как так?
в общем пришлось создать еще одну временную таблицу.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск