Имя: Пароль:
1C
1С v8
Склад не выбран
0 KonstantinK90
 
21.05.14
07:31
здравствуйте! помогите с вопросом. сделал запрос все работает если параметр склад выбран, а если не выбран отчет не работает  нужно сделать что бы если склад не выбран то отчет формировал по всем складам
вот код
Процедура Сформировать(ТабличныйДокумент,НомерСтр)
    // Вставить содержимое обработчика.
    Запрос = Новый запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ПоступлениеТоваровУслуг.Контрагент КАК ГрузоОтправитель,
    |    ПоступлениеТоваровУслуг.Получатель КАК ГрузоПолучатель,
    |    Контрагенты.ИдентификационныйКодЛичности КАК ИИН_БИН,
    |    ПоступлениеТоваровУслугТовары.Номенклатура КАК Вид_груза,
    |    ПоступлениеТоваровУслугТовары.Количество КАК Кол_во,
    |    ПоступлениеТоваровУслугТовары.Цена КАК Вес_груза,
    |    ПоступлениеТоваровУслуг.Дата КАК Датаполучения,
    |    ПоступлениеТоваровУслуг.Склад КАК Направ_е_рейса
    |ИЗ
    |    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
    |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
    |            ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
    |            ПО ПоступлениеТоваровУслуг.Контрагент = Контрагенты.Ссылка
    |        ПО ПоступлениеТоваровУслугТовары.Ссылка = ПоступлениеТоваровУслуг.Ссылка
    |ГДЕ
    |    ПоступлениеТоваровУслуг.Дата МЕЖДУ &ДатаНач И &ДатаКон
    |    И ПоступлениеТоваровУслуг.Склад = &Склад";
    
    Запрос.УстановитьПараметр("ДатаНач",ДатаНач);
    Запрос.УстановитьПараметр("ДатаКон",ДатаКон);
    Запрос.УстановитьПараметр("Склад",Склад);
    Результат = Запрос.Выполнить().Выбрать();

    СкладПустаяСсылка = Склад = Справочники.Склады.ПустаяСсылка();
           
    ТабличныйДокумент = Новый ТабличныйДокумент;
    ТабличныйДокумент.Очистить();
    ТабличныйДокумент.ОриентацияСтраницы  = ОриентацияСтраницы.Ландшафт;
    ТабличныйДокумент.АвтоМасштаб = Истина;
  
    Макет = ПолучитьМакет("Макет");
    //Заголовок
    Область = Макет.ПолучитьОбласть("Шапка");
    ТабличныйДокумент.Вывести(Область);
        //СкладПрокурору
      НомерСтр = 1;
    Пока Результат.Следующий() Цикл
        //Шапка    
        ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
        ОбластьСтрока.Параметры.НомерСтр = НомерСтр;
        ОбластьСтрока.Параметры.ГрузоОтправитель = Результат.ГрузоОтправитель;
        ОбластьСтрока.Параметры.ГрузоОтправитель = Результат.ГрузоОтправитель;
        ОбластьСтрока.Параметры.ГрузоПолучатель = Результат.ГрузоПолучатель;
        ОбластьСтрока.Параметры.ИИН_БИН = Результат.ИИН_БИН;
        ОбластьСтрока.Параметры.Вид_груза = Результат.Вид_груза;
        ОбластьСтрока.Параметры.Кол_во = Результат.Кол_во;
        ОбластьСтрока.Параметры.Датаполучения = Результат.Датаполучения;
        ОбластьСтрока.Параметры.Направ_е_рейса = Результат.Направ_е_рейса;
        НомерСтр = НомерСтр + 1;
    Если Результат.Направ_е_рейса = Справочники.Склады.НайтиПоКоду("000000002") Тогда
             ОбластьСтрока.Параметры.Номер_Рейса = "2365";
    Иначе
      КонецЕсли;
        ТабличныйДокумент.Вывести(ОбластьСтрока);
         
    КонецЦикла;
    
    //Область = Макет.ПолучитьОбласть("Подвал");            
    //Область.Параметры.Итого =  ;
    //ТабДок.Вывести(Область);
    
    ТабличныйДокумент.ОтображатьСетку = Ложь;
    ТабличныйДокумент.Защита = Ложь;
    ТабличныйДокумент.ТолькоПросмотр = Ложь;
    ТабличныйДокумент.ОтображатьЗаголовки  = Ложь;
    ТабличныйДокумент.Показать();
  
КонецПроцедуры
1 BuHu
 
21.05.14
07:40
Если ЗначениеЗаполнено(Склад) Тогда
Запрос.Текст=Запрос.Текст+"  И ПоступлениеТоваровУслуг.Склад = &Склад";
КонецЕсли;

или Склад.Выбран()
2 KonstantinK90
 
21.05.14
07:43
а если не заполнено
3 BuHu
 
21.05.14
07:44
(2) тогда это условие не нужно в запросе
4 User_Agronom
 
21.05.14
08:04
(2) Ты точно программист?
5 Wobland
 
21.05.14
08:12
а не воззвать ли к СКД?
6 Wobland
 
21.05.14
08:16
+(5) и не проклясть ли получение данных из документов?
7 BuHu
 
21.05.14
08:22
+(6) кстати да , если уж тяните данные из документов , то хоть условие ставьте на Проведенность документа
8 el7cartel
 
21.05.14
08:28
(0) а если сделать отбор, а не параметр? не попрет?
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн