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

Хранилище

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

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



> ТЗ в параметр запроса          
alexkhua Подменю пользователя
сообщение 08.09.13, 18:39
Сообщение #1

Завсегдатай
****
Группа: Пользователи
Сообщений: 181
Спасибо сказали: 2 раз
Рейтинг: 0

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

    ТЗ = Запрос.Выполнить().Выгрузить();
    
//////////////////////////////////////////////////////////////////////////////////////////////////



    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ЗаказВПроизводство.Ссылка
        |ИЗ
        |    Документ.ЗаказВПроизводство КАК ЗаказВПроизводство
        |ГДЕ
        |    ЗаказВПроизводство.Ссылка <> &ТЗ";

    Запрос.УстановитьПараметр("ТЗ", ТЗ);

    Результат = Запрос.Выполнить();

    Выборка = Результат.Выбрать();

    Пока Выборка.Следующий() Цикл
    Сообщить(Выборка.Ссылка);
    КонецЦикла;

alex040269 Подменю пользователя
сообщение 08.09.13, 20:25
Сообщение #2

Крутой
Иконка группы
Группа: Местный
Сообщений: 1626
Из: Гуляйполе
Спасибо сказали: 236 раз
Рейтинг: 0

Цитата(alexkhua @ 08.09.13, 19:39) *
ЗаказВПроизводство.Ссылка <> &ТЗ

а вы представляете как это Ссылка = &ТЗ (Таблица значений)?
Наверное нужен список ссылок не вошедших в ТЗ, тогда используйте левое соединение. И запрос лучше сделать один.
ТЗ поместить во временную таблицу или внутренний запрос.


Signature
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
ЗиУП

alexkhua Подменю пользователя
сообщение 08.09.13, 20:50
Сообщение #3

Завсегдатай
****
Группа: Пользователи
Сообщений: 181
Спасибо сказали: 2 раз
Рейтинг: 0

Цитата(alex040269 @ 08.09.13, 21:25) *
а вы представляете как это Ссылка = &ТЗ (Таблица значений)?
Наверное нужен список ссылок не вошедших в ТЗ, тогда используйте левое соединение. И запрос лучше сделать один.
ТЗ поместить во временную таблицу или внутренний запрос.

Спасибо, попробую. Но я не пойму почему типы в сравн. значениях не соответствуют???

Ardi Подменю пользователя
сообщение 08.09.13, 23:41
Сообщение #4

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

потому что массив или список значений.


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

alexkhua Подменю пользователя
сообщение 09.09.13, 8:33
Сообщение #5

Завсегдатай
****
Группа: Пользователи
Сообщений: 181
Спасибо сказали: 2 раз
Рейтинг: 0

Цитата(Ardi @ 09.09.13, 0:41) *
потому что массив или список значений.

С массивом тоже не работает. Или что?

Vofka Подменю пользователя
сообщение 09.09.13, 8:59
Сообщение #6

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

Цитата(alexkhua @ 09.09.13, 9:33) *
Или что?

Как раз с массивом и работает. Как-то так должно быть:

|ГДЕ
|    ЗаказВПроизводство.Ссылка НЕ В (&МассивСсылок)

alexkhua Подменю пользователя
сообщение 09.09.13, 9:24
Сообщение #7

Завсегдатай
****
Группа: Пользователи
Сообщений: 181
Спасибо сказали: 2 раз
Рейтинг: 0

Цитата(Vofka @ 09.09.13, 9:59) *
Как раз с массивом и работает. Как-то так должно быть:

|ГДЕ
|    ЗаказВПроизводство.Ссылка НЕ В (&МассивСсылок)

Спасибо попробую. Хотя я думал, что ТЗ - тоже массив.

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

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

Цитата(alexkhua @ 09.09.13, 10:24) *
Хотя я думал, что ТЗ - тоже массив.

faceoff.gif

alexkhua Подменю пользователя
сообщение 09.09.13, 9:55
Сообщение #9

Завсегдатай
****
Группа: Пользователи
Сообщений: 181
Спасибо сказали: 2 раз
Рейтинг: 0

Цитата(Vofka @ 09.09.13, 10:34) *
faceoff.gif

Не буду дальше спорить, просто читал тут:
Цитата
Таблица значений - это двумерный массив в 1С, который предназначен для хранения и обработки промежуточных данных, возникающих в процессе работы программы. Таблица значений часто применяется при программировании на 1С, потому что имеет множество полезных возможностей и работает очень быстро. Таблица значений создается в памяти и не сохраняется в базе данных, т.е. это временный набор данных.
[необходимо зарегистрироваться для просмотра ссылки]

Vofka Подменю пользователя
сообщение 09.09.13, 10:04
Сообщение #10

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

Цитата(alexkhua @ 09.09.13, 10:55) *
просто читал тут

Ключевая фраза двумерный.

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

alexkhua Подменю пользователя
сообщение 09.09.13, 16:29
Сообщение #11

Завсегдатай
****
Группа: Пользователи
Сообщений: 181
Спасибо сказали: 2 раз
Рейтинг: 0

Цитата(Vofka @ 09.09.13, 11:04) *
Ключевая фраза двумерный.

