ВЫБОР, ТОГДА КОГДА в Запросе

1. ProGG3R 14.06.17 04:37 Сейчас в теме
Всем Здравствуйте!

ВЫБОР 
КОГДА ПартииТоваровНаСкладахОстатки.ДокументОприходования ССЫЛКА Документ.ПоступлениеТоваровУслуг
ТОГДА ВЫРАЗИТЬ(ПартииТоваровНаСкладахОстатки.ДокументОприходования КАК Документ.ПоступлениеТоваровУслуг).Контрагент 
КОГДА ПартииТоваровНаСкладахОстатки.ДокументОприходования ССЫЛКА Документ.ПоступлениеТоваровУслугВНТТ
ТОГДА ВЫРАЗИТЬ(ПартииТоваровНаСкладахОстатки.ДокументОприходования КАК Документ.ПоступлениеТоваровУслугВНТТ).Контрагент
ИНАЧЕ НЕОПРЕДЕЛЕНО
КОНЕЦ КАК Номенклатура.ОсновнойПоставщик



При попытке написать условие в параметрах виртуальной таблицы ВЫБОР, ТОГДА, КОГДА пишет (6,7) ожидается выражение ")" , где то ковычку пропустил? просто я вроде все пересмотрел, вроде норм все.
collider; +1 Ответить
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. iskdv 14.06.17 05:48 Сейчас в теме
не надо так "КАК Номенклатура.ОсновнойПоставщик" -- лучше "КАК ОсновнойПоставщик"
ivangrant; Vitaly1C8; vz1987; SyachinS; boln; +5 Ответить
3. pm74 203 14.06.17 07:39 Сейчас в теме
"выразить" обычно используется когда реквизит составного типа
4. j3qq4 14.06.17 08:02 Сейчас в теме
ВЫБОР 
КОГДА ПартииТоваровНаСкладахОстатки.ДокументОприходования ССЫЛКА Документ.ПоступлениеТоваровУслуг 
ТОГДА ПартииТоваровНаСкладахОстатки.ДокументОприходования.Контрагент 
КОГДА ПартииТоваровНаСкладахОстатки.ДокументОприходования ССЫЛКА Документ.ПоступлениеТоваровУслугВНТТ 
ТОГДА ПартииТоваровНаСкладахОстатки.ДокументОприходования.Контрагент 
ИНАЧЕ НЕОПРЕДЕЛЕНО 
КОНЕЦ КАК ОсновнойПоставщик
gybson; Vitaly1C8; Amadeuc404; +3 Ответить
5. ProGG3R 14.06.17 08:54 Сейчас в теме
Такс...эту проблему разрешил, смотрите суть в следующем, есть обработка (Скрин 1), я для нее написал запрос:
ВЫБРАТЬ
	ТоварыВНТТОстатки.Номенклатура.Артикул КАК Артикул,
	ТоварыВНТТОстатки.Номенклатура,
	ТоварыВНТТОстатки.ЦенаВРознице КАК РозничнаяЦена,
	ТоварыВНТТОстатки.СерияНоменклатуры,
	ТоварыВНТТОстатки.СерияНоменклатуры.ювШтрихкодПоставщика КАК ШтрихкодПоставщика,
	ТоварыВНТТОстатки.Склад КАК Магазин,
	ТоварыВНТТОстатки.КоличествоОстаток КАК Количество,
	ТоварыВНТТОстатки.ювВесОстаток КАК Вес,
	ТоварыВНТТОстатки.Организация,
	ТоварыВНТТОстатки.Склад.ТипЦенРозничнойТорговли.ВалютаЦены КАК Валюта,
	ТоварыВНТТОстатки.СерияНоменклатуры.ювРазмер КАК Размер,
	ВЫБОР
		КОГДА ПартииТоваровНаСкладахОстатки.ДокументОприходования ССЫЛКА Документ.ПоступлениеТоваровУслуг
			ТОГДА ВЫРАЗИТЬ(ПартииТоваровНаСкладахОстатки.ДокументОприходования КАК Документ.ПоступлениеТоваровУслуг).Контрагент
		КОГДА ПартииТоваровНаСкладахОстатки.ДокументОприходования ССЫЛКА Документ.ПоступлениеТоваровУслугВНТТ
			ТОГДА ВЫРАЗИТЬ(ПартииТоваровНаСкладахОстатки.ДокументОприходования КАК Документ.ПоступлениеТоваровУслугВНТТ).Контрагент
		ИНАЧЕ НЕОПРЕДЕЛЕНО
	КОНЕЦ КАК Поставщик
