Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Помогите подкорректировать запрос          
SanSay Подменю пользователя
сообщение 19.12.13, 9:06
Сообщение #1

Говорящий
***
Группа: Пользователи
Сообщений: 55
Из: Наб.Челны
Спасибо сказали: 1 раз
Рейтинг: 0

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

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

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

pablo Подменю пользователя
сообщение 19.12.13, 9:34
Сообщение #2

Старейшина
********
Группа: Команда (модераторы)
Сообщений: 1116
Из: Одесса-Луганск
Спасибо сказали: 193 раз
Рейтинг: 0

Если тип Серия - строка, тогда используйте """", иначе работайте с функцией ЕстьNULL.


Signature
Правильно поставленный вопрос содержит до 90% ответа.

Спасибо сказали: SanSay,

SanSay Подменю пользователя
сообщение 19.12.13, 9:49
Сообщение #3

Говорящий
***
Группа: Пользователи
Сообщений: 55
Из: Наб.Челны
Спасибо сказали: 1 раз
Рейтинг: 0

блин точно... знал же, чет стормозил )

SanSay Подменю пользователя
сообщение 19.12.13, 10:59
Сообщение #4

Говорящий
***
Группа: Пользователи
Сообщений: 55
Из: Наб.Челны
Спасибо сказали: 1 раз
Рейтинг: 0

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

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

pablo Подменю пользователя
сообщение 19.12.13, 11:31
Сообщение #5

Старейшина
********
Группа: Команда (модераторы)
Сообщений: 1116
Из: Одесса-Луганск
Спасибо сказали: 193 раз
Рейтинг: 0

А какой у Вас дальше код? Может проблема в нем?


Signature
Правильно поставленный вопрос содержит до 90% ответа.

Fynjy Подменю пользователя
сообщение 19.12.13, 11:46
Сообщение #6

Сенсей Чака Норриса
**********
За вредность
Группа: Пользователи
Сообщений: 1994
Из: Ахметов сити
Спасибо сказали: 333 раз
Рейтинг: 0

Цитата(SanSay @ 19.12.13, 10:59) *
так, чет я не понял:

Зачем там выразить? Колонки ТЗ жестко типизированы?


Signature

SanSay Подменю пользователя
сообщение 19.12.13, 12:03
Сообщение #7

Говорящий
***
Группа: Пользователи
Сообщений: 55
Из: Наб.Челны
Спасибо сказали: 1 раз
Рейтинг: 0

Цитата(Fynjy @ 19.12.13, 13:46) *
Зачем там выразить? Колонки ТЗ жестко типизированы?

типизированы, без "выразить" ругается, что нельзя сравнивать чето там разных типов или т.п.

pablo Подменю пользователя
сообщение 19.12.13, 12:37
Сообщение #8

Старейшина
********
Группа: Команда (модераторы)
Сообщений: 1116
Из: Одесса-Луганск
Спасибо сказали: 193 раз
Рейтинг: 0

Судя по всему, Серия - строка без ограничения длины, поэтому используется Выразить.


Signature
Правильно поставленный вопрос содержит до 90% ответа.

SanSay Подменю пользователя
сообщение 19.12.13, 12:44
Сообщение #9

Говорящий
***
Группа: Пользователи
Сообщений: 55
Из: Наб.Челны
Спасибо сказали: 1 раз
Рейтинг: 0

Цитата(SanSay @ 19.12.13, 12:59) *
проверить данные в "ВременнаяТаблица2", то показывает данные соответствующие условию "ВременнаяТаблица2.Серия = """но когда использую "ВременнаяТаблица2" ниже по коду, там почемуто полные данные, т.е. даже те где "ВременнаяТаблица2.Серия не равно """как так?

в общем пришлось создать еще одну временную таблицу.

Fynjy Подменю пользователя
сообщение 19.12.13, 13:23
Сообщение #10

Сенсей Чака Норриса
**********
За вредность
Группа: Пользователи
Сообщений: 1994
Из: Ахметов сити
Спасибо сказали: 333 раз
Рейтинг: 0

Цитата(SanSay @ 19.12.13, 12:03) *
типизированы, без "выразить" ругается, что нельзя сравнивать чето там разных типов или т.п.

Типизацию колонки серии покажите.


Signature

SanSay Подменю пользователя
сообщение 19.12.13, 14:21
Сообщение #11

Говорящий
***
Группа: Пользователи
Сообщений: 55
Из: Наб.Челны
Спасибо сказали: 1 раз
Рейтинг: 0

Цитата(Fynjy @ 19.12.13, 15:23) *
Типизацию колонки серии покажите.

