Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
27 ноя 2021, 12:16

Печать группы документов

Автор mila1231, 09 ноя 2021, 11:31

0 Пользователей и 1 гость просматривают эту тему.

mila1231

День добрый, вопрос до нельзя глупый, но всё же... есть внешняя обработка вывод на печать... если идёт печать по одному документу, всё ок, если по нескольким, то начинается задваивание, затраивание, данных в табличной части, зависит от количества выбранных документов, так вот что можно поправить, чтоб исправить ситуацию?
прилагаю функцию

Функция ПечатьВнешнейПечатнойФормы(МассивОбъектовНазначения, ОбъектыПечати, Подписант) Экспорт
   ТабДок = новый ТабличныйДокумент;
   Макет = ПолучитьМакет("ПФ_MXL_СчетФактура1138");
   
   ТабДок.АвтоМасштаб = Истина;
   ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
   ТабДок.ЭкземпляровНаСтранице = 1;

   Запрос = новый запрос;
   Запрос.текст =    "ВЫБРАТЬ
                     |   СчетФактураВыданныйДокументыОснования.ДокументОснование КАК ДокументОснование,
                     |   СчетФактураВыданныйДокументыОснования.Ссылка.Контрагент.НаименованиеПолное КАК КонтрагентНаименованиеПолное,
                     |   СчетФактураВыданныйДокументыОснования.Ссылка.Контрагент.ИНН КАК КонтрагентИНН,
                     |   СчетФактураВыданныйДокументыОснования.Ссылка.Контрагент.КПП КАК КонтрагентКПП,
                     |   СчетФактураВыданныйДокументыОснования.Ссылка.Номер КАК Номер
                     |ПОМЕСТИТЬ списание
                     |ИЗ
                     |   Документ.СчетФактураВыданный.ДокументыОснования КАК СчетФактураВыданныйДокументыОснования
                     |ГДЕ
                     |   СчетФактураВыданныйДокументыОснования.Ссылка.Ссылка В(&МассивОбъектовНазначения)
                     |;
                     |
                     |////////////////////////////////////////////////////////////////////////////////
                     |ВЫБРАТЬ
                     |   СписаниеСРасчетногоСчетаРасшифровкаПлатежа.СчетНаОплату КАК СчетНаОплату,
                     |   СписаниеСРасчетногоСчетаРасшифровкаПлатежа.Ссылка.ДокументОснование КАК ДокументОснование,
                     |   списание.КонтрагентНаименованиеПолное КАК КонтрагентНаименованиеПолное,
                     |   списание.КонтрагентКПП КАК КонтрагентКПП,
                     |   списание.КонтрагентИНН КАК КонтрагентИНН,
                     |   списание.Номер КАК Номер
                     |ПОМЕСТИТЬ сп
                     |ИЗ
                     |   Документ.СписаниеСРасчетногоСчета.РасшифровкаПлатежа КАК СписаниеСРасчетногоСчетаРасшифровкаПлатежа
                     |      ВНУТРЕННЕЕ СОЕДИНЕНИЕ списание КАК списание
                     |      ПО СписаниеСРасчетногоСчетаРасшифровкаПлатежа.Ссылка = списание.ДокументОснование.Ссылка
                     |;
                     |
                     |////////////////////////////////////////////////////////////////////////////////
                     |ВЫБРАТЬ
                     |   СчетНаОплатуПоставщикаТовары.Номенклатура КАК НоменклатураКраткое,
                     |   СчетНаОплатуПоставщикаТовары.Количество КАК Количество,
                     |   СчетНаОплатуПоставщикаТовары.Сумма КАК Сумма,
                     |   СчетНаОплатуПоставщикаТовары.СуммаНДС КАК СуммаНДС,
                     |   СчетНаОплатуПоставщикаТовары.СтавкаНДС КАК СтавкаНДС,
                     |   сп.ДокументОснование КАК ДокументОснование,
                     |   сп.КонтрагентНаименованиеПолное КАК КонтрагентНаименованиеПолное,
                     |   СчетНаОплатуПоставщикаТовары.Ссылка.Контрагент.НаименованиеПолное КАК КонтрагентНаименованиеПолное1,
                     |   сп.КонтрагентИНН + ""/"" + сп.КонтрагентКПП КАК КонтрагентКемерово,
                     |   СчетНаОплатуПоставщикаТовары.Ссылка.Контрагент.НаименованиеПолное КАК КонтрагентНаименованиеПолное2,
                     |   СчетНаОплатуПоставщикаТовары.Ссылка.Контрагент.ИНН + ""/"" + СчетНаОплатуПоставщикаТовары.Ссылка.Контрагент.КПП КАК КотрагентВзлет,
                     |   сп.ДокументОснование.Дата КАК ДокументОснованиеДата,
                     |   сп.ДокументОснование.Номер КАК ДокументОснованиеНомер,
                     |   списание.ДокументОснование.Ссылка КАК ДокументОснованиеСсылка,
                     |   СчетНаОплатуПоставщикаТовары.Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
                     |   СчетНаОплатуПоставщикаТовары.Цена КАК Цена,
                     |   СчетНаОплатуПоставщикаТовары.Ссылка.СуммаДокумента КАК СуммаДокумента,
                     |   СчетНаОплатуПоставщикаТовары.Ссылка.СуммаВключаетНДС КАК СуммаВключаетНДС,
                     |   СчетНаОплатуПоставщикаТовары.Номенклатура.НаименованиеПолное КАК Номенклатура,
                     |   сп.Номер КАК Номер1
                     |ИЗ
                     |   сп КАК сп
                     |      ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СчетНаОплатуПоставщика.Товары КАК СчетНаОплатуПоставщикаТовары
                     |      ПО сп.СчетНаОплату = СчетНаОплатуПоставщикаТовары.Ссылка,
                     |   списание КАК списание";   
   Запрос.УстановитьПараметр("МассивОбъектовНазначения",МассивОбъектовНазначения);
   ОбщаяВыборка = Запрос.Выполнить().Выгрузить();
      
   Для Каждого СсылкаНаОбъект из МассивОбъектовНазначения Цикл
   ОбластьЗаголовок  = Макет.ПолучитьОбласть("Шапка625");
   
   Номер   = СокрЛП(ссылкаНаОбъект.Номер);
   Префикс="ТР00-";