ИЗ
	РегистрНакопления.ПартииТоваровНаСкладах.Остатки(, {(Склад)}) КАК ПартииТоваровНаСкладахОстатки
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВНТТ.Остатки(, {(Склад)}) КАК ТоварыВНТТОстатки
		ПО ПартииТоваровНаСкладахОстатки.Склад = ТоварыВНТТОстатки.Склад
			И ПартииТоваровНаСкладахОстатки.Номенклатура = ТоварыВНТТОстатки.Номенклатура
			И ПартииТоваровНаСкладахОстатки.ХарактеристикаНоменклатуры = ТоварыВНТТОстатки.ХарактеристикаНоменклатуры
			И ПартииТоваровНаСкладахОстатки.СерияНоменклатуры = ТоварыВНТТОстатки.СерияНоменклатуры
			И ПартииТоваровНаСкладахОстатки.СерияНоменклатуры.ювРазмер = ТоварыВНТТОстатки.СерияНоменклатуры.ювРазмер
ГДЕ
	ТоварыВНТТОстатки.КоличествоОстаток > 0
	И ТоварыВНТТОстатки.ювВесОстаток >= 0
{ГДЕ
	ТоварыВНТТОстатки.Организация.*,
	(ВЫБОР
			КОГДА ПартииТоваровНаСкладахОстатки.ДокументОприходования ССЫЛКА Документ.ПоступлениеТоваровУслуг
				ТОГДА ВЫРАЗИТЬ(ПартииТоваровНаСкладахОстатки.ДокументОприходования КАК Документ.ПоступлениеТоваровУслуг).Контрагент
			КОГДА ПартииТоваровНаСкладахОстатки.ДокументОприходования ССЫЛКА Документ.ПоступлениеТоваровУслугВНТТ
				ТОГДА ВЫРАЗИТЬ(ПартииТоваровНаСкладахОстатки.ДокументОприходования КАК Документ.ПоступлениеТоваровУслугВНТТ).Контрагент
			ИНАЧЕ НЕОПРЕДЕЛЕНО
		КОНЕЦ).* КАК Контрагент,
	ТоварыВНТТОстатки.СерияНоменклатуры.ювРазмер КАК Размер,
	ТоварыВНТТОстатки.СерияНоменклатуры.ювШтрихкодПоставщика КАК ШтрихкодПоставщика,
	ТоварыВНТТОстатки.Номенклатура.Артикул КАК Артикул,
	ТоварыВНТТОстатки.СерияНоменклатуры.*,
	ТоварыВНТТОстатки.Склад.*,
	ТоварыВНТТОстатки.Номенклатура.*}
Показать

Вроде в запросе ошибок нет, фильтрацию сделал по поставщику в обработке, при нажатии Выгрузить данные -> Пишет успешно выгружены данные-> А самого файла нету, запрос свой проверял в Консоле Запросов отрабатывает, только не фильтрует, а когда пытаюсь посмотреть Выгруженные данные в обработке показывает следующее (скрин 2), т.е. я так понимаю в выгружаемых данных просто пусто и вот вопрос в следующем, косяк в самой обработке надо искать, либо же я запрос написал некорректно ?
Прикрепленные файлы:
6. BackinSoda 14.06.17 09:00 Сейчас в теме
(5) а посмотреть результат запроса с фильтром и без фильтра?) Особенно при нажатии на выгрузку
8. ProGG3R 14.06.17 09:22 Сейчас в теме
(6) Пробовал с фильтром и без, результат один и тот же
7. iskdv 14.06.17 09:02 Сейчас в теме
ПостроительОтчета (ReportBuilder)
Результат (Result)
Использование:

Только чтение.
Описание:

Тип: РезультатЗапроса.
Результат выполнения запроса для формирования отчета.

Доступность:

Сервер, толстый клиент, внешнее соединение.
9. Новичок1с 4 18.11.20 08:36 Сейчас в теме
Доброго дня.
Помогите пожалуйста разобраться.
Когда в Выбор ЛС Заполнен, то почему-то подхватывается условие По дате, хотя мне нужно сделать так, чтобы по дате и по улице попадали документы только в том случае, если ЛС пустой.

|	И ВЫБОР
		| КОГДА &ЛС = ЗНАЧЕНИЕ(Справочник.КУ_ЛицевыеСчета.ПустаяСсылка)
		|	    ТОГДА Документ.Дата >= &НачалоПериода
		|     И Документ.Дата <= &КонецПериода
		|								
		|И ВЫБОР
		|	КОГДА &Улица = ЗНАЧЕНИЕ(Справочник.КУ_ЖилыеЗдания.ПустаяСсылка)
		|	    ТОГДА ИСТИНА
		|	КОГДА &ЭтаГруппа = 1
		|	    ТОГДА Документ.Ссылка.ЛицевойСчет.Здание.Родитель = &Улица
		|	КОГДА &ЭтаГруппа = 0
		|	    ТОГДА Документ.Ссылка.ЛицевойСчет.Здание = &Улица
		|    КОНЕЦ
		|ИНАЧЕ Документ.Ссылка.ЛицевойСчет = &ЛС
		|КОНЕЦ

