Имя: Пароль:
1C
1С v8
Убрать Null и заполнить параметры в макете
0 Artemistrator
 
23.05.13
12:00
Всем добрый день. Делаю отчет, заполняю параметры в макете из запроса. Всё заполняется, кроме <ТорговаяТочка>. В макете так и называется параметр ТорговаяТочка. И ещё одна проблема. В табличную часть при заполнении постоянно попадает строка null. Как от неё избавиться? Вроде нужно использовать "Есть null", вот только не знаю, куда и как его использовать?

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

   ТабДок.Вывести(ОбластьШапка);

   
   Пока Выборка.Следующий() Цикл    
       ОбластьТаблЧасть.Параметры.Заполнить(Выборка);
       ТабДок.Вывести(ОбластьТаблЧасть);
         
   КонецЦикла;
   
   
   ОбластьПодвал.Параметры.Заполнить(ВыборкаИтог);    
   ТабДок.Вывести(ОбластьПодвал);
     

   
   ТабДок.Показать();
   
КонецПроцедуры
1 Artemistrator
 
23.05.13
12:02
ТИПЗНАЧЕНИЯ(НаГруппировку.Регистратор) КАК ТипДокумента,

вот эта часть даёт null и подставляется в макет
2 Defender aka LINN
 
23.05.13
12:03
(1) А ты от этого кушать не можешь и кошмары мучают?
3 Artemistrator
 
23.05.13
12:53
с заполнением параметра немного разобрался. Если делать ОбластьШапка.Параметры.Заполнить(ВыборкаИтог), то ТорговаяТочка не подставляется, а если ОбластьШапка.Параметры.Заполнить(Выборка) - подставляется, но другие параметры в шапке не заполняются. Не могу понять как сделать чтоб всё и сразу заполнялось.
4 Любопытная
 
23.05.13
12:54
Торговую точку в группировку вставить. В смысле в итоги
5 Artemistrator
 
23.05.13
13:06
так ведь если я в итоги засуну, он мне количество выдаст, а мне нужно наименование. То есть на форме выбрал "Магазин", и чтоб в макет тоже заполнялся, как "Магазин".
6 Artemistrator
 
24.05.13
15:20
Проблему так и не решил( помогите, пожалуйста, новичку.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс