Имя: Пароль:
1C
1С v8
Динамический список, произвольный запрос и параметр - массив
,
0 Московский
 
28.03.16
16:53
Собственно к стандартному тексту запроса добавил:

ГДЕ ДокументРеализацияТоваровУслуг.Контрагент.ИНН В(&МассивИНН)

и установил параметр:

Список.Параметры.УстановитьЗначениеПараметра("МассивИНН", МассивИНН)

Но одноэска ругается:

Ошибка при выполнении запроса. Ошибка при выполнении запроса.
по причине:
Ошибка получения данных
по причине:
Ошибка создания набора данных "НаборДанныхДинамическогоСписка"
по причине:
Ошибка при исполнении запроса набора данных
по причине:
{(58, 50)}: Не задано значение параметра "МассивИНН"
ДокументРеализацияТоваровУслуг.Контрагент.ИНН В(<<?>>&МассивИНН)

В отладчике вижу, что "Список.Параметры.Элементы" значение установлено, вижу содержимое моего массива. Что делать?
1 Fragster
 
гуру
28.03.16
16:54
в ПриСозданииНаСервере?
2 Московский
 
28.03.16
16:55
(1) Нет, по действию пользователя на управляемой форме.
3 SadrArt
 
28.03.16
16:55
А что содержится в массиве?
4 Московский
 
28.03.16
16:56
(3) В массиве строки - ИНН контрагентов.
5 Fragster
 
гуру
28.03.16
16:58
(2) а надо в ПриСозданииНаСервере хотя бы пустой массив запихать
6 SadrArt
 
28.03.16
16:58
А сколько на форме ДС? Может не на тот ДС устанавливаете параметр?
7 hhhh
 
28.03.16
16:59
(4) что такое МассивИНН?  Переменная?
8 Московский
 
28.03.16
16:59
(6) Один стандартный ДС. БП 3.0.
(7) Да, массив строк.
9 sash-ml
 
28.03.16
17:03
список значений можно, а таблицы значений нельзя параметром передавать в динамический список, массивы вроде как тоже нельзя.
10 Fragster
 
гуру
28.03.16
17:09
(9) массив работает
11 mikecool
 
28.03.16
17:10
переписать запрос на
ГДЕ &МассивИНН = Неопределено Или ДокументРеализацияТоваровУслуг.Контрагент.ИНН В(&МассивИНН)

В приСозданииНаСервере
Список.Параметры.УстановитьЗначениеПараметра("МассивИНН", Неопределено)

При отборе пользователем
Список.Параметры.УстановитьЗначениеПараметра("МассивИНН", МассивИНН)

при очистке отбора
Список.Параметры.УстановитьЗначениеПараметра("МассивИНН", Неопределено)

может прокатит
12 Timon1405
 
28.03.16
17:11
может быть попробовать через ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(...
13 Fragster
 
гуру
28.03.16
17:11
(11) не надо так
14 Московский
 
28.03.16
17:23
СписокЗначений ошибки не выдаёт, но и результата - тоже. ((
15 Fragster
 
гуру
28.03.16
17:38
(14) -> (5)
16 Карупян
 
28.03.16
17:48
может лучше контрагентов искать и по массиву ссылок отбирать
17 Московский
 
28.03.16
17:53
(16) Уже вышел из положения отборами.
18 Московский
 
28.03.16
17:55
костыли, конечно, ёманарот... А ведь так хотелось красоты!

(15) Не канает, поскольку параметр может быть, а может его и не быть - текст запроса "на лету" формируется, и параметр потом приставляется.
19 Timon1405
 
28.03.16
17:56
(18) {ГДЕ ДокументРеализацияТоваровУслуг.Контрагент.ИНН В(&МассивИНН)}
20 Fragster
 
гуру
28.03.16
17:59
Тогда в (19) лучшее решение. Хотя вариант с отбором тоже рабочий, просто больше кода по поиску установленного отбора + ошибка, если пользователь еще и сам добавит отбор по ИНН в пользовательские настройки
21 Московский
 
28.03.16
18:04
(20) Не буду я типовой код трогать. Нехай отборы пашут. Отборы не по ИНН, а по ссылке.

            ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
            
            ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Контрагент");
            ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
            ЭлементОтбора.ПравоеЗначение = СписокКонтрагентов;
            ЭлементОтбора.Использование = Истина;

Путь будет.