// удаление префикса из номера документа

   Если Найти(Номер, Префикс)=1 Тогда
      Номер = Сред(Номер, СтрДлина(Префикс)+1);
   КонецЕсли;
   
   // так же, может остаться "минус" впереди
   Если Лев(Номер, 1) = "-" Тогда
      Номер = Сред(Номер, 2);
   КонецЕсли;
   
   // удаление ведущих нулей
   Пока Лев(Номер, 1)="0" Цикл
      Номер = Сред(Номер, 2);
   КонецЦикла;
   
   
     
   
   
   ОбластьЗаголовок.параметры.Номер = Номер;
    ............
   ТабДок.Вывести(ОбластьЗаголовок);
   ОбластьЗаголовокТаблицы=Макет.ПолучитьОбласть("ЗаголовокТаблицы");
   ТабДок.Вывести(ОбластьЗаголовокТаблицы);
   ОбластьДанные  = Макет.ПолучитьОбласть("строка");
   //ОбластьПодвал  = Макет.ПолучитьОбласть("Подвал");
     Счетчик=0;
      
      Для Каждого Стр из ОбщаяВыборка Цикл ///// и вот тут идёт задвение/затроение...
         
          счетчик=Счетчик +1;
         ОбластьДанные.Параметры.номерпп= счетчик;
         ОбластьДанные.Параметры.ТоварНаименование = Стр.Номенклатура;
         ОбластьДанные.Параметры.ЕдиницаИзмеренияКод ="--";
         ОбластьДанные.Параметры.Количество = "--";
         ОбластьДанные.Параметры.СуммаНДС = Стр.СуммаНДС;
         ОбластьДанные.Параметры.ИтогоВсего = Стр.Сумма+Стр.СуммаНДС;

      
            ТабДок.Вывести(ОбластьДанные);
         
        КонецЦикла;


   
   ОбластьИтого  = Макет.ПолучитьОбласть("Итого");
   ОбластьИтого.Параметры.ИтогоСуммаНДС = СсылкаНаОбъект.СуммаНДСДокумента ;
   ОбластьИтого.Параметры.ИтогоВсего = СсылкаНаОбъект.СуммаДокумента;
   
   ТабДок.Вывести(ОбластьИтого);
   ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
   //Руководители = Руководители = РегламентированнаяОтчетность.ответственныелицаОрганизации(СсылкаНаОбъект.Организация, СсылкаНаОбъект.Дата);
ФИОПолное = СсылкаНаОбъект.руководитель;
ФИОбуфер=СтрЗаменить(ФИОПолное," ", Символы.ПС);
ФиоРуководтеляр=СтрПолучитьСтроку(ФИОбуфер,1);
ФИОРук=ФиоРуководтеляр+ " " + ВРЕГ(Лев(СтрПолучитьСтроку(ФИОбуфер,2),1))+"."+ВРЕГ(Лев(СтрПолучитьСтроку(ФИОбуфер,3),1))+".";
ФИОПолноеГБ = СсылкаНаОбъект.главныйБухгалтер;
ФИОбуферГБ=СтрЗаменить(ФИОПолноеГБ," ", Символы.ПС);
ФиоГБ=СтрПолучитьСтроку(ФИОбуферГБ,1);
ФИОГББ= ФиоГБ + " " + ВРЕГ(Лев(СтрПолучитьСтроку(ФИОбуфергб,2),1))+"."+ВРЕГ(Лев(СтрПолучитьСтроку(ФИОбуфергб,3),1))+".";
             
   ОбластьПодвал.Параметры.ФИОРуководителя =ФИОРук;
   ОбластьПодвал.Параметры.ФИОГлавногоБухгалтера = ФИОГББ;
   ТабДок.Вывести(ОбластьПодвал);
   ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    ОбластьРеквизитыКомиссионера = Макет.ПолучитьОбласть("РеквизитыКомиссионера");
    ТабДок.Вывести(ОбластьРеквизитыКомиссионера);
КонецЦикла;

   Возврат ТабДок;
КонецФункции

LexaK

@mila1231, вот здесь в запросе у вас происходит перемножение строк

замените запятую на ВНУТРЕННЕЕ СОЕДИНЕНИЕ  - должно помочь

   |   сп КАК сп
   |      ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СчетНаОплатуПоставщика.Товары КАК СчетНаОплатуПоставщикаТовары
   |      ПО сп.СчетНаОплату = СчетНаОплатуПоставщикаТовары.Ссылка
   |, // вот эту запятую
   |   списание КАК списание";   
ответ Понравился? (в смысле пригодился?)

mila1231

@LexaK,
Утро доброе, я немного не поняла, внутреннее соединение я же должна с чем-то что-то соединить....Если не сложно можно приблизительно показать, как должен выглядеть запрос. Заранее спасибо.

mila1231

@LexaK, Всё спасибо, поняла , как должно быть, огромное спасибо)) :ehtwj:

Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск