7.7 И снова печатные формы

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем lanna_oops, 14 ноя 2008.

  1. TopicStarter Overlay
    lanna_oops
    Offline

    lanna_oops

    Регистрация:
    8 окт 2008
    Сообщения:
    30
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте! Я уже обращалась с вопросом про объединение печатных форм Накладной и СчетФактуры документа РеализацияТовара. Учла все советы и рекомендации специалистов. Вот окончательный код:
    Код:
    Процедура Печать1(СразуНаПринтер = 0,КолЭкз = 1)
    
    Таб = СоздатьОбъект("Таблица");
    
    ИмяФайлаПечатнойФормы = КаталогИБ()+"ExtForms\PrnForms\prsfirn.mxl";
    
    Если (Константа.ИспользоватьВнешниеПечатныеФормы = Да) и (ФС.СуществуетФайл(ИмяФайлаПечатнойФормы) = 1) Тогда
    Таб.ИсходнаяТаблица(ИмяФайлаПечатнойФормы);
    Иначе
    Таб.ИсходнаяТаблица("Таблица");
    КонецЕсли;  
    
    
    ДоверенностьЧерезКого1=ДоверенностьЧерезКого;
    CтрТТН="";
    СтрГрузоволучатель="";
    СтрГрузоотправитель=""; 
    
    Док1=СоздатьОбъект("Документ.СчетФактура");
    Док1.ВыбратьДокументы(ТекущийДокумент());
    Пока Док1.ПолучитьДокумент()=1 Цикл
    
    БанковскийСчет=Док1.БанковскийСчет;
    УсловияОплатыПоДоговору=Док1.УсловияОплатыПоДоговору;
    ПунктНазначения=Док1.ПунктНазначения;
    ТипНоменклатуры=Док1.ТипНоменклатуры;
    Грузоотправитель =Док1.Грузоотправитель;
    Грузополучатель=Док1.Грузополучатель;
    УполномоченноеЛицоРуководитель=Док1.УполномоченноеЛицоРуководитель;
    УполномоченноеЛицоГлавныйБухгалтер=Док1.УполномоченноеЛицоГлавныйБухгалтер;
    Дополнительная =Док1.Дополнительная;
    ДоверенностьЧерезКого1 =Док1.ДоверенностьЧерезКого;
    СпособОтправления =Док1.СпособОтправления;
    Комментарий =Док1.Комментарий;
    ДатаДок =Док1.ДатаДок;
    НомерДок =Док1.НомерДок;
    Организация =Док1.Организация;
    ДокументОснование =Док1.ДокументОснование;
    Контрагент =Док1.Контрагент;
    
    
    Если (ТипНоменклатуры <> Перечисление.ТипыНоменклатуры.Услуга) и 
    (ТипНоменклатуры <> Перечисление.ТипыНоменклатуры.Работа) Тогда 
    
    СтрТТН = ?((ДокументОснование.Выбран()=1),"№ "+СокрЛП(глНомерДокумента(ДокументОснование))+" от "+Формат(ДокументОснование.ДатаДок, "Д ДДММММГГГГ"),"№ _____________  от ____________________  200__ г.");
    
    СтрГрузоотправитель = ?(Грузоотправитель.Выбран() = 1, СокрЛП(Грузоотправитель.ПолноеНаименование) +
    ". РНН и адрес грузоотправителя: " + Грузоотправитель.РНН +
    ", " + СокрЛП(Грузоотправитель.ЮридическийАдрес), СокрЛП(Организация.ПолноеНаименование) + 
    ". РНН и адрес грузоотправителя: " + Организация.РНН +", " + СокрЛП(Организация.ЮридическийАдрес));
    СтрГрузополучатель = СокрЛП(Грузополучатель.ПолноеНаименование) + ". РНН и адрес грузополучателя: " + 
    Грузополучатель.РНН+","+ СокрЛП(Грузополучатель.ЮридическийАдрес);
    КонецЕсли;
    
    //Уполномоченные лица
    Если УполномоченноеЛицоРуководитель.Выбран() = 1 Тогда
    УполномоченноеЛицоРуководительПеч = СокрЛП(УполномоченноеЛицоРуководитель.Должность) +": "+ ФИО(УполномоченноеЛицоРуководитель);
    Иначе
    УполномоченноеЛицоРуководительПеч = "Руководитель организации "+ ФИО(Организация.Руководитель.Получить(ДатаДок));
    КонецЕсли;
    
    Если УполномоченноеЛицоГлавныйБухгалтер.Выбран() = 1 Тогда
    УполномоченноеЛицоГлавныйБухгалтерПеч = СокрЛП(УполномоченноеЛицоГлавныйБухгалтер.Должность) +": "+ ФИО(УполномоченноеЛицоГлавныйБухгалтер);
    Иначе
    УполномоченноеЛицоГлавныйБухгалтерПеч = "Главный бухгалтер организации " + ?(ПустаяСтрока(Организация.ГлавныйБухгалтер.Получить(ДатаДок))=0, ФИО(Организация.ГлавныйБухгалтер.Получить(ДатаДок)), "Не предусмотрен");
    КонецЕсли;
    
    ТекстВалюта = "тенге";
    Если ПустоеЗначение(Валюта) = 0 Тогда
    Если Валюта <> глВалютаБухУчета Тогда
    ТекстВалюта = Валюта.Наименование; 
    КонецЕсли;
    КонецЕсли;
    
    ДопСчетФактура = "";
    
    Если Дополнительная = 1 Тогда
    Если ДокументОснование.Выбран() = 1 Тогда
    Если ДокументОснование.Вид() = "ВозвратОтПокупателя" Тогда
    Если ДокументОснование.ДокументОснование.Выбран() = 1 Тогда
    СФ = глНайтиСчетФактуру(ДокументОснование.ДокументОснование, "СчетФактура");
    ДопСчетФактура = "Дополнительный Счет-фактура к " + глПредставлениеДокумента(СФ);   
    КонецЕсли;// Если ДокументОснование.ДокументОснование.Выбран() = 1 Тогда
    КонецЕсли; //
    КонецЕсли;	
    КонецЕсли;		
    
    Таб.ВывестиСекцию("Шапка");
    Таб.ВывестиСекцию("ДокументРеализация");
    Таб.ВывестиСекцию("ЗаголовокТаблицы");
    
    ВыбратьСтроки();
    Пока ПолучитьСтроку()=1 Цикл
    ПечЦена = ?(Количество <> 0, Сумма/Количество,0);
    Таб.ВывестиСекцию("Строка");
    КонецЦикла;
    
    Таб.ВывестиСекцию("Итоги");
    Таб.ВывестиСекцию("Подвал");
    
    Таб.ВывестиСекцию("Шапка1");
    ВыбратьСтроки();
    Пока ПолучитьСтроку() = 1 Цикл
    Таб.ВывестиСекцию("Строка1");
    КонецЦикла;                   
    
    Таб.ВывестиСекцию("Итоги1");
    Таб.ВывестиСекцию("Примечание1");
    глЗащитаТаблицы(Таб);
    Таб.ТолькоПросмотр(1);	
    Таб.КоличествоЭкземпляров(1);
    Таб.ЭкземпляровНаСтранице(1);
    Таб.ПараметрыСтраницы(,,,,,,,,,1,,);
    Таб.Опции(0,0,0,0,"ОпцииРеализацияТоваровИСчетФактура");
    
    Таб.Показать("Печать расходной накладной и счет-фактуры","");		
    
    КонецЦикла;
    
    КонецПроцедуры
    
    Ошибок нет. Теперь проблема другая. Почему то распечатывается не один экземпляр, а каждый раз по-разному: когда 1, когда 2, когда 4, а когда вообще 10. в чем может быть проблема? я уже замучилась с этим. Помогите, пожалуйста.... :unsure:
    Есть еще одна проблема, теперь с объединением печатных форм Акта выполненных работ и СчетФактуры в документе Выполнение работ. Код практически тот же:

    Код:
    Процедура Печать1(СразуНаПринтер = 0,КолЭкз = 1)
    
    Таб = СоздатьОбъект("Таблица");
    
    Если ТипДокумента = 2 Тогда
    ИмяФайлаПечатнойФормы = КаталогИБ()+"ExtForms\PrnForms\prfvrn.mxl";	
    Если (Константа.ИспользоватьВнешниеПечатныеФормы = Да) и (ФС.СуществуетФайл(ИмяФайлаПечатнойФормы) = 1) Тогда
    Таб.ИсходнаяТаблица(ИмяФайлаПечатнойФормы)
    Иначе
    Таб.ИсходнаяТаблица("Таблица")
    КонецЕсли;
    <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/иначе')">	Иначе	</span>
    ИмяФайлаПечатнойФормы = КаталогИБ()+"ExtForms\PrnForms\prfvra.mxl";	
    Если (Константа.ИспользоватьВнешниеПечатныеФормы = Да) и (ФС.СуществуетФайл(ИмяФайлаПечатнойФормы) = 1) Тогда
    Таб.ИсходнаяТаблица(ИмяФайлаПечатнойФормы)
    Иначе
    Таб.ИсходнаяТаблица("Акт");
    КонецЕсли;
    КонецЕсли;
    
    
    CтрТТН="";
    СтрГрузоволучатель="";
    СтрГрузоотправитель=""; 
    
    Док1=СоздатьОбъект("Документ.СчетФактура");
    Док1.ВыбратьДокументы(ТекущийДокумент());
    Пока Док1.ПолучитьДокумент()=1 Цикл
    БанковскийСчет=Док1.БанковскийСчет;
    УсловияОплатыПоДоговору=Док1.УсловияОплатыПоДоговору;
    ПунктНазначения=Док1.ПунктНазначения;
    ТипНоменклатуры=Док1.ТипНоменклатуры;
    Грузоотправитель =Док1.Грузоотправитель;
    Грузополучатель=Док1.Грузополучатель;
    УполномоченноеЛицоРуководитель=Док1.УполномоченноеЛицоРуководитель;
    УполномоченноеЛицоГлавныйБухгалтер=Док1.УполномоченноеЛицоГлавныйБухгалтер;
    Дополнительная =Док1.Дополнительная;
    ДоверенностьЧерезКого =Док1.ДоверенностьЧерезКого;
    СпособОтправления =Док1.СпособОтправления;
    Комментарий =Док1.Комментарий;
    ДатаДок =Док1.ДатаДок;
    НомерДок =Док1.НомерДок;
    Организация =Док1.Организация;
    ДокументОснование =Док1.ДокументОснование;
    Контрагент =Док1.Контрагент;
    ДоверенностьНомер=Док1.ДоверенностьНомер;
    ДоверенностьДата=Док1.ДоверенностьДата;
    
    Основание=Док1.Основание;
    
    
    Если (ТипНоменклатуры <> Перечисление.ТипыНоменклатуры.Услуга) и 
    (ТипНоменклатуры <> Перечисление.ТипыНоменклатуры.Работа) Тогда 
    
    СтрТТН = ?((ДокументОснование.Выбран()=1),"№ "+СокрЛП(глНомерДокумента(ДокументОснование))+" от "+Формат(ДокументОснование.ДатаДок, "Д ДДММММГГГГ"),"№ _____________  от ____________________  200__ г.");
    
    СтрГрузоотправитель = ?(Грузоотправитель.Выбран() = 1, СокрЛП(Грузоотправитель.ПолноеНаименование) +
    ". РНН и адрес грузоотправителя: " + Грузоотправитель.РНН +
    ", " + СокрЛП(Грузоотправитель.ЮридическийАдрес), СокрЛП(Организация.ПолноеНаименование) + 
    ". РНН и адрес грузоотправителя: " + Организация.РНН +", " + СокрЛП(Организация.ЮридическийАдрес));
    СтрГрузополучатель = СокрЛП(Грузополучатель.ПолноеНаименование) + ". РНН и адрес грузополучателя: " + 
    Грузополучатель.РНН+","+ СокрЛП(Грузополучатель.ЮридическийАдрес);
    КонецЕсли;
    
    //Уполномоченные лица
    Если УполномоченноеЛицоРуководитель.Выбран() = 1 Тогда
    УполномоченноеЛицоРуководительПеч = СокрЛП(УполномоченноеЛицоРуководитель.Должность) +": "+ ФИО(УполномоченноеЛицоРуководитель);
    Иначе
    УполномоченноеЛицоРуководительПеч = "Руководитель организации "+ ФИО(Организация.Руководитель.Получить(ДатаДок));
    КонецЕсли;
    
    Если УполномоченноеЛицоГлавныйБухгалтер.Выбран() = 1 Тогда
    УполномоченноеЛицоГлавныйБухгалтерПеч = СокрЛП(УполномоченноеЛицоГлавныйБухгалтер.Должность) +": "+ ФИО(УполномоченноеЛицоГлавныйБухгалтер);
    Иначе
    УполномоченноеЛицоГлавныйБухгалтерПеч = "Главный бухгалтер организации " + ?(ПустаяСтрока(Организация.ГлавныйБухгалтер.Получить(ДатаДок))=0, ФИО(Организация.ГлавныйБухгалтер.Получить(ДатаДок)), "Не предусмотрен");
    КонецЕсли;
    
    ТекстВалюта = "тенге";
    Если ПустоеЗначение(Валюта) = 0 Тогда
    Если Валюта <> глВалютаБухУчета Тогда
    ТекстВалюта = Валюта.Наименование; 
    КонецЕсли;
    КонецЕсли;
    
    ДопСчетФактура = "";
    
    Если Дополнительная = 1 Тогда
    Если ДокументОснование.Выбран() = 1 Тогда
    Если ДокументОснование.Вид() = "ВозвратОтПокупателя" Тогда
    Если ДокументОснование.ДокументОснование.Выбран() = 1 Тогда
    СФ = глНайтиСчетФактуру(ДокументОснование.ДокументОснование, "СчетФактура");
    ДопСчетФактура = "Дополнительный Счет-фактура к " + глПредставлениеДокумента(СФ);   
    КонецЕсли;// Если ДокументОснование.ДокументОснование.Выбран() = 1 Тогда
    КонецЕсли; //
    КонецЕсли;	
    КонецЕсли;	
    
    
    Таб.ВывестиСекцию("Шапка");
    
    ВыбратьСтроки();
    
    Пока ПолучитьСтроку() = 1 Цикл
    ПечЦена = ?(Количество <> 0, Сумма/Количество,0);
    Таб.ВывестиСекцию("Строка"); 
    КонецЦикла; 
    Таб.ВывестиСекцию("Итоги");
    
    Если ТипДокумента = 2 Тогда
    Таб.ВывестиСекцию("Подвал");
    <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/иначе')">	Иначе	</span>
    Таб.ВывестиСекцию("Подвал");
    Таб.ВывестиСекцию("Разделитель");
    КонецЕсли;
    
    Таб.ИсходнаяТаблица("Акт");  	
    Таб.ВывестиСекцию("Шапка1");
    ВыбратьСтроки();
    Пока ПолучитьСтроку() = 1 Цикл
    Таб.ВывестиСекцию("Строка1");
    КонецЦикла;                   
    
    Таб.ВывестиСекцию("Итоги1");
    Таб.ВывестиСекцию("Примечание1");
    
    Таб.КоличествоЭкземпляров(1);
    Таб.ЭкземпляровНаСтранице(1);
    
    Таб.Опции(0,0,0,0,"ОпцииВыполнениеРаботИСчетФактура");
    глЗащитаТаблицы(Таб);
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Печать выполнения работ и счет-фактуры","");
    
    КонецЦикла;
    КонецПроцедуры
    
    Вроде все должно быть так же, но при открытии документа Выполнение работ выводится ошибка:"Значение не представляет агрегатный объект (Наименование)" и при выводе на печать соответственно так же как и в Реализации товаров - большое количество экземпляров.
    Помогите, кто может...пожалуйста... :smile:
  2. Хряк
    Online

    Хряк Профессионал в 1С

    Регистрация:
    26 сен 2007
    Сообщения:
    1.447
    Симпатии:
    37
    Баллы:
    54
    Ты бы выложила сюда обработку и подробно объяснила чё хочешь

Поделиться этой страницей