Имя: Пароль:
1C
1С v8
Пустая Внешняя печатная форма при печати
0 sitdv
 
12.09.16
16:27
Делаю внешнею печатную форму управление торговлей 11.2.2.185, при печати пустой лист не могу понять в чем дело.
Функция ПечатьВнешнейПечатнойФормы(МассивОбъектов,ОбъектыПечати)Экспорт

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


Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

    УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
        КоллекцияПечатныхФорм,"Макет",
        "Макет",
        ПечатьВнешнейПечатнойФормы(МассивОбъектов,ОбъектыПечати));

    КонецПроцедуры
1 Cyberhawk
 
12.09.16
16:48
Выборка пустая
2 sitdv
 
12.09.16
17:12
то есть в параметры запроса я не передаю объект документ?
3 Cyberhawk
 
12.09.16
17:22
(2) Это было мое предположение. На сам запрос не смотрел. Отладчик в помощь.
4 sitdv
 
12.09.16
17:40
Да запрос кривой исправил
"ВЫБРАТЬ
                   |    ЗаказКлиента.Номер,
                   |    ЗаказКлиента.Дата КАК ДатаДоговора,
                   |    ЗаказКлиента.Товары.(
                   |        НомерСтроки,
                   |        Номенклатура.Артикул КАК Артикул,
                   |        Номенклатура КАК Товар,
                   |        Количество,
                   |        Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
                   |        Цена,
                   |        Сумма
                   |    ),
                   |    ЗаказКлиента.СуммаДокумента КАК ИтогоКОплате
                   |ИЗ
                   |    Документ.ЗаказКлиента КАК ЗаказКлиента
                   |Где
                   |    ЗаказКлиента.Ссылка В(&МассивОбъектов)";
5 sitdv
 
12.09.16
17:41
Вопрос как ему передать Ссылку на объект?
6 sitdv
 
12.09.16
17:42
Мне непонятна процедура печать откуда берет МассивОбъектов
7 hhhh
 
12.09.16
21:54
(6) как откуда? Параметр в нее такой передается.
8 sitdv
 
13.09.16
07:43
Поставил точку остановки в общем модуле УправлениеПечатью в функции ВывестиТабличныйДокументВКоллекцию, и понял что моя процедура Печать()в принципе не работает, подскажите в чем может быть дело?
9 Mankubus
 
13.09.16
07:51
(8) в твоей обработке есть процедура "СведенияОВнешнейОбработке"?
10 sitdv
 
13.09.16
08:37
Функция СведенияОВнешнейОбработке() Экспорт
    
ПараметрыРегистрации = Новый Структура();
ПараметрыРегистрации.Вставить("Вид","ПечатнаяФорма");
//ПараметрыРегистрации.Вставить("Назначение","Документы.ЗаказКлиента");
ПараметрыРегистрации.Вставить("Наименование","ПриложениеКДоговору");
ПараметрыРегистрации.Вставить("Версия","1.0");
ПараметрыРегистрации.Вставить("Информация","ВнешняяОбработкаПриложениеКДоговору");
ПараметрыРегистрации.Вставить("БезопасныйРежим",Ложь);
Команды = Получить_Таблицу_Команд();
ПараметрыРегистрации.Вставить("Команды",Команды);
ДобавитьКоманду(Команды,"Приложение К Договору","ВызовСерверногоМетода","ОткрытиеФормы",Ложь,"ПечатьMXL");
Возврат ПараметрыРегистрации;
КонецФункции

Функция Получить_Таблицу_Команд()
    
    Команды = Новый ТаблицаЗначений;
    
    Команды.Колонки.Добавить("Представление");
    Команды.Колонки.Добавить("Идентификатор");
    Команды.Колонки.Добавить("Использование");
    Команды.Колонки.Добавить("ПоказыватьОповещение");
    Команды.Колонки.Добавить("Модификатор");
    Возврат Команды;    

КонецФункции

Процедура ДобавитьКоманду (ТаблицаКоманд,Представление,Идентификатор,Использование,ПоказыватьОповещение = Ложь,Модификатор = "")
    
    НоваяКоманда = ТаблицаКоманд.Добавить();
    НоваяКоманда.Представление = Представление;
    НоваяКоманда.Идентификатор = Идентификатор;
    НоваяКоманда.Использование = Использование;
    НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
    НоваяКоманда.Модификатор = Модификатор;
    
КонецПроцедуры
11 _stay true_
 
13.09.16
08:58
Открытие формы, по-моему, здесь лишнее
12 sitdv
 
14.09.16
02:16
Вы были правы Открытие формы здесь лишнее
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший