В управляемой форме есть основной реквизит Список, у списка произвольный запрос
ВЫБРАТЬ
СправочникДорнвалы.Наименование,
ДорнвалыНаСкладахОстатки.НомерПП,
ДорнвалыНаСкладахОстатки.Заказ
ИЗ
РегистрНакопления.ДорнвалыНаСкладах.Остатки(&Период, Склад = &Склад) КАК ДорнвалыНаСкладахОстатки
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Дорнвалы КАК СправочникДорнвалы
ПО ДорнвалыНаСкладахОстатки.Дорнвал = СправочникДорнвалы.Ссылка
ГДЕ
(НЕ ДорнвалыНаСкладахОстатки.Дорнвал В (&СписокДорнвал))
&СписокДорнвал - Это список значений
Проблема в том что условие "ДорнвалыНаСкладахОстатки.Дорнвал В (&СписокДорнвал)" берет из этого списка значения только первое значение и сравнивает с ним. Я проверял запрос в консоле он работает правильно.
Если данное условие "(НЕ ДорнвалыНаСкладахОстатки.Дорнвал В (&СписокДорнвал))" заменить
на "(НЕ ДорнвалыНаСкладахОстатки.Дорнвал = &СписокДорнвал)" то роботает идентично, результат тот же, берется только первое значение из списказначений, а остальные не используются
Как сделать так чтобы в произвольном запросе проверять находится для данный элемент в СпискеЗначений или нет?
ВЫБРАТЬ
СправочникДорнвалы.Наименование,
ДорнвалыНаСкладахОстатки.НомерПП,
ДорнвалыНаСкладахОстатки.Заказ
ИЗ
РегистрНакопления.ДорнвалыНаСкладах.Остатки(&Период, Склад = &Склад) КАК ДорнвалыНаСкладахОстатки
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Дорнвалы КАК СправочникДорнвалы
ПО ДорнвалыНаСкладахОстатки.Дорнвал = СправочникДорнвалы.Ссылка
ГДЕ
(НЕ ДорнвалыНаСкладахОстатки.Дорнвал В (&СписокДорнвал))
&СписокДорнвал - Это список значений
Проблема в том что условие "ДорнвалыНаСкладахОстатки.Дорнвал В (&СписокДорнвал)" берет из этого списка значения только первое значение и сравнивает с ним. Я проверял запрос в консоле он работает правильно.
Если данное условие "(НЕ ДорнвалыНаСкладахОстатки.Дорнвал В (&СписокДорнвал))" заменить
на "(НЕ ДорнвалыНаСкладахОстатки.Дорнвал = &СписокДорнвал)" то роботает идентично, результат тот же, берется только первое значение из списказначений, а остальные не используются
Как сделать так чтобы в произвольном запросе проверять находится для данный элемент в СпискеЗначений или нет?
По теме из базы знаний
Найденные решения
Все работает.
Нужно было передавть не список значений,а массив
ДорнвалыСЗ = Новый Массив;
//ДорнвалыСЗ = Новый СписокЗначений;
//Обходим все позиции табличной части Дорнвалы
Для Каждого СтрТЧДорнвалы Из ЭтаФорма.Объект.Дорнвалы Цикл
//Проверяем, чтобы в список значений не попала пустая строка
Если Не СтрТЧДорнвалы.Дорнвал.Пустая() Тогда
ДорнвалыСЗ.Добавить(СтрТЧДорнвалы.Дорнвал);
КонецЕсли;
КонецЦикла;
Нужно было передавть не список значений,а массив
ДорнвалыСЗ = Новый Массив;
//ДорнвалыСЗ = Новый СписокЗначений;
//Обходим все позиции табличной части Дорнвалы
Для Каждого СтрТЧДорнвалы Из ЭтаФорма.Объект.Дорнвалы Цикл
//Проверяем, чтобы в список значений не попала пустая строка
Если Не СтрТЧДорнвалы.Дорнвал.Пустая() Тогда
ДорнвалыСЗ.Добавить(СтрТЧДорнвалы.Дорнвал);
КонецЕсли;
КонецЦикла;
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Вот токай запрос тоже не работает эффект тот же
ВЫБРАТЬ
СправочникДорнвалы.Наименование,
ДорнвалыНаСкладахОстатки.НомерПП,
ДорнвалыНаСкладахОстатки.Заказ
ИЗ
РегистрНакопления.ДорнвалыНаСкладах.Остатки(
&Период,
Склад = &Склад
И ВЫБОР
КОГДА Дорнвал В (&СписокДорнвал)
ТОГДА ЛОЖЬ
ИНАЧЕ ИСТИНА
КОНЕЦ) КАК ДорнвалыНаСкладахОстатки
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Дорнвалы КАК СправочникДорнвалы
ПО ДорнвалыНаСкладахОстатки.Дорнвал = СправочникДорнвалы.Ссылка
ВЫБРАТЬ
СправочникДорнвалы.Наименование,
ДорнвалыНаСкладахОстатки.НомерПП,
ДорнвалыНаСкладахОстатки.Заказ
ИЗ
РегистрНакопления.ДорнвалыНаСкладах.Остатки(
&Период,
Склад = &Склад
И ВЫБОР
КОГДА Дорнвал В (&СписокДорнвал)
ТОГДА ЛОЖЬ
ИНАЧЕ ИСТИНА
КОНЕЦ) КАК ДорнвалыНаСкладахОстатки
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Дорнвалы КАК СправочникДорнвалы
ПО ДорнвалыНаСкладахОстатки.Дорнвал = СправочникДорнвалы.Ссылка
Так тоже не работает
ВЫБРАТЬ
СправочникДорнвалы.Наименование,
ДорнвалыНаСкладахОстатки.НомерПП,
ДорнвалыНаСкладахОстатки.Заказ
ИЗ
РегистрНакопления.ДорнвалыНаСкладах.Остатки(&Период, Склад = &Склад) КАК ДорнвалыНаСкладахОстатки
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Дорнвалы КАК СправочникДорнвалы
ПО ДорнвалыНаСкладахОстатки.Дорнвал = СправочникДорнвалы.Ссылка
ГДЕ
ВЫБОР
КОГДА ДорнвалыНаСкладахОстатки.Дорнвал В (&СписокДорнвал)
ТОГДА ЛОЖЬ
ИНАЧЕ ИСТИНА
КОНЕЦ
ВЫБРАТЬ
СправочникДорнвалы.Наименование,
ДорнвалыНаСкладахОстатки.НомерПП,
ДорнвалыНаСкладахОстатки.Заказ
ИЗ
РегистрНакопления.ДорнвалыНаСкладах.Остатки(&Период, Склад = &Склад) КАК ДорнвалыНаСкладахОстатки
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Дорнвалы КАК СправочникДорнвалы
ПО ДорнвалыНаСкладахОстатки.Дорнвал = СправочникДорнвалы.Ссылка
ГДЕ
ВЫБОР
КОГДА ДорнвалыНаСкладахОстатки.Дорнвал В (&СписокДорнвал)
ТОГДА ЛОЖЬ
ИНАЧЕ ИСТИНА
КОНЕЦ
(6)Суть не в соединении, а в том что в динамическом списке не правильно сравнивается со списком значений. Надо это как то обойти. Проверил запрос, еще раз написал процедуру на сервере, передал те же самые параметры которые отправлял в динамический список Запрос.Выполнить().Выгрузить() работает правильно, а в динамическом списке также берется и сравнивается только с первым элементом из списка значений.
В управляемой форме есть основной реквизит Список, у списка произвольный запрос, в произвольном запросе основной таблицей стоит справочник Дорнвалы. Если основную таблицу выбрать другую, тогда при выборе из этой "ФормаВыбораДорнвалов" в табличной части документа ПеремещениеДорнвалов не будет заполняться новая позиция.
Все работает.
Нужно было передавть не список значений,а массив
ДорнвалыСЗ = Новый Массив;
//ДорнвалыСЗ = Новый СписокЗначений;
//Обходим все позиции табличной части Дорнвалы
Для Каждого СтрТЧДорнвалы Из ЭтаФорма.Объект.Дорнвалы Цикл
//Проверяем, чтобы в список значений не попала пустая строка
Если Не СтрТЧДорнвалы.Дорнвал.Пустая() Тогда
ДорнвалыСЗ.Добавить(СтрТЧДорнвалы.Дорнвал);
КонецЕсли;
КонецЦикла;
Нужно было передавть не список значений,а массив
ДорнвалыСЗ = Новый Массив;
//ДорнвалыСЗ = Новый СписокЗначений;
//Обходим все позиции табличной части Дорнвалы
Для Каждого СтрТЧДорнвалы Из ЭтаФорма.Объект.Дорнвалы Цикл
//Проверяем, чтобы в список значений не попала пустая строка
Если Не СтрТЧДорнвалы.Дорнвал.Пустая() Тогда
ДорнвалыСЗ.Добавить(СтрТЧДорнвалы.Дорнвал);
КонецЕсли;
КонецЦикла;
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот