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

Внешняя печатная форма

Автор Nail2010, 18 апр 2011, 12:05

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

progmikon

Для внешней печатной формы да. Нужна функция печать() и реквизит СсылкаНаОбъект

Nail2010

А у меня разве не так? Или что именно нужно поменять? Где? В форме обработки или в модуле объекта обработки?

progmikon

А зачем у обработки вообще форму-то рисовать? Вы что-то интерактивно выбираете на ней?

Nail2010

ну впринципе нет.....то есть все можно поместить только в модуль объекта?

Maxim


Nail2010

Ну как бы... форма для обрабоки просто как вариант, отдельный - мало ли какая блаж барину в голову взбредет.....

Nail2010

Дак как лучше сделать? что именно изменить в модуле объекта?

Maxim

Может заработает, пробуй. Главное чтобы было без параметров при обращении к этой функции. Ну а так я бы выложил примерчик:
Функция Печать() Экспорт   
   Если ТипЗнч(СсылкаНаОбъект)=Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
      Возврат ПечатьРеализация();
   Иначе
       Возврат Неопределено;
   КонецЕсли;
КонецФункции

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

   Шапка = Запрос.Выполнить().Выбрать();
   Шапка.Следующий();

   ТабДокумент = Новый ТабличныйДокумент;
   ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Реализация_Договор";

   Макет = ПолучитьМакет("ДоговорРеализации"); //Название макета

   // Выводим шапку накладной

   ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
   //Если СсылкаНаОбъект.ВидОперации = Перечисления.ВидыОперацийЧекККМ.Продажа Тогда
   стрЗаголовок = "розничной купли-продажи № ";
   //Иначе
   //   стрЗаголовок = "розничного возврата № ";
   //КонецЕсли;
   
   ОбластьМакета.Параметры.ТекстЗаголовка = стрЗаголовок + ПолучитьНомерНаПечать(СсылкаНаОбъект);
   ОбластьМакета.Параметры.ДатаДоговора = Формат(СсылкаНаОбъект.Дата, "ДФ='«дд» ММММ гггг '")+"г.";
   ОбластьМакета.Параметры.ПоставщикНаименование    = ПоставщикНаименование;
   ОбластьМакета.Параметры.ПоставщикЛицо            = ПоставщикЛицо;
   ОбластьМакета.Параметры.ПоставщикДоверенность    = ПоставщикДоверенность;
   ОбластьМакета.Параметры.ПокупательНаименование   = ПокупательНаименование;
   ОбластьМакета.Параметры.ПокупательЛицо           = ПокупательЛицо;
   ОбластьМакета.Параметры.ПокупательДоверенность   = ПокупательДоверенность;
   ТабДокумент.Вывести(ОбластьМакета);
   
   ОбластьПредметаДоговора = Макет.ПолучитьОбласть("ПредметДоговора");
      ТабДокумент.Вывести(ОбластьПредметаДоговора);
   
   ОбластьНомера = Макет.ПолучитьОбласть("ШапкаТаблицы|НомерСтроки");
   ОбластьДанных = Макет.ПолучитьОбласть("ШапкаТаблицы|Данные");
   ОбластьСуммы  = Макет.ПолучитьОбласть("ШапкаТаблицы|Сумма");

   ТабДокумент.Вывести(ОбластьНомера);
   ТабДокумент.Присоединить(ОбластьДанных);
   ТабДокумент.Присоединить(ОбластьСуммы);
   
   ОбластьНомера = Макет.ПолучитьОбласть("Строка|НомерСтроки");
   ОбластьДанных = Макет.ПолучитьОбласть("Строка|Данные");
   ОбластьСуммы  = Макет.ПолучитьОбласть("Строка|Сумма");

   Сумма          = 0;
   Количество     = 0;

   ВыборкаСтрокТовары = Шапка.Товары.Выбрать();
   Пока ВыборкаСтрокТовары.Следующий() Цикл

      Если ЗначениеНеЗаполнено(ВыборкаСтрокТовары.Номенклатура) Тогда
         Сообщить("В одной из строк не заполнено значение номенклатуры - строка при печати пропущена.", СтатусСообщения.Важное);
         Продолжить;
      КонецЕсли;

      ОбластьНомера.Параметры.Заполнить(ВыборкаСтрокТовары);
      ТабДокумент.Вывести(ОбластьНомера);      
      ОбластьДанных.Параметры.Заполнить(ВыборкаСтрокТовары);
      ОбластьДанных.Параметры.Товар       = ?(ЗначениеНеЗаполнено(ВыборкаСтрокТовары.ТоварПолноеНаименование),
                                           ВыборкаСтрокТовары.Товар, ВыборкаСтрокТовары.ТоварПолноеНаименование)+
                                           ПредставлениеСерий(ВыборкаСтрокТовары);
      ТабДокумент.Присоединить(ОбластьДанных);                 
      ОбластьСуммы.Параметры.Заполнить(ВыборкаСтрокТовары);
      ТабДокумент.Присоединить(ОбластьСуммы);
      
      Количество = Количество + ВыборкаСтрокТовары.Количество;                   
      Сумма      = Сумма + ВыборкаСтрокТовары.Сумма;

   КонецЦикла;

   ОбластьНомера = Макет.ПолучитьОбласть("Итого|НомерСтроки");
   ОбластьДанных = Макет.ПолучитьОбласть("Итого|Данные");
   ОбластьСуммы  = Макет.ПолучитьОбласть("Итого|Сумма");

   ТабДокумент.Вывести(ОбластьНомера);
   ОбластьДанных.Параметры.Количество = Количество;
   ТабДокумент.Присоединить(ОбластьДанных);
   ОбластьСуммы.Параметры.Всего = Сумма;
   ТабДокумент.Присоединить(ОбластьСуммы);

   // Вывести Сумму прописью
   ОбластьСуммыПрописью = Макет.ПолучитьОбласть("СуммаПрописью");
   ОбластьСуммыПрописью.Параметры.СуммаПрописью  ="("+СформироватьСуммуПрописью(Шапка.СуммаДокумента, л_Валюта)+")";
   ТабДокумент.Вывести(ОбластьСуммыПрописью);
   
   ОбластьУсловияДоговора = Макет.ПолучитьОбласть("УсловияДоговора");
   ОбластьУсловияДоговора.Параметры.ДоговорСрокОплаты   = ДоговорСрокОплаты;
      ТабДокумент.Вывести(ОбластьУсловияДоговора);

   // Вывести подписи
   ОбластьМакета = Макет.ПолучитьОбласть("Подписи");
   
   л_ДанныеОрганизации = СведенияОЮрФизЛице(ПоставщикНаименование, СсылкаНаОбъект.Дата, Истина, Неопределено);
   л_Счет = ПоставщикНаименование.ОсновнойБанковскийСчет;
   если Не ПустаяСтрока(л_ДанныеОрганизации.ФактическийАдрес) тогда
      если Не ПустаяСтрока(л_ДанныеОрганизации.ЮридическийАдрес) тогда
         л_ДанныеОрганизацииАдрес=Символы.ПС+"ФактАдрес: "+СокрЛП(л_ДанныеОрганизации.ФактическийАдрес)
                       +Символы.ПС+"ЮрАдрес: "+СокрЛП(л_ДанныеОрганизации.ЮридическийАдрес);
      иначеесли ПустаяСтрока(л_ДанныеОрганизации.ЮридическийАдрес) тогда
         л_ДанныеОрганизацииАдрес=Символы.ПС+"ФактАдрес: "+СокрЛП(л_ДанныеОрганизации.ФактическийАдрес);
      конецесли;
   иначеесли Не ПустаяСтрока(л_ДанныеОрганизации.ЮридическийАдрес) тогда
      л_ДанныеОрганизацииАдрес=Символы.ПС+"ЮрАдрес: "+СокрЛП(л_ДанныеОрганизации.ЮридическийАдрес);
   конецесли;
   если Не ПустаяСтрока(л_ДанныеОрганизации.ИНН) тогда
      если Не ПустаяСтрока(л_ДанныеОрганизации.КПП) тогда
         л_ДанныеОрганизацииОбщие=Символы.ПС+"ИНН/КПП: "+СокрЛП(л_ДанныеОрганизации.ИНН)+" / "+СокрЛП(л_ДанныеОрганизации.КПП);
      иначеесли ПустаяСтрока(л_ДанныеОрганизации.КПП) тогда
         л_ДанныеОрганизацииОбщие=Символы.ПС+"ИНН: "+СокрЛП(л_ДанныеОрганизации.ИНН);
      конецесли;
   иначеесли Не ПустаяСтрока(л_ДанныеОрганизации.КПП) тогда
      л_ДанныеОрганизацииОбщие=Символы.ПС+"КПП: "+СокрЛП(л_ДанныеОрганизации.КПП);
   конецесли;
   если Не ПустаяСтрока(л_ДанныеОрганизации.НомерСчета) тогда
      л_ДанныеОрганизацииРасчСчёт=Символы.ПС+"р/с "+СокрЛП(л_ДанныеОрганизации.НомерСчета)
   конецесли;
   если Не ПустаяСтрока(л_Счет.Банк) тогда
         л_ДанныеОрганизацииБанки=Символы.ПС+СокрЛП(л_Счет.Банк)+" "+СокрЛП(л_Счет.Банк.Город)
         +Символы.ПС+" в "+СокрЛП(л_Счет.БанкДляРасчетов);
   конецесли;
   ОбластьМакета.Параметры.Отпустил = СокрЛП(л_ДанныеОрганизации.ПолноеНаименование)
                     +л_ДанныеОрганизацииАдрес
                     +л_ДанныеОрганизацииОбщие
                     +л_ДанныеОрганизацииРасчСчёт
                     +л_ДанныеОрганизацииБанки
                     +Символы.ПС+СокрЛП(Шапка.Склад);
                     
   л_Контрагенты = СведенияОЮрФизЛице(ПокупательНаименование, СсылкаНаОбъект.Дата, Истина, Неопределено);
   если Не ПустаяСтрока(л_Контрагенты.ФактическийАдрес) тогда
      если Не ПустаяСтрока(л_Контрагенты.ЮридическийАдрес) тогда
         л_КонтрагентыАдрес=Символы.ПС+"ФактАдрес: "+СокрЛП(л_Контрагенты.ФактическийАдрес)
                       +Символы.ПС+"ЮрАдрес: "+СокрЛП(л_Контрагенты.ЮридическийАдрес);
      иначеесли ПустаяСтрока(л_Контрагенты.ЮридическийАдрес) тогда
         л_КонтрагентыАдрес=Символы.ПС+"ФактАдрес: "+СокрЛП(л_Контрагенты.ФактическийАдрес);
      конецесли;
   иначеесли Не ПустаяСтрока(л_Контрагенты.ЮридическийАдрес) тогда
      л_КонтрагентыАдрес=Символы.ПС+"ЮрАдрес: "+СокрЛП(л_Контрагенты.ЮридическийАдрес);
   конецесли;
   если Не ПустаяСтрока(л_Контрагенты.ИНН) тогда
      если Не ПустаяСтрока(л_Контрагенты.КПП) тогда
         л_КонтрагентыОбщие=Символы.ПС+"ИНН/КПП: "+СокрЛП(л_Контрагенты.ИНН)+" / "+СокрЛП(л_Контрагенты.КПП);
      иначеесли ПустаяСтрока(л_Контрагенты.КПП) тогда
         л_КонтрагентыОбщие=Символы.ПС+"ИНН: "+СокрЛП(л_Контрагенты.ИНН);
      конецесли;
   иначеесли Не ПустаяСтрока(л_Контрагенты.КПП) тогда
      л_КонтрагентыОбщие=Символы.ПС+"КПП: "++СокрЛП(л_Контрагенты.КПП);
   конецесли;
   если Не ПустаяСтрока(л_Контрагенты.Телефоны) тогда
      л_КонтрагентыТелефоны=Символы.ПС+"Тел:"+СокрЛП(л_Контрагенты.Телефоны)
   конецесли;
   ////////////////////////////////////////////
   ОбластьМакета.Параметры.Получил  = СокрЛП(л_Контрагенты.ПолноеНаименование)
                           +л_КонтрагентыОбщие
                     +л_КонтрагентыАдрес
                     +л_КонтрагентыТелефоны;
                     
   ОбластьМакета.Параметры.ПоставщикРасшифровкаПодписи         = ПоставщикРасшифровкаПодписи;
   ОбластьМакета.Параметры.ПокупательРасшифровкаПодписи        = ПокупательРасшифровкаПодписи;
   
   ТабДокумент.Вывести(ОбластьМакета);
     // Параметры макета
    ТабДокумент.ПолеСверху = 0;
   ТабДокумент.ПолеСлева  = 0;
   ТабДокумент.ПолеСнизу  = 0;
   ТабДокумент.ПолеСправа = 0;
   ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
   ТабДокумент.АвтоМасштаб=Истина;
   Возврат ТабДокумент;
КонецФункции // Печать

Nail2010

Теперь система пишет: Обращение к процедуре объекта как к функции.....

progmikon

Что-то вы тут закрутили)))))) Вобщем-то что тут обсуждать? Реквизит СсылкаНаОбъект и Экспортная функция печать в модуле объекта. Что не получается-то?

Выложите вашу обработку, посмотрю.

Теги:

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

Рейтинг@Mail.ru

Поиск