Ошибка в запросе

1. user87385463 29.11.22 12:45 Сейчас в теме
Всем привет. Почему не видит список отбора?
Или у условии не могу такое писать?
|ГДЕ
| ВЫБОР
| КОГДА ТоварыНаСкладахОстатки.Склад В (&СписокОтбораСклады)
| ТОГДА СертификацияНоменклатурыСрезПоследних.СостояниеСертификации = ЗНАЧЕНИЕ(Перечисление.СостоянияСертификацииНоменклатуры.ЕстьБезРазрешения)
| КОНЕЦ

Ошибка:
по причине:
{(56, 33)}: Не задано значение параметра "СписокОтбораСклады"
ТоварыНаСкладахОстатки.Склад В(<<?>>&СписокОтбораСклады)



СписокОтбораСклады = Новый СписокЗначений;

Дальше устанавливаю значения
Запрос.УстановитьПараметр("СписокОтбораCклады",СписокОтбораСклады);


СписокОтбораСклады не пустой. Почему же ошибка?
По теме из базы знаний
Найденные решения
14. lmnlmn 69 29.11.22 13:33 Сейчас в теме
(13) А ларчик просто открывался... У вас при установке параметра "...Склады" с английской буквы начинаются, а в запросе - с русской. Исправьте.
Anchoret; +1 Ответить
3. beldieff 29.11.22 12:56 Сейчас в теме
(1)
Не задано значение параметра "СписокОтбораСклады"
Это однозначно ошибка не установленных параметров. Может в имени параметра "C" вместо "С"? :) проще чз ктрл+ц ктрл+в скопировать переменную из кода установки параметра в текст запроса.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. VictorRGB2 14 29.11.22 12:55 Сейчас в теме
(1) попробуйте заменить список значений на массив
5. user87385463 29.11.22 13:02 Сейчас в теме
3. beldieff 29.11.22 12:56 Сейчас в теме
(1)
Не задано значение параметра "СписокОтбораСклады"
Это однозначно ошибка не установленных параметров. Может в имени параметра "C" вместо "С"? :) проще чз ктрл+ц ктрл+в скопировать переменную из кода установки параметра в текст запроса.
6. user87385463 29.11.22 13:02 Сейчас в теме
17. lmnlmn 69 29.11.22 13:37 Сейчас в теме
(16)
(6)

Никому нельзя верить))
18. user87385463 29.11.22 13:39 Сейчас в теме
(17)....... Очень извиняюсь. действительно в этом ошибка. Спасибо!
4. lmnlmn 69 29.11.22 12:58 Сейчас в теме
(1) Вообще вы должны были поймать следующую ошибку:
Операция не разрешена в предложении "ГДЕ"
Можно весь кусок кода для лучшего понимания?
7. user87385463 29.11.22 13:03 Сейчас в теме
(4)
азрешена в предложении "ГДЕ"



|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ТоварыНаСкладахОстатки.Склад.Код КАК КодСклада,
| ТоварыНаСкладахОстатки.Номенклатура.Код КАК КодНоменклатуры,
| ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоУПП,
| 0 КАК КоличествоБУХ,
| ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоРазница,
| 0 КАК СуммаБУХ
|ПОМЕСТИТЬ ВТ_ОстаткиУППиБУХНеСГРУПП
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(&ДатаКон, ДЕНЬ), СЕКУНДА, 1), ) КАК ТоварыНаСкладахОстатки
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СертификацияНоменклатуры.СрезПоследних КАК СертификацияНоменклатурыСрезПоследних
| ПО ТоварыНаСкладахОстатки.СерияНоменклатуры = СертификацияНоменклатурыСрезПоследних.СерияНоменклатуры
|ГДЕ
| ВЫБОР
| КОГДА ТоварыНаСкладахОстатки.Склад В (&СписокОтбораСклады)
| ТОГДА СертификацияНоменклатурыСрезПоследних.СостояниеСертификации = ЗНАЧЕНИЕ(Перечисление.СостоянияСертификацииНоменклатуры.ЕстьБезРазрешения)
| КОНЕЦ
Показать
8. beldieff 29.11.22 13:08 Сейчас в теме
(6)
(7)
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ТоварыНаСкладахОстатки.Склад.Код КАК КодСклада,
| ТоварыНаСкладахОстатки.Номенклатура.Код КАК КодНоменклатуры,
| ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоУПП,
| 0 КАК КоличествоБУХ,
| ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоРазница,
| 0 КАК СуммаБУХ
|ПОМЕСТИТЬ ВТ_ОстаткиУППиБУХНеСГРУПП
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(&ДатаКон, ДЕНЬ), СЕКУНДА, 1), ) КАК ТоварыНаСкладахОстатки
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СертификацияНоменклатуры.СрезПоследних КАК СертификацияНоменклатурыСрезПоследних
| ПО ТоварыНаСкладахОстатки.СерияНоменклатуры = СертификацияНоменклатурыСрезПоследних.СерияНоменклатуры
|ГДЕ
| ВЫБОР
| КОГДА ТоварыНаСкладахОстатки.Склад В (&СписокОтбораСклады)
| ТОГДА СертификацияНоменклатурыСрезПоследних.СостояниеСертификации = ЗНАЧЕНИЕ(Перечисление.СостоянияСертификацииНоменклатуры.ЕстьБезРазрешения)
| КОНЕЦ
Показать


