7.7 Печатные формы

Тема в разделе "Общие вопросы "1С:Предприятие 7.7"", создана пользователем lanna_oops, 8 окт 2008.

  1. TopicStarter Overlay
    lanna_oops
    Offline

    lanna_oops

    Регистрация:
    8 окт 2008
    Сообщения:
    30
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте, обитатели форума! Работаю в 8.0, а в 7.7 синтаксис прохо знаю. Помогите,пожалуйста, разобраться с объединением печатных форм документов. есть 2 документа: Расходная накладная и Счет-фактура. каждый из них имеет свою печатную форму. необходимо объединить эти две печатные формы в одну. выводиться эта общая печатная форма должна из документа Расходной накладной через кнопку.
    Дополняю существующую печатную форму документа Расходной накладной таблицей, взятой из печатной формы документа Счет-фактура.

    В исходную процедуру печати Расходной накладной добавляю текст:
    Код:
    Процедура Печать1(СразуНаПринтер = 0,КолЭкз = 1)
    
    Таб = СоздатьОбъект("Таблица");
    
    ИмяФайлаПечатнойФормы = КаталогИБ()+"ExtForms\PrnForms\pfsfirn.mxl";
    
    Если (Константа.ИспользоватьВнешниеПечатныеФормы = Да) и (ФС.СуществуетФайл(ИмяФайлаПечатнойФормы) = 1) Тогда
    Таб.ИсходнаяТаблица(ИмяФайлаПечатнойФормы);
    Иначе
    Таб.ИсходнаяТаблица("Таблица");
    КонецЕсли; 
    Таб.ВывестиСекцию("Шапка");
    Таб.ВывестиСекцию("ДокументРеализация");
    Таб.ВывестиСекцию("ЗаголовокТаблицы");
    ВыбратьСтроки();
    Пока ПолучитьСтроку()=1 Цикл
    ПечЦена = ?(Количество <> 0, Сумма/Количество,0);
    Таб.ВывестиСекцию("Строка");
    КонецЦикла;
    Таб.ВывестиСекцию("Итоги");
    Таб.ВывестиСекцию("Подвал");
    Таб.ВывестиСекцию("Шапка1");
    ВыбратьСтроки();
    Пока ПолучитьСтроку() = 1 Цикл
    Таб.ВывестиСекцию("Строка1");
    КонецЦикла;                   
    Таб.ВывестиСекцию("Итоги1");
    Таб.ВывестиСекцию("Примечание1");
    Таб.Опции(0,0,0,0, "ОпцииРелизацияТоваровИСчетФактуры");
    глЗащитаТаблицы(Таб);
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Печать расходной накладной и Счет-фактуры","");
    
    [color=#FF0000]//Добавляю***********************************************************
    //**************нахожу документ Счет-Фактура 
    Док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 Тогда
    КонецЕсли; //
    КонецЕсли;	
    КонецЕсли;
    конецесли; 
    КонецПроцедуры
    
    *****************************************************************

    в итоге при выводе печатой формы на печать ошибок не обнаруживается, но и данные из Счет-Фактуры не выводятся. Может я не правильно связываюсь со Счет-Фактурой? все перепробовала в синтаксисе.
    и вообще, возможно ли такое сделать в 7.7? если нет, то как можно сделать общую печатную форму для этих двух документов?
    очень жду советов и помощи... :unsure:
  2. WaRDeR
    Offline

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Вчера пробовал ответить, да свет выключили :(

    Значит было так...

    Код большой, и разобраться в нем чисто теоретически (без ИБ) сложно, да и не очень то хочется (в перерывах между написанием его самого).
    Я бы делал так.
    1. Создал один общий макет таблицы, имеющий все нужные секции из обоих документов.
    2. В циклах печати необходимо всем переменным выводимой секции присвоить значения и убедиться, что метаданные спозиционированны на нужных эдементах.
    3. Выводить эти секции....

    Так на вскидку, у тебя не будет работать перебор документов, пробуй создавать объекты так
    СоздатьОбъект("Документ.СчетФактура");
    и почитай про:
    ВыбратьДокументы(<Дата1>,<Дата2>)
    ПолучитьДокумент()

    Будут еще вопросы - слушаю.
  3. Senya
    Offline

    Senya Опытный в 1С

    Регистрация:
    6 июн 2006
    Сообщения:
    594
    Симпатии:
    0
    Баллы:
    26
    У Вас вывод на печать происходит раньше, а только потом присваеваются значения параметрам таблицы. попробуйте указанный код переместить в самый низ процедуры.

    Код:
    Таб.ВывестиСекцию("Шапка");
    Таб.ВывестиСекцию("ДокументРеализация");
    Таб.ВывестиСекцию("ЗаголовокТаблицы");
    ВыбратьСтроки();
    Пока ПолучитьСтроку()=1 Цикл
    ПечЦена = ?(Количество <> 0, Сумма/Количество,0);
    Таб.ВывестиСекцию("Строка");
    КонецЦикла;
    Таб.ВывестиСекцию("Итоги");
    Таб.ВывестиСекцию("Подвал");
    Таб.ВывестиСекцию("Шапка1");
    ВыбратьСтроки();
    Пока ПолучитьСтроку() = 1 Цикл
    Таб.ВывестиСекцию("Строка1");
    КонецЦикла;                   
    Таб.ВывестиСекцию("Итоги1");
    Таб.ВывестиСекцию("Примечание1");
    Таб.Опции(0,0,0,0, "ОпцииРелизацияТоваровИСчетФактуры");
    глЗащитаТаблицы(Таб);
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Печать расходной накладной и Счет-фактуры","");
    
    

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