Имя: Пароль:
1C
1С v8
Внешняя управляемая обработка
,
0 Wefast
 
15.05.15
14:06
На форме я выбираю документ. Заполняется табличная часть на форме из этого документа.

По кнопке эта табличная часть обрабатывается и получается табличныйдокумент, который мне надо вывести.

Если я просто указываю табдок.показать() он появляется но форма эта жутко кривая и главное без кнопки печати.

Вопрос в том как мне все это сделать правильно, чтобы документ вывелся в новой форме с полноценной командной панелью?
1 Cyberhawk
 
15.05.15
14:06
С полноценной это с какой?
2 Wefast
 
15.05.15
14:10
ну как стандартная форма печати. Кнопка печати, да кол-во копий уже будет достаточно
3 Lexey_
 
15.05.15
14:12
(2) передавай табдок в стандартную форму печати
4 Cyberhawk
 
15.05.15
14:18
Покажи на картинке
5 Wefast
 
15.05.15
16:37
(4) картинку чего?

Сделал в общем новую форму

и пишу:
&НаКлиенте
Процедура Вывести(Команда)
    труп = Объект.ТабЧасть; // табличная часть из основной формы
    док = СформироватьПечатнуюФормуRU(труп); //тут возвращается табличный документ
    
    ТабДокумент = док; //ТабДокумент это реквезит которым заполняется таб поле доп формы
    

    Форма = ОткрытьФорму("ВнешняяОбработка.ПечатьЭтикеток.Форма.ПечатьДока");

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


В общем форма то выводится. Но на ней есть табличное поле. И вот оно не заполняется
6 Wefast
 
15.05.15
16:40
Пробовал

Форма = ОткрытьФорму("ВнешняяОбработка.ПечатьЭтикеток.Форма.ПечатьДока", Новый Структура("ТабДокумент", Док));

Но либо я как то не так передаю, либо даже не знаю
7 Wefast
 
15.05.15
17:16
Вот так в общем выглядит модуль основной формы:

&НаКлиенте
Процедура Вывести(Команда)
    труп = Объект.ТабЧасть; // табличная часть из основной формы
    док = СформироватьПечатнуюФормуRU(труп); //тут возвращается табличный документ
    
    ТабДокумент = док; //ТабДокумент это реквезит которым заполняется таб поле доп формы
    
    Форма = ОткрытьФорму("ВнешняяОбработка.ПечатьЭтикеток.Форма.ПечатьДока", Новый Структура("ТабДокумент", Док));
    ФОрма.Объект.ТабДокумент = Док;
    
КонецПроцедуры

&НаКлиенте
Процедура ДокументПриИзменении(Элемент)
    
    ппп();    
    
КонецПроцедуры
&НаСервере

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

Функция СформироватьПечатнуюФормуRU(ТабличнаяЧасть) Экспорт
    
    УстановитьПривилегированныйРежим(Истина);    
    
    
    
    ТабДок = Новый ТабличныйДокумент;
    ТабДок.ИмяПараметровПечати = "Этикетки";
    ТабДок.ОриентацияСтраницы  = ОриентацияСтраницы.Ландшафт;
    
    Макет = ПолучитьМакетНаСервере();
    
    ОбластьШапка = Макет.ПолучитьОбласть("Шапка");    
    ТЧ =  ТабличнаяЧасть.Выгрузить();
    Для каждого Строка из ТЧ Цикл
        
        Если Строка.Галочка = ИСТИНА ТОГДА
            
            Для Счетчик = 1 по Строка.КоличествоУпаковок Цикл
                
                ЗапросШтри = Новый Запрос;
                ЗапросШтри.Текст =
                "ВЫБРАТЬ ПЕРВЫЕ 1
                |    ЕСТЬNULL(ШтрихкодыНоменклатуры.Штрихкод, """") КАК Штрихкод
                |ИЗ
                |    РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
                |ГДЕ
                |    ШтрихкодыНоменклатуры.Номенклатура = &Номенклатура";
                
                ЗапросШтри.УстановитьПараметр("Номенклатура", Строка.Номенклатура);
                
                РезультатЗапросаШтри = ЗапросШтри.Выполнить();
                
                ВыборкаШтрихкода = РезультатЗапросаШтри.Выбрать();
                Если ВыборкаШтрихкода.Количество()>0 Тогда
                Пока ВыборкаШтрихкода.Следующий() Цикл
                    ШтрихкодДокумента = ВыборкаШтрихкода.Штрихкод;
                КонецЦикла;
            Иначе
                ШтрихкодДокумента = "";
                КонецЕсли;
                
                //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
                
                //ШтрихкодДокумента = "234235235";//?(ВыборкаДетальныеЗаписи.Штрихкод<>NULL, ВыборкаДетальныеЗаписи.Штрихкод, "");
                ПараметрыШтрихкода = Новый Структура;
                ПараметрыШтрихкода.Вставить("Ширина",          300);
                ПараметрыШтрихкода.Вставить("Высота",          180);
                ПараметрыШтрихкода.Вставить("Штрихкод",        СокрЛП(ШтрихкодДокумента));
                ПараметрыШтрихкода.Вставить("ТипКода",         4); // EAN13
                ПараметрыШтрихкода.Вставить("ОтображатьТекст", Истина);
                ПараметрыШтрихкода.Вставить("РазмерШрифта",    40);
                
                
                
                Если ШтрихкодДокумента <> ""Тогда
                    ОбластьШапка.Рисунки.Штрихкод.Картинка = МенеджерОборудованияВызовСервера.ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода);
                КонецЕсли;
                ОбластьШапка.Параметры.Ячейка = Строка.Ячейка;
                ОбластьШапка.Параметры.Артикул = Строка.Артикул;
                ОбластьШапка.Параметры.Дата         = фОРМАТ(Строка.Дата,"ДФ='dd MMMM yyyy'");
                ОбластьШапка.Параметры.Номенклатура = Строка.Номенклатура;
                
                
                
                //ОбластьШапка.Рисунки.Штрихкод.Картинка = ПолучитьКартинкуШтрихкода(ВнешняяКомпонента, ШтрихкодДокумента, 50, 30);  
                
                ОбластьШапка.Параметры.Вес = ""+Строка.Количество + " " + ?(Строка.ЕдиницаИзмерения <>NULL,Строка.ЕдиницаИзмерения,"");
                ТабДок.Вывести(ОбластьШапка);
                ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
                
            КонецЦикла;
        КонецЕсли;
    КонецЦикла;
    
    ТабДок.АвтоМасштаб = ИСТИНА;
    Возврат ТабДок;
    
КонецФункции // СформироватьПечатнуюФормуRU()


&НаСервере
Функция ПолучитьМакетНаСервере()
    ОтчетОбъект = РеквизитФормыВЗначение("Объект");
    Макет = ОтчетОбъект.ПолучитьМакет("ОтборРазмещениеТоваров");
    Возврат Макет;
КонецФункции
8 Любопытная
 
15.05.15
18:05
(7) Ты этикетки печатать хочешь что ли?
9 Wefast
 
19.05.15
12:17
(8) да
10 zhig75
 
19.05.15
12:19
(0) Создай реквизит формы с типом табличный документ, и верти его как тебе вздумается.