Весь код от Запрос = новый Запрос; до Запрос.Выполнить()
9. lmnlmn 69 29.11.22 13:14 Сейчас в теме
(7)
|ГДЕ
| ВЫБОР
| КОГДА ТоварыНаСкладахОстатки.Склад В (&СписокОтбораСклады)
| ТОГДА СертификацияНоменклатурыСрезПоследних.СостояниеСертификации = ЗНАЧЕНИЕ(Перечисление.СостоянияСертификацииНоменклатуры.ЕстьБезРазрешения)


В любом случае, вот так точно делать не следует. Полагаю что достаточно
| ГДЕ ТоварыНаСкладахОстатки.Склад В (&СписокОтбораСклады)"
либо надо переформулировать условие
| ГДЕ
| ТоварыНаСкладахОстатки.Склад В (&СписокОтбораСклады)
| И СертификацияНоменклатурыСрезПоследних.СостояниеСертификации = ЗНАЧЕНИЕ(Перечисление.СостоянияСертификацииНоменклатуры.ЕстьБезРазрешения)


P.S. В секции "ГДЕ" "ВЫБОР" с логическим выражением работает. Тем не менее, у меня аналогичный пример со списком значений отработал без ошибок. Видимо что-то в коде.
10. user87385463 29.11.22 13:25 Сейчас в теме
(9)
ОГДА ТоварыНаСкладахОстатки.Склад В (&СписокОтбораСклады)" либо надо переформулировать условие.


Мне нужно чтобы по списку складов был отбор в регистре с разрешением. Иначе не пойму как сделать.
Можно было бы занести в параметры, но там нет доступа к регистру.
11. lmnlmn 69 29.11.22 13:26 Сейчас в теме
(10)
| ГДЕ
| ТоварыНаСкладахОстатки.Склад В (&СписокОтбораСклады)
| И СертификацияНоменклатурыСрезПоследних.СостояниеСертификации = ЗНАЧЕНИЕ(Перечисление.СостоянияСертификацииНоменклатуры.ЕстьБезРазрешения)
13. user87385463 29.11.22 13:32 Сейчас в теме
(11)
варыНаСкладахОстатки.Склад В (&СписокОтбораСклады)
| И СертификацияНоменклатурыСрезПоследних.СостояниеСертификации = ЗНАЧЕНИЕ(Перечисление.СостоянияСертификацииНоменклатуры.ЕстьБезРазрешения)


Так тоже ошибка
14. lmnlmn 69 29.11.22 13:33 Сейчас в теме
(13) А ларчик просто открывался... У вас при установке параметра "...Склады" с английской буквы начинаются, а в запросе - с русской. Исправьте.
Anchoret; +1 Ответить
12. user87385463 29.11.22 13:26 Сейчас в теме
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	ОстаткиБухБазы.КодСклада,
	ОстаткиБухБазы.НаименованиеСклада,
	ОстаткиБухБазы.Склад,
	ОстаткиБухБазы.КодНоменклатуры,
	ОстаткиБухБазы.НаименованиеНоменклатуры,
	ОстаткиБухБазы.Номенклатура,
	ОстаткиБухБазы.Количество,
	ОстаткиБухБазы.Сумма
ПОМЕСТИТЬ ВТ_ОстаткиБух
ИЗ
	&ОстаткиБухБазы КАК ОстаткиБухБазы
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ_ОстаткиБух.КодСклада,
	ВТ_ОстаткиБух.НаименованиеСклада
ПОМЕСТИТЬ ВТ_СкладыБух
ИЗ
	ВТ_ОстаткиБух КАК ВТ_ОстаткиБух

СГРУППИРОВАТЬ ПО
	ВТ_ОстаткиБух.КодСклада,
	ВТ_ОстаткиБух.НаименованиеСклада
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ПартииТоваровНаСкладахОстатки.Номенклатура.Код КАК КодНоменклатуры,
	ВЫБОР
		КОГДА ПартииТоваровНаСкладахОстатки.КоличествоОстаток = 0
			ТОГДА 0
		ИНАЧЕ ПартииТоваровНаСкладахОстатки.СтоимостьОстаток / ПартииТоваровНаСкладахОстатки.КоличествоОстаток
	КОНЕЦ КАК Цена,
	ПартииТоваровНаСкладахОстатки.Склад
ПОМЕСТИТЬ ВТ_ЦеныНоменклатуры
ИЗ
	РегистрНакопления.ПартииТоваровНаСкладах.Остатки(ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(&ДатаКон, ДЕНЬ), СЕКУНДА, 1), ) КАК ПартииТоваровНаСкладахОстатки
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	ТоварыНаСкладахОстатки.Склад.Код КАК КодСклада,
	ТоварыНаСкладахОстатки.Номенклатура.Код КАК КодНоменклатуры,
	ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоУПП,
	0 КАК КоличествоБУХ,
	ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоРазница,
	0 КАК СуммаБУХ
ПОМЕСТИТЬ ВТ_ОстаткиУППиБУХНеСГРУПП
ИЗ
	РегистрНакопления.ТоварыНаСкладах.Остатки(ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(&ДатаКон, ДЕНЬ), СЕКУНДА, 1), ) КАК ТоварыНаСкладахОстатки
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СертификацияНоменклатуры.СрезПоследних КАК СертификацияНоменклатурыСрезПоследних
		ПО ТоварыНаСкладахОстатки.СерияНоменклатуры = СертификацияНоменклатурыСрезПоследних.СерияНоменклатуры
ГДЕ
	ВЫБОР
			КОГДА ТоварыНаСкладахОстатки.Склад В (&СписокОтбораСклады)
				ТОГДА СертификацияНоменклатурыСрезПоследних.СостояниеСертификации = ЗНАЧЕНИЕ(Перечисление.СостоянияСертификацииНоменклатуры.ЕстьБезРазрешения)
		КОНЕЦ

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	ТоварыКПолучениюОстатки.Склад.Код,
	ТоварыКПолучениюОстатки.Номенклатура.Код,
	-ТоварыКПолучениюОстатки.КоличествоОстаток,
	0,
	-ТоварыКПолучениюОстатки.КоличествоОстаток,
	0
ИЗ
	РегистрНакопления.ТоварыКПолучениюНаСклады.Остатки(ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(&ДатаКон, ДЕНЬ), СЕКУНДА, 1), ) КАК ТоварыКПолучениюОстатки

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	ВТ_ОстаткиБух.КодСклада,
	ВЫБОР
		КОГДА ПОДСТРОКА(ВТ_ОстаткиБух.КодНоменклатуры, 1, 1) = "Н"
			ТОГДА "0" + ПОДСТРОКА(ВТ_ОстаткиБух.КодНоменклатуры, 2, 10)
		ИНАЧЕ ВТ_ОстаткиБух.КодНоменклатуры
	КОНЕЦ,
	0,
	ВТ_ОстаткиБух.Количество,
	-ВТ_ОстаткиБух.Количество,
	ВТ_ОстаткиБух.Сумма
ИЗ
	ВТ_ОстаткиБух КАК ВТ_ОстаткиБух
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ_ОстаткиУППиБУХНеСГРУПП.КодСклада,
	ВТ_ОстаткиУППиБУХНеСГРУПП.КодНоменклатуры,
	СУММА(ВТ_ОстаткиУППиБУХНеСГРУПП.КоличествоУПП) КАК КоличествоУПП,
	СУММА(ВТ_ОстаткиУППиБУХНеСГРУПП.КоличествоБУХ) КАК КоличествоБУХ,
	СУММА(ВТ_ОстаткиУППиБУХНеСГРУПП.КоличествоРазница) КАК КоличествоРазница,
	СУММА(ВТ_ОстаткиУППиБУХНеСГРУПП.СуммаБУХ) КАК СуммаБУХ
ПОМЕСТИТЬ ВТ_ОстаткиУППиБУХбезНаименований
ИЗ
	ВТ_ОстаткиУППиБУХНеСГРУПП КАК ВТ_ОстаткиУППиБУХНеСГРУПП