Показать



Как это верно сделать??
10. Новичок1с 4 09.12.20 08:48 Сейчас в теме
(9)

нашла ошибку.

Моя невнимательность.
Я сделала 2 условия на дату док.
1 перед
Выбор КОГДА &ЛС = ЗНАЧЕНИЕ(Справочник.КУ_ЛицевыеСчета.ПустаяСсылка)
а второе после.



Невнимательность- это причина большинства моих косяков.
11. Новичок1с 4 06.08.21 09:01 Сейчас в теме
Доброго дня.

Как можно дописать в Выборе ещё одно значение Тогда
|КОГДА КУ_ИсковоеЗаявление.Ссылка.СуммаИска >= &СуммаИска
|ТОГДА 1 
|КОГДА  КУ_ИсковоеЗаявление.Ссылка.СуммаИска <= &СуммаИска
|ТОГДА 1 
//Это получается

	  
//Вот тут вопрос, когда несколько полей должно быть
|ТОГДА 1   И КУ_ИсковоеЗаявление.Ссылка.Госпошлина
Иначе
 |ТОГДА 2   И ( КУ_ИсковоеЗаявление.Ссылка.Госпошлина/2)
Показать


Как это можно реализовать?
12. Sashares 33 06.08.21 10:10 Сейчас в теме
(11)Сделать еще один Выбор
Новичок1с; +1 Ответить
13. Новичок1с 4 06.08.21 10:22 Сейчас в теме
(12)
Понятно, думала, что можно в 1 выборе как-нибудь сделать.
14. Sashares 33 06.08.21 10:40 Сейчас в теме
(13)Выбор в зависимости от условий может выбрать разные значения, но выбранное значение всегда будет одно, также, как если выбор не использовать.

Выбрать
ТТ.Ссылка КАК Ссылка,
Выбор 
Когда &Условие = Истина
Тогда ТТ.Поле1
Иначе ТТ.Поле2
Конец КАК НужноеПоле
...


Выбираем Ссылку и в зависимости от условия - Поле1 или Поле2.
Соответственно, если надо в результате получить еще поля - то добавляем в секцию Выбрать то что нужно.
15. Новичок1с 4 06.08.21 10:54 Сейчас в теме
(14)
А так можно сделать??

2 условия при выборе
КОГДА КУ_ИсковоеЗаявление.Ссылка.СуммаИска <= &СуммаИска
И &ВсегдаИск = 1

Конец КАК НужноеПоле


И как дальше сделать выбор по значению Нужное поле //Тут возникает ошибка, что Нужное поле не найдено.
Выбор Когда Нужное поле = 1 Тогда


Или мы заново делаем такой же выбор??
КОГДА КУ_ИсковоеЗаявление.Ссылка.СуммаИска <= &СуммаИска
И &ВсегдаИск = 1

Тогда КУ_ИсковоеЗаявление.Ссылка.Госпошлина

Конец КАК СуммаГоспошлины
16. Sashares 33 06.08.21 11:06 Сейчас в теме
(15)
А так можно сделать??

КОГДА КУ_ИсковоеЗаявление.Ссылка.СуммаИска <= &СуммаИска
И &ВсегдаИск = 1
ТОГДА ХХХ

Конец КАК НужноеПоле


Да, может быть несколько условий в секции КОГДА. После КОГДА всегда должно быть то, что возвращается, если условия в КОГДА выполнены, то есть секция ТОГДА ХХХ, где ХХХ - возвращаемое значение.


(15)
И как дальше сделать выбор по значению Нужное поле //Тут возникает ошибка, что Нужное поле не найдено.

Выбор Когда Нужное поле = 1 Тогда


В одной и той же выборке нельзя сравнивать значение поля, которое является результатом Выбор. Поэтому, если нужно в этой же выборке получить другое поле с такими же условиями, придется дублировать всю секцию Выбор.
То есть в текущей выборке - делаем еще такой же выбор.
 
Выбрать
ТТ.Ссылка КАК Ссылка,
Выбор 
Когда &Условие = Истина
Тогда ТТ.Поле1
Иначе ТТ.Поле2
Конец КАК НужноеПоле,
Выбор 
Когда &Условие = Истина
Тогда ТТ.Поле3
Иначе ТТ.Поле4
Конец КАК ЕщеОдноНужноеПоле
Показать


Но если поместить во временную таблицу, то в следующем запросе пакетного запроса уже можно будет его использовать в Выборе.
 
