8.х Параметры в запросе

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Lugano, 4 мар 2011.

  1. TopicStarter Overlay
    Lugano
    Offline

    Lugano

    Регистрация:
    4 мар 2011
    Сообщения:
    27
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте! Вот такая проблемма: необходимо в запросе сделать отбор по нескольким сотрудникам. Пример приведу маленький (задача больно большая, чтобы описывать её всю), чтобы было наглядней. Тип Ответственный - справочник

    Вид документа Ответственный
    Счет-фактура № 1525 Иванов И.И
    Счет-фактура № 1526 Петров П.П
    Счет-фактура № 1527 Сидоров С.С
    Счет-фактура № 1528 Иванов И.И

    Необходимо выбрать только тех, которых указал пользователь. Предположим пользователь выбрал Иванов И.И, Петров П.П. Соответвственно должно вывести:

    Вид документа Ответственный
    Счет-фактура № 1525 Иванов И.И
    Счет-фактура № 1526 Петров П.П
    Счет-фактура № 1528 Иванов И.И


    Пробовал передать параметр массив и таблицу значений, но выводит ошибку (Нельзя сравнивать поля неограниченной длинны и поля несовместимых типов).
    Вот мои наработки:
    запрос:
    Код:
    Запрос = Новый Запрос;
    Запрос.Текст = "
    |ВЫБРАТЬ СДокумент, Ответственный, 	
    |ИЗ  Документ.АвансовыйОтчет КАК АвансовыйОтчет
    |Где Сотрудники= &Сотр";
    
    Код:
    //Сотрудники - табличное поле
    Сот= Новый таблицаЗначений;
    Сот.Колонки.Добавить("С",Новый ОписаниеТипов("СправочникСсылка.СотрудникиОрганизаций"));
    Для каждого Строка из Сотрудники цикл
    НоваяСтрока=Сот.Добавить();
    НоваяСтрока.С=Строка.Сотрудник;
    КонецЦикла;
    
    Запрос.УстановитьПараметр("Сотр",Сот);	 
    РезультатЗапроса = Запрос.Выполнить();
    ...
    
  2. Максим
    Offline

    Максим Опытный в 1С

    Регистрация:
    28 фев 2008
    Сообщения:
    684
    Симпатии:
    7
    Баллы:
    29
    Код:
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ СДокумент, Ответственный, 	
    |ИЗ  Документ.АвансовыйОтчет КАК АвансовыйОтчет
    |Где Сотрудники В &Сотр";
    
    Запрос.УстановитьПараметр("Сотр", МойМассивСотрудников);
    
  3. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Код:
    Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ
    |	АвансовыйОтчет.Ссылка,
    |	АвансовыйОтчет.Ответственный
    |ИЗ
    |	Документ.АвансовыйОтчет КАК АвансовыйОтчет
    |ГДЕ
    |	АвансовыйОтчет.Ответственный В(&Ответственный)";
    
    Запрос.УстановитьПараметр("Ответственный", Сотрудники.ВыгрузитьКолонку("Сотрудник"));
    РезультатЗапроса = Запрос.Выполнить();
    
    
  4. TopicStarter Overlay
    Lugano
    Offline

    Lugano

    Регистрация:
    4 мар 2011
    Сообщения:
    27
    Симпатии:
    0
    Баллы:
    1
    Fart, shurikvz спасибо.

Поделиться этой страницей