СГРУППИРОВАТЬ ПО
	ВТ_ОстаткиУППиБУХНеСГРУПП.КодСклада,
	ВТ_ОстаткиУППиБУХНеСГРУПП.КодНоменклатуры
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ_ОстаткиУППиБУХбезНаименований.КодСклада,
	ЕСТЬNULL(СкладыУПП.Наименование, "") КАК НаименованиеСкладаУПП,
	ЕСТЬNULL(СкладыБУХ.НаименованиеСклада, "") КАК НаименованиеСкладаБУХ,
	ЕСТЬNULL(СкладыУПП.Ссылка, ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)) КАК Склад,
	ВТ_ОстаткиУППиБУХбезНаименований.КодНоменклатуры КАК КодНоменклатуры,
	ЕСТЬNULL(НоменклатураБУХ.КодНоменклатуры, "") КАК КодНоменклатурыБУХ,
	ЕСТЬNULL(НоменклатураУПП.Наименование, "") КАК НаименованиеНоменклатурыУПП,
	ЕСТЬNULL(НоменклатураБУХ.НаименованиеНоменклатуры, "") КАК НаименованиеНоменклатурыБУХ,
	ЕСТЬNULL(НоменклатураУПП.Ссылка, ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)) КАК Номенклатура,
	ВТ_ОстаткиУППиБУХбезНаименований.КоличествоУПП,
	ВТ_ОстаткиУППиБУХбезНаименований.КоличествоБУХ,
	ВТ_ОстаткиУППиБУХбезНаименований.КоличествоРазница,
	ЕСТЬNULL(ВТ_ЦеныНоменклатуры.Цена, 0) * ВТ_ОстаткиУППиБУХбезНаименований.КоличествоУПП КАК СуммаУПП,
	ВТ_ОстаткиУППиБУХбезНаименований.СуммаБУХ,
	ЕСТЬNULL(ВТ_ЦеныНоменклатуры.Цена, 0) * ВТ_ОстаткиУППиБУХбезНаименований.КоличествоУПП - ВТ_ОстаткиУППиБУХбезНаименований.СуммаБУХ КАК СуммаРазница
ИЗ
	ВТ_ОстаткиУППиБУХбезНаименований КАК ВТ_ОстаткиУППиБУХбезНаименований
		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Склады КАК СкладыУПП
		ПО ВТ_ОстаткиУППиБУХбезНаименований.КодСклада = СкладыУПП.Код
		ЛЕВОЕ СОЕДИНЕНИЕ ВТ_СкладыБух КАК СкладыБУХ
		ПО ВТ_ОстаткиУППиБУХбезНаименований.КодСклада = СкладыБУХ.КодСклада
		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК НоменклатураУПП
		ПО ВТ_ОстаткиУППиБУХбезНаименований.КодНоменклатуры = НоменклатураУПП.Код
		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
			ВТ_ОстаткиБух.НаименованиеНоменклатуры КАК НаименованиеНоменклатуры,
			ВТ_ОстаткиБух.КодНоменклатуры КАК КодНоменклатуры
		ИЗ
			ВТ_ОстаткиБух КАК ВТ_ОстаткиБух) КАК НоменклатураБУХ
		ПО (ВТ_ОстаткиУППиБУХбезНаименований.КодНоменклатуры = ВЫБОР
				КОГДА ПОДСТРОКА(НоменклатураБУХ.КодНоменклатуры, 1, 1) = "Н"
					ТОГДА "0" + ПОДСТРОКА(НоменклатураБУХ.КодНоменклатуры, 2, 10)
				ИНАЧЕ НоменклатураБУХ.КодНоменклатуры
			КОНЕЦ)
		ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ЦеныНоменклатуры КАК ВТ_ЦеныНоменклатуры
		ПО ВТ_ОстаткиУППиБУХбезНаименований.КодНоменклатуры = ВТ_ЦеныНоменклатуры.КодНоменклатуры
			И (СкладыУПП.Ссылка = ВТ_ЦеныНоменклатуры.Склад)
Показать
15. beldieff 29.11.22 13:34 Сейчас в теме
(12)
Не задано значение параметра "СписокОтбораСклады"
Говорит что не установлен параметр по тексту запроса совсем не очевидно каким образом устанавливаются параметры запроса.
Весь код от Запрос = новый Запрос; до Запрос.Выполнить()
16. beldieff 29.11.22 13:35 Сейчас в теме
Оставьте свое сообщение

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