Выбрать
ТТ.Ссылка КАК Ссылка,
Выбор 
Когда &Условие = Истина
Тогда ТТ.Поле1
Иначе ТТ.Поле2
Конец КАК НужноеПоле
...
Поместить МояВременнаяТаблица
...
;
////////////////////////////
Выбрать
МояВременнаяТаблица.Ссылка
Выбор 
Когда МояВременнаяТаблица.НужноеПоле = Истина
Тогда "1"
Иначе "2"
Конец КАК ЕщеОдноНужноеПоле
Из МояВременнаяТаблица КАК МояВременнаяТаблица
Показать
Новичок1с; +1 Ответить
17. Новичок1с 4 06.08.21 11:13 Сейчас в теме
(16)

Понятно.
Благодарю Вас за разъяснение.
18. Sashares 33 06.08.21 11:13 Сейчас в теме
19. Amper_San 14.10.22 12:21 Сейчас в теме
Вроде ошибок синтаксических нет, но в поле РеальныйИтог не пишет ничего
ВЫБОР
		КОГДА ВозвратТоваровОтПокупателя.Ссылка = NULL
			ТОГДА РеализацияТоваровУслугТовары.Сумма
		ИНАЧЕ РеализацияТоваровУслугТовары.Сумма - ВозвратТоваровОтПокупателяТовары.Сумма
	КОНЕЦ КАК РеальныйИтог
20. tamidi 8 14.10.22 12:37 Сейчас в теме
(19)Вы думаете этого куска запроса будет достаточно для ответа вам?
21. Prikum 3 14.10.22 12:42 Сейчас в теме
(19)
КОГДА ВозвратТоваровОтПокупателя.Ссылка = NULL
Условие никогда не выполняется, поэтому если ВозвратТоваровОтПокупателяТовары.Сумма есть NULL, то и реальныйИтог будет пусто.
22. Prikum 3 14.10.22 12:44 Сейчас в теме
(19)
ВЫБОР
КОГДА ВозвратТоваровОтПокупателя.Ссылка = NULL
ТОГДА РеализацияТоваровУслугТовары.Сумма
ИНАЧЕ РеализацияТоваровУслугТовары.Сумма - ВозвратТоваровОтПокупателяТовары.Сумма
КОНЕЦ КАК РеальныйИтог

Надо сделать так:
 ВЫБОР
КОГДА ВозвратТоваровОтПокупателя.Ссылка ЕСТЬ NULL
ТОГДА РеализацияТоваровУслугТовары.Сумма
ИНАЧЕ РеализацияТоваровУслугТовары.Сумма - ВозвратТоваровОтПокупателяТовары.Сумма
КОНЕЦ КАК РеальныйИтог
Amper_San; +1 Ответить
23. user1826630 14.10.22 12:45 Сейчас в теме
Че тут? Съезд некрофилов?
24. Amper_San 14.10.22 16:42 Сейчас в теме
Ахах, ребят помогите привести схему в нормальное состояние:D
ВЫБОР
КОГДА ВозвратТоваровОтПокупателя.Ссылка ЕСТЬ NULL И ВозвратТечиОтПокупателя.Ссылка ЕСТЬ NULL
     ТОГДА РеализацияТоваровУслугТовары.Сумма
     ИНАЧЕ ВЫБОР 
                  КОГДА ВозвратТечиОтПокупателя.Ссылка ЕСТЬ NULL
			ТОГДА РеализацияТоваровУслугТовары.Сумма - ВозвратТоваровОтПокупателя.Сумма
			ИНАЧЕ ВЫБОР 
                                     КОГДА ВозвратТоваровОтПокупателя.Ссылка ЕСТЬ NULL
				           ТОГДА РеализацияТоваровУслугТовары.Сумма - ВозвратТечиОтПокупателя.Сумма
					   ИНАЧЕ РеализацияТоваровУслугТовары.Сумма - ВозвратТечиОтПокупателя.Сумма - ВозвратТоваровОтПокупателя.Сумма
	    			     КОНЕЦ КАК РеальныйИтог
		   КОНЕЦ КАК РеальныйИтог 		  
КОНЕЦ КАК РеальныйИтог
Показать
25. tamidi 8 14.10.22 16:47 Сейчас в теме
(24) ну как минимум псевдоним один раз присваивайте
КОНЕЦ
КОНЕЦ
КОНЕЦ КАК РеальныйИтог
Amper_San; +1 Ответить
26. Prikum 3 14.10.22 21:47 Сейчас в теме
(24)Откройте для себя Функцию ЕстьNULL(), тогда станет проще:
РеализацияТоваровУслугТовары.Сумма - ЕстьNULL(ВозвратТоваровОтПокупателяТовары.Сумма,0) - ЕстьNULL(ВозвратТечиОтПокупателя.Сумма,0)
 КАК РеальныйИтог
Amper_San; +1 Ответить
27. Amper_San 14.10.22 22:17 Сейчас в теме
(26)Еще раз спасибо, только начинаю постигать 1с, довольно непривычно после C# и С++, по этому частенько ещё мелькать на форуме буду. Ну и плюс ориентация на ведение бухгалтерии со своей спецификой)
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот