Как выбрать данные в зависимости от приоритета?
04.10.2010
17:15
#51
Всё работает,так как Вы и сказали:)Спасибо огромное,без Вас я бы вообще не справилась.
04.10.2010
19:01
#53
"И ещё у меня всё-таки не получается правильно с параметром в запросе:
Запрос2=Новый Запрос;
Запрос2.Текст="ВЫБРАТЬ
| ЗаказПокупателяТовары.Номенклатура
|ИЗ
| Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары ";
// |ГДЕ
// |ЗаказПокупателяТовары.Ссылка = &Ссылка";
Запрос2.УстановитьПараметр("Ссылка", Объект.Ссылка);
Извините,что я Вам столько вопросов задаю."
Запрос2=Новый Запрос;
Запрос2.Текст="ВЫБРАТЬ
| ЗаказПокупателяТовары.Номенклатура
|ИЗ
| Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары ";
// |ГДЕ
// |ЗаказПокупателяТовары.Ссылка = &Ссылка";
Запрос2.УстановитьПараметр("Ссылка", Объект.Ссылка);
Извините,что я Вам столько вопросов задаю."
05.10.2010
09:47
#55
Что такое Объект? Какого типа и что за значение?
И что конкретно не получается?
Вопроса не вижу - только одно утверждение.
И что конкретно не получается?
Вопроса не вижу - только одно утверждение.
05.10.2010
10:43
#56
"С объектом разобралась:)а вот с конструкцией ВЫБОР не очень понятно.Я сделала так:
|ВЫБРАТЬ
|Этапы.Продукция,
|Этапы.Этап,
|Этапы.Приоритет,
//|ЕстьNull(Этапы.ПриоритетЭтапыПрохожденияЗаказа.Код) КАК Очередность
|ВЫБОР КОГДА ЭТАПЫ.оЧЕРЕДНОСТЬ<>0 ТОГДА 1 ИНАЧЕ 2 КОНЕЦ КАК Очередность,
|ЭтапыПрохожденияЗаказа.Код КАК Код
|ВТМинПриор КАК МинПриор
|ЛЕВОЕ СОЕДИНЕНИЕ ВТНомЭт КАК Этапы
|ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЭтапыПрохожденияЗаказа КАК ЭтапыПрохожденияЗаказа
|ПО Этапы.Этап = ЭтапыПрохожденияЗаказа.Ссылка
|ПО МинПриор.Приоритет = Этапы.Приоритет
|УПОРЯДОЧИТЬ ПО
|Очередность,Код";
Но это не совсем то.Мне надо,чтобы если очерёдность задана,упорядочивание сначала было по ней и только потом упорядочивались этапы,для которых очерёдность не задана.Как можно записать что-то вроде этого:
ВЫБОР КОГДА Этапы.Очередность=0 ТОГДА ССылка Справочник.ЭтапыПрохожденияЗаказа.Код ИНАЧЕ Этапы.Очередность КОНЕЦ КАК Очередность
"
|ВЫБРАТЬ
|Этапы.Продукция,
|Этапы.Этап,
|Этапы.Приоритет,
//|ЕстьNull(Этапы.ПриоритетЭтапыПрохожденияЗаказа.Код) КАК Очередность
|ВЫБОР КОГДА ЭТАПЫ.оЧЕРЕДНОСТЬ<>0 ТОГДА 1 ИНАЧЕ 2 КОНЕЦ КАК Очередность,
|ЭтапыПрохожденияЗаказа.Код КАК Код
|ВТМинПриор КАК МинПриор
|ЛЕВОЕ СОЕДИНЕНИЕ ВТНомЭт КАК Этапы
|ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЭтапыПрохожденияЗаказа КАК ЭтапыПрохожденияЗаказа
|ПО Этапы.Этап = ЭтапыПрохожденияЗаказа.Ссылка
|ПО МинПриор.Приоритет = Этапы.Приоритет
|УПОРЯДОЧИТЬ ПО
|Очередность,Код";
Но это не совсем то.Мне надо,чтобы если очерёдность задана,упорядочивание сначала было по ней и только потом упорядочивались этапы,для которых очерёдность не задана.Как можно записать что-то вроде этого:
ВЫБОР КОГДА Этапы.Очередность=0 ТОГДА ССылка Справочник.ЭтапыПрохожденияЗаказа.Код ИНАЧЕ Этапы.Очередность КОНЕЦ КАК Очередность
"
05.10.2010
11:14
#57
> |ВЫБОР КОГДА ЭТАПЫ.оЧЕРЕДНОСТЬ<>0 ТОГДА 1 ИНАЧЕ 2 КОНЕЦ КАК Очередность,
Это означает - нафиг Очередность, будет 1 или 2
> ВЫБОР КОГДА Этапы.Очередность=0 ТОГДА ССылка Справочник.ЭтапыПрохожденияЗаказа.Код ИНАЧЕ Этапы.Очередность КОНЕЦ КАК Очередность
Это вообще не ясно - если Этапы.Очередность = 0, тогда взять ссылку на код?
Это было наиболее правильным решением:
> ЕстьNull(Этапы.Очередность , ЭтапыПрохожденияЗаказа.Код) КАК Очередность,
Только одно Но, которое вы так странно пытались обойти "NULL <> 0", а потому результатом ЕстьNull(0, ЭтапыПрохожденияЗаказа.Код) будет 0. Если есть сомнения, что оно Очередность определено, тогда правильно было бы написать так:
Выбор Когда ЕстьNull(Этапы.Очередность, 0) <> 0 Тогда //Через ЕстьNull - определил значение, теперь оно всегда число.
Этапы.Очередность //Но при этом не равное 0
Иначе
//Теперь задача, чтобы значение ЭтапыПрохожденияЗаказа.Код "не перебило" Очередность. Тут правда есть один вопрос
//а какого типа значение ЭтапыПрохожденияЗаказа.Код? Это может быть и строка. Вопрос, что стоит раньше при сортировке
//строка или число? Это только экспериментом определить можно. Если же Код - число, то тут все просто: надо только
//ответить на несколько вопросов: 1. Порядок сортировки, 2. Что должно быть раньше (выше) Очередность или Код.
Конец Как Очередность
05.10.2010
11:20
#58
В данных написано,что тип кода строка.а порядок сортировки должен быть следующий:сначала идут по порядку этапы,для которых очерёдность задана,потом этапы,упорядоченные по коду.
05.10.2010
11:32
#59
"Сделала вот так:
|ВЫБРАТЬ
| Этапы.Продукция,
| Этапы.Этап,
| Этапы.Приоритет,
|ВЫБОР КОГДА Этапы.Очередность<>0 ТОГДА 1 ИНАЧЕ 2 КОНЕЦ КАК Порядок,
| ВЫБОР
| КОГДА ЕСТЬNULL(Этапы.Приоритет, 0) <> 0
| ТОГДА Этапы.Очередность
| ИНАЧЕ ЭтапыПрохожденияЗаказа.Код
| КОНЕЦ КАК Очередность,
| ЭтапыПрохожденияЗаказа.Код КАК Код
|ИЗ
| ВТМинПриор КАК МинПриор
| ЛЕВОЕ СОЕДИНЕНИЕ ВТНомЭт КАК Этапы
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЭтапыПрохожденияЗаказа КАК ЭтапыПрохожденияЗаказа
| ПО Этапы.Этап = ЭтапыПрохожденияЗаказа.Ссылка
| ПО МинПриор.Приоритет = Этапы.Приоритет
|
|УПОРЯДОЧИТЬ ПО
| Порядок,Очередность";
"
|ВЫБРАТЬ
| Этапы.Продукция,
| Этапы.Этап,
| Этапы.Приоритет,
|ВЫБОР КОГДА Этапы.Очередность<>0 ТОГДА 1 ИНАЧЕ 2 КОНЕЦ КАК Порядок,
| ВЫБОР
| КОГДА ЕСТЬNULL(Этапы.Приоритет, 0) <> 0
| ТОГДА Этапы.Очередность
| ИНАЧЕ ЭтапыПрохожденияЗаказа.Код
| КОНЕЦ КАК Очередность,
| ЭтапыПрохожденияЗаказа.Код КАК Код
|ИЗ
| ВТМинПриор КАК МинПриор
| ЛЕВОЕ СОЕДИНЕНИЕ ВТНомЭт КАК Этапы
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЭтапыПрохожденияЗаказа КАК ЭтапыПрохожденияЗаказа
| ПО Этапы.Этап = ЭтапыПрохожденияЗаказа.Ссылка
| ПО МинПриор.Приоритет = Этапы.Приоритет
|
|УПОРЯДОЧИТЬ ПО
| Порядок,Очередность";
"
Выбор конфигурации- возможность работы со штрих-кодомУчет затрат и платежей через посредников в УТ 10.3
Читают тему
(гостей: 1)