Имя: Пароль:
1C
1С v8
как правильно работать с макетом во внешней обработке?
0 1c-kind
 
26.07.16
10:53
Добрый день!

Платформа 8.2
Написал запрос с обработкой результата, макет создан , но при выполнении печатную форму не открывает.
Параметр &ОтчетТекущий - реквизит формы "Отчет".

&НаКлиенте
Процедура ВывестиОтчет(Команда)
    
ВывестиОтчетНаСервере(Отчет);    
        
КонецПроцедуры



&НаСервере
Процедура ВывестиОтчетНаСервере(Отчет)

    ТабДок = Новый ТабличныйДокумент;    

    ЭтотОбъект=РеквизитФормыВЗначение("Объект");
    Макет = ЭтотОбъект.ПолучитьМакет("ОтчетПечать");
    
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ОтчетПроизводстваЗаСмену.Ссылка,
        |    ОтчетПроизводстваЗаСмену.Представление,

...... далее идет текст запроса и обработка ......




    ТабДок.ЗакончитьАвтогруппировкуСтрок();
    ТабДок.Вывести(ПродукцияОбластьПодвалТаблицы);
    ТабДок.ЗакончитьГруппуСтрок();
    КонецЦикла;

    ТабДок.ЗакончитьАвтогруппировкуСтрок();
    ТабДок.Вывести(ОбластьПодвалТаблицы);
    ТабДок.Вывести(ОбластьПодвал);
    
    ТабДок.Показать();


КонецПроцедуры



Спасибо.
1 Жан Пердежон
 
26.07.16
10:56
показывать на клиенте надо...
2 Зая Бусечка
 
26.07.16
10:57
Извните, а кому на сервере вы собрались это показывать?
3 1c-kind
 
26.07.16
10:59
(2) Как правильно показать "на клиенте"?
4 Жан Пердежон
 
26.07.16
10:59
ТабДок.Показать();
5 Жан Пердежон
 
26.07.16
11:01
так же как на сервере, но на клиенте,
странно что оно вообще исключение не генерирует
6 Остап Сулейманович
 
26.07.16
11:03
(3)
&НаКлиенте
Процедура ВывестиОтчет(Команда)
    Таб = Новый ТабличныйДокумент;
    ВывестиОтчетНаСервере(Отчет, Таб);
    Таб.Показать();
КонецПроцедуры

&НаСервере
Процедура ВывестиОтчетНаСервере(Отчет, Таб)
    ...
    //******** Позаполнять Таб
    ...
КонецПроцедуры
7 Остап Сулейманович
 
26.07.16
11:04
(5) Все нормально. На сервере показать может и не нужно (непонятно кому показывать), а вот записать() вполне имеет право на жизнь.
8 1c-kind
 
26.07.16
11:05
Спасибо за советы, буду разбираться.
9 1c-kind
 
26.07.16
11:08
Ура, заработало! Логику теперь понял.
10 1c-kind
 
02.08.16
08:51
Не хочу плодить лишние темы, задам вопрос в этой.


Есть запрос который выбирает из документа Номенклатуру и её количество.
Но! , у некоторой номенклатуры количество нужно разделить на 2 и вывести на печатную форму.

Сделал таким образом:

Пока ПродукцияВыборкаДетальныеЗаписи.Следующий() Цикл
            
Если ПродукцияВыборкаДетальныеЗаписи.НоменклатураНаименование = "ХХХХХ"
   Тогда ПродукцияВыборкаДетальныеЗаписи.Количество = ПродукцияВыборкаДетальныеЗаписи.Количество / 2;
            
КонецЕсли;

ПродукцияОбластьДетальныхЗаписей.Параметры.Заполнить(ПродукцияВыборкаДетальныеЗаписи);
        
            ТабДок.Вывести(ПродукцияОбластьДетальныхЗаписей, ПродукцияВыборкаДетальныеЗаписи.Уровень());


Но править Выборку система мне не дает , как лучше поступить в данном случае?
11 gigi789
 
02.08.16
09:00
(10) в запросе написать выбор когда Наименование = "ХХХХХ" тогда Количество / 2 иначе Количество конец
12 1c-kind
 
02.08.16
09:03
(11) Точно, спасибо!
13 1c-kind
 
02.08.16
09:30
(11)
Задавать выбор по номенклатуре ведь нужно через параметр?

Как вы написали запрос ругается на синтаксис. Если использовать наименование номенклатуры просто в кавычках.

|    ОтчетПроизводстваЗаСмену.Продукция.(
|        Номенклатура.Наименование,
|        ВЫБОР
|     КОГДА Номенклатура.Наименование = "ХХХ 2"
|       ТОГДА Количество / 2 ИНАЧЕ Количество КОНЕЦ КАК Количество
|    )
|ИЗ
|    Документ.ОтчетПроизводстваЗаСмену КАК ОтчетПроизводстваЗаСмену
14 Mankubus
 
02.08.16
09:35
(13) ""ХХХ 2""
15 1c-kind
 
02.08.16
09:41
Спасибо!