Имя: Пароль:
1C
1С v8
1С Печатная форма: Табличную часть документа в Word
0 SpellGunner
 
15.08.18
15:09
Добрый день!

Делаю внешнюю печатную форму документа. Выгружается в шаблон Word.
Не могу вывести табличную часть документа их запроса.
Заполняет только одну строку. Помогите решить проблему.
Код ниже:


&НаКлиенте
Процедура ВывестиМакет(ОписаниеКоманды)
    
    //Документ = ОписаниеКоманды.ОбъектыПечати[0];
              
            СтруктураПараметров = ПолучитьИзВременногоХранилища(ПечатьПисьма(Документ));
            ДвоичныеДанныеМакета = ПолучитьИзВременногоХранилища(ПолучитьМакетСКлиента("Макет"));
            ИмяВрем = ПолучитьИмяВременногоФайла(".doc");
            ДвоичныеДанныеМакета.Записать(ИмяВрем);
            
            Попытка
                Документ2 = ПолучитьCOMОбъект(ИмяВрем);
                Для Каждого Параметр из СтруктураПараметров Цикл
                  
                    Selection = Документ2.Content;
                    Selection.Find.Execute("["+Параметр.Ключ+"]",Ложь,Истина,Ложь,,,Истина,,Ложь,Параметр.Значение,2);
                    Документ2.Sections(1).Headers(1).Range.Find.Execute("["+Параметр.Ключ+"]", Ложь, Истина, Ложь, , , Истина, , Ложь, Параметр.Значение, 2);
                                
                    КонецЦикла;

                Документ2.Application.Visible = Истина;
                Документ2.Application.WindowState = 2;
                Документ2.Application.WindowState = 1;
                Документ2.Activate();
            Исключение
                Сообщение = Новый СообщениеПользователю();
                Сообщение.Текст = ОписаниеОшибки();
                Сообщение.Сообщить();
                Документ2.Application.Quit();
            КонецПопытки;
    
            
КонецПроцедуры

&НаСервере
Функция ПолучитьМакетСКлиента(Имя)
    ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
    Макет = ОбработкаОбъект.ПолучитьМакет("Макет");
    Возврат ПоместитьВоВременноеХранилище(Макет);
КонецФункции

//получаем структуру с параметрами
&НаСервере
Функция ПечатьПисьма(ДокументТекущий) Экспорт

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

            
            
        КонецЦикла;
        

        
        
        Возврат ПоместитьВоВременноеХранилище(СтруктураПараметров);
    
КонецФункции // ПечатьПисьма()
1 Fedor-1971
 
15.08.18
15:25
(0) мощно. Добавить ко всем документам Документ.ЗаказПокупателя.Запасы данные ОДНОЙ, указанной, ссылки

По коду: Выборка.Следующий() - данные из первой строки ТЧ ты ни как не обработал

Сделай пакет запросов:
1. выбери данные шапки
2. доставай  инфу из ТЧ (только ограничь выборку Ссылкой)