8.х Помогите с запросом

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

  1. TopicStarter Overlay
    Elli
    Offline

    Elli Опытный в 1С

    Регистрация:
    20 май 2008
    Сообщения:
    68
    Симпатии:
    0
    Баллы:
    26
    Запрос
    Код:
    "ВЫБРАТЬ
    |	СУММА(п_АктЗабояПтица.Количество) КАК Количество,
    |	СУММА(п_АктЗабояПтица.Вес) КАК Вес,
    |	п_АктЗабояПтица.Ссылка.Ссылка КАК Ссылка,
    |	п_АктЗабояПтица.Ссылка.ВыбытиеСПтичника.Ссылка КАК ВыбытиеСПтичникаСсылка,
    |	п_АктЗабояПтица.Ссылка.ВыбытиеСПтичника.Представление КАК ВыбытиеСПтичникаПредставление
    |ИЗ
    |	Документ.п_АктЗабоя.Птица КАК п_АктЗабояПтица
    |ГДЕ
    |	п_АктЗабояПтица.Ссылка.Дата МЕЖДУ &ДатаНачало И &ДатаОкончание
    |	И п_АктЗабояПтица.Ссылка.Проведен = &Проведен
    |	И п_АктЗабояПтица.Ссылка.ВыбытиеСПтичника.Ссылка В ИЕРАРХИИ(&Подразделение)
    |
    |СГРУППИРОВАТЬ ПО
    |	п_АктЗабояПтица.Ссылка.Ссылка,
    |	п_АктЗабояПтица.Ссылка.ВыбытиеСПтичника.Ссылка
    |ИТОГИ
    |	СУММА(Количество),
    |	СУММА(Вес)
    |ПО
    |	ОБЩИЕ,
    |	ВыбытиеСПтичникаСсылка,
    |	Ссылка";
    
    Запрос.УстановитьПараметр("ДатаНачало", ДатаНачало);
    Запрос.УстановитьПараметр("ДатаОкончание", ДатаОкончание);
    Если НЕ ЗначениеЗаполнено(Подразделение) Тогда
    Запрос.УстановитьПараметр("Подразделение",Справочники.ПодразделенияОрганизаций.ПустаяСсылка());
    <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/иначе')">	Иначе	</span>
    Запрос.УстановитьПараметр("Подразделение", Подразделение);
    КонецЕсли;	
    Запрос.УстановитьПараметр("Проведен", Истина);
    
    Результат = Запрос.Выполнить();
    
    
    
    Выбирает долько те документы, в которых подразделение заполнено, а мне бы хотелось, чтобы если подразделение не выбрано, то выводились все документы (и с подразделением и без).
    Если совсем убираю условие по подразделению, то выводятся все документы, но мне надо чтобы когда не выбрано подразделение, то все, а когда выбрано, то только по выбранному.
    Подскажите, не пойму как сделать :unsure:
  2. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.554
    Симпатии:
    716
    Баллы:
    204
    1. Выбирать нужно не сами документы, а регистратор из зависимого от данного документа регистра - это даст возможность отбирать 100% проведенные документы.
    2. Какой тип значения у реквизита ВыбытиеСПтичника?
  3. mialord
    Offline

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

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Здраствуйте!
    Код:
    Запрос.Текст = "ВЫБРАТЬ
    |	СУММА(п_АктЗабояПтица.Количество) КАК Количество,
    |	СУММА(п_АктЗабояПтица.Вес) КАК Вес,
    |	п_АктЗабояПтица.Ссылка.Ссылка КАК Ссылка,
    |	п_АктЗабояПтица.Ссылка.ВыбытиеСПтичника.Ссылка КАК ВыбытиеСПтичникаСсылка,
    |	п_АктЗабояПтица.Ссылка.ВыбытиеСПтичника.Представление КАК ВыбытиеСПтичникаПредставление
    |ИЗ
    |	Документ.п_АктЗабоя.Птица КАК п_АктЗабояПтица
    |ГДЕ
    |	п_АктЗабояПтица.Ссылка.Дата МЕЖДУ &ДатаНачало И &ДатаОкончание
    |	И п_АктЗабояПтица.Ссылка.Проведен = &Проведен"
    Если ЗначениеЗаполнено(Подразделение) Тогда
    Запрос.Текст = Запрос.Текст + "|	И п_АктЗабояПтица.Ссылка.ВыбытиеСПтичника.Ссылка В ИЕРАРХИИ(&Подразделение)";
    КонецЕсли;
    Запрос.Текст = Запрос.Текст + "
    |
    |СГРУППИРОВАТЬ ПО
    |	п_АктЗабояПтица.Ссылка.Ссылка,
    |	п_АктЗабояПтица.Ссылка.ВыбытиеСПтичника.Ссылка
    |ИТОГИ
    |	СУММА(Количество),
    |	СУММА(Вес)
    |ПО
    |	ОБЩИЕ,
    |	ВыбытиеСПтичникаСсылка,
    |	Ссылка";
    Если ЗначениеЗаполнено(Подразделение) Тогда
    Запрос.УстановитьПараметр("Подразделение", Подразделение)
    КонецЕсли;
    
  4. TopicStarter Overlay
    Elli
    Offline

    Elli Опытный в 1С

    Регистрация:
    20 май 2008
    Сообщения:
    68
    Симпатии:
    0
    Баллы:
    26
    Спасибо! Ломала голову и выходит, что можно только условием при создании запроса. Через регистры будет не очень, документов - регистраторов много, а мне нужен один. И при выборке из регистра тоже возникнет таже проблема, если я правильно поняла.
  5. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.554
    Симпатии:
    716
    Баллы:
    204
    Ограничивайте тип регистратора - ничего сложного
  6. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.750
    Симпатии:
    509
    Баллы:
    204
    Из регистров данные выбираются намного быстрее, чем из документов.
  7. TopicStarter Overlay
    Elli
    Offline

    Elli Опытный в 1С

    Регистрация:
    20 май 2008
    Сообщения:
    68
    Симпатии:
    0
    Баллы:
    26
    Спасибо за совет, попробую взять данные из регистра.
  8. mialord
    Offline

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

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Код:
    ВЫБРАТЬ
    ПартииТоваровНаСкладах.Номенклатура,
    ПартииТоваровНаСкладах.Количество,
    ПартииТоваровНаСкладах.Стоимость
    ИЗ
    РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах
    ГДЕ
    ПартииТоваровНаСкладах.Период МЕЖДУ &НачалоПериода И &ОкончаниеПериода
    И ПартииТоваровНаСкладах.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
    
    
    
    Вот нужное ограничение
    Код:
    ПартииТоваровНаСкладах.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
    
    
    
    Если типов отбираемых документов несколько тогда так
    Код:
    ПартииТоваровНаСкладах.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
    ИЛИ ПартииТоваровНаСкладах.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг
    
    
    
    Удачи!!! :unsure:

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