Ключевое тут оказалось:
|ГДЕ
|    ЗаказВПроизводство.Ссылка НЕ В (&


Так работает и с ТЗ и со Списком и с Массивом, проверил все варианты.

logist Подменю пользователя
сообщение 09.09.13, 16:36
Сообщение #12

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Само решение задачи совершенно фиговое. Зачем создавать пустую таблицу с типизированной колонкой, что бы сравнивать с пустой ссылкой? Ведь это можно сделать в запросе
| ГДЕ ЗаказВПроизводство.Ссылка <> ЗНАЧЕНИЕ(Документ.ЗаказВПроизводство.ПустаяСсылка)

А если и собираетесь искать ссылку между ссылками, то практичней сделать массив ссылок, но какой сакральный смысл в ТЗ? Только по тому, что по другому не умете?

udp: а еще, если у вас первый результат ТЗ все таки возвращает колонку ссылок, то почему не сделать это все одним запросом, с временными таблицами?


Signature
Личные бесплатные консультации не даю, для этого есть форум!

alexkhua Подменю пользователя
сообщение 09.09.13, 16:42
Сообщение #13

Завсегдатай
****
Группа: Пользователи
Сообщений: 181
Спасибо сказали: 2 раз
Рейтинг: 0

Цитата(logist @ 09.09.13, 17:36) *
Само решение задачи совершенно фиговое. Зачем создавать пустую таблицу с типизированной колонкой, что бы сравнивать с пустой ссылкой? Ведь это можно сделать в запросе
| ГДЕ ЗаказВПроизводство.Ссылка <> ЗНАЧЕНИЕ(Документ.ЗаказВПроизводство.ПустаяСсылка)

А если и собираетесь искать ссылку между ссылками, то практичней сделать массив ссылок, но какой сакральный смысл в ТЗ? Только по тому, что по другому не умете?

udp: а еще, если у вас первый результат ТЗ все таки возвращает колонку ссылок, то почему не сделать это все одним запросом, с временными таблицами?

Из общего списка документов ЗаказВПроизводство мне нужно выбрать только те, на которые нет ссылок в других документах.

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

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

Цитата(logist @ 09.09.13, 17:36) *
А если и собираетесь искать ссылку между ссылками, то практичней сделать массив ссылок, но какой сакральный смысл в ТЗ? Только по тому, что по другому не умете?
udp: а еще, если у вас первый результат ТЗ все таки возвращает колонку ссылок, то почему не сделать это все одним запросом, с временными таблицами?

Человек учится, поэтому многих вещей ещё не знает wink.gif

alexkhua, в общем, если надо проверить на вхождение (не вхождение) в список ссылок - то используйте массив. Таблица значений для других целей предназначена.

alexkhua Подменю пользователя
сообщение 09.09.13, 16:52
Сообщение #15

Завсегдатай
****
Группа: Пользователи
Сообщений: 181
Спасибо сказали: 2 раз
Рейтинг: 0

Цитата(Vofka @ 09.09.13, 17:43) *
Человек учится, поэтому многих вещей ещё не знает wink.gif

alexkhua, в общем, если надо проверить на вхождение (не вхождение) в список ссылок - то используйте массив. Таблица значений для других целей предназначена.

Хорошо, спасибо.

alexkhua Подменю пользователя
сообщение 09.09.13, 21:03
Сообщение #16

Завсегдатай
****
Группа: Пользователи
Сообщений: 181
Спасибо сказали: 2 раз
Рейтинг: 0

Vofka, объясните, пожалуйста, что плохого в том что б использовать ТЗ в параметре (просто для моего понимания). Я порылся на просторах интернета и нашел много таких примеров (например, тут [необходимо зарегистрироваться для просмотра ссылки]. К тому же в ТЗ есть возможность типизировать колонки. Т.к. в моем случае при использовании массива выдало ошибку про несоответствие типов в сравниваемых значениях, я решил использовать именно ТЗ.

Vofka Подменю пользователя
сообщение 10.09.13, 8:07
Сообщение #17

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

Как минимум в сложности использования, в данном случае. Насчет производительности ничего говорить не буду, т.к. не проверял. Как отрабатывает условие ЗаказВПроизводство.Ссылка <> &ТЗ - я затрудняюсь сказать и, сомневаюсь в работоспособности такого варианта вообще. Спорить не буду, возможно, каким-то чудом оно и отрабатывает, но мне проверять не охота. Так вот вариант с массивом - это, я бы сказал, стандарт что ли. Если надо првоверить на условие вхождения в какой-то список - надо использовать массив либо список значений. Надо это взять за правило и с этим жить smile.gif

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

Завсегдатай
****
Группа: Пользователи
Сообщений: 181
Спасибо сказали: 2 раз
Рейтинг: 0

Цитата(Vofka @ 10.09.13, 9:07) *
.........Надо это взять за правило и с этим жить smile.gif

Ясно. Спасибо.

logist Подменю пользователя
сообщение 10.09.13, 8:23
Сообщение #19

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(alexkhua @ 09.09.13, 22:03) *
Т.к. в моем случае при использовании массива выдало ошибку про несоответствие типов

Значит у вас код не правильно составлен, раз позволяет для проверки однотипных значений допускать в массив другие типы. Я уже выше написал, возможно в вашей задаче можно обойтись вообще одним запросом.

Цитата(alexkhua @ 09.09.13, 22:03) *
и нашел много таких примеров

Пример использования ТЗ в качестве параметра совершенно не говорит о том, что обязательно надо использовать везде, там описано лишь КАК использовать, а не для чего.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

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


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

 

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