если я правильно понял, что вам надо то:
ТЗПрайс.Колонки.Добавить("Серия", Новый ОписаниеТипов("Строка"));

Fynjy Подменю пользователя
сообщение 19.12.13, 14:43
Сообщение #12

Сенсей Чака Норриса
**********
За вредность
Группа: Пользователи
Сообщений: 1994
Из: Ахметов сити
Спасибо сказали: 333 раз
Рейтинг: 0

Цитата(SanSay @ 19.12.13, 14:21) *
если я правильно понял, что вам надо то:
ТЗПрайс.Колонки.Добавить("Серия", Новый ОписаниеТипов("Строка"));

Все правильно поняли.
В запросе сравнение
.Серия = ""

должно работать 100%.


Signature

Ardi Подменю пользователя
сообщение 19.12.13, 15:02
Сообщение #13

Живет на форуме
***********
Гений телепатии и социального моделирования
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0

Цитата(SanSay @ 19.12.13, 14:21) *
если я правильно понял, что вам надо то:
ТЗПрайс.Колонки.Добавить("Серия", Новый ОписаниеТипов("Строка"));

здест нужно указать длину строки. Тогда не нужно будет приводить длину строки в запросе.


Signature
Услуги 1С программиста 8.2, 7.7 (Плохо, дорого, очередь). Киев.

SanSay Подменю пользователя
сообщение 19.12.13, 18:35
Сообщение #14

Говорящий
***
Группа: Пользователи
Сообщений: 55
Из: Наб.Челны
Спасибо сказали: 1 раз
Рейтинг: 0

Цитата(Fynjy @ 19.12.13, 16:43) *
В запросе сравнение .Серия = ""должно работать 100%.

это:
|    ВЫРАЗИТЬ(ВременнаяТаблица2.Серия КАК Строка(1000)) = """"";

заменил на:
|    .Серия = """"

все равно:
{Обработка.АЦК.Форма.Поиск(92)}: Ошибка при вызове метода контекста (Выполнить): {(9, 9)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля
неограниченной длины и поля несовместимых типов.
.Серия <<?>>= ""
        Запрос.Выполнить();

так же при создании ТЗ прописал длину строки:
ТЗПрайс.Колонки.Добавить("Серия", Новый ОписаниеТипов("Строка"),,15);


таже ошибка

Ardi Подменю пользователя
сообщение 19.12.13, 18:49
Сообщение #15

Живет на форуме
***********
Гений телепатии и социального моделирования
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0

КоллекцияКолонокТаблицыЗначений.Добавить (ValueTableColumnCollection.Add)
КоллекцияКолонокТаблицыЗначений (ValueTableColumnCollection)
Добавить (Add)
Синтаксис:

Добавить(<Имя>, <Тип>, <Заголовок>, <Ширина>)

<Ширина> (необязательный)

Тип: Число.
Ширина колонки в символах. Используется при визуальном отображении таблицы

Сообщение отредактировал Ardi - 19.12.13, 18:52


Signature
Услуги 1С программиста 8.2, 7.7 (Плохо, дорого, очередь). Киев.

SanSay Подменю пользователя
сообщение 19.12.13, 19:19
Сообщение #16

Говорящий
***
Группа: Пользователи
Сообщений: 55
Из: Наб.Челны
Спасибо сказали: 1 раз
Рейтинг: 0

чет не то я значит сделал )
вот так лучше:
ТЗПрайс.Колонки.Добавить("Серия", Новый ОписаниеТипов("Строка"    , , Новый КвалификаторыСтроки(200, ДопустимаяДлина.Переменная)));

время обработки с 16 сек упало до 2-3 )

только вопрос
Новый КвалификаторыСтроки(200, ДопустимаяДлина.Переменная))

200 это что?

Ardi Подменю пользователя
сообщение 19.12.13, 19:21
Сообщение #17

Живет на форуме
***********
Гений телепатии и социального моделирования
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0

200 это будет максимальная длина.

Если в таблицу совать больше знаков - то оно обрежет до двухсот.


Signature
Услуги 1С программиста 8.2, 7.7 (Плохо, дорого, очередь). Киев.

SanSay Подменю пользователя
сообщение 19.12.13, 20:30
Сообщение #18

Говорящий
***
Группа: Пользователи
Сообщений: 55
Из: Наб.Челны
Спасибо сказали: 1 раз
Рейтинг: 0

Цитата(Ardi @ 19.12.13, 21:21) *
Если в таблицу совать больше знаков - то оно обрежет до двухсот.

число знаков 1 ячейки я так понимаю?

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 15.06.25, 3:44
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!