Помощь - Поиск - Пользователи - Календарь
Полная версия: Печатные формы
1C-PRO - Форум по 1С > Форумы по платформе "1С:Предприятие 7.7" > (7.7) Форум по общим вопросам "1С:Предприятие 7.7"
lanna_oops
Здравствуйте, обитатели форума! Работаю в 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]//Добавляю***********************************************************[/color]
//**************нахожу документ Счет-Фактура
Док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? если нет, то как можно сделать общую печатную форму для этих двух документов?
очень жду советов и помощи... tit.gif
WaRDeR
Вчера пробовал ответить, да свет выключили :(

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

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

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

Будут еще вопросы - слушаю.
Senya
У Вас вывод на печать происходит раньше, а только потом присваеваются значения параметрам таблицы. попробуйте указанный код переместить в самый низ процедуры.

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

Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2009 Invision Power Services, Inc.